通过SOAP API从订单创建发票

时间:2011-09-20 23:02:28

标签: magento soap

我在使用soap api与magento对话时遇到问题,导致我无法从订单创建发票。问题出在我工具的sales_order_invoice.create调用中。当我调用此调用时传递的参数之一是产品ID和要开票的数量,格式化为嵌套数组。出于某种原因,无论我如何将此数据发送到magento,magento都会创建具有订单上所示金额的发票,但它会将任何产品添加到发票页面。它就像完全忽略了itemQtys数组。此外,我无法弄清楚我是否可以更改我想要发票的数量。

这是我正在使用的电话: http://www.magentocommerce.com/wiki/doc/webservices-api/api/sales_order_invoice#sales_order_invoice.create

作为一个例子,假设客户订购了一些产品,但我们手边只有一定的数量。我想将手头的号码开具发票并发运该发票,然后在以后的日期对其余订单开具发票。这当然需要“以编程方式”完成。这可能是通过SOAP api做的吗?还是在magento时期?

感谢。

1 个答案:

答案 0 :(得分:0)

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) {

                }

你可以从上面的代码中得到一些想法。