首页 文章

通过SOAP API从订单创建发票

提问于
浏览
2

我在使用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
    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) {
    
                    }
    

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

相关问题