Как создать пользовательские состояния коммерческого заказа?
Я хочу создать состояние пользовательского заказа и в представлении использовать "кнопку" или "список выбора" для переключения этих состояний.
Например, у меня есть представление, в котором отображается таблица всех заказов, помеченных как выполненные. Я хотел бы добавить "кнопку" или "список выбора" в каждую строку, чтобы я мог переключать состояние для каждого заказа.
Можно ли это сделать?
4 answers
Проверьте этот модуль Статус коммерческого пользовательского заказа он может помочь вам с пользовательскими статусами.
Там две вещи:
А. Определите свои пользовательские состояния заказа с помощью одного из крючков информации о заказе.
Б. Создайте представление VBO на основе commerce_order и добавьте операцию для изменения состояния заказа. Это не будет кнопка в каждой строке, просто флажок или переключатель, но вы можете выполнить пакетное обновление таким образом.
В качестве альтернативы, отредактируйте порядок и установите его состояние на форма редактирования.
Я обнаружил, что документация по этому вопросу неясна, поэтому для справки приведу пример добавления статуса (не состояния) программно. Это добавляет новый статус "Сбой кредитной карты" в состояние "Отменено".
function mymodule_commerce_order_status_info() {
$order_statuses['ccfail'] = array(
'name' => 'ccfail',
'title' => t('Credit card failure'),
'state' => 'canceled',
);
return $order_statuses;
}
У меня были проблемы с кодом в предыдущем примере, но это сработало для меня как способ добавить новый статус "Возвращено" в существующее состояние "Отменено" после существующего статуса "Отменено".
function mymodule_commerce_order_status_info_alter(&$order_statuses) {
$order_statuses['refund'] = array(
'name' => 'refund',
'title' => t('Refunded'),
'state' => 'canceled',
'cart' => FALSE,
'weight' => 10,
);
}
Обратите внимание, что индекс "корзина" является обязательным, и если вы его не включили, вы получите неопределенную ошибку индекса.