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

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

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

Подробнее об оплате: [«Оплата: модель, знак и проверки»](/ru/logic/finances/payments). Как операции по задаче попадают в финансовый журнал и сводки: [«Транзакции»](/ru/logic/metrics/transactions).

## Денежные поля задачи

Все четыре поля рассчитаны на чтение: значения приходят из пересчёта, а не задаются оператором. Даже если какое-то значение прислать снаружи, оно будет затёрто при ближайшем пересчёте.

| Поле                  | Тип             | Назначение                                       |
| --------------------- | --------------- | ------------------------------------------------ |
| Стоимость расходников | число (2 знака) | Сумма цен всех расходников, привязанных к задаче |
| Стоимость услуг       | число (2 знака) | Сумма цен всех услуг, привязанных к задаче       |
| Стоимость             | число (2 знака) | Итог: стоимость расходников плюс стоимость услуг |
| Оплачено              | число (2 знака) | Сумма всех оплат задачи с учётом знака проводки  |

## Как считается стоимость и оплаченность

Пересчёт собирает четыре числа заново, полностью замещая прежние значения (а не прибавляя к ним):

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

<Note>
  «Оплачено» — это «сколько клиент фактически заплатил за вычетом возвратов». Оплата на 1000 и возврат на 500 дают «оплачено» = 500. Если возвраты превышают приход, значение может стать отрицательным — это корректно отражает, что деньги ушли назад клиенту.
</Note>

<Info>
  Итоговая стоимость задачи складывается только из расходников и услуг. Ни направление операции, ни статус оплаты, ни фактически оплаченная сумма на стоимость не влияют — стоимость это «сколько работа стоит», а «оплачено» это отдельное число «сколько денег прошло».
</Info>

## Когда запускается пересчёт

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

### Короткое замыкание: пропуск лишней записи

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

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

<Note>
  Пересчёт стоимости записывает поля напрямую, минуя обычное сохранение объекта, поэтому сам себя повторно не запускает — зацикливания не возникает. Пересчёт прибыли выполняется отдельной фоновой задачей и не блокирует сохранение задачи.
</Note>

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

## Фильтр списка задач по статусу оплаты

В списке ремонтных задач доступен вычисляемый фильтр по степени оплаченности. Это не хранимое поле: фильтр сравнивает «оплачено» с итоговой «стоимостью» прямо в запросе. Доступны четыре значения:

| Значение          | Что отбирает                                                             |
| ----------------- | ------------------------------------------------------------------------ |
| Оплачено          | Задачи, где оплачено не меньше стоимости, при этом стоимость больше нуля |
| Оплачено частично | Задачи со стоимостью больше нуля, у которых оплачено не равно стоимости  |
| Не оплачено       | Задачи, где оплачено равно нулю (независимо от стоимости)                |
| Без стоимости     | Задачи с нулевой стоимостью                                              |

<Warning>
  Значения фильтра пересекаются, это не взаимоисключающие корзины. Переплаченная задача (оплачено больше стоимости) попадёт одновременно и в «Оплачено» (оплачено не меньше стоимости), и в «Оплачено частично» (оплачено не равно стоимости). Задача без единой оплаты и без стоимости попадёт и в «Не оплачено», и в «Без стоимости». Фильтр отвечает на конкретный вопрос, а не раскладывает задачи на непересекающиеся группы.
</Warning>

## Сводка по отфильтрованному списку

Вместе с постраничным списком задач возвращается сводка, посчитанная по всему отфильтрованному набору, а не только по видимой странице:

| Показатель           | Что считает                                                    |
| -------------------- | -------------------------------------------------------------- |
| Активные             | Количество задач в статусах «Новая» и «В процессе»             |
| Завершённые          | Количество задач в статусе «Завершена»                         |
| Сумма завершённых    | Суммарная стоимость завершённых задач                          |
| Общая сумма          | Сумма стоимостей всех задач, кроме архивных                    |
| Средняя длительность | Среднее время от создания до завершения по завершённым задачам |
| Последняя задача     | Дата создания самой свежей неархивной задачи                   |

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

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

<CardGroup cols={2}>
  <Card title="Глоссарий: Стоимость и оплаты" icon="book" href="/ru/logic/workshop/pricing-glossary">
    Полный перечень денежных полей задачи и правил их пересчёта.
  </Card>

  <Card title="Мастерская (ремонтные задачи)" icon="screwdriver-wrench" href="/ru/logic/workshop">
    Обзор модуля мастерской и переход к остальным его страницам.
  </Card>

  <Card title="Воронка и задачи" icon="diagram-project" href="/ru/logic/workshop/pipeline">
    Kanban-воронки, этапы и ремонтные задачи с их статусами, порядком и агрегатами по списку.
  </Card>

  <Card title="Ресурсы и склад" icon="boxes-stacked" href="/ru/logic/workshop/resources">
    Складской справочник расходников и их списание/возврат при привязке к задачам с контролем остатков.
  </Card>

  <Card title="Услуги" icon="screwdriver" href="/ru/logic/workshop/services">
    Привязка услуг из каталога к ремонтным задачам с тарифом, ценой и длительностью.
  </Card>

  <Card title="Метрика прибыли" icon="chart-line" href="/ru/logic/workshop/profit">
    Проецирование прибыли по ресурсам и услугам завершённой задачи в общую таблицу метрик.
  </Card>

  <Card title="Автосмена состояния инвентаря" icon="arrows-rotate" href="/ru/logic/workshop/inventory-state">
    Автоматический перевод инвентаря в целевое состояние при движении задачи по воронке.
  </Card>
</CardGroup>
