【问题标题】:Magento Sales Order Invoice with product quantity updation using API not working properly使用 API 更新产品数量的 Magento 销售订单发票无法正常工作
【发布时间】:2012-03-13 05:32:26
【问题描述】:

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

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

【问题讨论】:

    标签: php magento


    【解决方案1】:

    在数组变量“$invoiceItems”中,您提供了这个值:-

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

    上述数组的键必须对应于 Order Item ID 而不是 Item SKU。这意味着无论何时下订单,每个订购的商品都有自己唯一的 Order Item ID,这与对应的 SKU 或对应的 Product 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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 2012-07-10
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      相关资源
      最近更新 更多