如何使用Observer设置Grand Total / Base Grand Total。 [Magento的]

时间:2013-03-15 03:13:52

标签: php magento checkout sales discount

的Config.xml

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

Observer.php

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

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

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

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

我正在使用默认Magento 1.6.2 ,并且在 checkout / onepage / index 上,每次点击继续时都会触发该功能,但我不知道如何在引用上设置grandTotal / BaseGrandTotal。

1 个答案:

答案 0 :(得分: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

希望有所帮助