使用API更新产品数量的Magento销售订单发票工作不正常


Magento Sales Order Invoice with product quantity updation using API not working properly

我正在创建一个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));

我的代码有错误吗?有人能给我一些建议吗?

在数组变量"CCD_ 1";,您提供的价值是:-

$invoiceItems = array(
    '002' => '1',
    '003' => '1',
    '004' => '1',
    '005' => '1'
);

上述数组的键必须与订单项目ID相对应,而不是与项目SKU相对应。这意味着,每当下订单时,每个订购的商品都会获得自己唯一的订单商品ID,该ID与相应SKU或相应产品ID的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));