> ## 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/inventory-lines).

## Понятия

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

## Модели и поля

### Позиция инвентаря в аренде

*Одна строка заявки: конкретная единица инвентаря или услуга, добавленная в аренду, со своим тарифом, сроками, ценой и штрафами. Ключевая модель под-области; каждая замена (обмен) — это новая строка, связанная 1:1 с заменённой через связь замены. Итоговый штраф позиции переносится в пер-позиционные авто-штрафы.*

**Связи**

| Поле                       | Тип                 | Описание                                                                                                                                     |
| -------------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| Замена (следующая позиция) | связь 1:1 (на себя) | Ссылка на новую позицию, пришедшую на замену этой; обратная связь называется предыдущей. У заменённой строки заполнена, у активной — пустая. |
| Аренда (заявка)            | связь               | Заявка, к которой относится позиция; удаление заявки удаляет позиции (каскадом).                                                             |
| Клиент                     | связь               | Клиент позиции; если пуст, берётся клиент заявки.                                                                                            |
| Группа инвентаря           | связь               | Товарная группа, из которой взята единица (для позиций без привязки к конкретной единице).                                                   |
| Единица инвентаря          | связь               | Конкретная арендуемая/продаваемая единица; может быть пустой (групповая позиция).                                                            |
| Склад                      | связь               | Склад, к которому привязана позиция.                                                                                                         |
| Контрагент                 | связь               | Контрагент (поставщик/субарендодатель) позиции.                                                                                              |

**Тип и комплекты**

| Поле                      | Тип          | Описание                                                                    |
| ------------------------- | ------------ | --------------------------------------------------------------------------- |
| Тип позиции               | перечисление | Аренда или продажа; по умолчанию аренда.                                    |
| Комплект                  | связь        | Комплект, в рамках которого добавлена позиция.                              |
| Элемент комплекта         | связь        | Позиция шаблона комплекта, которой соответствует эта строка.                |
| Ключ экземпляра комплекта | текст        | Случайный ключ, объединяющий строки одного собранного экземпляра комплекта. |

**Тариф**

| Поле                        | Тип             | Описание                                                  |
| --------------------------- | --------------- | --------------------------------------------------------- |
| Тариф                       | связь           | Применённый тариф аренды; при удалении тарифа обнуляется. |
| Цена тарифа                 | число (2 знака) | Стоимость за один период тарифа на момент добавления.     |
| Длительность периода тарифа | длительность    | Единица периода тарификации (по умолчанию 1 день).        |

**Скидки**

| Поле   | Тип   | Описание            |
| ------ | ----- | ------------------- |
| Скидка | связь | Применённая скидка. |

**Суммы**

| Поле             | Тип             | Описание                               |
| ---------------- | --------------- | -------------------------------------- |
| Сумма позиции    | число (2 знака) | Итоговая начисленная сумма за позицию. |
| Сумма со скидкой | число (2 знака) | Сумма позиции после применения скидки. |

**Штрафы**

| Поле           | Тип             | Описание                                                             |
| -------------- | --------------- | -------------------------------------------------------------------- |
| Итоговый штраф | число (2 знака) | Общая сумма штрафа по позиции; источник для авто-штрафа пер-позиции. |

**Сроки**

| Поле                | Тип        | Описание                                                                            |
| ------------------- | ---------- | ----------------------------------------------------------------------------------- |
| Плановое начало     | дата/время | Запланированное начало аренды позиции.                                              |
| Плановый конец      | дата/время | Запланированный конец аренды позиции; проверка: не раньше начала.                   |
| Фактическая выдача  | дата/время | Момент фактической выдачи единицы клиенту; заполнение означает, что позиция выдана. |
| Фактическая приёмка | дата/время | Момент фактического возврата единицы; заполнение означает, что позиция принята.     |

**Прочее**

| Поле           | Тип        | Описание                                                                   |
| -------------- | ---------- | -------------------------------------------------------------------------- |
| Кем создана    | связь      | Сотрудник, добавивший позицию.                                             |
| Доп. данные    | JSON       | Произвольные атрибуты; при обмене хранит идентификатор заменённой позиции. |
| Дата создания  | дата/время | Проставляется автоматически.                                               |
| Дата изменения | дата/время | Проставляется автоматически.                                               |

### Формат обмена позиции

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

| Поле                 | Тип             | Описание                                           |
| -------------------- | --------------- | -------------------------------------------------- |
| Новая единица        | число (id)      | Единица на замену; по умолчанию берётся прежняя.   |
| Тариф                | число (id)      | Тариф новой позиции; по умолчанию как у прежней.   |
| Цена тарифа          | число (2 знака) | По умолчанию как у прежней позиции.                |
| Длительность периода | длительность    | По умолчанию как у прежней позиции.                |
| Момент обмена        | дата/время      | Когда произошёл обмен; по умолчанию текущее время. |

### Массовое добавление позиций

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

| Поле    | Тип    | Описание                                                                               |
| ------- | ------ | -------------------------------------------------------------------------------------- |
| Аренда  | связь  | Заявка; если не передана, берётся из контекста.                                        |
| Позиции | список | Список форм позиций (тип, единица, тариф, сроки, комплект, скидка, склад, контрагент). |

### Массовое обновление позиций

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

| Поле    | Тип    | Описание                                                                |
| ------- | ------ | ----------------------------------------------------------------------- |
| Аренда  | связь  | Заявка; если не передана, берётся из контекста.                         |
| Позиции | список | Формы позиций с обязательным идентификатором каждой обновляемой строки. |

### Массовое удаление позиций

*Удаляет пачку позиций по списку идентификаторов и пересчитывает суммы статичных комплектов. Перед удалением чинит связи обмена, перераспределяет цену комплекта и сбрасывает продажу у продажных единиц.*

| Поле                   | Тип          | Описание                                        |
| ---------------------- | ------------ | ----------------------------------------------- |
| Аренда                 | связь        | Заявка; если не передана, берётся из контекста. |
| Идентификаторы позиций | список чисел | Позиции, которые нужно удалить.                 |

### Форма позиции (для массовых операций)

*Описывает поля одной позиции внутри массового добавления/обновления. Вложенный формат; в массовом обновлении расширяется полем идентификатора.*

| Поле                      | Тип             | Описание        |
| ------------------------- | --------------- | --------------- |
| Тип позиции               | перечисление    | Аренда/продажа. |
| Комплект                  | число (id)      |                 |
| Ключ экземпляра комплекта | текст           |                 |
| Группа инвентаря          | число (id)      |                 |
| Единица инвентаря         | число (id)      |                 |
| Тариф                     | число (id)      |                 |
| Цена тарифа               | число (2 знака) |                 |
| Длительность периода      | длительность    |                 |
| Начало                    | дата/время      |                 |
| Конец                     | дата/время      |                 |
| Доп. данные               | JSON            |                 |
| Склад                     | число (id)      |                 |
| Контрагент                | число (id)      |                 |
| Скидка                    | число (id)      |                 |

### Подбор позиций по группе

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

| Поле                      | Тип          | Описание                                      |
| ------------------------- | ------------ | --------------------------------------------- |
| Аренда                    | связь        |                                               |
| Период тарификации        | связь        | Для выбора подходящего тарифа.                |
| Группа инвентаря          | связь        | Только активные группы.                       |
| Начало                    | дата/время   |                                               |
| Конец                     | дата/время   |                                               |
| Количество                | число        | Сколько единиц подобрать.                     |
| Фильтр атрибутов          | JSON         | Фильтр по дополнительным атрибутам инвентаря. |
| Точное совпадение фильтра | флаг         |                                               |
| Исключить единицы         | список чисел | Единицы, которые нельзя выбирать.             |
| Конкретная единица        | число (id)   | Подбор одной заданной единицы вместо группы.  |
| Комплект                  | текст        |                                               |

### Подбор позиций по комплекту

*Собирает экземпляры комплекта: по каждому элементу шаблона подбирает нужное число свободных единиц и присваивает общий ключ экземпляра. Возвращает список форм позиций; проверяет наличие для обязательных элементов комплекта.*

| Поле                 | Тип          | Описание                                                     |
| -------------------- | ------------ | ------------------------------------------------------------ |
| Аренда               | связь        |                                                              |
| Период тарификации   | связь        |                                                              |
| Комплект             | связь        | Шаблон комплекта с элементами.                               |
| Начало               | дата/время   |                                                              |
| Конец                | дата/время   |                                                              |
| Исключить единицы    | список чисел |                                                              |
| Фильтры по элементам | список       | Пары «количество + фильтр атрибутов» для сборки экземпляров. |

### Смена периода тарификации позиций

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

| Поле               | Тип          | Описание                                  |
| ------------------ | ------------ | ----------------------------------------- |
| Период тарификации | связь        | Новый период; допускает пустое значение.  |
| Единицы инвентаря  | список чисел | Единицы вне комплектов.                   |
| Комплекты          | список       | Пары «комплект + список входящих единиц». |

**Результат**

| Поле                | Тип             | Описание                           |
| ------------------- | --------------- | ---------------------------------- |
| Тариф               | число           | Идентификатор подобранного тарифа. |
| Цена тарифа         | число (2 знака) |                                    |
| Длительность тарифа | интервал        |                                    |

### Фильтр списка позиций

*Набор query-фильтров для адреса списка позиций аренды. Фильтры начала/конца работают как пересечение интервалов; выдача/приёмка проверяют факт выдачи и приёмки; признак обмена — наличие связи замены.*

| Поле                      | Тип          | Описание                                           |
| ------------------------- | ------------ | -------------------------------------------------- |
| По списку идентификаторов | список чисел |                                                    |
| Пересечение по началу     | дата/время   | Позиции, активные на или после указанного момента. |
| Пересечение по концу      | дата/время   | Позиции, активные до указанного момента.           |
| По аренде                 | число (id)   |                                                    |
| По клиенту                | число (id)   | Клиент позиции или клиент заявки.                  |
| По единице                | число (id)   |                                                    |
| Выдана                    | флаг         | По заполненности фактической выдачи.               |
| Принята                   | флаг         | По заполненности фактической приёмки.              |
| Статус                    | перечисление | Состояние позиции в аренде.                        |
| Признак обмена            | флаг         | Наличие или отсутствие связи замены.               |
| Активна на дату           | дата         | Позиции, активные в указанный день.                |

## Статусы и справочники

### Состояние позиции в аренде

Состояние отдельной позиции инвентаря внутри аренды; используется при пересчёте статуса аренды для определения непринятых и несданных позиций.

* Не выдана
* Выдана
* Принята
* Просрочена

### Тип позиции инвентаря

Различает арендные и продажные позиции аренды; влияет на пересчёт статуса при сохранении (аренда завершается по-разному для арендных и продажных позиций).

* Аренда
* Продажа
