如何在magento结账前设置自定义总计?

sma*_*art 4 php events checkout magento

我在"sales_order_place_before"事件中添加了一个观察者,并希望在处理付款之前自定义总计.但我已经尝试了很多来改变报价,但它没有用.

有谁有想法吗??

And*_*kus 14

您需要在总计一个之后添加新的收集器(Mage_Sales_Model_Quote_Address_Total_Grand).它必须修改由总计收集者设置的总和.

我在乌克兰的MageConf会议上谈到了这样一个案例.视频和幻灯片尚不可用,但您可以下载会议中描述的演示模块.有一个总收集器的例子来计算包装价格.

您可以修改我的演示总收集器,以便它将被插入收集过程AFTER Grand total collector(请参阅模块etc目录中的config.xml - 删除节点然后使用)并修改collect()方法只是为了将总计设置为预定义值:<before>subtotal</before><after>grand_total</after>

$address->setGrandTotal($someValue);
$address->setBaseGrandTotal($someBaseValue);
Run Code Online (Sandbox Code Playgroud)

或者您可以保留此模块,但在其中设置负数.因此,总收藏家将减去它们并按您的意愿降低总价值.同样在这种情况下,客户将能够看到您的负值(在fetch()方法中给出它们)并理解为什么总计降低了.

玩得开心 :)