Как создать пользовательские состояния коммерческого заказа?


Я хочу создать состояние пользовательского заказа и в представлении использовать "кнопку" или "список выбора" для переключения этих состояний.

Например, у меня есть представление, в котором отображается таблица всех заказов, помеченных как выполненные. Я хотел бы добавить "кнопку" или "список выбора" в каждую строку, чтобы я мог переключать состояние для каждого заказа.

Можно ли это сделать?

Author: shaneonabike, 2013-03-14

4 answers

Проверьте этот модуль Статус коммерческого пользовательского заказа он может помочь вам с пользовательскими статусами.

 2
Author: Vadim Eremeev, 2013-03-15 10:34:48

Там две вещи:

А. Определите свои пользовательские состояния заказа с помощью одного из крючков информации о заказе.

  1. информация о hook_commerce_order_state_info
  2. информация о hook_commerce_order_status_info

Б. Создайте представление VBO на основе commerce_order и добавьте операцию для изменения состояния заказа. Это не будет кнопка в каждой строке, просто флажок или переключатель, но вы можете выполнить пакетное обновление таким образом.

В качестве альтернативы, отредактируйте порядок и установите его состояние на форма редактирования.

 10
Author: David Thomas, 2013-03-15 08:38:29

Я обнаружил, что документация по этому вопросу неясна, поэтому для справки приведу пример добавления статуса (не состояния) программно. Это добавляет новый статус "Сбой кредитной карты" в состояние "Отменено".

function mymodule_commerce_order_status_info() {
  $order_statuses['ccfail'] = array(
    'name' => 'ccfail',
    'title' => t('Credit card failure'),
    'state' => 'canceled',
  );

 return $order_statuses;
}
 1
Author: Patrick Kenny, 2015-05-17 06:02:34

У меня были проблемы с кодом в предыдущем примере, но это сработало для меня как способ добавить новый статус "Возвращено" в существующее состояние "Отменено" после существующего статуса "Отменено".

function mymodule_commerce_order_status_info_alter(&$order_statuses) {
    $order_statuses['refund'] = array(
            'name' => 'refund',
            'title' => t('Refunded'),
            'state' => 'canceled',
            'cart' => FALSE,
            'weight' => 10,
    );
}

Обратите внимание, что индекс "корзина" является обязательным, и если вы его не включили, вы получите неопределенную ошибку индекса.

 0
Author: user19993, 2015-06-12 15:29:30