Cómo cambiar el estado de un pedido en Magento 1.9

17/02/2017 Blog

He tenido más de una vez, sobre todo en tareas de testeo, la necesidad de cambiar el estado de un pedido a completado desde el código. Por ejemplo, para implementar un Observer cuando un pedido cambia de estado.

Para esta tarea puedes utilizar el código que muestro a continuación.

$order = Mage::getModel('sales/order')->loadByIncrementId(NUMERODEPEDIDO);
$order->setData('state', "complete");
$order->setStatus("complete");
$history = $order->addStatusHistoryComment('Cambio de estado por codigo.', false);
$history->setIsCustomerNotified(false);
$order->save();

Lo que hace el código es: cargar el pedido dado el id NUMERODEPEDIDO, pasa, tanto ‘state’ como ‘status’ a ‘complete’, le añade un comentario y lo guarda el pedido. En este caso lo hemos pasado a completo (complete) pero también puedes pasarlo a ‘new’, ‘pending_payment’, ‘processing’, ‘closed’, ‘canceled’, ‘holded’ o ‘payment_review’.

Espero que te sirva de ayuda.