Thursday 3 September 2015

Generate (create) automatically invoice after the orders are shipped

Create module config file : app\etc\modules\Nik_Autoinvoice.xml
<config>
    <modules>
        <Nik_Autoinvoice>
            <active>true</active>
            <codePool>local</codePool>
        </Nik_Autoinvoice>
    </modules>
</config>
I'd go the creating an event observer for sales_order_shipment_save_after:

File path: app/code/local/Nik/Autoinvoice/etc/config.xml 
<?xml version="1.0"?>
<config>
    <modules>
        <Nik_Autoinvoice>
            <version>0.1.0</version>
        </Nik_Autoinvoice>
    </modules>
    <global>
        <events>
            <sales_order_shipment_save_after>
                <observers>
                    <nik_autoinvoice>
                        <type>singleton</type>
                        <class>Nik_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\Nik\Autoinvoice\Model\Observer.php 
<?php
class Nik_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