Creating An Invoice from an Order over the SOAP API
Im running into an issue when using the soap api to talk to magento that prevents me from creating an invoice from an order. The issue is in the sales_order_invoice.create call from my tool. When i call this one of the arguments passed in that call is the product id and the quantity to invoice, formatted in a nested array. For some reason no matter how i send this data to magento, magento will create the invoice with the amount as seen on the order but it dosent add any of the products to the invoice page. Its like its completely ignoring the itemQtys array. Also i cant figure out if i can change the quantity i want to invoice.
This is the call im using: http://www.magentocommerce.com/wiki/doc/webservices-api/api/sales_order_invoice#sales_order_invoice.create
As an example imagine tha开发者_运维百科t customer places an order for some number of products but we only have a certain number on hand. I would like to invoice the number that we have on hand and ship that invoice then invoice the rest of the order at a later date. This of course needs to be done all "programmatically". Is this possible to do over the SOAP api? or in magento period?
Thanks.
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) {
}
you can have some idea from the above code.
精彩评论