This article shows how to change your order status programmatically in Magento.
First, you need to load your order. You can load order by either order_id or order_increment_id.
Load order by “order id”
$orderId = YOUR_ORDER_ID;
$order = Mage::getModel('sales/order')->load($orderId);
Load order by “order increment id”
$orderIncrementId = YOUR_ORDER_INCREMENT_ID;
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
Change order status to Complete
/**
* change order status to 'Completed'
*/
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true)->save();
Change the order status to pending, processing, canceled, closed, holded, etc.
/**
* change order status to 'Pending'
*/
$order->setState(Mage_Sales_Model_Order::STATE_NEW, true)->save();
/**
* change order status to 'Pending Paypal'
*/
$order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true)->save();
/**
* change order status to 'Processing'
*/
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)->save();
/**
* change order status to 'Completed'
*/
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true)->save();
/**
* change order status to 'Closed'
*/
$order->setState(Mage_Sales_Model_Order::STATE_CLOSED, true)->save();
/**
* change order status to 'Canceled'
*/
$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true)->save();
/**
* change order status to 'Holded'
*/
$order->setState(Mage_Sales_Model_Order::STATE_HOLDED, true)->save();
Cancel an order
if($order->canCancel()) {
$order->cancel()->save();
}
Hold an order
if($order->canHold()) {
$order->hold()->save();
}
Unhold an order
if($order->canUnhold()) {
$order->unhold()->save();
}
Hope this helps. Thanks.