> ## 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/lifecycle-glossary).

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

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

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

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

### Основные поля

| Поле                          | Тип    | Назначение                                                                              |
| ----------------------------- | ------ | --------------------------------------------------------------------------------------- |
| Идентификатор                 | число  | Первичный ключ аренды.                                                                  |
| Идентификатор в Plus          | число  | Ссылка на запись во внешней системе Plus; такие аренды нельзя удалять физически.        |
| Клиент                        | связь  | Клиент заявки; у черновой заявки может отсутствовать.                                   |
| Статус аренды                 | список | Этап жизненного цикла; вычисляется автоматически.                                       |
| Статус оплаты                 | список | Ожидает оплаты / оплачено / частично; вычисляется автоматически.                        |
| Активна                       | флаг   | Заявка «живая», если у неё есть услуги, позиции, клиент, оплата, депозиты или доставки. |
| Удалена (в архиве)            | флаг   | Мягкое удаление/архивирование.                                                          |
| Точка выдачи / Точка возврата | связь  | Точки проката; по ним фильтруется доступ сотрудника.                                    |

### Сроки и длительность

| Поле                                    | Тип          | Назначение                                                                                     |
| --------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------- |
| Плановое начало / Плановый конец аренды | дата/время   | Планируемые границы; конец не может быть раньше начала (проверяется ограничением базы данных). |
| Фактическое начало                      | дата/время   | Момент первой фактической выдачи.                                                              |
| Фактический конец                       | дата/время   | Момент завершения; сбрасывается, если аренда возвращается «в аренду».                          |
| Автопродление                           | флаг         | Аренда автоматически продлевается посуточно.                                                   |
| Начальная / Расчётная длительность      | длительность | Используются при расчёте стоимости.                                                            |

<Info>
  Рабочая длительность аренды при сохранении считается от планового начала до «конца», где «конец» — это Фактический конец, если он проставлен, иначе Плановый конец.
</Info>

### Суммы, налоги, скидки, штрафы

Стоимость раскладывается на составляющие: Стоимость инвентаря и Стоимость услуг (каждая — до и после скидки), Стоимость доставки, Сумма налога. Итоговая стоимость (со скидкой) — это то, с чем сравнивается Оплаченная сумма при расчёте статуса оплаты. Сумма штрафа складывается из Автоматического и Ручного штрафа.

<Note>
  Сами суммы и раскладка скидок по позициям пересчитываются отдельным механизмом пересчёта позиций и сумм (см. соседние страницы про позиции, скидки и штрафы). На этой странице важно лишь то, что пересчёт статуса опирается на уже посчитанную Итоговую стоимость и Оплаченную сумму.
</Note>

## Как вычисляется статус при сохранении

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

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

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

### Флаг «Активна»

Сначала заявка помечается неактивной, затем становится активной снова, если выполнено хотя бы одно из условий: есть услуги, есть арендные или продажные позиции, указан клиент, есть оплата, есть депозиты или есть доставки. Неактивные заявки скрываются из рабочих списков.

### Статус оплаты

| Условие                                  | Статус оплаты     |
| ---------------------------------------- | ----------------- |
| Оплаченная сумма ≥ Итоговой стоимости    | Оплачено          |
| Оплаченная сумма > 0, но меньше Итоговой | Частично оплачено |
| Оплаты нет                               | Ожидает оплаты    |

### Переходы статуса аренды

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

**1. Отметка выдачи.** Если есть хотя бы одна выдача и заявка ещё не в терминальном состоянии (не Завершена, не Должник, не Отменена), проставляется Фактическое начало (по первой выдаче). Если при этом есть арендные позиции и заявка не в Просрочке — статус переходит в «В аренде».

**2. Блок арендных позиций.** Срабатывает, когда есть арендные позиции и текущий статус — один из: Бронь, В аренде, Просрочка, Завершена, Должник. Внутри блока по порядку проверяется:

| Ситуация                                                      | Новый статус            | Побочно                                       |
| ------------------------------------------------------------- | ----------------------- | --------------------------------------------- |
| Была Завершена, но остались не выданные или несданные позиции | Должник                 | —                                             |
| Всё сдано (нет не выданных и несданных) и оплачено полностью  | Завершена               | Фактический конец = сейчас, если ещё не задан |
| Всё сдано, но оплачено не полностью                           | Должник                 | —                                             |
| Есть несданные и статус уже Просрочка                         | Просрочка (сохраняется) | Фактический конец сбрасывается                |
| Есть несданные позиции                                        | В аренде                | Фактический конец сбрасывается                |

<Note>
  Решение «Завершена или Должник» принимается **единым правилом**, одним и тем же для всех путей: и при обычном сохранении аренды, и при обработке действия приёмки, и при откате действия. Правило состоит из двух частей:

  1. **Состояние позиций.** Если у аренды есть хотя бы одна нетронутая позиция (не выдавалась и не принималась — любого типа, включая продажу) или хотя бы одна выданная, но не принятую арендную позицию, аренда закрыться не может. Позиции, заменённые при обмене, в этой проверке не учитываются.
  2. **Порог оплаты.** Если по состоянию позиций аренда закрывается, статус выбирается сравнением: Оплаченная сумма ≥ Итоговой стоимости → Завершена, иначе → Должник.
</Note>

<Info>
  Порог оплаты — **один и тот же во всех путях**, и штрафы отдельным слагаемым в него не входят: они уже включены в Итоговую стоимость на этапе пересчёта сумм. Отдельно к сумме штрафы прибавляются только при приёме платежа — там проверяется, что платёж не превышает остаток.
</Info>

**3. Только продажа.** Если есть продажные позиции, нет арендных, нет не выданных позиций и оплачено полностью — аренда становится Завершённой.

**4. Ни аренды, ни услуг.** Если арендных позиций нет, услуг нет, но есть и выдача, и приёмка, и оплачено полностью — аренда становится Завершённой, а Фактическое начало и конец проставляются по этим действиям.

<Warning>
  Просрочка на этом этапе только **сохраняется и учитывается** в переходах, но самим пересчётом при сохранении не назначается. В статус «Просрочка» аренду переводит отдельный механизм контроля сроков (см. страницы про штрафы и уведомления о просрочке). Поэтому «Должник» и «Просрочка» в правилах всегда нужно рассматривать вместе.
</Warning>

## Побочные эффекты после сохранения

Сразу после записи заявки система выполняет несколько действий.

1. **Пересчёт доступности инвентаря** — обновляется расписание занятости позиций этой аренды. Выполняется **сразу, в том же запросе**: от доступности зависит бронирование, и устаревшая доступность грозила бы двойной бронью.
2. **Уведомление о смене статуса и триггеры воронки продаж** — обе реакции уходят в **одну фоновую задачу**, которая ставится в очередь только после того, как изменения аренды успешно зафиксированы в базе. Уведомление уходит клиенту, если статус изменился и у заявки есть клиент (с контекстом: менеджер, суммы, сроки, перечень позиций, накопленные бонусы); воронка создаёт или переводит сделки (лиды) по правилам, привязанным к источнику клиента, а при неизменном статусе только обновляет сумму и клиента существующих сделок.

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

<Info>
  Синхронными в запросе намеренно остались только два пересчёта: **пересчёт состава и сумм аренды** (его результат сразу уходит в ответ, поэтому его нельзя откладывать — иначе клиент увидел бы устаревшие суммы и долг) и **пересчёт доступности инвентаря**.
</Info>

Отдельно, по сигналам сохранения/удаления, срабатывают:

* **Создание вознаграждения по аренде** — только при создании новой аренды. Заводится связанная запись с процентами вознаграждения сотрудников (за создание, бронь, инкассацию, выдачу, приёмку), взятыми из настроек компании на момент создания.
* **Обновление статуса клиента** — только для завершённых аренд. Подсчитываются число и сумма завершённых аренд клиента, и клиенту добавляются подходящие статусные метки, пороги которых достигнуты. Метки только добавляются, никогда не снимаются.
* **Начисление бонусов** — только когда аренда завершена **и** полностью оплачена. Сумма бонуса = Итоговая стоимость × процент лояльности клиента (или процент по умолчанию из настроек) ÷ 100. Если по этой аренде бонусы уже списывались, начисление не создаётся; иначе создаётся или корректируется бонусная операция начисления.
* **Очистка платежей Kaspi** — при физическом удалении аренды удаляются связанные незавершённые транзакции Kaspi.

## Создание, редактирование, закрытие, архивация

### Создание

Клиентский код не задаёт ни статус, ни суммы — они выставляются автоматически. При создании:

* Плановое начало по умолчанию — текущий момент (округлённый), плановый конец — начало плюс длительность по умолчанию из настроек. При включённом автопродлении конец переносится на ближайшую полночь следующего дня.
* **Начальный статус зависит от настроек компании**: если включены черновики — «Заявка»; иначе если включено бронирование — «Бронь»; иначе сразу «В аренде».
* Из настроек компании проставляются шаг авто-штрафа, признак отключения штрафа, ставка налога и признак включённого в цену налога, автопродление.
* Записывается создатель, регистрируется действие создания.
* Если плановое начало позже конца — запрос отклоняется с ошибкой.

### Редактирование

При изменении заявки:

<Warning>
  Редактировать Завершённую или Отменённую аренду обычному сотруднику нельзя — запрос отклоняется. Исключение — суперпользователь компании или сотрудник со специальным правом на изменение завершённых аренд.
</Warning>

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

### Закрытие/удаление (карточка аренды)

Удаление аренды ведёт себя по-разному:

| Кто/что                    | Поведение                                                                                                                                                                                        |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Любой случай               | Сначала у продажных позиций сбрасываются дата и цена продажи.                                                                                                                                    |
| Аренда из Plus             | На этом всё и заканчивается — ни физического удаления, ни архивации не происходит.                                                                                                               |
| Суперпользователь компании | Физическое удаление: каскадно удаляются позиции, услуги, реферальные агенты, депозиты, доставки, действия, паузы, штрафы, расписание и транзакции; сделки воронки и инвентаризации отвязываются. |
| Обычный сотрудник          | Мягкая архивация: создаётся действие архивирования, аренда помечается удалённой, продажные позиции убираются из действий выдачи и у них сбрасываются фактические даты.                           |

### Архивация (отдельный адрес)

Отдельный адрес архивации **переключает** флаг «в архиве»: повторный вызов возвращает аренду из архива.

## Адреса списка, карточки и счётчиков

### Список аренд

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

<Info>
  Видимость аренд ограничена точками проката: суперпользователь видит все (или выбранную точку), обычный сотрудник — только аренды своих точек. Часть связанных данных (услуги, реф. агенты, депозиты, доставки, сделки) подгружается только при включённых соответствующих настройках/интеграциях.
</Info>

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

### Карточка аренды

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

### Счётчики по статусам

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

<Note>
  Счётчик «в аренде» может **объединять** статусы «В аренде» и «Просрочка» — это зависит от настройки компании. Счётчик «должники» считает только тех, кто в статусе «Должник» **и** при этом оплачен не полностью (частично или ожидает оплаты).
</Note>

### Ссылка на оплату

Отдельный адрес выдаёт клиенту публичную ссылку на оплату аренды. Запрос на получение автоматически создаёт (или обновляет) такую ссылку и возвращает её адрес и телефон. Запрос на отправку рассылает ссылку клиенту по выбранному каналу — SMS или Wazzup — и требует, чтобы соответствующая интеграция была подключена; иначе возвращается ошибка. Телефон получателя проходит проверку формата. Сама сущность ссылки на оплату подробно описана в разделе финансов.

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

* Весь пересчёт статусов, статуса оплаты и флага «активна» выполняется только для уже сохранённой аренды; на самом первом сохранении при создании он пропускается, поэтому только что созданная аренда получает эти значения из значений по умолчанию.
* Статус «Просрочка» самим пересчётом при сохранении не назначается — он только сохраняется и учитывается в переходах; в просрочку аренду переводит отдельный механизм контроля сроков.
* Уведомление о смене статуса и триггеры воронки продаж выполняются одной фоновой задачей, которая ставится в очередь после успешной записи аренды; их сбой не откатывает сохранение аренды, но и не теряется — он виден как упавшая фоновая задача.
* Решение «Завершена или Должник» принимается единым правилом на всех путях (сохранение аренды, обработка приёмки, откат действия): сначала проверяется, что не осталось нетронутых и несданных позиций, затем сравнивается оплата с Итоговой стоимостью. Штрафы отдельным слагаемым в этот порог не входят.
* Фактический конец аренды не проставляется, если хоть одна позиция вообще не выдавалась: пока такая позиция есть, единое правило не считает аренду закрываемой.
* При пересчёте аренда с нулевой итоговой стоимостью получает статус оплаты «Оплачено», потому что оплаченная сумма 0 не меньше итоговой стоимости 0 (сравнение «больше или равно»); это проявляется при пересохранении уже существующей пустой аренды, а не при её первом создании.
* Отдельный адрес архивации переключает флаг архива, поэтому повторный вызов возвращает аренду из архива, а не оставляет её удалённой.
* Счётчик «должники» не учитывает аренды в статусе «Должник» с полной оплатой (например, должник только из-за несданного инвентаря): они попадают в общий счётчик, но не в счётчик должников.
* Начальный статус новой аренды (заявка / бронь / в аренде) целиком определяется настройками компании (черновики и бронирование), а не передаётся клиентом.

<Info>
  - Проценты вознаграждения по аренде фиксируются из настроек компании один раз при создании аренды и не обновляются при последующем изменении настроек.
  - Обновление статуса клиента только добавляет статусные метки при достижении порогов и никогда их не снимает.
  - Бонус начисляется только при завершённой и полностью оплаченной аренде и не создаётся, если по этой аренде бонусы уже списывались.
  - Счётчик «в аренде» может объединять статусы «В аренде» и «Просрочка» в зависимости от настройки компании об объединении.
  - Редактирование завершённой или отменённой аренды запрещено обычному сотруднику; разрешено только суперпользователю или обладателю специального права на изменение завершённых.
  - Отправка ссылки на оплату по SMS или Wazzup требует подключённой интеграции соответствующего канала, иначе запрос отклоняется.
</Info>

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

<CardGroup cols={2}>
  <Card title="Глоссарий: Аренда и статусы" icon="book" href="/ru/logic/rent/lifecycle-glossary">
    Полный перечень полей и терминов сущности аренды, её статусов и статусов оплаты.
  </Card>

  <Card title="Аренда: заявки и жизненный цикл" icon="file-signature" href="/ru/logic/rent">
    Обзорная страница модуля со ссылками на все его разделы.
  </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="truck" href="/ru/logic/rent/services-delivery">
    Услуги в составе аренды и доставки: выдача, приёмка, подтверждение и отмена с привязкой к действиям аренды.
  </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>
