Создание пользовательских статусов заказов в magento 1.5 - PullRequest
2 голосов
/ 16 декабря 2011

Я пытаюсь добавить пользовательский статус заказа к моей установке magento. Я нашел несколько уроков, подробно описывающих, как это сделать и все они говорят о редактировании 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 ]

9 голосов
/ 31 декабря 2012

Так вы можете создать пользовательский статус, используя 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();
5 голосов
/ 16 декабря 2011

Начиная с версии Magento 1.5, пользовательский статус можно настроить через бэкэнд.Перейдите в Система -> Статусы заказов, и вы можете создавать и редактировать статусы и коды заказов.

3 голосов
/ 21 июля 2012

Для создания статусов программно для использования в вашем расширении используйте установщик расширений, чтобы создать статус в вашей базе данных, используя следующее:

<?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();
0 голосов
/ 03 октября 2015

Я использую.

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

Вы можете использовать его в установщике или нет.

...