Magento 下单后重新计算总计
下单后,我尝试使用magento事件观察程序重新计算magento总计。我使用下面的代码来计算总计 观察函数Magento 下单后重新计算总计,magento,magento-1.8,Magento,Magento 1.8,下单后,我尝试使用magento事件观察程序重新计算magento总计。我使用下面的代码来计算总计 观察函数 public function recalculateTotal($observer){ //var_dump($observer->getOrder()->getData());exit; $orderModel = $observer->getOrder(); //echo "<pre>";print_r($orderModel-
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;
}
公共功能重新计算总计($observer){
//变量转储($observer->getOrder()->getData());退出;
$orderModel=$observer->getOrder();
//echo“”;打印($orderModel->getData());echo“”;退出;
$saveModel=Mage::getModel('sales/order')->load($orderModel->getId());
$saveModel->setsource(10);
$saveModel->setbase附加费(10);
$saveModel->collectTotals();
$saveModel->save();
echo“”;打印($orderModel->getData());echo“”;退出;
}
事件
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;
}
独生子女
附加费/观察员
重新计算
但是没有任何变化,请帮助。您无法重新计算订单总数。此方法仅适用于报价单。如果您想添加您的个人价值,您必须在事件之后使用:
sales\u quote\u collect\u totals\u
在模块的config.xml中,您应该添加如下内容,以将报价中的总额转换为订单:
*
*
直接更改订单总数:
公共功能重新计算总计($observer){
//变量转储($observer->getOrder()->getData());退出;
$orderModel=$observer->getOrder();
//echo“”;打印($orderModel->getData());echo“”;退出;
$orderModel->SetSourceAmount(10);//通常所有合计都有“金额”后缀
$orderModel->Setbase附加费金额(10);
$orderModel->setGrandTotal($orderModel->getGrandTotal()+10);
$orderModel->setBaseGrandTotal($orderModel->getBaseGrandTotal()+10);
试一试{
$orderModel->save();
}捕获(例外$e){
echo$e->getMessage();
}
echo“”;打印($orderModel->getData());echo“”;退出;
}
PS:您必须更改报价和报价地址,但不能更改订单谢谢您的replay@siarey,但这不起作用,因为我想在下订单后更改grandtotal。
<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;
}