2

配置文件

        <sales_quote_collect_totals_before>
            <observers>
                <discount>
                    <class>discount/observer</class>
                    <method>discountMethod</method>
                </discount>
            </observers>
        </sales_quote_collect_totals_before>

观察者.php

public function discountMethod($observer)
{
   $quote = $observer->getEvent()->getQuote();
   $quote->setGrandTotal(1);
   $quote->setBaseGrandTotal(1);
   $quote->save();
}

我已经创建了 config.xml 和 Observer.php 并且该代码根本不起作用。$quote->getData() 显示:

[grand_total] => 1
[base_grand_total] => 1

但是页面上的 GrandTotal 仍然显示真实价格 累计

我使用的是默认 Magento 1.6.2,在结帐/单页/索引上,每次单击“继续”都会触发该功能,但我不知道如何在报价上设置 grandTotal / BaseGrandTotal。

4

1 回答 1

4

您正在收听,sales_quote_collect_totals_before因此grandTotal在此事件之后收集包括 在内的总数,并且在grandTotal运行时总收集器将重置为 0。

如果您使用sales_quote_collect_totals_after的是总数应该是正确的,但税收计算会被搞砸,因为它将基于旧的总数。

我能想到的唯一干净的方法是创建自己的总收藏家<before>tax</before>

这是有关如何创建新的总收藏家的链接:http: //magento.ikantam.com/qa/how-add-discount-total-magento

希望有帮助

于 2013-10-03T21:47:04.000 回答