【发布时间】:2011-05-20 19:36:15
【问题描述】:
我在“sales_order_place_before”事件中添加了一个观察者,并希望在处理付款之前自定义总计。但是我已经尝试了很多来更改报价,但它不起作用。
有人知道吗?
【问题讨论】:
标签: php events magento checkout
我在“sales_order_place_before”事件中添加了一个观察者,并希望在处理付款之前自定义总计。但是我已经尝试了很多来更改报价,但它不起作用。
有人知道吗?
【问题讨论】:
标签: php events magento checkout
您需要在总计一个 (Mage_Sales_Model_Quote_Address_Total_Grand) 之后添加新的收集器。它必须修改总计收集器设置的总和。
我一周前在乌克兰的 MageConf 会议上谈到了这样一个案例。视频和幻灯片尚不可用,但您可以download demo-module 在会议上描述。有一个计算包装价格的总收集器示例。
您可以修改我的演示总收集器,使其在总收集器之后插入到收集过程中(参见模块 etc 目录中的 config.xml - 删除 @987654322 @node 然后使用 <after>grand_total</after> 代替)并修改 collect() 方法只是为了将总计设置为您的预定义值:
$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
查看实现一个总体对象需要什么。您可能还需要扩展速率对象
【讨论】: