Prestashop 1.6-基于最终总价的免费配送

Prestashop 1.6-基于最终总价的免费配送,prestashop,shipping,price,Prestashop,Shipping,Price,我正在使用prestashop 1.6。我的网站为超过80美元的购买提供“免费送货”。我的网站也有“买一送一”的促销活动 现在,一件商品的价格约为60美元,我坚持让客户从同一品类中购买两件商品,以获得“买一送一”的权利 如果客户购买一种产品,则应花费60美元(由于最终价格getDeliveryPriceByWeight($this->getTotalWeight($product\u list),$id\u zone); }按价格计算 $shipping\u cost+=$carrier->ge

我正在使用prestashop 1.6。我的网站为超过80美元的购买提供“免费送货”。我的网站也有“买一送一”的促销活动

现在,一件商品的价格约为60美元,我坚持让客户从同一品类中购买两件商品,以获得“买一送一”的权利

如果客户购买一种产品,则应花费60美元(由于最终价格<80,因此没有免费送货)

如果客户购买2=120美元,但在“买一送一”促销活动后,最终总价为60美元。没错,这个客户没有得到免费送货,但我的网站给了这个客户免费送货,因为“免费送货”的逻辑是基于折扣前的总价(120美元)

我如何解决这个问题?我希望免费运费计算以最终总价为基础(折扣后)


您必须重写
Cart.php
中的方法
getPackageShippingCost()

并更改这些行:

}其他{
如果($shipping\u method==承运人::shipping\u method\u WEIGHT){
$shipping\u cost+=$carrier->getDeliveryPriceByWeight($this->getTotalWeight($product\u list),$id\u zone);
}按价格计算
$shipping\u cost+=$carrier->getDeliveryPriceByPrice($order\u total,$id\u zone,(int)$this->id\u currency);
}
}
}否则{
如果($shipping\u method==承运人::shipping\u method\u WEIGHT){
$shipping\u cost+=$carrier->getDeliveryPriceByWeight($this->getTotalWeight($product\u list),$id\u zone);
}否则{
$shipping\u cost+=$carrier->getDeliveryPriceByPrice($order\u total,$id\u zone,(int)$this->id\u currency);
}
}
通过将
$order\u total
替换为
$order total with折扣

}其他{
如果($shipping\u method==承运人::shipping\u method\u WEIGHT){
$shipping\u cost+=$carrier->getDeliveryPriceByWeight($this->getTotalWeight($product\u list),$id\u zone);
}按价格计算
$shipping\u cost+=$carrier->getDeliveryPriceByPrice($orderTotalWith折扣,$id\u zone,(int)$this->id\u货币);
}
}
}否则{
如果($shipping\u method==承运人::shipping\u method\u WEIGHT){
$shipping\u cost+=$carrier->getDeliveryPriceByWeight($this->getTotalWeight($product\u list),$id\u zone);
}否则{
$shipping\u cost+=$carrier->getDeliveryPriceByPrice($orderTotalWith折扣,$id\u zone,(int)$this->id\u货币);
}
}

如果您不知道如何重写类,请查看。

您必须从
Cart.php
重写方法
getPackageShippingCost()

并更改这些行:

}其他{
如果($shipping\u method==承运人::shipping\u method\u WEIGHT){
$shipping\u cost+=$carrier->getDeliveryPriceByWeight($this->getTotalWeight($product\u list),$id\u zone);
}按价格计算
$shipping\u cost+=$carrier->getDeliveryPriceByPrice($order\u total,$id\u zone,(int)$this->id\u currency);
}
}
}否则{
如果($shipping\u method==承运人::shipping\u method\u WEIGHT){
$shipping\u cost+=$carrier->getDeliveryPriceByWeight($this->getTotalWeight($product\u list),$id\u zone);
}否则{
$shipping\u cost+=$carrier->getDeliveryPriceByPrice($order\u total,$id\u zone,(int)$this->id\u currency);
}
}
通过将
$order\u total
替换为
$order total with折扣

}其他{
如果($shipping\u method==承运人::shipping\u method\u WEIGHT){
$shipping\u cost+=$carrier->getDeliveryPriceByWeight($this->getTotalWeight($product\u list),$id\u zone);
}按价格计算
$shipping\u cost+=$carrier->getDeliveryPriceByPrice($orderTotalWith折扣,$id\u zone,(int)$this->id\u货币);
}
}
}否则{
如果($shipping\u method==承运人::shipping\u method\u WEIGHT){
$shipping\u cost+=$carrier->getDeliveryPriceByWeight($this->getTotalWeight($product\u list),$id\u zone);
}否则{
$shipping\u cost+=$carrier->getDeliveryPriceByPrice($orderTotalWith折扣,$id\u zone,(int)$this->id\u货币);
}
}

如果您不知道如何重写类,请查看。

您能否更清楚地了解这个问题与编程的关系?我在这个问题中没有看到任何与代码相关的东西。如果不挖掘代码就可以解决这个问题,我想知道如何解决。如果我必须挖掘代码,我想知道要修改哪个文件以及如何修改。我觉得你的问题更适合PrestaShop forumsCan你更清楚这个问题与编程有什么关系吗?我在这个问题中没有看到任何与代码相关的东西。如果不挖掘代码就可以解决这个问题,我想知道如何解决。如果我必须挖掘代码,我想知道修改哪个文件以及如何修改。我觉得你的问题更适合PrestaShop论坛