2011-09-20 58 views
2

在使用soap api与magento对话时遇到问题,导致无法通过订单创建发票。问题出在我的工具的sales_order_invoice.create调用中。当我调用这个调用中传递的参数之一是产品ID和要发票的数量时,格式化为嵌套数组。出于某种原因,无论我如何将这些数据发送给magento,magento都将按照订单上显示的金额创建发票,但它不会将任何产品添加到发票页面。它就像完全忽略了itemQtys数组。另外我不知道如果我可以改变我想要发票的数量。通过SOAP API从订单创建发票

这是使用呼叫IM: http://www.magentocommerce.com/wiki/doc/webservices-api/api/sales_order_invoice#sales_order_invoice.create

举个例子想象,客户下订单了一定数量的产品,但我们只手头上有一定的数量。我想为我们现有的号码开具发票并发运该发票,然后在稍后的日期向其余的发票开具发票。这当然需要全部“以编程方式”完成。这可能是通过SOAP API来完成的吗?或在magento时期?

谢谢。

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

       } 

你可以从上面的代码有一些想法。