在magento 1.5中创建自定义订单状态

时间:2011-12-15 22:44:39

标签: magento magento-1.5

我正在尝试为我的magento安装添加自定义订单状态。 I've found several tutorials detailing how to do this  他们都谈到编辑app/code/core/Mage/Sales/etc/config.xml

但是,当我查看该文件时,它包含以下语句: @depraceted after 1.4.2, statuses are saved into sales_order_status table

我不确定如何向数据库添加新状态。

看起来我需要做的就是使用我的状态代码和前端标签在sales_order_status中插入一个新行,然后通过向sales_order_status_state添加一行来将该状态与状态相关联。状态的代码和所有状态的代码我不是可用的状态。

但我对状态/状态关系有点朦胧,过去使用原始SQL和magento安装我已经被烧毁了。所以,我想知道是否有其他人在1.5中添加了自定义状态,以及他们是如何做到的。

4 个答案:

答案 0 :(得分:9)

这是使用Magento创建自定义状态的方法:

$installer = $this;
/**
 * Prepare database for install
 */
$installer->startSetup();

$status = Mage::getModel('sales/order_status');

$status->setStatus('your_status_code')->setLabel('Your Status Label')
    ->assignState(Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW) //for example, use any available existing state
    ->save();

/**
 * Prepare database after install
 */
$installer->endSetup();

答案 1 :(得分:5)

由于可以通过后端配置Magento 1.5自定义订单状态。导航到系统 - >订单状态,您可以创建和编辑订单状态和代码。

答案 2 :(得分:3)

要以编程方式创建用于扩展的状态,请使用扩展安装程序使用以下命令在数据库中创建状态:

<?php
$installer = $this;
$installer->startSetup();
$installer->run("
    INSERT INTO  `{$this->getTable('sales/order_status')}` (
        `status` ,
        `label`
    ) VALUES (
        'status_code',  'Status Label'
    );
    INSERT INTO  `{$this->getTable('sales/order_status_state')}` (
        `status` ,
        `state` ,
        `is_default`
    ) VALUES (
        'status_code',  'processing',  '0'
    );
");
$installer->endSetup();

答案 3 :(得分:0)

我正在使用。

$status = Mage::getModel('sales/order_status');
$status->setStatus('xyz')->setLabel('Your Status Label');
$status->save();
$status->assignState(Mage_Sales_Model_Order::STATE_PROCESSING);

您可以在安装程序中使用它。