Search code examples
eventsmagentomodelstatus

Magento automatic order status - getting list of order_status / state


I am trying to build a Magento module that observes certain events and tries to proceed automatically to a new automatic status/state, based on payment method.
In order to do that, I organized some status on the backoffice based on payment method. For example:

event: sales_order_place_after
Automatic status: pp_1_pending - First status/state where a new placed order will automatically have this status if the payment method is paypal.

event: sales_order_payment_pay
Automatic status: pp_2_payment - Second status/state after an order is payed when the payment method is paypal

event: sales_order_invoice_save_after
Automatic status: pp_3_complete- Third and final status/state after an order is invoiced, ending the transaction.

For this to work I would need to collect all status with the prefix pp_ and after checking which was set on the order, proceed to the next status in order. This way this module would be scalable.

However I can't seem to get the status collection. I am trying:
$statuses = Mage::getModel('sales/order_status')
->getCollection()
->addAttributeToSelect('status')
->addAttributeToSelect('label')
->addFieldToFilter('status',array('like','pp_'));

Hope anyone can help me. Thanks all!


Solution

  • The addAttributeToSelect() function is used for EAV based models.For flat models use addFieildToSelect()

    The code should be

    $statuses = Mage::getModel('sales/order_status')
    ->getCollection()
    ->addFieldToSelect('status')
    ->addFieldToSelect('label')
    ->addFieldToFilter('status',array('like'=>'pp_%'));