Формулировка проблемы: необходимо реализовать кейс системы управления взаимоотношениями с клиентами.
Решение: необходимо реализовать модуль "Маркетинг" согласно требованиям:
Модуль должен содержать:
Воронка лидогенерации представлена в виде кнопок статусов лида.
Статусы лида определяются записями справочника crm_dict_leadStatus.
Кнопки статусов содержат два типа значений:
количество лидов данного статуса;
коэффициент конвертации.
В счетчик количества лидов входят лишь те лиды, в мероприятиях которых в поле crm_form_event_responsibleManager_responsible указаны выбранные пользователи.
Значение отображаются в формате:
%название_статуса%
%количество_лидов_статуса% (%коэффициент_конвертации%)
Коэффициент конвертации отсутствует для кнопки первого статуса.
Коэффициент конвертации рассчитывается как:
количество лидов последующего статуса / количество лидов предыдущего статуса * 100%
По нажатию на кнопку статуса лида откроется реестр Лид, отфильтрованный согласно выбранным мероприятиям, пользователям и статусу.
Изменение высоты кнопок, количества лидов и коэффициентов конвертации должно происходить в режиме реального времени.
Кнопки статусов лидов имеет форму трапеции.
Ширина кнопок статична:
максимальная - 450px по наибольшей горизонтальной стороне кнопки;
минимальная - 150px по наименьшей горизонтальной стороне кнопки.
Высота кнопок динамична и определяется количеством лидов соответствующих статусов.
Минимальная высота кнопок - 40px.
Максимальная высота всей воронки - 500px.
Если воронка содержит один статус, то его кнопка также отображается в виде трапеции на максимальную высоту всей воронки.
Если не выбран ни один пользователь и ни одно мероприятие (при выключенном флаге "Показывать лиды, не привязанные к мероприятиям"), воронка отображается пустой:
значения количества лидов и коэффициента конвертации - 0;
кнопки имеют минимальную высоту.
Стоимость лидогенерации в панели - сумма значений компонента Потенциальный бюджет всех лидов текущей воронки.
Комиссия лидогенерации в панели рассчитывается как:
стоимость лидогенерации * % комиссии
где % комиссии
- значение поля "%
комиссии" первой созданной записи реестра
% комиссии.
Значение поля "% комиссии" для каждого отдельного лида идет в расчет согласно значению crm_dict_leadStatus_end записи справочника crm_dict_leadStatus:
crm_dict_leadStatus_end=1 - % комиссии на момент сохранения этого статуса;
остальные - % комиссии на конец рассматриваемого периода.
При смене статуса лида на запись справочника crm_dict_leadStatus, у которой crm_dict_leadStatus_end=1, для нее сохраняется текущий % комиссии. Он будет использоваться в расчете, даже если строка динамической таблицы с таким % будет удалена.
Если в записи реестра % комиссии указано несколько записей с одинаковыми датами начала, то в расчет идет последний % комиссии, удовлетворяющий требованиям.
Значение комиссии лидогенерации в панели округляется до целого.
Изменение значений настроек боковой панели должно сопровождаться анимацией загрузки, во время которой все кнопки статусов лидов будут недоступны для нажатия.
Настройка "Мероприятие" представлена компонентом выбора записи реестра и флагом "Показывать лиды, не привязанные к мероприятиям".
Компонент содержит все записи реестра Маркетинговое мероприятие, отображаемые в списке.
Список записей в компоненте ограничен правами авторизованного пользователя:
руководителю отображаются мероприятия, в которых ответственным менеджером является он либо его подчиненные;
пользователю отображаются только те мероприятия, в которых ответственным менеджером является данный пользователь.
Примечание
Данное требование будет реализовано позднее.
Компонент позволяет выбрать:
одно мероприятие;
несколько мероприятий;
все мероприятия;
ни одно мероприятие.
Диалог выбора мероприятий выглядит аналогично диалогу выбора записи реестра.
Диалог выбора мероприятий дополнительно содержит флаг "Выбрать все".
По нажатию на флаг "Выбрать все" выделятся все мероприятия на всех страницах компонента.
Флаг "Показывать лиды, не привязанные к мероприятиям" определяет включение в воронку лидов, для которых компонент Мероприятие пуст.
По умолчанию выбраны все мероприятия, флаг "Показывать лиды, не привязанные к мероприятиям" включен.
Настройка представлена компонентом выбора пользователей.
Компонент содержит авторизованного пользователя, а также его подчиненных, которые входят в группу "Маркетологи".
Примечание
Так как на данный момент отсутствует импорт/экспорт групп, компонент будет отображать только подчиненных руководителя. Ограничение подчиненных согласно группе "Маркетологи" будет реализовано позднее.
Компонент позволяет выбрать:
всех пользователей;
нескольких пользователей;
одного пользователя;
ни одного пользователя.
По умолчанию выбран авторизованный пользователь.
Доступно два параметра фильтрации:
Период
Статус лида
При фильтрации лидов за период учитывается только факт смены значения в поле "Статус" записи реестра Лид. Если за указанный период значение этого поля изменялось несколько раз, то в воронку должно войти только последнее.
Параметр "Период" представлен выпадающим списком и двумя компонентами выбора даты, разделенными тире.
Выпадающий список периода содержит пункты:
"За все время" - воронка содержит все лиды с момента создания записи реестра до текущего времени на сервере.
"Прошедшая неделя" - учитываются только те лиды, у которых изменился статус за последнюю неделю от текущего дня на сервере.
"Прошедший месяц" - учитываются только те лиды, у которых изменился статус за последний месяц от текущего дня на сервере.
"Прошедший квартал" - учитываются только те лиды, у которых изменился статус за последний квартал от текущего дня на сервере.
"Прошедший год" - учитываются только те лиды, у которых изменился статус за последний год от текущего дня на сервере.
"Произвольный период" - учитываются только те лиды, у которых изменился статус за указанный пользователем период.
Компоненты выбора даты активны только при выбранном пункте "Произвольный период".
Компоненты выбора даты по умолчанию отображают период
текущий день на сервере + месяц
.
Параметр "Статус" представлен выпадающим списком с пунктами:
"Все";
значение crm_dict_leadStatus_name записи справочника crm_dict_leadStatus, у которой crm_dict_leadStatus_end=1;
значения crm_dict_leadStatus_name всех записей справочника crm_dict_leadStatus, у которой crm_dict_leadStatus_quality=0.
Статус "Все" включает в себя все записи справочника crm_dict_leadStatus со значением crm_dict_leadStatus_quality=1.
По умолчанию выбраны период "За все время" и статус "Все".