Cambiar los estados de los pedidos en Magento por programación


Notice: Undefined variable: post in /furanet/sites/diegomestre.com/web/htdocs/wp-content/themes/docpress/functions.php on line 294

Notice: Trying to get property of non-object in /furanet/sites/diegomestre.com/web/htdocs/wp-content/themes/docpress/functions.php on line 294

Cambiar los estados de los pedidos en Magento por programación

Los estados de los pedidos en Magento son algo delicado, normalmente Magento cambia los estados en función de tu actividad emitiendo facturas, envíos, etc… Es decir, no tienes libertad total para poner lo que quieras dentro de tu administrador. Pero esto no es el asunto de este post.

Por programación, en tu módulo o directamente con un archivo php tú puedes cambiar estos estados prácticamente a voluntad, veamos el código PHP para estos cambios

En primer lugar tenemos que cargar nuestro pedido (order)

Puede que tengamos un order id (p.ej. 21)

$idpedido = 21;
$pedido = Mage::getModel(‘sales/order’)->load($idpedido);

, es posible que dispongas del increment id, ya sabes el 1000000021, en ese caso lo cargamos utilizando el método correspondiente
If you have order increment id, you can load order in the following way:-

$incrementidpedido = 1000000021;
$pedido = Mage::getModel(‘sales/order’)->loadByIncrementId($incrementidpedido);

Ahora $pedido es nuestro pedido, sobre el que operaremos, vamos con los cambios de estado

/**
* Cambiando a ‘Completed’
*/
$pedido->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true)->save();

Y de forma muy similar al resto de estados:

/**
* Cambiando a ‘Pending’
*/
$pedido->setState(Mage_Sales_Model_Order::STATE_NEW, true)->save();
/**
* Cambiando a ‘Pending Paypal’
*/
$pedido->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true)->save();
/**
* Cambiando a ‘Processing’
*/
$pedido->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)->save();
/**
* Cambiando a ‘Completed’
*/
$pedido->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true)->save();
/**
* Cambiando a ‘Closed’
*/
$pedido->setState(Mage_Sales_Model_Order::STATE_CLOSED, true)->save();
/**
* Cambiando a ‘Canceled’
*/
$pedido->setState(Mage_Sales_Model_Order::STATE_CANCELED, true)->save();
/**
* Cambiando a ‘Holded’
*/
$pedido->setState(Mage_Sales_Model_Order::STATE_HOLDED, true)->save();

También se puede utilizar estos otro métodos, para Cancel, Hold y Unhold, aunque para ser sincero no los he probado:

if($pedido->canCancel()) {
$pedido->cancel()->save();
}
if($pedido->canHold()) {
$pedido->hold()->save();
}
if($order->canUnhold()) {
$pedido->unhold()->save();
}

Escribe tu comentario

comentarios

Speak Your Mind

*