Skip to content

Продажи: причины проигрыша, источники заявок, «Воронка продаж» ​

Сколько заявок пришло, откуда, сколько выиграли, почему проиграли (ТЗ «Шаблоны, этапы и Гант…», раздел 7).

Реализовано: этап 5 — миграция 0190 (sales_dictionary_items, поля проекта lead_source_id, lost_reason_id, lost_comment, lost_competitor, status_changed_by, таблица и триггер project_status_history), модуль internal/modules/sales, проверки в модуле проектов.


Справочники ​

sales_dictionary_items (kind, code, name, position, is_active), вид lost_reason или lead_source; начальные значения — в миграции (код repeat_client — «Повторный клиент»). Правка — capability sales_dictionaries_manage (администратор, генеральный директор, руководитель отдела продаж). Использованная запись (на неё ссылаются проекты, в том числе архивные, или строки истории статусов — used_count) не удаляется (409 sales_item_in_use), только скрывается. Скрытый источник, уже стоящий у проекта, можно присылать в PUT без изменений.

Источник заявки ​

projects.lead_source_id — в форме проекта, необязательный. Не указан, а у компании уже есть проекты — ставится «Повторный клиент». Фильтр списка проектов — lead_source_id.

Причина проигрыша ​

Переход в «Проигран» — PATCH /projects/:id/status или PUT /projects/:id со status=lost — требует lost_reason_id (400 projects_lost_reason_required), lost_comment и lost_competitor («кому ушли») — по желанию. Выход из «Проигран» очищает поля проекта; в истории причина остаётся.

История статусов ​

Пишет триггер trg_project_status_history на projects: создание (из пустого в начальный статус) и каждая смена статуса — форма, быстрое меню, автоматический переход по задачам, администратор. Причина, комментарий и «кому ушли» (миграция 0192) копируются в строку перехода в «Проигран». Автор — projects.status_changed_by из той же строки: сервис ставит пользователя, автоматические переходы — пусто. Причина и комментарий проигрыша копируются в строку перехода в «Проигран». Прошлое заполнено миграцией из журнала аудита. GET /projects/:id/status-history — доступ как к карточке. По этой же таблице срабатывают автодействия.

Отчёт «Воронка продаж» ​

GET /reports/sales-funnel?from&to&department_id&manager_id&lead_source_id&event_category:

Проекты в архиве в отчёт не входят.

  • Заявки — проекты, созданные в периоде.
  • Выиграно — первый переход в «Подтверждён» (или дальше) в периоде; сумма — planned_budget.
  • Проиграно — проекты в «Проигран» с переходом в периоде.
  • Конверсия — выиграно / (выиграно + проиграно); срок — среднее число дней от заявки до подтверждения.
  • Ступени — сколько заявок периода дошли до «Обсуждаем» (любой waiting_*), «Смета», «Подтверждён».
  • Причины — с числом, суммой и списком проектов (до 50); без причины — «Не указана».
  • Источники — заявки периода, сколько из них выиграно (когда угодно), конверсия.
  • Менеджеры — заявки, выиграно, проиграно, конверсия, сумма, срок.

Доступ — reports_dashboards (охват «свои» — свои отделы и проекты, где пользователь менеджер), генеральный директор и администратор; capability sales_report. Суммы — при праве на бюджет клиента (show_money).

Загружаем документацию…