2012-10-08 63 views
0

我有一个模块(不是由我创建的),它接收报价并在满足特定条件时应用折扣。这在它自己的工作很好。购物车规则也可以正常工作。Magento模块影响报价的订单

但是,我需要自定义模块在应用内置Magento购物车(总价格)规则之前应用相关折扣。就目前来看,Magento首先应用,然后是自定义应用,导致Magento在不应该有折扣的时候。

什么控制模块的顺序,因此我将如何指定不同的顺序。

回答

2

Magento有collectTotals功能(我相信这是实现了Composite模式)。它的基本功能 - 按顺序分别填写指定的总收集器,并将其称为collect()方法。

最有可能您的模块的总收集器被调用后SalesRule之一(其代码折扣)。所以你需要做的是:打开​​3210配置文件的自定义折扣模块,找到xpath config/global/sales/quote/totals/[模块别名]并添加(或者如果存在则更改)<before>discount</before>

通过这种方式,您可以订购自定义模块的总收集器,在SalesRule之前应用折扣。

+0

感谢您的回答,没有任何'before'指令,所以我在'class'下面添加了一个,但不幸的是它似乎没有任何影响。还有一个'',不确定这是否相关。 –

+0

您所描述的功能可能在Observer中完成。您可以尝试将''改为'' - 因此自定义模块逻辑将应用于'collectTotals'过程之前,但可能您的_Quote_对象不会包含小计。 –

+0

那真奇怪;做出了你所建议的改变,但是现在当添加到购物车或访问非空购物车时,会出现500错误(php致命错误内存耗尽)。是否有任何其他信息可以帮助我们指出原因。感谢您的答案,真的很感激。 –