【问题标题】:Creating An Invoice from an Order over the SOAP API通过 SOAP API 从订单创建发票
【发布时间】:2011-09-20 23:02:28
【问题描述】:

我在使用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时期?

谢谢。

【问题讨论】:

    标签: magento soap


    【解决方案1】:
    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) {
    
                    }
    

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

    【讨论】:

      猜你喜欢
      • 2021-02-18
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多