Я создаю приложение 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));
Есть ли ошибки с моим кодом? Может ли кто-нибудь дать мне совет?
В переменной массива « $invoiceItems
» вы предоставляете это значение:
$invoiceItems = array( '002' => '1', '003' => '1', '004' => '1', '005' => '1' );
Ключи для вышеупомянутого массива должны соответствовать идентификатору Item Item, а не SKU элемента. Это означает, что всякий раз, когда размещается заказ, каждый упорядоченный элемент получает свой уникальный уникальный идентификатор позиции, который совсем не совпадает с идентификатором соответствующего SKU или соответствующего идентификатора продукта.
Чтобы получить это, вам нужно загрузить коллекцию заказов из идентификатора заказа и получить список коллекции предметов, как показано ниже:
$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));
Теперь этот код должен работать для вас.
Надеюсь, поможет.