Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between 'state' and 'status' column in table sales_flat_order in Magento

Tags:

magento

What is the difference, is it 'state' means initial and status means 'final' ?

If that's the case 'status' supposed to update automatically after the payment.

Then what is the difference between 'status' closed and complete ?

what would be the 'status' for recurring profiles, pending ?

Hopefully, I have confused you enough that what I'm trying to say here, any help ?

like image 841
Ricky Sharma Avatar asked Mar 09 '12 00:03

Ricky Sharma


2 Answers

The status is associated with the state. In normal conditions, you work with the statuses of Magento and you don´t need any additional changes to the state. The status is a concrete situation associated to the state. The transition of the state is

pending->not payment
processind-> payment effective
cancel-> order canceling for vorious reason
Hold-> order blocked, for example suspect of fraud
complete-> order shipped

Imagine that your order is paid and you can put various statuses (to say before packaging, later packaging, etc). You can change the statuses of the order to give more information for the customer:

processing-payment received
processing-packaging
processing-packaging pending delivery

All of the above statuses can be associated to the processing state. You can see a state diagram in the wiki at: http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/order_management

I hope this helps you.

like image 184
davidselo Avatar answered Oct 23 '22 07:10

davidselo


State is used by magento to tell if the order is new, processing, complete, holded, closed, canceled, etc.; while Statuses are the one that YOU would be defining at the backend in System -> Order Statuses. Magento displays order STATUSES and not STATES in the backend order detail page to let you know which status is assigned as per your mapping. Remember, multiple statuses can be mapped with one state, while vice versa is not possible. Consider an example, your customer places an order as Cash on Delivery, you will need something like COD_Pending as the order status so that you know it is not yet paid. Magento will have state new for this, which makes you unpredictable of what kind of transaction is this, COD or Prepaid. The STATUS can be anything, as you define, for your understanding; while STATE is something which Magento needs to understand, internally.

In short, Magento uses order state internally for processing order, whereas order status are used by store owners to understand the exact order flow where one state can be assigned to multiple statuses.

like image 1
Hassan Ali Shahzad Avatar answered Oct 23 '22 07:10

Hassan Ali Shahzad