Magento订单总额在以编程方式创建发票后未更新
我正在以编程方式创建发票。由于我们使用鱼缸库存,因此我们直接为magento的订单生成装运。因此,我正在根据装运自动创建发票。现在发票已成功创建,但订单总额未根据发票金额更新 这是我从装运项目创建发票的代码。我在销售\订单\发货\事后保存\中使用此功能,并使用采购订单作为订单的付款方式,因此不会捕获发票Magento订单总额在以编程方式创建发票后未更新,magento,Magento,我正在以编程方式创建发票。由于我们使用鱼缸库存,因此我们直接为magento的订单生成装运。因此,我正在根据装运自动创建发票。现在发票已成功创建,但订单总额未根据发票金额更新 这是我从装运项目创建发票的代码。我在销售\订单\发货\事后保存\中使用此功能,并使用采购订单作为订单的付款方式,因此不会捕获发票 public function autoInvoiceGenerate(Varien_Event_Observer $observer){ $shipment = $obser
public function autoInvoiceGenerate(Varien_Event_Observer $observer){
$shipment = $observer->getEvent()->getShipment();
$shipment = Mage::getModel('sales/order_shipment')->loadByIncrementId($shipment->getIncrementId());
$shippedItems = $shipment->getAllItems();
$order = $shipment->getOrder();
$order = Mage::getModel('sales/order')->load($order->getId());
try{
if(!$order->canInvoice()) {
//$order->addStatusHistoryComment('Order cannot be invoiced.', false);
//$order->save();
return $this;
}
$invoiceQtys = array();
foreach($shippedItems as $item){
$invoiceQtys[$item->getOrderItemId()] = $item->getQty();
}
if(empty($invoiceQtys)){
return $this;
}
//START Handle Invoice
$invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice($invoiceQtys);
$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
$invoice->register();
$invoice->getOrder()->setCustomerNoteNotify(false);
$invoice->getOrder()->setIsInProcess(true);
$invoice->sendEmail(true, '');
$order->addStatusHistoryComment('Invoice created for shipment #'.$shipment->getData('increment_id').'.', false);
$transactionSave = Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder());
$transactionSave->save();
}
有点晚了,但是如果您仍然有这个问题,我的建议是: 保存与发票关联的订单。 最后保存发票。 这对我很有用:
$order = Mage::getModel('sales/order')->load($orderId);
$invoice = Mage::getModel('sales/service_order', $order)
->prepareInvoice($itemsarray);
$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
$invoice->register();
$invoice->getOrder()->setCustomerNoteNotify(true);
$invoice->getOrder()->setIsInProcess(true);
$order->save();
Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder())
->save();
$invoice->save();
用try…catch块放置代码,这样您就知道代码中是否存在任何问题。