2012-03-13 53 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

相關問題