Magento显示多个折扣细分

Ric*_*ing 9 php magento magento-1.7

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

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

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

JMT*_*ler 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折扣不应再出现在总计框的该行中.

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

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

希望这很有用!