2016-03-25 21 views
0

Sipariş verdikten sonra magento olayı gözlemcisini kullanarak magento toplamını yeniden hesaplamaya çalışıyorum. Toplamı hesaplamak için aşağıdaki kodu kullanın.Recalculate Toplam sipariş verildikten sonra

Gözlemci 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; 
} 

Olay

<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> 

Ama hiçbir şey değişim yardım edin. Sipariş toplamlarını yeniden hesaplayamadınız

cevap

0

Bu yöntem sadece teklif için kullanılabilir. Kişisel değerlerinizi eklemek istiyorsanız sales_quote_collect_totals_after olayını kullanmanız gerekir. Sipariş toplamları

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

Doğrudan değişikliği:: En modülün config.xml siparişe alıntı adresinin toplam dönüştürmek için böyle bir şey eklemek gerekir ise

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 : Alıntı ve alıntı adresinde değişiklik yapmalısınız ancak siparişte değil

+0

@Siarhey Rehberiniz için teşekkürler Ama bu iw olarak çalışmıyor yer sipariş sonra grandtotal değiştirmek için karınca. – Zaheerabbas

+0

Yanıt güncellendi –

İlgili konular