2012-03-13 21 views
1

我正在创建Magento应用程序,并计划使用Magento API创建销售订单发票。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)); 

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

回答

1

在数组变量“$invoiceItems”,则提供此值: -

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

用于上述阵列必须对应于订单项目ID,而不是给Item SKU的密钥。这意味着无论何时发出订单,每个订购商品都会得到自己唯一的订单商品标识,与相应的SKU或相应的产品标识不完全相同。

因此,要获得这一点,你需要从订单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)); 

现在这上面的代码应该为你工作。

希望它有帮助。

+0

非常感谢你.... – 2012-03-13 08:17:19

+0

@乌拉斯 - 最欢迎和欢呼! – 2012-03-13 11:13:23

相关问题