Что это за раздел
Раздел описывает две сущности, которые «навешиваются» на аренду поверх основных позиций инвентаря:- Услуга аренды — строка дополнительной услуги (мойка, установка, обучение и т. п.), которая может быть привязана как ко всей аренде, так и к конкретной выданной позиции. Один из типов услуги — доставка; именно через тип связанной справочной услуги эти строки участвуют в вычислении признака «есть ли по аренде доставка».
- Доставка аренды — отдельное задание на доставку клиенту или самовывоз/забор, с адресами отправления и назначения, назначенным курьером, сроками, статусом и стоимостью. Стоимость доставки автоматически суммируется в отдельную сумму «доставка» на самой аренде.
Доставка и услуги — это два независимых механизма. «Доставка аренды» — это полноценное задание со своим жизненным циклом и уведомлениями курьеру. «Услуга аренды» типа «доставка» — это лишь строка в расчёте стоимости, которая влияет на признак «доставка присутствует» у аренды, но не является заданием на выполнение.
Модель данных
Услуга аренды
Доставка аренды
Геолокация
Адрес отправления и адрес назначения — это точки на карте с широтой, долготой и человекочитаемым названием. Точки переиспользуются: при сохранении доставки система ищет геолокацию с точно такими же координатами и названием и подключает существующую, а создаёт новую только если совпадения нет. Это защищает справочник адресов от дублей, но означает, что одна и та же точка может быть общей для многих доставок.Услуги аренды
Снимок тарифа и расчёт цены
У строки услуги две разные величины, и меняют их разные механизмы. Снимок тарифа — «Цена по тарифу» и «Длительность тарифа». Он берётся при сохранении строки, но только если тариф действительно сменили: в строку копируются цена выбранного тарифа и длительность его периода тарификации (если у тарифа период не указан — 1 день). Если тариф остался прежним, снимок не трогается.Цена по тарифу — это редактируемый снимок, а не «живое зеркало» прайса. Сотрудник может задать по строке свою цену за период (например, сделать услугу дешевле для конкретного клиента), и она сохраняется: последующие сохранения строки и пересчёты аренды её не сбрасывают к тарифной. Тарифная цена подставляется заново только при реальной смене тарифа.
- число периодов оплаты: для тарифа с разовой оплатой (или с нулевой длительностью периода) — всегда 1 период; иначе — собственная длительность услуги делится на длительность тарифа и округляется вверх до целого;
- цена = «цена по тарифу × число периодов»;
- цена со скидкой считается отдельно, с применением скидок по услуге.
Создание, изменение и удаление
Управление услугами построено на двух адресах: список с созданием и точечный доступ (изменение/удаление). Для операций записи действуют права доступа модели и проверка активности интеграции «аренда». При создании услуги, если адрес вызван в контексте конкретной аренды, эта аренда подставляется автоматически. Создание блокируется, если аренда завершена или отменена — за исключением сотрудников уровня суперпользователя компании и обладателей права «изменять завершённые». Создание и изменение строки услуги запускают пересчёт состава и сумм аренды — цена и цена со скидкой самой строки, а также итоги «стоимость услуг» и «стоимость услуг со скидкой» по аренде обновляются сразу. Строка услуги без привязки к аренде (например, заведённая на клиента) пересчёт не запускает.Раньше пересчёт после создания и изменения услуги не запускался вовсе, поэтому у только что заведённой услуги итоги аренды по услугам оставались нулевыми до следующего события, которое пересчёт вызывало. Теперь этого расхождения нет.
- удаление запрещено, если аренда завершена или отменена (возвращается ошибка);
- после удаления автоматически пересчитываются услуги и итоговые суммы аренды;
- дополнительно при удалении срабатывает автоматическое пересохранение самой аренды (если она ещё существует), что подтягивает суммы к актуальному состоянию.
Связь с признаком «доставка» у аренды
Тип справочной услуги определяет, участвует ли строка в вычислении признака доставки у аренды. В этот признак попадают услуги трёх типов доставки: обычная доставка, обратная доставка и доставка в обе стороны. Тип услуги «мастерская», «не выбрано» и прочие в признак доставки не входят.Это ключевое различие: «Услуга аренды» с типом доставки влияет на то, показывает ли аренда наличие доставки и как считается её стоимость, но не создаёт задание для курьера. Само задание — это отдельная сущность «Доставка аренды» со своим статусом и жизненным циклом (см. ниже).
Доставка аренды
Списки и просмотр
Есть несколько представлений над доставками:- Общий список доставок — с поиском (по названиям адресов, имени и телефону клиента, телефону доставки, комментарию), фильтрами (даты создания и подачи, аренда, курьер, тип, статус) и сортировкой. К списку прикладывается сводная статистика: общее число и сумма, разбивка по статусам и типам (количество и сумма по каждому), средняя стоимость завершённых доставок и средняя длительность выполнения (от времени выезда до времени завершения только по завершённым).
- Счётчики — компактная сводка «ожидает / в процессе / завершено», где «завершено» объединяет завершённые и отменённые.
- Доставки конкретной аренды — список и создание в рамках одной аренды (без пагинации).
- Точечный доступ к доставке — просмотр, изменение и удаление; изменение и удаление запускают автоматический пересчёт итоговых сумм аренды.
Для доступа к общему списку и точечному просмотру требуется аутентификация и активная интеграция «доставка».
Создание доставки
При создании доставки в контексте аренды сама аренда подставляется автоматически. Обязательны тип, цена и дата подачи. Адреса отправления и назначения при сохранении обрабатываются через переиспользование точек (см. «Геолокация»).Сразу после создания доставки курьеру автоматически уходит уведомление «назначена новая доставка» с указанием адресов отправления и назначения. При удалении доставки курьеру уходит уведомление «доставка отменена».
Пересчёт стоимости доставки в аренде
При любом сохранении и при удалении доставки автоматически пересчитывается сумма «доставка» на самой аренде: она равна сумме цен всех доставок этой аренды (при отсутствии доставок — ноль) и записывается в аренду отдельным полем.Жизненный цикл доставки
Доставка проходит статусы: «Ожидает» → «В процессе» → «Завершена», либо в любой момент (кроме уже завершённой) — «Отменена». Управляется это четырьмя действиями.Забор / выезд
Действие «забор/выезд» переводит доставку в статус «в процессе» и фиксирует время выезда. Если это доставка (а не самовывоз), клиенту автоматически отправляется сообщение в мессенджер «ваш заказ в пути, курьер выехал» с телефоном курьера (если он указан). Сообщение уходит на доп. телефон, а при его отсутствии — на основной телефон доставки.Подтверждение (запуск финальной выдачи)
Действие «подтверждение» ведёт себя по-разному в зависимости от настройки «подтверждение доставки»:- если подтверждение отключено — доставка сразу переводится в «завершена» и фиксируется время завершения, без кода;
- если включено — генерируется четырёхзначный код, который сохраняется в кэше на 24 часа и отправляется клиенту по SMS как код подтверждения. Телефон берётся из доп. или основного телефона доставки; если оба пусты — из телефона клиента аренды (а если клиента нет — возвращается ошибка). Перед отправкой номер проверяется на корректность.
Завершение (ввод кода)
Действие «завершение» закрывает доставку. Код проверяется, только если это доставка (а не самовывоз) и в компании включена настройка «подтверждение доставки» — при выключенной настройке код не выдаётся вовсе, поэтому и сверять нечего. Когда проверка применяется:- если кода нет — он ни разу не запрашивался или истёк 24-часовой срок его жизни — завершение отклоняется с ошибкой «код подтверждения не запрошен или истёк». Чтобы продолжить, нужно заново вызвать действие «подтверждение» и получить свежий код;
- если код пустой или не совпадает с выданным — возвращается ошибка «неправильный код», а сам выданный код остаётся действующим;
- при совпадении доставка переводится в «завершена», фиксируется время завершения, а код гасится — повторно тем же кодом закрыть доставку нельзя.
Отмена
Действие «отмена» требует обязательный комментарий-причину. Отменить уже завершённую доставку нельзя (возвращается ошибка). При отмене проставляются статус «отменена», время отмены и причина.Как это связано с действиями по аренде
Среди типов действий по аренде отдельно выделены «забор при доставке» и «выдача при доставке». Это специальные разновидности событий жизненного цикла аренды, относящиеся к доставке (в отличие от обычных выдачи и приёмки, происходящих на торговой точке). Они позволяют учитывать в истории аренды, что выдача или возврат прошли через логистику доставки.Обе стороны доставки: прямая и обратная
Поле «связанная выдача» позволяет связать две доставки между собой (ссылка на парную запись). Это используется, когда по аренде оформляется доставка в обе стороны: прямая доставка клиенту и обратная (забор от клиента) могут ссылаться друг на друга. Типы услуги доставки — обычная, обратная и «в обе стороны» — все три учитываются в признаке доставки у аренды.Особенности поведения
- Число периодов оплаты услуги всегда округляется вверх — неполный период тарификации оплачивается как целый.
- Цену и цену со скидкой строки услуги пишет только пересчёт состава и сумм аренды; сохранение строки само по себе меняет лишь снимок тарифа, и только при реальной смене тарифа.
- Вручную заданная цена по тарифу в строке услуги переживает последующие сохранения и пересчёты — она сбрасывается к тарифной только при смене тарифа.
- Создание и изменение строки услуги запускают пересчёт сумм аренды; строка услуги без привязки к аренде пересчёт не запускает.
- При типе «самовывоз» код подтверждения не проверяется вовсе — доставка завершается без ввода кода.
- При выключенной настройке подтверждения доставки действие «подтверждение» сразу закрывает доставку без отправки SMS-кода, и код при завершении не проверяется.
- Отсутствующий или истёкший код подтверждения отклоняет завершение доставки; успешно использованный код гасится и повторно не работает.
- Телефон для сообщений берётся сначала из доп. телефона, потом из основного; при подтверждении, если оба пусты, используется телефон клиента аренды, а при отсутствии клиента возвращается ошибка.
- Удаление услуги запрещено для завершённой или отменённой аренды и, помимо автоматического пересчёта услуг и сумм, вызывает автоматическое пересохранение самой аренды.
- Геолокации адресов переиспользуются по точному совпадению координат и названия, поэтому одна точка может быть общей для многих доставок.
- Создание услуги для завершённой или отменённой аренды разрешено только суперпользователю компании или обладателю права изменять завершённые аренды.
- Изменение и удаление доставки через точечный адрес запускают автоматический пересчёт итоговых сумм аренды.
Связанные страницы
Глоссарий: Услуги и доставка
Полный перечень полей услуг аренды и заданий на доставку.
Аренда: заявки и жизненный цикл
Обзорный раздел модуля аренды и переход ко всем связанным страницам.
Аренда и статусы
Ядро сущности аренды, автомат статусов и статус оплаты, создание, редактирование, закрытие и архивация заявок.
Выдача и приёмка
Действия по аренде — бронирование, сборка, выдача, приёмка, отмена и архив — а также отмена действия с восстановлением статуса.
Позиции инвентаря и обмен
Строки инвентаря аренды с тарифами и периодами, массовые операции и обмен позиций внутри заявки.
Пересчёт сумм и цен
Движок пересчёта итогов аренды — цены позиций и услуг, скидки, налоги, продление и суммарные поля заявки.
Депозиты и штрафы
Привязка депозитов и штрафов к аренде и позициям, плюс генерация штрафных задач.
График оплат, паузы и рабочие дни
График платежей, автосписание, паузы аренды и рабочие/выходные дни, влияющие на длительность и суммы.
Уведомления, бонусы и воронка
Реакции на смену статуса аренды — уведомления клиенту, бонусы, реферальные выплаты и продвижение по воронке.