Общая картина
Все автоматические эффекты запускаются в одной точке — сразу после того, как аренда сохранена в базе. Порядок такой:- пересчитывается график занятости инвентаря — в том же запросе, потому что от доступности зависит бронирование;
- в очередь ставится одна фоновая задача, которая рассылает уведомления клиенту (сторона мессенджера) и создаёт либо переносит лиды в воронке продаж.
- начисление бонусов клиенту (только для завершённой и полностью оплаченной аренды);
- продвижение клиента по «отметкам» лояльности (только для завершённой аренды).
Задача с уведомлениями и воронкой ставится в очередь только после того, как изменения аренды успешно зафиксированы в базе. Если сохранение откатилось, задача не поставится и «фантомных» уведомлений по несуществующему переходу не будет. Обратная сторона — уведомление и лид появляются с небольшой задержкой уже после ответа сервера.
Раньше уведомления и воронка выполнялись прямо внутри сохранения аренды и их сбой гасился без следа. Теперь ошибка видна как упавшая фоновая задача — её можно найти и переиграть, — а на скорость самого запроса эти реакции больше не влияют. Сбой всё так же не откатывает сохранение аренды.
Уведомления клиенту при смене статуса
Когда формируется уведомление
Подготовка уведомления происходит при каждом сохранении аренды, но реально что-то отправляется только если выполнены все условия:- статус действительно изменился — если новый статус совпадает с прежним, уведомление не готовится вообще;
- аренда не удалена;
- у аренды есть клиент (иначе слать некому — уведомление не готовится).
Что попадает в контекст сообщения
Перечень позиций собирается только по «настоящим» позициям — те позиции, которые были заменены при обмене, в список не попадают. Если у группы больше одной единицы, рядом с названием указывается количество (например, «Палатка (3 шт.)»).
Как выбираются сообщения к отправке
Задача отправки работает в контексте конкретной компании и по её интеграции с мессенджером Wazzup:- если запрос выполняется вне контекста компании — задача сразу завершается, ничего не делая;
- если у компании нет подключения к Wazzup или оно неактивно — рассылки не будет.
- если задаче передан конкретный триггер, отправляется именно он;
- если конкретный триггер не задан (обычный путь при смене статуса), берутся только мгновенные триггеры — те, у которых задержка отправки не больше одной минуты.
Отдельный сценарий: уведомление о просрочке
Для перехода аренды в статус «просрочка» есть выделенная задача. Она отличается от обычного пути:- на вход получает идентификатор аренды и конкретный триггер сообщения;
- если аренда не найдена или у неё нет клиента — завершается без отправки;
- переход статуса всегда трактуется как «в просрочку» (целевой статус жёстко зафиксирован);
- менеджером считается создатель аренды, а если его нет — сотрудник из последнего действия по аренде;
- собирает такой же контекст (без остатка бонусов) и вызывает общую отправку уже с указанием конкретного триггера — то есть здесь отправка не ограничена «мгновенными» триггерами.
Лиды в воронке продаж
При смене статуса аренда дёргает воронку продаж. Здесь описана только точка вызова со стороны аренды; вся механика триггеров этапов, создания и переноса лидов живёт на стороне продаж. Условия и поведение точки вызова:- если аренда удалена — ничего не происходит;
- если у компании не подключена интеграция с воронкой — ничего не происходит;
- если статус не изменился (пересохранение без перехода) — у уже существующих лидов этой аренды только обновляются сумма и клиент, новые лиды не создаются;
- если статус изменился — по настроенным триггерам «источник заявки» лиды переносятся между этапами/воронками и при необходимости создаются новые (по одному на подходящий этап), после чего по каждому лиду выполняются триггеры его нового этапа.
Бонусы: автоматическое начисление за завершённую аренду
Как реакция на сохранение аренды бонусы начисляются клиенту автоматически, но при строгих условиях. Начисление происходит только если одновременно:- аренда не удалена;
- у аренды есть клиент;
- статус аренды — «завершена»;
- статус оплаты — «оплачено».
Как считается сумма начисления
Процент начисления берётся из персональной программы лояльности клиента (если она у него привязана), иначе — из процента начисления по умолчанию в настройках компании. Сумма к начислению = итоговая сумма аренды со скидкой × процент ÷ 100. Дальше система защищается от двойного и неверного начисления:- если по этой аренде клиент уже списывал бонусы — начисление за завершение не производится;
- если начисление по этой аренде уже было и его сумма не совпадает с пересчитанной — сумма приводится к правильной;
- если начисления ещё не было — создаётся новое.
Начисление привязано к конкретной аренде, поэтому многократное пересохранение завершённой оплаченной аренды не «размножает» бонусы: повторный проход либо ничего не меняет, либо только выравнивает сумму.
Бонусы: ручное списание на аренду
Помимо автоматического начисления есть отдельные операции, которыми менеджер вручную применяет бонусы клиента к оплате конкретной аренды и отменяет их.Списание бонусов на аренду
При списании:- проверяется, что у аренды выбран клиент (иначе — ошибка «не выбран клиент»);
- находится или создаётся бонусный счёт клиента;
- если счёт создаётся впервые и в настройках задан ненулевой приветственный бонус — на счёт зачисляется приветственная сумма;
- вычисляется максимально допустимая сумма списания;
- создаётся списание на эту сумму (бонусная транзакция с отрицательным знаком), привязанное к аренде;
- запускается пересчёт дочерних сумм аренды.
Числовой пример. Итоговая сумма аренды — 100 000, уже оплачено — 30 000, допустимый процент оплаты бонусами — 50%, баланс бонусов клиента — 40 000. Тогда три ограничителя равны 70 000, 50 000 и 40 000, а списывается минимальный из них — 40 000. Если бы баланс был 60 000, списалось бы 50 000 (упёрлись бы в лимит по проценту).
Отмена списания
Отмена удаляет по аренде все бонусные списания (транзакции с отрицательной суммой) и запускает пересчёт дочерних сумм аренды. Приветственный или иной начисленный бонус (положительные транзакции) при этом не трогается — отменяется только то, что было списано на оплату.Продвижение клиента по «отметкам» лояльности
Ещё один автоматический эффект сохранения — пересмотр «отметок» клиента (уровней/меток, привязанных к порогам по числу и сумме аренд). Он срабатывает только для завершённой аренды (и только если аренда не удалена и у неё есть клиент). Логика:- по клиенту считаются все его завершённые активные аренды — их количество и суммарная итоговая стоимость со скидкой;
- подбираются все отметки, у которых задан порог по количеству аренд или по сумме, и чей порог уже достигнут клиентом (по количеству или по сумме);
- эти отметки добавляются клиенту.
Пороги проверяются по правилу «или»: достаточно набрать нужное количество аренд либо нужную суммарную сумму, чтобы получить отметку. Отметки только добавляются — этот механизм их не снимает.
Реферальные вознаграждения агентам
За конкретную аренду можно зафиксировать вознаграждение реферальному агенту. Здесь описан только API-контур со стороны модуля аренды; полное определение сущности «Реферальное вознаграждение по аренде» и её жизненный цикл — на отдельной странице. Доступные операции:
Ключевые правила создания и изменения (проверяются при валидации):
- новое вознаграждение всегда привязывается к аренде из адреса запроса; агент может быть не указан;
- если аренда уже завершена или отменена, создавать/менять вознаграждение нельзя — кроме случая, когда у пользователя есть право работать с завершёнными арендами (или он суперпользователь компании);
- текущий статус связанной аренды доступен в ответе только для чтения;
- перевод в статус «Выплачено» фиксирует время и пользователя, отметившего выплату.
Для всех операций нужны права на модель аренды и подключённая интеграция «аренда». Просмотр списка и карточки достаточно иметь при просто подключённой интеграции; для создания, изменения, удаления и отметки «Выплачено» интеграция должна быть ещё и активна (срок использования не истёк).
Как это используется
- Настройте триггеры сообщений в мессенджере на нужные переходы статусов — тогда клиент будет получать уведомления автоматически при смене статуса аренды. Для мгновенных сообщений держите задержку до одной минуты.
- Держите у аренды заполненного клиента: без клиента не уйдут ни уведомления, ни автоматические бонусы, ни отметки лояльности.
- Автоматическое начисление бонусов «за аренду» происходит только в момент, когда аренда становится одновременно завершённой и полностью оплаченной. Ручное списание бонусов на оплату — отдельная операция и делается заранее, до завершения.
- Реферальные вознаграждения удобнее заводить до завершения/отмены аренды; после — потребуется специальное право.
Особенности поведения
- Приветственный бонус зачисляется только в момент первого создания бонусного счёта клиента при ручном списании; для уже существующего счёта приветственный бонус повторно не начисляется.
- Отмена списания бонусов удаляет все списывающие транзакции по аренде, но не трогает положительные начисления — то есть возвращает списанное, но не убирает начисленный приветственный/бонус.
- Автоматическое начисление бонусов за аренду происходит только когда статус одновременно «завершена» и оплата «оплачено»; если по аренде уже было ручное списание бонусов, автоматическое начисление за завершение пропускается.
- Отметки лояльности только добавляются клиенту по достижении порога (по количеству или сумме завершённых активных аренд) и никогда не снимаются автоматически.
- Реферальное вознаграждение нельзя создать или изменить по завершённой или отменённой аренде без права на работу с завершёнными арендами (или прав суперпользователя компании).
- Для реферальных операций просмотр списка и карточки требует лишь подключённой интеграции «аренда», а создание, изменение, удаление и отметка «Выплачено» — активной (не истёкшей) интеграции.
- В контекст уведомления и в перечень позиций попадают только «настоящие» позиции инвентаря; позиции, заменённые при обмене, из перечня исключаются.
- Уведомление о просрочке вызывает общую отправку с конкретным триггером, поэтому на него ограничение «только мгновенные триггеры» не распространяется.
- При пересохранении аренды без смены статуса лиды не создаются и не переносятся — у существующих лидов только обновляются сумма и клиент.
- Уведомления и воронка выполняются одной фоновой задачей, которая ставится в очередь после успешной фиксации изменений аренды; её сбой виден как упавшая задача, а не теряется в логе.
- Каждое сохранение аренды ставит свою задачу триггеров, поэтому сценарии, в которых аренда пересохраняется несколько раз за одну операцию (например, автопродление), могут приводить к повторным уведомлениям.
Связанные страницы
Глоссарий: Уведомления, бонусы и воронка
Определения всех терминов и полей этой страницы: уведомления, лиды, бонусы и реферальные вознаграждения.
Аренда: заявки и жизненный цикл
Обзорная страница модуля аренды со ссылками на все его разделы.
Аренда и статусы
Ядро сущности аренды, автомат статусов и статус оплаты, а также создание, редактирование, закрытие и архивация заявок.
Выдача и приёмка
Действия по аренде: бронирование, сборка, выдача, приёмка, отмена и архив, а также отмена действия с восстановлением статуса.
Позиции инвентаря и обмен
Строки инвентаря аренды и продажи, их тарифы и периоды, массовые операции и обмен позиций внутри заявки.
Услуги и доставка
Услуги в составе аренды (включая типы доставки) и доставки с привязкой к действиям аренды.
Пересчёт сумм и цен
Движок пересчёта итогов аренды: цены позиций и услуг, скидки, налоги, продление периода и суммарные поля заявки.
Депозиты и штрафы
Привязка депозитов и штрафов к аренде и позициям, плюс генерация штрафных задач.
График оплат, паузы и рабочие дни
График платежей и автосписание, паузы аренды и рабочие/выходные дни, влияющие на длительность и суммы.