Organizational Research By

Surprising Reserch Topic

creating invoice capturing on shipment

creating invoice capturing on shipment  using -'api,magento,order,observer-pattern,invoice'

We've got some API integrations that will periodically create shipments for orders.

What I'd like to do is create an observer to also create an appropriate invoice & capture payment when this shipment is created. I have this tied to sales_order_shipment_save_after:

public function autoInvoice($observer){

    $shipment = $observer->getEvent()->getShipment();
    $order = $shipment->getOrder();

    $items = $shipment->getItemsCollection();

    $qty = array();

    foreach($items as $item)
        $qty[$item['order_item_id']] = $item['qty'];

    $invoice = Mage::getModel('sales/order_invoice_api');

    $invoiceId = $invoice->create($order->getIncrementId(), $qty);



(The code for the actual capture is somewhat naive, but bear with me.)

What's strange is that this code works just fine -- the shipment is created, the invoice is created and marked as 'Paid.' However, the order itself stays in limbo and retains a status 'Pending.'

Looking into it further, the items on the order itself have the correct quantities for both Ordered and Shipped, but there's no listing of the quantity Invoiced. I think this is what's causing the status hangup. It's as though the qty_invoiced on the sales_order_item table is getting reverted somehow.

Again, the Invoice shows the right items, so I'm quite confused here.

Any ideas?

asked Oct 23, 2015 by 20shahi
0 votes

Related Hot Questions

2 Answers

0 votes
answered Oct 23, 2015 by dahiyabecomp
0 votes
answered Oct 23, 2015 by sumit_jaiswalmca