From a specific order I want to create an invoice for some selected items from that order.
I have successfully created an invoice for the whole order programmatically, but I want to create a partial invoice of that order.
Atlast I got it .
Had to dig magento to get this .
$orderid // order id
$order = Mage::getModel('sales/order')->load($orderid);
or for order increment id
$orderincrmentid // order increment id
$order = Mage::getModel('sales/order')->loadByIncrementId($orderincrmentid);
if($order->canInvoice()) {
$invoiceId = Mage::getModel('sales/order_invoice_api')
->create($order->getIncrementId(), $itemsarray ,'your_comment' ,1,1);
}
echo $invoiceId; // Gives increment Invoice id
@parameters
for above create function :
1st parameter : order increment id
2nd parameter : array
// array format . [Main point]
foreach($order->getAllItems() as $item) {
$item_id = $item->getItemId(); //order_item_id
$qty = $item->getQtyOrdered(); //qty ordered for that item
}
array('56'=>'3','57'=>'1','58'=>'0');
array([order_item_id] => [qty]); // general array format
So here you will add order item id as key and its qty as its value .
If one do not want to create invoice id a particular item then simply pass value of its quantity as 0 // zero .
3rd parameter : comment
4th parameter : to send mail ----> 1 not send mail ----> 0
5th parameter : include comment in mail ----> 1 not include comment in mail ----> 0
It returns invoice increment id .
Hope it helps someone .