打开购物车免费送货例外

时间:2012-11-20 16:35:28

标签: php opencart

我为订单总额超过75美元的订单提供免费在线运送,并提供此折扣的流程是直接的。

我很快会在库存中添加一些物品,这些物品体积庞大,需要免除免运费折扣,因为如果买家不支付运费,这些物品的运费会导致交易造成损失

在Open Cart中,我如何免除“超过75美元免费送货”政策中的某些商品?我猜这必须在代码中完成,但我不知道在哪里看。

2 个答案:

答案 0 :(得分:4)

实际上,使用标准附加服务在OpenCart中提供免费送货的过程是愚蠢的。它为客户提供计算交货或免费送货的选择!如果交付不同,这才真正有意义 - 即免费送货速度较慢。

由于您希望免除购买免费送货,而不是使用较低价格的送货方式,我认为目前您只需在任何客户选择免费送货时选择付费送货时赚更多钱。

我强烈建议您将两条规则合并为一个送货延期。这不仅可以让您删除免费送货率,而且当它很愚蠢时也不会显示付费送货选项。

您在哪里找到此代码?

“管理”部分中的每个送货计算选项都是送货延期。这分为五个文件。

逻辑位于catalog\model\shipping,管理员控件位于admin\controller\shippingadmin\view\template\shippingcatalog\language\english\shippingadmin\language\english\shipping中也有语言。在所有这些文件夹中,文件名应该相同。

您可以通过从现有的“免费”送货延期中获取文件并使用新文件名和匹配的类名复制它们来添加您自己的送货延期,或者您可以破解现有的扩展程序。

如果您要从现有扩展程序的副本创建扩展程序,请不要忘记相应地修改类名称(例如,更改ModelShippingFree中的免费部分,ControllerShippingFree以匹配您的文件名)

因为我总是最终使用特定于商店的规则,所以我总是在商店之后命名这些文件。这也使得哪一个应该更活跃。

在您编写代码之前陷入困境之前,请在伪代码中找出理想的组合规则,例如,如果您对非大型产品的统一费率,并且您实际上只将权重设置为对于体积庞大的产品,大于0,它会是这样的:

如果小计> 75,则cost = 0 else cost = 10 如果总重量> 0然后成本=成本+(1 *总重量)

查看您可以使用和调整的示例代码的所有现有扩展,并找出您在硬编码中感到满意的值以及您需要在管理员设置中调整哪些值。

(您可以从$this->cart->getWeight获取总重量,从$this->cart->getTotal()获得小计)

如果你已经在使用重量,那么除非你仍然可以告诉购物车中有一个庞大的产品,因为总重量太高,编码变得更加困难。您必须逐步浏览购物车中的每个项目,并添加与其他模式匹配的“笨重”产品。首先查看可以在OpenCart中编辑的字段。

最后,为避免出现意外,请不要忘记更改文字屏幕,提及免费送货不适用于大件物品,并更改产品屏幕以显示产品体积庞大且免于免运费。< / p>

答案 1 :(得分:1)

在标准的OC设置上,这是不可能的。你需要在某种标志中编码,你可以设置要排除的产品,然后在免费送货扩展的模型文件中,你必须重新编码它来计算没有的项目的成本只有国旗。标准购物车只使用$this->cart->getTotal(),不会排除已标记的商品