订购后重新计算总计

时间:2016-03-25 05:11:13

标签: magento magento-1.8

我试图在下订单后使用magento事件观察者重新计算magento total。我使用下面的代码来计算总数。

Observer Functon

public function recalculateTotal($observer){
    //var_dump($observer->getOrder()->getData());exit;
    $orderModel = $observer->getOrder();
    //echo "<pre>";print_r($orderModel->getData());echo "</pre>";exit;
    $saveModel = Mage::getModel('sales/order')->load($orderModel->getId());
    $saveModel->setSurcharge(10);
    $saveModel->setBaseSurcharge(10);
    $saveModel->collectTotals();
    $saveModel->save();
    echo "<pre>";print_r($orderModel->getData());echo "</pre>";exit;
}

活动

 <global>
    <events>
        <sales_order_place_after>
          <observers>
            <order_surcharge_display>
              <type>singleton</type>
              <class>surcharge/observer</class>
              <method>recalculateTotal</method>
            </order_surcharge_display>
          </observers>
        </sales_order_place_after>
  </events>

</global>

但没有任何改变,请帮助。

1 个答案:

答案 0 :(得分:0)

您无法重新计算订单总数。此方法仅适用于报价。如果要添加个人值,则必须使用:var diff = { 'x' : this.target.position.x - this.node.position.x, 'y':this.target.position.y - this.node.position.y }; 事件。

在你的模块的config.xml中,你应该添加这样的东西,将你的总数从报价转换成订单:

sales_quote_collect_totals_after

直接更改订单总数:

<sales_convert_quote>
    <surcharge_amount>
        <to_order>*</to_order>
    </surcharge_amount>
    <base_surcharge_amount>
        <to_order>*</to_order>
    </base_surcharge_amount>
</sales_convert_quote>

PS:您必须更改报价和报价地址,但不能按顺序进行更改