4

我在“sales_order_place_before”事件中添加了一个观察者,并希望在处理付款之前自定义总计。但我已经尝试了很多来更改报价,但它不起作用。

有谁有想法吗??

4

2 回答 2

14

您需要在总计一个 (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()方法中给出它们)并了解总计降低的原因。

玩得开心 :)

于 2010-12-06T09:24:33.903 回答
0

您不能必须创建一个新的总对象或将总和添加为虚拟产品

请注意

Mage_Sales_Model_Quote_Address_Total_Abstract Mage_Sales_Model_Order_Invoice_Total_Abstract Mage_Sales_Model_Order_Creditmemo_Total_Abstract

看看实现一个总体对象需要什么。您可能还需要扩展 rate 对象

于 2010-12-06T06:38:45.347 回答