Создание счета из заказа через SOAP API - PullRequest
2 голосов
/ 21 сентября 2011

Я сталкиваюсь с проблемой при использовании мыла api, чтобы поговорить с magento, которая мешает мне создать счет-фактуру из заказа. Проблема в вызове sales_order_invoice.create из моего инструмента. Когда я вызываю это, один из аргументов, переданных в этом вызове, - это идентификатор продукта и количество для выставления счета, отформатированное во вложенном массиве. По какой-то причине, независимо от того, как я отправляю эти данные в magento, magento создаст счет на сумму, указанную в заказе, но не добавляет какой-либо из продуктов на страницу счета. Это как полное игнорирование массива itemQtys. Также я не могу понять, могу ли я изменить количество, на которое я хочу выставить счет.

Это звонок, который я использую: http://www.magentocommerce.com/wiki/doc/webservices-api/api/sales_order_invoice#sales_order_invoice.create

В качестве примера представьте, что клиент размещает заказ на некоторое количество продуктов, но у нас есть только определенное количество под рукой. Я хотел бы выставить счет на номер, который у нас есть, и отправить этот счет, а затем выставить счет на оставшуюся часть заказа позднее. Это, конечно, должно быть сделано все "программно". Можно ли это сделать через API-интерфейс SOAP? или в пурпурный период?

Спасибо.

1 Ответ

0 голосов
/ 09 мая 2012
if(!$order->getId()){ 
                    return; 
                }

                try {
                if(!$order->canInvoice())
                {
                Mage::throwException(Mage::helper('core')->__('Cannot create an invoice.'));
                }

                $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();

                if (!$invoice->getTotalQty()) {
                Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.'));
                }

                $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
                $invoice->register();
                $transactionSave = Mage::getModel('core/resource_transaction')
                ->addObject($invoice)
                ->addObject($invoice->getOrder());

                $transactionSave->save();

                }
                catch (Mage_Core_Exception $e) {

                }

Вы можете иметь некоторую идею из приведенного выше кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...