我在“sales_order_place_before”活动中添加了观察员,并希望在处理付款之前自定义总计。但是我已经尝试了很多来改变报价,但它没有用。
有没有人有任何想法?
答案 0 :(得分:14)
你需要在总计一个之后添加新的收集器(Mage_Sales_Model_Quote_Address_Total_Grand)。它必须修改由总收集者设置的总和。
我在乌克兰的MageConf会议上谈到了这样一个案例。视频和幻灯片尚不可用,但您可以在会议中描述download demo-module。有一个总收集器的例子来计算包装价格。
您可以修改我的演示总收集器,以便它将被插入收集过程AFTER Grand total collector(请参阅模块 etc 目录中的 config.xml - remove {{ 1}}节点然后使用<before>subtotal</before>
代替)并修改 collect()方法只是为了将总计设置为预定义值:
<after>grand_total</after>
或者您可以保留此模块,但在其中设置负数。因此,总收藏家将减去它们并按您的意愿降低总价值。同样在这种情况下,客户将能够看到您的负值(在 fetch()方法中给出它们),并了解为什么总计降低了。
玩得开心:)
答案 1 :(得分:0)
您不能创建新的总对象或将总和添加为虚拟产品
请注意
Mage_Sales_Model_Quote_Address_Total_Abstract
Mage_Sales_Model_Order_Invoice_Total_Abstract
Mage_Sales_Model_Order_Creditmemo_Total_Abstract
查看实现总对象所需的内容。您还可能需要扩展费率对象