2017-01-19 6 views
0

私は請求書をプログラムで作成しています。 Fishbowlの在庫を使用しているので、Magentoの注文に対する出荷を直接生成します。したがって、私は請求書を自動的に作成しています。ここでは請求書は正常に作成されましたが、注文合計は請求書の金額に基づいて更新されません。Magento請求書をプログラムで作成した後に注文が更新されない

ここでは、郵送物から請求書を作成するためのコードです。私はこの機能をsales_order_shipment_save_afterイベントで使用しており、注文の支払い方法として購入注文を使用しているため、請求書の取り込みはありません。

少し遅れ
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(); 

} 
+0

は.....試してみるとcatchブロックをあなたのコードを入れて、あなたはアイデアは、コードのいずれかの問題があり得ます。 –

答えて

0

しかし、あなたはまだここに私の提案、この問題が発生している場合:

  • を請求書に関連付けられた順序を保存します。
  • 最後に請求書を保存してください。

これは私の作品:

$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(); 
関連する問題