【问题标题】:How to set custom grand total before checkout process in magento?如何在magento结帐过程之前设置自定义总计?
【发布时间】:2011-05-20 19:36:15
【问题描述】:

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

有人知道吗?

【问题讨论】:

    标签: php events magento checkout


    【解决方案1】:

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

    玩得开心:)

    【讨论】:

    • 感谢您的帮助,但我想在下新订单/结帐流程之前更改购物车价格。是一样的吗?
    • @clockworkgeek 谢谢。已经过期了,今天更新。您在哪里以及如何找到有关它的请求?
    • @Andrey - 下面有几篇关于它的帖子,但由于它们不是答案而被删除。
    • @clockworkgeek 感谢您的关注,我已经更新了链接,希望这会对人们有所帮助:)
    • 当我下载模块并将文件放在所需的文件夹中时,它给了我无法调用构造函数的错误。
    【解决方案2】:

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

    请注意

    Mage_Sales_Model_Quote_Address_Total_Abstract Mage_Sales_Model_Order_Invoice_Total_Abstract Mage_Sales_Model_Order_Creditmemo_Total_Abstract

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-17
      • 2015-08-26
      • 2013-03-09
      • 2012-04-28
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 2015-02-02
      相关资源
      最近更新 更多