如何使用Magento中的扩展/模块创建自定义订单状态

naq*_*din 2 php zend-framework magento

我想知道是否有任何方法可以在Magento中创建自定义订单状态.我正在开发一个Magento扩展,我必须在磁盘订单中添加一些自定义订单状态.

我google了很多,但没有找到任何好的资源.

任何人都可以解释如何执行此操作,以及任何可以参考的资源.

use*_*772 7

假设您要添加"授权付款"状态和"授权"代码.

在config/global下将以下内容添加到模块的config.xml中:

    <sales>
        <order>
            <statuses>
                <authorized translate="label">
                    <label>Authorized Payment</label>
                </authorized>
            </statuses>
            <states>
               <authorized translate="label">
                    <label>Authorized Payment</label>
                    <statuses>
                        <authorized default="1"/>
                    </statuses>
                    <visible_on_front>1</visible_on_front>                      
               </authorized>
            </states>
        </order>
    </sales>
Run Code Online (Sandbox Code Playgroud)

早期它已经足够了,但在最近的版本中(如果我没记错的话,1.5.xx)还需要以下位.将以下内容添加到扩展的mysql setup/update文件中:

<?php

$installer = $this;

$statusTable        = $installer->getTable('sales/order_status');
$statusStateTable   = $installer->getTable('sales/order_status_state');
$statusLabelTable   = $installer->getTable('sales/order_status_label');

$data = array(
    array('status' => 'authorized', 'label' => 'Authorized Payment')
);
$installer->getConnection()->insertArray($statusTable, array('status', 'label'), $data);

$data = array(
    array('status' => 'authorized', 'state' => 'authorized', 'is_default' => 1)
);
$installer->getConnection()->insertArray($statusStateTable, array('status', 'state', 'is_default'), $data);

?>
Run Code Online (Sandbox Code Playgroud)

这在技术上为您的系统添加了新的状态.现在您可以将其设置为您的订单,如下所示:

$order->setState('authorized', true, 'Status history message')
      ->save();
Run Code Online (Sandbox Code Playgroud)

请让我知道,如果你有任何问题.