我在使用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时期?
感谢。
答案 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) {
}
你可以从上面的代码中得到一些想法。