20 дек. 2012
Иногда в следствие технических сбоев или других событий необходимо изменить статус заказа. Можно это просто сделать через админку, а можно через 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();
}
Надеюсь, данная статья вам поможет.