1C-Bitrix: назначение заказу ответственного менеджера
Задача
Один из моих клиентов занимается производством и оптовой продажей удобрений и товаров для сада/огорода.
Продажи идут по всей стране. За каждым менеджером закреплены свои регионы.
Для снижения нагрузки на персонал, руководство решило запустить сайт и мобильное приложение, где клиенты могли бы формировать заказ на продукцию самостоятельно.
Одна из задач возникла — при оформлении заказа нужно информировать о нем ответственного менеджера по почте.
Решение
Вариантов было несколько:
- Отдать уведомления о заказе на сторону 1С. Не профильная задача для УТ.
- Выгрузить всех контрагентов на сайт, привязать к каждому пользователя-менеджера. Сильно усложняет реализацию
- Написать обработчик на сохранение нового заказа в init.php, который бы анализировал регион, выбирал ответственного менеджера и отправлял письмо. Здесь сложность в последующем обновлении информации (смена регионов у менеджера, увольнение, добавление сотрудников).
В итоге, нашлось красивое решение. У Битрикса в Магазине есть такая сущность, как Компании. Она позволяет привязывать заказы подразделениям.
Отличный вариант для нашей задачи.
Создали по компании на каждого менеджера, для каждой компании создали группу, в нее добавили менеджера.
В правилах автоназначения компании задал регионы (области) из поля Местоположение.
Теперь заказ автоматически назначался нужному менеджеру
Но письмо с уведомлением о новом заказе менеджеру не отправлялось. Штатно такой функции не было.
Пришлось дописать немного кода
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails");
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
$additional_information = '';
$arOrder = CSaleOrder::GetByID($orderID);
if(!empty($arOrder['RESPONSIBLE_EMAIL']))
$arFields["RESPONSIBLE_EMAIL"] = $arOrder['RESPONSIBLE_EMAIL'];
}
Теперь:
- заказ автоматически присваивается ответственному менеджеру
- ему приходит уведомление о новом заказе
- в админке Битрикса можно легко управлять назначением заказов и менеджерами.
Задача решена.
#Время выполнения
Вышло где-то с обсуждениями, поиском готовых решений и промежуточными вариантами около двух часов.