Magento的销售订单发票使用API​​产品的数量更新用不正常(Magento Sales Ord

2019-09-26 03:09发布

我创建一个应用程序的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));

有没有我的代码的任何错误? 任何一个可以给我一些建议吗?

Answer 1:

在数组变量“ $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
标签: php magento