Иногда в следствие технических сбоев или других событий необходимо изменить статус заказа. Можно это просто сделать через админку, а можно через PHP.

Для начала надо загрузить необходимый заказ.

Если знаете его id, то загрузить его можно так:



$orderId = ВАШ_НОМЕР_ЗАКАЗА;
$order = Mage::getModel('sales/order')->load($orderId);


Если знаете его инкрементный id, то загрузить его можно так:



$orderIncrementId = ВАШ_ИНКРЕМЕНТНЫЙ_НОМЕР_ЗАКАЗА;
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);


Загрузив заказ, можно делать с ним:

Поставить статус COMPLETE



$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true)->save();


Поставить статус NEW



$order->setState(Mage_Sales_Model_Order::STATE_NEW, true)->save();


Поставить статус PENDING PAYMENT



$order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true)->save();


Поставить статус PROCESSING



$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)->save();


Поставить статус COMPLETE



$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true)->save();


Поставить статус CLOSED



$order->setState(Mage_Sales_Model_Order::STATE_CLOSED, true)->save();


Поставить статус CANCELED



$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true)->save();


Поставить статус HOLD



$order->setState(Mage_Sales_Model_Order::STATE_HOLDED, true)->save();


Также заказ можно отменить так:



if($order->canCancel()) {
    $order->cancel()->save();
}


Или заморозить:



if($order->canHold()) {
    $order->hold()->save();
}


Или разморозить:



if($order->canUnhold()) {
    $order->unhold()->save();
}


Надеюсь, данная статья вам поможет.