Php Magento显示多个折扣明细

Php Magento显示多个折扣明细,php,magento,magento-1.7,Php,Magento,Magento 1.7,我已经在我的Magento构建中安装了一个奖励模块。我还设立了一些购物车促销活动。一切正常。在购物车页面上,您可以兑换奖励积分并输入折扣代码,所有东西都可以正确折扣。问题是它们都被贴上了“折扣”标签(其中1000分=1英镑折扣) (来源:) 如您所见,它将5英镑优惠券折扣和1英镑奖励折扣组合在一起。如何将它们分开,以便我有两个折扣行,一个用于优惠券,一个用于奖励积分?您需要修改/TBT/rewards/Model/Salesrule/Observer.php-检查checkRedemption

我已经在我的Magento构建中安装了一个奖励模块。我还设立了一些购物车促销活动。一切正常。在购物车页面上,您可以兑换奖励积分并输入折扣代码,所有东西都可以正确折扣。问题是它们都被贴上了“折扣”标签(其中1000分=1英镑折扣)


(来源:)


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

您需要修改
/TBT/rewards/Model/Salesrule/Observer.php
-检查
checkRedemptionCouponBefore()
查看折扣金额并检查
重置折扣标签()
-这是甜食将折扣添加到折扣描述中的地方


您可能还需要修改
/app/design/frontend/base/default/template/rss/order/details.phtml
-如果($\u order->getDiscountAmount()>0)这不是一项简单的任务。不幸的是,Magento的折扣系统没有为添加新的折扣类型做好充分准备,您可能不希望将这些类型添加到购物车总计框中

确实,您需要修改
TBT\u Rewards\u Model\u Salesrule\u Observer
类的
resetDiscountLabels()
方法。然而,这种方法并不适用于甜食将折扣添加到折扣描述中的情况。恰恰相反。甜食折扣会自动添加到购物车上Magento的折扣列表中(折扣说明会自动从折扣列表中生成)。问题是,即使是不应该添加到购物车中的甜食折扣也会出现在购物车中——根据您创建的规则应用于购物车的折扣,但客户实际上还没有选择使用他们的积分。
resetDiscountLabels()
方法用于从购物车中删除不需要的折扣说明,而不是添加任何折扣说明

问题的解决分为两步,第二步更费劲

首先,您必须修改上述方法,从购物车中删除所有甜食折扣说明,而不仅仅是那些不适用的说明。我建议先将文件复制到你的app/code/localcodepool,然后修改该文件而不是原来的文件。如果您循环浏览购物车上的所有规则ID,然后加载规则模型,您可以判断它是否是一个甜食规则,如果设置了它的
points\u action
字段,即
$rule->getPointsAction()!==空
。如果其中任何一条规则是甜食规则,您可以
unset
从折扣描述中按照该方法已经执行的方式取消设置它们。在此之后,甜食折扣将不再出现在“总计”框的该行中

第二步是在“总计”框中添加新行,即在报价中添加新的总计模型。这将是更复杂的步骤-比我在这个答案中描述的复杂得多,但这里有一个关于添加新总计列的教程:在新总计模型的
collect()
方法中,您应该检查报价的
applied\u redemptions
字段,以获取客户已应用于购物车的甜食规则ID列表。然后,可以使用这些值重新生成甜食折扣总额

正如我所说,这不是一项简单的任务,不幸的是,这是唯一一种半干净的方法。希望不会太多。如果您愿意将自己的开发时间集中在其他任务上,您也可以随时雇佣一家开发公司为您做这件事


希望这是有用的

您安装的奖励模块的名称是什么?甜食-您运行的甜食版本是什么?您好,您可以在Quote print_r(Mage::getSingleton('checkout/session')->getQuote()->getData()中获得此折扣的信息吗;尝试打印此数组,看您是否获得了想要的折扣信息?如果他不调用resetDiscountLabels(),他将完全丢失甜食折扣标签,但听起来他只是想将它们分开。这不是不调用该函数,而是扩展它以显示细分。我已经指出了两个折扣放在一行中的确切位置。@Richard Parnaby King:如果您成功地解决了您的问题,您能告诉我们吗?我很好奇!