> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yume.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Услуги и доставка

> Дополнительные услуги и задания на доставку поверх аренды: типы услуг (прямая, обратная и двусторонняя доставка), влияющие на признак доставки, а также жизненный цикл доставки — забор/выезд, подтверждение, завершение и отмена — с уведомлениями курьеру и клиенту.

Полный перечень полей — в [глоссарии](/ru/logic/rent/services-delivery-glossary).

## Что это за раздел

Раздел описывает две сущности, которые «навешиваются» на аренду поверх основных позиций инвентаря:

* **Услуга аренды** — строка дополнительной услуги (мойка, установка, обучение и т. п.), которая может быть привязана как ко всей аренде, так и к конкретной выданной позиции. Один из типов услуги — доставка; именно через тип связанной справочной услуги эти строки участвуют в вычислении признака «есть ли по аренде доставка».
* **Доставка аренды** — отдельное задание на доставку клиенту или самовывоз/забор, с адресами отправления и назначения, назначенным курьером, сроками, статусом и стоимостью. Стоимость доставки автоматически суммируется в отдельную сумму «доставка» на самой аренде.

<Info>
  Доставка и услуги — это два независимых механизма. «Доставка аренды» — это полноценное задание со своим жизненным циклом и уведомлениями курьеру. «Услуга аренды» типа «доставка» — это лишь строка в расчёте стоимости, которая влияет на признак «доставка присутствует» у аренды, но не является заданием на выполнение.
</Info>

## Модель данных

### Услуга аренды

| Поле                | Тип             | Назначение                                                              |
| ------------------- | --------------- | ----------------------------------------------------------------------- |
| Аренда              | связь           | Аренда, к которой относится услуга                                      |
| Клиент              | связь           | Клиент по услуге                                                        |
| Позиция инвентаря   | связь           | Конкретная выданная позиция, к которой привязана услуга (необязательно) |
| Услуга              | связь           | Справочная услуга; её тип определяет, считается ли строка доставкой     |
| Исполнитель         | связь           | Сотрудник, выполняющий услугу                                           |
| Тариф               | связь           | Тариф услуги; при его смене обновляется снимок цены и длительности      |
| Цена по тарифу      | число (2 знака) | Снимок цены тарифа на момент выбора; можно исправить вручную            |
| Длительность тарифа | длительность    | Период тарификации, по умолчанию 1 день                                 |
| Начало / Окончание  | дата/время      | Сроки оказания услуги                                                   |
| Цена                | число (2 знака) | Итоговая стоимость услуги                                               |
| Цена со скидкой     | число (2 знака) | Стоимость с учётом скидки                                               |
| Примечание          | текст           | Дополнительная информация                                               |
| Доп. данные         | JSON            | Произвольные служебные данные                                           |
| История изменений   | история         | Журнал аудита                                                           |

### Доставка аренды

| Поле                          | Тип                | Назначение                                                            |
| ----------------------------- | ------------------ | --------------------------------------------------------------------- |
| Аренда                        | связь              | Аренда, к которой относится доставка                                  |
| Связанная выдача              | связь              | Ссылка на парную доставку (например, обратную)                        |
| Адрес отправления             | связь (геолокация) | Точка выдачи/забора                                                   |
| Адрес доставки                | связь (геолокация) | Точка назначения                                                      |
| Курьер                        | связь              | Назначенный исполнитель доставки                                      |
| Дата подачи                   | дата/время         | Плановое время подачи/забора                                          |
| Тип                           | перечисление       | Доставка либо самовывоз                                               |
| Статус                        | перечисление       | Ожидает / В процессе / Завершена / Отменена                           |
| Комментарий                   | текст              | Комментарий к доставке                                                |
| Телефон / Доп. телефон        | текст              | Контакты получателя; доп. телефон приоритетнее при отправке сообщений |
| Время выезда                  | дата/время         | Момент начала выполнения (выезд/забор)                                |
| Время завершения              | дата/время         | Момент завершения доставки                                            |
| Цена / Цена со скидкой        | число (2 знака)    | Стоимость доставки                                                    |
| Время отмены / Причина отмены | дата/время, текст  | Заполняются при отмене                                                |
| Доп. данные                   | JSON               | Произвольные служебные данные                                         |
| История изменений             | история            | Журнал аудита                                                         |

### Геолокация

Адрес отправления и адрес назначения — это точки на карте с широтой, долготой и человекочитаемым названием. Точки переиспользуются: при сохранении доставки система ищет геолокацию с точно такими же координатами и названием и подключает существующую, а создаёт новую только если совпадения нет. Это защищает справочник адресов от дублей, но означает, что одна и та же точка может быть общей для многих доставок.

## Услуги аренды

### Снимок тарифа и расчёт цены

У строки услуги две разные величины, и меняют их разные механизмы.

**Снимок тарифа** — «Цена по тарифу» и «Длительность тарифа». Он берётся при сохранении строки, но **только если тариф действительно сменили**: в строку копируются цена выбранного тарифа и длительность его периода тарификации (если у тарифа период не указан — 1 день). Если тариф остался прежним, снимок не трогается.

<Note>
  Цена по тарифу — это **редактируемый** снимок, а не «живое зеркало» прайса. Сотрудник может задать по строке свою цену за период (например, сделать услугу дешевле для конкретного клиента), и она сохраняется: последующие сохранения строки и пересчёты аренды её не сбрасывают к тарифной. Тарифная цена подставляется заново только при реальной смене тарифа.
</Note>

**Цена и Цена со скидкой** — их считает **только пересчёт состава и сумм аренды**, единственный владелец этих полей. Он запускается автоматически при создании, изменении и удалении строки услуги. Правило расчёта:

1. число периодов оплаты: для тарифа с разовой оплатой (или с нулевой длительностью периода) — всегда 1 период; иначе — **собственная длительность услуги** делится на длительность тарифа и **округляется вверх** до целого;
2. цена = «цена по тарифу × число периодов»;
3. цена со скидкой считается отдельно, с применением скидок по услуге.

Собственная длительность услуги — это разница между её окончанием и началом (если они не заданы — берутся сроки всей аренды) за вычетом нерабочих дней. Подробные формулы — в разделе [«Пересчёт сумм и цен»](/ru/logic/rent/pricing).

<Warning>
  Число периодов всегда округляется вверх: даже неполный период оплачивается как целый.
</Warning>

### Создание, изменение и удаление

Управление услугами построено на двух адресах: список с созданием и точечный доступ (изменение/удаление). Для операций записи действуют права доступа модели и проверка активности интеграции «аренда».

При создании услуги, если адрес вызван в контексте конкретной аренды, эта аренда подставляется автоматически. Создание блокируется, если аренда завершена или отменена — за исключением сотрудников уровня суперпользователя компании и обладателей права «изменять завершённые».

**Создание и изменение** строки услуги запускают пересчёт состава и сумм аренды — цена и цена со скидкой самой строки, а также итоги «стоимость услуг» и «стоимость услуг со скидкой» по аренде обновляются сразу. Строка услуги без привязки к аренде (например, заведённая на клиента) пересчёт не запускает.

<Note>
  Раньше пересчёт после создания и изменения услуги не запускался вовсе, поэтому у только что заведённой услуги итоги аренды по услугам оставались нулевыми до следующего события, которое пересчёт вызывало. Теперь этого расхождения нет.
</Note>

При удалении услуги:

* удаление запрещено, если аренда завершена или отменена (возвращается ошибка);
* после удаления автоматически пересчитываются услуги и итоговые суммы аренды;
* дополнительно при удалении срабатывает автоматическое пересохранение самой аренды (если она ещё существует), что подтягивает суммы к актуальному состоянию.

### Связь с признаком «доставка» у аренды

Тип справочной услуги определяет, участвует ли строка в вычислении признака доставки у аренды. В этот признак попадают услуги трёх типов доставки: обычная доставка, обратная доставка и доставка в обе стороны. Тип услуги «мастерская», «не выбрано» и прочие в признак доставки не входят.

<Note>
  Это ключевое различие: «Услуга аренды» с типом доставки влияет на то, показывает ли аренда наличие доставки и как считается её стоимость, но не создаёт задание для курьера. Само задание — это отдельная сущность «Доставка аренды» со своим статусом и жизненным циклом (см. ниже).
</Note>

## Доставка аренды

### Списки и просмотр

Есть несколько представлений над доставками:

* **Общий список доставок** — с поиском (по названиям адресов, имени и телефону клиента, телефону доставки, комментарию), фильтрами (даты создания и подачи, аренда, курьер, тип, статус) и сортировкой. К списку прикладывается сводная статистика: общее число и сумма, разбивка по статусам и типам (количество и сумма по каждому), средняя стоимость завершённых доставок и средняя длительность выполнения (от времени выезда до времени завершения только по завершённым).
* **Счётчики** — компактная сводка «ожидает / в процессе / завершено», где «завершено» объединяет завершённые и отменённые.
* **Доставки конкретной аренды** — список и создание в рамках одной аренды (без пагинации).
* **Точечный доступ к доставке** — просмотр, изменение и удаление; изменение и удаление запускают автоматический пересчёт итоговых сумм аренды.

<Info>
  Для доступа к общему списку и точечному просмотру требуется аутентификация и активная интеграция «доставка».
</Info>

### Создание доставки

При создании доставки в контексте аренды сама аренда подставляется автоматически. Обязательны тип, цена и дата подачи. Адреса отправления и назначения при сохранении обрабатываются через переиспользование точек (см. «Геолокация»).

<Note>
  Сразу после создания доставки курьеру автоматически уходит уведомление «назначена новая доставка» с указанием адресов отправления и назначения. При удалении доставки курьеру уходит уведомление «доставка отменена».
</Note>

### Пересчёт стоимости доставки в аренде

При любом сохранении и при удалении доставки автоматически пересчитывается сумма «доставка» на самой аренде: она равна сумме цен всех доставок этой аренды (при отсутствии доставок — ноль) и записывается в аренду отдельным полем.

<Warning>
  В общую сумму «доставка» аренды складываются цены **всех** доставок независимо от их статуса — в том числе отменённых. Отмена доставки сама по себе не убирает её цену из суммы доставки аренды; чтобы исключить стоимость, доставку нужно удалить (или обнулить её цену).
</Warning>

## Жизненный цикл доставки

Доставка проходит статусы: «Ожидает» → «В процессе» → «Завершена», либо в любой момент (кроме уже завершённой) — «Отменена». Управляется это четырьмя действиями.

### Забор / выезд

Действие «забор/выезд» переводит доставку в статус «в процессе» и фиксирует время выезда. Если это доставка (а не самовывоз), клиенту автоматически отправляется сообщение в мессенджер «ваш заказ в пути, курьер выехал» с телефоном курьера (если он указан). Сообщение уходит на доп. телефон, а при его отсутствии — на основной телефон доставки.

### Подтверждение (запуск финальной выдачи)

Действие «подтверждение» ведёт себя по-разному в зависимости от настройки «подтверждение доставки»:

* **если подтверждение отключено** — доставка сразу переводится в «завершена» и фиксируется время завершения, без кода;
* **если включено** — генерируется четырёхзначный код, который сохраняется в кэше на 24 часа и отправляется клиенту по SMS как код подтверждения. Телефон берётся из доп. или основного телефона доставки; если оба пусты — из телефона клиента аренды (а если клиента нет — возвращается ошибка). Перед отправкой номер проверяется на корректность.

### Завершение (ввод кода)

Действие «завершение» закрывает доставку. Код проверяется, только если это доставка (а не самовывоз) **и** в компании включена настройка «подтверждение доставки» — при выключенной настройке код не выдаётся вовсе, поэтому и сверять нечего.

Когда проверка применяется:

* если кода нет — он ни разу не запрашивался или истёк 24-часовой срок его жизни — завершение **отклоняется** с ошибкой «код подтверждения не запрошен или истёк». Чтобы продолжить, нужно заново вызвать действие «подтверждение» и получить свежий код;
* если код пустой или не совпадает с выданным — возвращается ошибка «неправильный код», а сам выданный код остаётся действующим;
* при совпадении доставка переводится в «завершена», фиксируется время завершения, а код **гасится** — повторно тем же кодом закрыть доставку нельзя.

<Warning>
  Для самовывоза, а также при выключенной настройке подтверждения доставки, код не проверяется — доставка завершается без него.
</Warning>

### Отмена

Действие «отмена» требует обязательный комментарий-причину. Отменить уже завершённую доставку нельзя (возвращается ошибка). При отмене проставляются статус «отменена», время отмены и причина.

<Warning>
  Отмена меняет только статус доставки. Она не удаляет запись, поэтому цена отменённой доставки остаётся в сумме «доставка» аренды, и уведомление «доставка отменена» курьеру отправляется автоматически именно при удалении записи, а не при переводе в статус «отменена». Это два разных сценария.
</Warning>

## Как это связано с действиями по аренде

Среди типов действий по аренде отдельно выделены «забор при доставке» и «выдача при доставке». Это специальные разновидности событий жизненного цикла аренды, относящиеся к доставке (в отличие от обычных выдачи и приёмки, происходящих на торговой точке). Они позволяют учитывать в истории аренды, что выдача или возврат прошли через логистику доставки.

## Обе стороны доставки: прямая и обратная

Поле «связанная выдача» позволяет связать две доставки между собой (ссылка на парную запись). Это используется, когда по аренде оформляется доставка в обе стороны: прямая доставка клиенту и обратная (забор от клиента) могут ссылаться друг на друга. Типы услуги доставки — обычная, обратная и «в обе стороны» — все три учитываются в признаке доставки у аренды.

## Особенности поведения

<Info>
  * Число периодов оплаты услуги всегда округляется вверх — неполный период тарификации оплачивается как целый.
  * Цену и цену со скидкой строки услуги пишет только пересчёт состава и сумм аренды; сохранение строки само по себе меняет лишь снимок тарифа, и только при реальной смене тарифа.
  * Вручную заданная цена по тарифу в строке услуги переживает последующие сохранения и пересчёты — она сбрасывается к тарифной только при смене тарифа.
  * Создание и изменение строки услуги запускают пересчёт сумм аренды; строка услуги без привязки к аренде пересчёт не запускает.
  * При типе «самовывоз» код подтверждения не проверяется вовсе — доставка завершается без ввода кода.
  * При выключенной настройке подтверждения доставки действие «подтверждение» сразу закрывает доставку без отправки SMS-кода, и код при завершении не проверяется.
  * Отсутствующий или истёкший код подтверждения отклоняет завершение доставки; успешно использованный код гасится и повторно не работает.
  * Телефон для сообщений берётся сначала из доп. телефона, потом из основного; при подтверждении, если оба пусты, используется телефон клиента аренды, а при отсутствии клиента возвращается ошибка.
  * Удаление услуги запрещено для завершённой или отменённой аренды и, помимо автоматического пересчёта услуг и сумм, вызывает автоматическое пересохранение самой аренды.
  * Геолокации адресов переиспользуются по точному совпадению координат и названия, поэтому одна точка может быть общей для многих доставок.
  * Создание услуги для завершённой или отменённой аренды разрешено только суперпользователю компании или обладателю права изменять завершённые аренды.
  * Изменение и удаление доставки через точечный адрес запускают автоматический пересчёт итоговых сумм аренды.
</Info>

## Связанные страницы

<CardGroup cols={2}>
  <Card title="Глоссарий: Услуги и доставка" icon="book" href="/ru/logic/rent/services-delivery-glossary">
    Полный перечень полей услуг аренды и заданий на доставку.
  </Card>

  <Card title="Аренда: заявки и жизненный цикл" icon="file-signature" href="/ru/logic/rent">
    Обзорный раздел модуля аренды и переход ко всем связанным страницам.
  </Card>

  <Card title="Аренда и статусы" icon="diagram-project" href="/ru/logic/rent/lifecycle">
    Ядро сущности аренды, автомат статусов и статус оплаты, создание, редактирование, закрытие и архивация заявок.
  </Card>

  <Card title="Выдача и приёмка" icon="right-left" href="/ru/logic/rent/actions">
    Действия по аренде — бронирование, сборка, выдача, приёмка, отмена и архив — а также отмена действия с восстановлением статуса.
  </Card>

  <Card title="Позиции инвентаря и обмен" icon="boxes-stacked" href="/ru/logic/rent/inventory-lines">
    Строки инвентаря аренды с тарифами и периодами, массовые операции и обмен позиций внутри заявки.
  </Card>

  <Card title="Пересчёт сумм и цен" icon="calculator" href="/ru/logic/rent/pricing">
    Движок пересчёта итогов аренды — цены позиций и услуг, скидки, налоги, продление и суммарные поля заявки.
  </Card>

  <Card title="Депозиты и штрафы" icon="shield-halved" href="/ru/logic/rent/deposits-penalties">
    Привязка депозитов и штрафов к аренде и позициям, плюс генерация штрафных задач.
  </Card>

  <Card title="График оплат, паузы и рабочие дни" icon="calendar-days" href="/ru/logic/rent/schedule">
    График платежей, автосписание, паузы аренды и рабочие/выходные дни, влияющие на длительность и суммы.
  </Card>

  <Card title="Уведомления, бонусы и воронка" icon="bell" href="/ru/logic/rent/triggers">
    Реакции на смену статуса аренды — уведомления клиенту, бонусы, реферальные выплаты и продвижение по воронке.
  </Card>
</CardGroup>
