Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento订单总额在以编程方式创建发票后未更新_Magento - Fatal编程技术网

Magento订单总额在以编程方式创建发票后未更新

Magento订单总额在以编程方式创建发票后未更新,magento,Magento,我正在以编程方式创建发票。由于我们使用鱼缸库存,因此我们直接为magento的订单生成装运。因此,我正在根据装运自动创建发票。现在发票已成功创建,但订单总额未根据发票金额更新 这是我从装运项目创建发票的代码。我在销售\订单\发货\事后保存\中使用此功能,并使用采购订单作为订单的付款方式,因此不会捕获发票 public function autoInvoiceGenerate(Varien_Event_Observer $observer){ $shipment = $obser

我正在以编程方式创建发票。由于我们使用鱼缸库存,因此我们直接为magento的订单生成装运。因此,我正在根据装运自动创建发票。现在发票已成功创建,但订单总额未根据发票金额更新

这是我从装运项目创建发票的代码。我在销售\订单\发货\事后保存\中使用此功能,并使用采购订单作为订单的付款方式,因此不会捕获发票

    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块放置代码,这样您就知道代码中是否存在任何问题。