Magento Config.xml全球销售报价总计节点


Magento Config.xml Global Sales Quote Totals Node

我在澳大利亚的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合计排序错误导致运费计算错误