[miniShop2] Дополнительная логика отправки писем при оформлении заказа
Добрый день!
Клиент просит сделать следующую логику отправки писем админу сайта при оформлении заказа:
1. Если при оформлении заказа была указана оплата при получении — отправлять письма как обычно.
2. Если при оформлении заказа была указана онлайн-оплата (положим id=2), то при создании заказа и присвоении статуса «Новый» — не отправлять ничего, а после оплаты и смены статуса заказа на «Оплачен» — отправлять письмо, которое должно было отправляться при создании заказа.
Как лучше такую доработку реализовать?
Клиент просит сделать следующую логику отправки писем админу сайта при оформлении заказа:
1. Если при оформлении заказа была указана оплата при получении — отправлять письма как обычно.
2. Если при оформлении заказа была указана онлайн-оплата (положим id=2), то при создании заказа и присвоении статуса «Новый» — не отправлять ничего, а после оплаты и смены статуса заказа на «Оплачен» — отправлять письмо, которое должно было отправляться при создании заказа.
Как лучше такую доработку реализовать?
Комментарии: 1
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Переопределить метод msOrderHandler::submit() таким образом, чтобы там перед установлением статуса «Новый» проверялся способ оплаты и, если оплата при получении, статус устанавливать методом minishop2::changeOrderStatus(), иначе через modResource::save().
Вариант 2.
Ввести для оплаты при получении отдельный статус. Написать плагин на событие msOnChangeOrderStatus, в котором проверять способ оплаты и, если это оплата при получении, вызывать метод minishop2::changeOrderStatus() и устанавливать созданный для этого способа оплаты статус. При этом отправку писем для статуса «Новый» отключить в настройках минишопа.
Вариант 3.
Отключить стандартную отправку писем. Написать свой класс отправки писем и вызывать его в плагине на событие msOnChangeOrderStatus. Вот пример реализации такого класса