我创建一个应用程序的Magento,我刨使用Magento的API来创建销售订单发票。
这是我为我的发票创建伪代码。 问题是,它会创建一个发票,但该发票总是空白(不显示的产品和数量)
<?php
$proxy = new SoapClient('http://myurl/api/soap?wsdl');
$sessionId = $proxy->login('apiuser', 'apikey');
// item array with sku and quantity
$invoiceItems = array(
'002' => '1', '003' => '1', '004' => '1', '005' => '1'
);
// Create new invoice
$newInvoiceId = $proxy->call($sessionId, 'sales_order_invoice.create', array($saleorderno, $invoiceItems, 'Invoice Created', true, true));
?>
但是,当我创建一个销售订单发票这样的(有一个从销售订单数量没有变化),它工作正常
$newInvoiceId = $proxy->call($sessionId, 'sales_order_invoice.create', array($saleorderno, array(), 'Invoice Created', true, true));
有没有我的代码的任何错误? 任何一个可以给我一些建议吗?
在数组变量“ $invoiceItems
”,你提供这个值: -
$invoiceItems = array(
'002' => '1',
'003' => '1',
'004' => '1',
'005' => '1'
);
用于上述阵列中的键必须对应于订单项目ID,而不是给Item SKU。 这意味着只要一个订单时,每项订购货物得到了自己独特的产品订购ID,这是不一样的是,相应的SKU或相应的产品ID在所有相同。
因此,要获得这一点,你需要从订单ID加载指令集,并获取如下项集合名单: -
$saleorderno = 'SOME VALID ORDER INCREMENT ID';
$order = Mage::getModel('sales/order')->loadByIncrementId($saleorderno);
$orderItems = $order->getAllItems();
$invoiceItems = array();
foreach ($orderItems as $_eachItem) {
$invoiceItems[$_eachItem->getItemId()] = $_eachItem->getQtyOrdered();
}
$newInvoiceId = $proxy->call($sessionId, 'sales_order_invoice.create', array($saleorderno, $invoiceItems, 'Invoice Created', true, true));
现在,这个上面的代码应该为你工作。
希望能帮助到你。
文章来源: Magento Sales Order Invoice with product quantity updation using API not working properly