我在澳大利亚的Magento商店安装了2个模块,当项目被添加到购物车时,它们都会影响报价计算。看起来好像一个模块与另一个模块相冲突,我试图从模块创建者那里获得帮助,但几乎没有提供任何支持。
模块如下:
aheadWorks -积分和奖励模块
MageWorld - Free Gift Module
当这两个模块都处于活动状态时,我有Grand Total计算错误,具体来说,税没有按应有的方式添加到Grand Total中。澳大利亚法律规定,产品价格需要包括税(所有商品的统一税率为10%),总价也需要包括已付的税,此外,发票需要显示支付给客户的税款金额。
现在,当我禁用MW -免费礼物模块时,计算似乎正常运行,这使我相信可以通过修改该模块来修复故障。在两个模块中查看和测试config.xml文件的部分内容后,我发现它们都包含对global > sales > quote > totals
节点的添加:
aheadWorks -积分和奖励模块> etc'config.xml
<global>
…
<sales>
<quote>
<totals>
<points>
<class>points/total_quote_points</class>
<after>wee,discount,tax,tax_subtotal,grand_total</after>
<renderer>points/checkout_total</renderer>
</points>
</totals>
</quote>
...
</sales>
</global>
MageWorld - Free Gift Module> etc'config.xml
<global>
...
<sales>
<quote>
<totals>
<freegift>
<class>freegift/quote_address_total_freegift</class>
<after>subtotal</after>
<before>tax_subtotal,shipping</before>
</freegift>
</totals>
</quote>
</sales>
</global>
不幸的是,这段代码在某些层面上让我无法理解它是如何工作的。我知道类节点指的是每个模块中的某个模型,而类节点中引用的模型在计算报价总数时被其他模型调用。我不知道是哪个模型负责调用其他模型来做报价计算。我所发现的是,注释掉我在MageWorld模块中显示的代码,似乎解决了这个问题,我无法想象它引入了什么其他问题。
我假设<after>
和<before>
节点影响这些计算的顺序,但我似乎无法弄清楚它是如何工作的。有没有人能就这是如何工作的建议,以及如何调试这个问题的一些建议,因为目前我的商店发票没有正确显示。
我遇到的问题是Magento在排序总计算时实现的排序方法中的一个bug。在下面的堆栈溢出线程中可以找到更深入的解释和解决方案。
排序算法:Magento checkout合计排序错误导致运费计算错误