我在“sales_order_place_before”事件中添加了一个观察者,并希望在处理付款之前自定义总计。但我已经尝试了很多来更改报价,但它不起作用。
有谁有想法吗??
您需要在总计一个 (Mage_Sales_Model_Quote_Address_Total_Grand) 之后添加新的收集器。它必须修改总计收集器设置的总和。
一周前,我在乌克兰的 MageConf 会议上谈到了这样一个案例。视频和幻灯片尚不可用,但您可以下载会议上描述的演示模块。有一个计算包装价格的总收集器示例。
您可以修改我的演示总计收集器,以便在总计收集器之后将其插入收集过程中(请参阅模块等目录中的config.xml - 删除节点然后使用)并修改collect()方法只是为了将总计设置为您的预定义价值观:<before>subtotal</before>
<after>grand_total</after>
$address->setGrandTotal($someValue);
$address->setBaseGrandTotal($someBaseValue);
或者您可以保留此模块,但在其中设置负总数。因此,总收藏家会根据需要减去它们并降低总价值。同样在这种情况下,客户将能够看到您的负值(在fetch()方法中给出它们)并了解总计降低的原因。
玩得开心 :)
您不能必须创建一个新的总对象或将总和添加为虚拟产品
请注意
Mage_Sales_Model_Quote_Address_Total_Abstract
Mage_Sales_Model_Order_Invoice_Total_Abstract
Mage_Sales_Model_Order_Creditmemo_Total_Abstract
看看实现一个总体对象需要什么。您可能还需要扩展 rate 对象