bah*_*hoo 5 api invoice magento observer-pattern
我们有一些API集成,会定期为订单创建货件.
我想做的是创建一个观察员,以便在创建此货件时创建适当的发票和捕获付款.我把它绑在sales_order_shipment_save_after
:
public function autoInvoice($observer){
$shipment = $observer->getEvent()->getShipment();
$order = $shipment->getOrder();
$items = $shipment->getItemsCollection();
$qty = array();
foreach($items as $item)
$qty[$item['order_item_id']] = $item['qty'];
$invoice = Mage::getModel('sales/order_invoice_api');
$invoiceId = $invoice->create($order->getIncrementId(), $qty);
$invoice->capture($invoiceId);
}
Run Code Online (Sandbox Code Playgroud)
(实际捕获的代码有些天真,但请耐心等待.)
奇怪的是,这段代码运作正常 - 货件已创建,发票已创建并标记为"付费".但是,订单本身仍处于不确定状态,并保持"待定"状态.
进一步研究,订单上的物品本身具有订购和发货的正确数量,但没有已开票的数量清单.我认为这是造成状态挂断的原因.就好像qty_invoiced
sales_order_item表上的某个表格会以某种方式被还原.
同样,发票显示正确的项目,所以我在这里很困惑.
有任何想法吗?
小智 2
这确实是一个非常有趣的@bahoo。
也许尝试:
$shipment = $observer->getEvent()->getShipment();
$order = $shipment->getOrder();
$qty = array();
$invoice = Mage::getModel('sales/order_invoice_api');
$invoiceId = $invoice->create($order->getIncrementId(), $qty);
$invoice->capture($invoiceId);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4204 次 |
最近记录: |