follow this tutorial
We need to add following code in config.xml
<sales_order_place_after>
<observers>
<b4u_order_observer>
<type>singleton</type>
<class>Mshop_B4u_Model_Observer</class>
<method>after_order_placed</method>
</b4u_order_observer>
</observers>
</sales_order_place_after>
Need to write the following code in observer( mshop -> b4u -> model -> Observer.php )
public static function after_order_placed($observer)
{
$event = $observer->getEvent();
$order = $event->getOrder();
$order_no = (string) $order->getRealOrderId();
$order->loadByIncrementId($order_no);
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true);
$order->save();
return true;
}
And we can create invoice also through this script. for that we need to add extra code and the above function should look like below,
public static function after_order_placed($observer)
{
$event = $observer->getEvent();
$order = $event->getOrder();
$order_no = (string) $order->getRealOrderId();
// **** This is for creating invoice *****
$order = Mage::getModel('sales/order')->loadByIncrementId($order_no);
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_ONLINE);
//Or you can use
//$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) {
}
// **** This is for set as order complete *****
$order->loadByIncrementId($order_no);
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true);
$order->save();
return true;
}