2016-03-25 21 views
0

magentoの合計を計算するために以下のコードを使用して、注文後にマゼンタのイベントオブザーバを使用してマゼンタの合計を再計算しようとしています。受注後に合計を再計算

オブザーバー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> 

しかし、何も変更は助けてください。

答えて

0

注文合計を再計算できませんでした。このメソッドは、引用符でのみ使用できます。個人的な価値を追加したい場合は、sales_quote_collect_totals_afterイベントを使用する必要があります。あなたは順番に引用からあなたの合計を変換するために、このような何かを追加する必要があり、あなたのモジュールのconfig.xmlに

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

直接変更オーダー合計:

public function recalculateTotal($observer){ 
    //var_dump($observer->getOrder()->getData());exit; 
    $orderModel = $observer->getOrder(); 
    //echo "<pre>";print_r($orderModel->getData());echo "</pre>";exit; 
    $orderModel->setSurchargeAmount(10); // usually all totals has "amount" suffix 
    $orderModel->setBaseSurchargeAmount(10); 
    $orderModel->setGrandTotal($orderModel->getGrandTotal() + 10); 
    $orderModel->setBaseGrandTotal($orderModel->getBaseGrandTotal() + 10); 
    try { 
     $orderModel->save(); 
    } catch (Exception $e) { 
     echo $e->getMessage(); 
    } 
    echo "<pre>";print_r($orderModel->getData());echo "</pre>";exit; 
} 

PS :引用と見積りのアドレスを変更する必要がありますが、順序は変更しないでください

+0

あなたのリプレイのために@Siarheyをお寄せいただきありがとうございます。これはiwとしては機能しませんアリは、場所の命令の後にgrandtotalを変更する。 – Zaheerabbas

+0

回答が更新されました –