Tuesday 14 April 2015

Magento : Generating(create) automatically invoice after the orders are shipped

Create module config file : app\etc\modules\Niru_Autoinvoice.xml

<config>
    <modules>
        <Niru_Autoinvoice>
            <active>true</active>
            <codePool>local</codePool>
        </Niru_Autoinvoice>
    </modules>
</config>

I'd go the creating an event observer for sales_order_shipment_save_after:

File path: app/code/local/Niru/Autoinvoice/etc/config.xml

<? xml version = "1.0" ?>
<config>
    <modules>
        <Niru_Autoinvoice>
            <version>0.1.0</version>
        </Niru_Autoinvoice>
    </modules>
    <global>
        <events>
            <sales_order_shipment_save_after>
                <observers>
                    <nik_autoinvoice>
                        <type>singleton</type>
                        <class>Niru_Autoinvoice_Model_Observer</class>
                        <method>autoInvoice</method>
                    </nik_autoinvoice>
                </observers>
            </sales_order_shipment_save_after>
        </events>
    </global>
</config>

Now, we create one observer file : app\code\local\Niru\Autoinvoice\Model\Observer.php

<?php

class Niru_Autoinvoice_Model_Observer {

    public function autoInvoice($observer) {
        $shipment = $observer->getEvent()->getShipment();
        $order = $shipment->getOrder();
        if ($order->canInvoice()) {
            $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
            $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
            $invoice->register();
            $transactionSave = Mage::getModel('core/resource_transaction')
                    ->addObject($invoice)
                    ->addObject($invoice->getOrder());
            $transactionSave->save();
        }
    }

}

No comments:

Post a Comment