Magento显示多个折扣细分

时间:2012-11-26 09:48:16

标签: php magento magento-1.7

我已在我的Magento版本中安装了奖励模块。我也设置了一些购物车促销活动。一切正常。在购物车页面上,您可以兑换奖励积分并输入折扣代码,所有内容都可以正确打折。问题是它们都标有“折扣”标签(其中1,000点= 1英镑)

http://i.imm.io/N0hf.png

正如您所看到的,它将5英镑优惠券折扣和1英镑奖励折扣分组在一起。如何将这些分开,以便我有两个折扣行,一个用于优惠券,一个用于奖励积分?

2 个答案:

答案 0 :(得分:11)

这不是一项简单的任务。不幸的是,Magento的折扣系统并没有为添加您可能不想在购物车总计框中添加的新折扣类型做好充分的准备。

确实需要修改resetDiscountLabels()类的TBT_Rewards_Model_Salesrule_Observer方法。但是,此方法不是,其中Sweet Tooth将其折扣添加到折扣说明中。恰恰相反。 Sweet Tooth的折扣自动添加到Magento的购物车折扣列表中(折扣说明自动从此折扣列表中生成)。问题是即使将不应添加到购物车的Sweet Tooth折扣也会显示在那里 - 根据您创建的规则适用于购物车的折扣,但客户没有实际上选择了他们的积分。 resetDiscountLabels()方法存在从购物车中删除不需要的折扣说明,而不是添加任何折扣说明。

您的问题的解决方案有两个步骤,第二步是更加繁重。

首先,您必须修改上述方法,以便从购物车中删除所有 Sweet Tooth折扣说明,而不仅仅是那些不适用的说明。我建议首先将文件复制到您的app / code / local codepool,然后修改该文件而不是原始文件。如果您遍历购物车上的所有规则ID,然后加载规则模型,您可以判断它是否为Sweet Tooth规则,如果设置了points_action字段,即$rule->getPointsAction() !== null。如果任何规则是Sweet Tooth规则,您可以从折扣描述中unset按照该方法的方式进行操作。在此之后,Sweet Tooth折扣不应再出现在总计框的那一行。

第二步是在总计框中添加一个新行,a.k.a。在报价中添加一个新的总模型。这将是一个更复杂的步骤 - 比我在这个答案中描述的要复杂得多,但是这里有一个关于添加新总列的教程:http://turnkeye.com/blog/magento-development-add-total-row-checkout/在新的总模型的collect()方法中,你应该检查报价的applied_redemptions字段用于获取客户已应用于购物车的Sweet Tooth规则ID列表。然后,您可以使用这些值重新生成Sweet Tooth总折扣。

正如我所说,这不是一项简单的任务,不幸的是,这是唯一的半干净方式。希望它不是太多。如果您宁愿将自己的开发时间集中在其他任务上,也可以聘请开发公司为您完成。

希望这很有用!

答案 1 :(得分:4)

您需要修改/TBT/Rewards/Model/Salesrule/Observer.php - 检查checkRedemptionCouponBefore()的折扣金额并查看resetDiscountLabels() - 这是Sweet Tooth将其折扣添加到折扣说明的地方。

您可能还需要修改/app/design/frontend/base/default/template/rss/order/details.phtml - 行if ($_order->getDiscountAmount() > 0)

之后