Отправка e-mail при изменении статуса заказа в Drupal Commerce

Автоматизация процесса отправки писем в Drupal легко реализуется с помощью модуля Rules. Этот модуль позволяет создавать правила, для вылнения каких-либо действий, при наступлении определенных событий, не обязательно связанных с Drupal Commerce.

Создание правила

В нашем случае, правило должно реагировать на событие обновление заказа. Создаем такое правило:

Конфигурация → Процесс → Правила → Добавить новое правило
(Configuration → Workflow → Rules → Add new rule)

Заполняем необходимые поля:

Имя (Name): например, Send e-mail on change status to processing

Реакция на событие (React on event):

Commerce Order → После обновления существующей commerce order
(Commerce order → After updating an existing commerce order)

Условия

Условием, при котором должен отправляться e-mail, является изменение статуса заказа на нужный вам, например Обработка. Добавляем условие:

Условия → Добавить condition (Conditions → Add condition)

Выбираем:

Данные → Сравнение данных (Data → Data comparsion)

Селектор данных (Data selector): commerce-order:status

Далее надо убедиться, что выбрано сравнение:

Оператор значение (Operator value): равно (equals)

И выбрать в качестве значения нужный нам статус:

Значение (Data value): Обработка (Processing)

В данном случае, письмо будет отправляться при каждом обновлении заказа, пока он имеет такой статус. Чтобы этого не происходило, нужно добавить еще одно условие, которое будет проверять значение статуса перед изменением:

Добавить and (Add and)

Оставляем нетронутым чекбокс:

Обратить (Negate)

добавляем второе условие так, чтоб оно было в связке с первым:

AND → Добавить condition (AND → Add condition)

Опять выбираем:

Данные → Сравнение данных (Data → Data comparsion)

Селектор данных (Data selector): commerce-order-unchanged:status

Снова надо убедиться, что выбрано сравнение:

Оператор значение (Operator value): равно (equals)

И выбрать в качестве значения тот же статус:

Значение (Data value): Обработка (Processing)

Обязательно отметить чекбокс:

Обратить (Negate)

Действие

В Rules есть возможность совершать множество различных действий, в том числе отправлять e-mail. Добавляем действие:

Действия → Добавить action (Actions → Add action)

Выберите action для добавления (Select the action to add):

Система → Отправить письмо (System → Send mail)

Заполняем все стандартные поля для отправки писем и составляем шаблон самого сообщения. Есть возможность использовать токены. На этом создание правила заканчивается.

Вместо заключения: Какие могут быть сложности

Составление шаблона письма может оказаться не тривиальным процессом, некоторые токены "выброшены" как есть, некоторые содержат HTML разметку, что не подходит для Plain Text писем, которые Drupal 7 отправляет по умолчанию. Для отправки сообщений в формате HTML Рекомендую обратить внимание на модуль Mime Mail, который в свою очередь требует Mail System.

Если стандартных статусов заказа Drupal Commerce окажется недостаточно, можно добавить кастомные статусы при помощи модуля Commerce Custom Order Status. К сожалению, модуль не решает проблемы редактирования и удаления стандартных статусов.

Комментарии

4 комментария

Спасибо! в тексте перевода немного опечатка
"Реакция на событие (React on event):
Commerce Товар → После обновления существующей commerce товар (Commerce order → After updating an existing commerce order)"

Нужно:
Реакция на событие (React on event):
Commerce Order→ После обновления существующей commerce Order (Commerce order → After updating an existing commerce order)

короче товар перепутал с ордер) )

Причин может быть много:

  • установлены другие версии Drupal и модулей;
  • не установлены необходимые модули;
  • изменился перевод;
  • не там ищите.

В общем, с такой постановкой вопроса, вряд ли можно определить причину.