Magento, elenco stati di avanzamento ordine

Reading Time: < 1 minuteFavoriteLoadingAggiungi ai preferiti

In Magento può essere utile estrarre l’elenco degli stati di avanzamento dell’ordine.
Con il codice seguente estraiamo etichette e valori

 

$collection = Mage::getModel('sales/order_status')
->getResourceCollection()
->getData();

Con questo foreach estraiamo il contenuto dell’array

foreach ($collection as $co):
echo $co['status']; //valore
echo $co['label']; //etichetta
endforeach;

Citando da https://www.riccardotempesta.com/modificare-lo-stato-ordine-di-magento/ riportiamo la differenza esistente in Magento tra “state” e “status”.
Lo “state” è lo stato “interno” di Magento, ovvero lo stato di avanzamento dell’ordine:

  • new
  • pending
  • pending_payment
  • processing
  • complete
  • closed
  • canceled

Uno “state” ha uno o più “status” associati ed almeno uno “status” di default. Gli “status” possono essere aggiunti, modificati o rimossi dall’utente e sono da intendere come delle “specializzazioni” di uno “state”.
Possiamo ad esempio ipotizzare che lo state “processing” debba essere diviso in vari passaggi:

  • Ordine passato al magazzino
  • Merce verificata
  • Pronta per la spedizione

I vari passaggi sono appunto gli “status”.

E’ bene conoscere questo meccanismo perché la modifica dello “state” ha ripercussioni sullo “status”, è ovvio che nell’esempio fatto non potremo avere uno “state” impostato a “new” e uno “status” impostato a “Merce verificata”.

A livello di codice è possibile alterare lo stato ordine utilizzando la chiamata “setState” della classe “Mage_Sales_Model_Order”:

$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
$order
 ->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)
 ->save();

Le costanti degli “state” sono:

  • new: Mage_Sales_Model_Order::STATE_NEW
  • pending: Mage_Sales_Model_Order::STATE_PENDING
  • pending_payment: Mage_Sales_Model_Order::STATE_PENDING_PAYMENT
  • processing: Mage_Sales_Model_Order::STATE_PROCESSING
  • complete: Mage_Sales_Model_Order::STATE_COMPLETE
  • closed: Mage_Sales_Model_Order::STATE_CLOSED
  • canceled: Mage_Sales_Model_Order::STATE_CANCELED