Magento – Change order status in observer

event-observermagento-1.9order-status

I am using sales_order_save_after event.
In observer method, I have written following code:

$order = $observer->getEvent()->getOrder();
$order->setState(Mage_Sales_Model_Order::STATE_NEW, true);

But after order placed, order state is displaying as "processing" only. I have checked that observer method is called.

Best Answer

sales_order_save_after is called several times whenever save() function of model Mage_Sales_Model_Order.

As you want to change order status to new whenever order place means order is just place.

If put a condition like if(!$order->getId()) at observer then it will only fire when order is placed.Because getId() give null until order save

$order = $observer->getEvent()->getOrder();
if(!$order->getId()):
$order->setState(Mage_Sales_Model_Order::STATE_NEW, true);
endif;
Related Topic