Magento订单 有两个状态变量:state和status,这让人困惑,只有测试下了,于是下了个单,然后在Magneto后台处理订单,得出下面的Magento订单状态值

1. 新订单

state  : new

status : pending

2. 配送后

state  : processing

status : processing

3. 收款后

state  : processing

status : processing

4. 订单完成

state  : complete

status : complete

5. 订单取消

state  : canceled

status : canceled

6. 订单关闭

state  : closed

status : closed

7. 订单挂起

state  : holded

status : holded

8.支付(Paypal, Amazon Pay)过程中引入的订单状态

state  : pending_payment

status :payment_review

Magento订单状态 是定义在Magento代码文件app\code\core\Mage\Sales\Model\Order.php中定义了订单的状态常量:

/**
 * Order model
 *
 * Supported events:
 *  sales_order_load_after
 *  sales_order_save_before
 *  sales_order_save_after
 *  sales_order_delete_before
 *  sales_order_delete_after
 *
 * @author Magento Core Team <core@magentocommerce.com>
 */
class Mage_Sales_Model_Order extends Mage_Sales_Model_Abstract
{
    /**
     * Order states
     */
    const STATE_NEW             = 'new';
    const STATE_PENDING_PAYMENT = 'pending_payment';
    const STATE_PROCESSING      = 'processing';
    const STATE_COMPLETE        = 'complete';
    const STATE_CLOSED          = 'closed';
    const STATE_CANCELED        = 'canceled';
    const STATE_HOLDED          = 'holded';
    const STATE_PAYMENT_REVIEW  = 'payment_review'; // added magento 1.4
    /**
     * Order flags
     */
    const ACTION_FLAG_CANCEL    = 'cancel';
    const ACTION_FLAG_HOLD      = 'hold';
    const ACTION_FLAG_UNHOLD    = 'unhold';
    const ACTION_FLAG_EDIT      = 'edit';
    const ACTION_FLAG_CREDITMEMO= 'creditmemo';
    const ACTION_FLAG_INVOICE   = 'invoice';
    const ACTION_FLAG_REORDER   = 'reorder';
    const ACTION_FLAG_SHIP      = 'ship';
    const ACTION_FLAG_COMMENT   = 'comment';
    // ...
}
</core@magentocommerce.com>

其中,pending_payment, payment_review 是支付(Paypal, Amazon Pay)过程中引入的订单状态。

<?php
require_once('app/Mage.php');
umask(0);
Mage::app('default');
$order = Mage::getModel('sales/order');
$order->loadByIncrementId(100000001);  // 100000001为订单编号
// 获取订单状态
$status = $order->getStatus();
$state  = $order->getState();
echo $status;
echo "\r\n";
echo $state;
// 设置订单状态
$order->setStatus(Mage_Sales_Model_Order::STATE_PROCESSING);
$order->save();

发表评论

电子邮件地址不会被公开。 必填项已用*标注