Skip to main content
Модуль «Прибыль и окупаемость» отвечает за то, чтобы каждая оплаченная сумма по аренде, продаже или задаче мастерской была разложена по дням и по конкретным позициям (инвентарь, услуга, доставка, штраф) в разбивке «Прибыль (по дням)», а затем свёрнута в накопленную окупаемость инвентаря. Поверх этих двух наборов данных строятся метрики: доходность инвентаря, амортизация и эффективность (простой техники). Ключевая идея: «Прибыль (по дням)» — это не «прибыль минус затраты», а распределённая по дням выручка, ограниченная фактически полученной оплатой. Затраты (расходы на инвентарь) учитываются отдельно, через статьи расхода, и в фактическую прибыль не вычитаются.
Три ключевых значения дневной разбивки: Плановый заработок (со скидкой) — плановая (ожидаемая) сумма к получению за день; Фактическая прибыль — фактически «закрытая» оплатой сумма за этот день; Ожидаемый заработок (без скидок) — базовое распределение цены до применения скидок. «Прибыль» в интерфейсе — это сумма фактической прибыли, а «прогноз/ожидание» — сумма планового заработка.

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

«Прибыль (по дням)» — дневная разбивка выручки

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

«Окупаемость» — накопленная окупаемость инвентаря

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

Как это работает

Общий поток

Когда пересчитывается прибыль

1

Аренда

После пересчёта аренды запускается пересчёт прибыли, но только если состояние изменилось: аренда в статусе «Должник» или «Завершена», либо есть расхождение планового/фактического заработка с фактической ценой или оплатой. Отдельно — при изменении оплаты, там уже без пересчёта штрафов.
2

Продажа

При изменении составляющих продажи запускается пересчёт прибыли по продаже.
3

Задача мастерской

При сохранении завершённой задачи мастерской запускается пересчёт прибыли по задаче мастерской.
4

Фоновые проверки по расписанию

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

Массовая сверка (по требованию)

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

Распределение прибыли по аренде

Распределение прибыли по аренде — центральная и самая сложная часть модуля. 1. Коэффициент оплаты. Определяет, какую долю плановой суммы считать «закрытой», если клиент оплатил больше плановой стоимости (переплата сверх скидочной цены; трактуется как частичное погашение штрафов):
Коэффициент оплаты никогда не превышает 1 — он ограничен единицей сверху. Поэтому дневная фактическая прибыль не может оказаться больше плановой суммы позиции, и переплата клиента не «раздувает» прибыль по дням. При этом коэффициент не превратился в константу: если стоимость доставки велика, он по-прежнему законно оказывается меньше единицы, и часть плановой суммы остаётся незакрытой.
2. Распределение скидок по дням. Скидки раскладываются на дни и позиции пропорционально в зависимости от того, куда они применяются (весь заказ / инвентарь / услуга) или от привязки к конкретной позиции. 3. Дневная разбивка инвентаря:
Остаток инициализируется суммой «Оплачено» и последовательно «расходуется» на инвентарь → услуги → доставку → штрафы. Именно так фактическая оплата ограничивает прибыль: как только остаток исчерпан, фактическая прибыль следующих дней и позиций становится 0. 4. Услуги, доставка, штрафы считаются аналогично из того же остатка. Для штрафов плановый заработок ненулевой только если штраф ручной или привязан к позиции инвентаря. 5. Идемпотентность. Метод строит желаемое состояние и сравнивает с существующими строками, формируя списки на обновление, удаление и вставку. Повторный запуск при неизменных данных ничего не пишет. 6. Обновление окупаемости. В конце запускается обновление окупаемости для затронутых единиц инвентаря.
Инвентарь сдан на 4 рабочих дня, Сумма за инвентарь = 4000, скидок нет, коэффициент оплаты = 1, клиент оплатил полностью (остаток заведомо больше суммы позиции).
Итого 4 дневные строки с фактической прибылью 1000 каждая → сумма фактической прибыли = 4000.Если клиент оплатил только 2500, то остаток иссякнет на 3-м дне: 1000 + 1000 + 500 + 0 = 2500. Первые два дня закрыты полностью, третий частично, четвёртый — 0.
Закупочная цена = 100000, заработок до подключения в систему = 20000, накопленная сумма фактической прибыли по инвентарю = 55000.
Инвентарь окупится, когда процент окупаемости достигнет 100 % (накопленный заработок сравняется с закупочной ценой).

Прибыль по продаже

Распределение прибыли по продаже проще: продажа не разбивается по дням, вся строка привязана к дате создания продажи, «Номер дня» и «Всего дней» равны 1. Для каждой позиции ожидаемый заработок равен цене позиции, плановый заработок равен цене позиции со скидкой, а фактическая прибыль = «min(плановый заработок; остаток)», где остаток начинается с оплаченной суммы по продаже.

Прибыль по задаче мастерской

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

Окупаемость: обновление накопленных значений

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

Что происходит при удалении

  • Полное (безвозвратное) удаление аренды суперпользователем компании удаляет вместе с ней и все её строки в разбивке «Прибыль (по дням)» — они физически стираются из журнала.
  • Обычное («мягкое») удаление аренды (архивация, см. «Архивация записей») строки прибыли не трогает: они остаются в журнале как есть, но больше никогда не пересчитываются и исключаются как из отчётов для чтения, так и из накопленной окупаемости — везде действует один и тот же фильтр зачётных строк.
  • Если из аренды убрали все позиции одного типа (например, весь инвентарь или все услуги), лишние строки прибыли по этому типу удаляются автоматически при следующем пересчёте — в журнале не остаётся строк без реальных позиций аренды.
  • Удаление или возврат оплаты не удаляет и не обнуляет строки прибыли напрямую — вместо этого запускается обычный пересчёт, который заново распределяет уменьшившуюся сумму «Оплачено» по дням. Поскольку остаток «тратится» по порядку (сначала самые ранние дни аренды), уменьшение оплаты в первую очередь снимает фактическую прибыль с самых поздних дней и позиций — более ранние дни сохраняют то, что им уже было засчитано.
Если по одной и той же аренде выполняются два действия почти одновременно (например, два сотрудника параллельно вносят оплату), в редких случаях промежуточные цифры разбивки могут временно разойтись. Это самоисправляется при следующем пересчёте — специального ручного вмешательства не требуется.

Метрики чтения: амортизация, эффективность и доходность

Поверх построчной «Прибыли» и накопленной «Окупаемости», описанных выше, построены отдельные отчёты для чтения — они ничего не пересчитывают, а только читают и агрегируют то, что уже посчитано этим механизмом. Подробно они разобраны на своих страницах в разделе «Метрики и аналитика»:
  • Амортизация и окупаемость инвентаря — линейная амортизация по месяцам (независимый от прибыли бухгалтерский расчёт) и доходность групп/единиц инвентаря за произвольный период поверх накопленной окупаемости.
  • Эффективность инвентаря — простой и загрузка инвентаря за период, на уровне единиц, групп и комплектов.
Общий фильтр «зачётных» строк дохода (аренды в статусах «В аренде», «Просрочена», «Завершена», «Должник» либо отменённые с оплатой; проданные продажи; задачи мастерской «Завершена»/«В работе») применяется одинаково и в этих отчётах для чтения, и при обновлении накопленной окупаемости. Единый фильтр — причина того, что «заработок» в карточке инвентаря и «прибыль за период» в отчётах больше не расходятся.

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

Метрики и аналитика

Хаб раздела аналитики со ссылками на все отчёты, которые читают эти данные.

Обзор и общая сводка

Как дневная сводка и детализация читают и группируют журнал «Прибыли», описанный на этой странице.

Амортизация и окупаемость инвентаря

Отчёты по амортизации и доходности, построенные поверх «Окупаемости» и «Прибыли» с этой страницы.

Эффективность инвентаря

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

Пересчёт сумм и цен

Откуда берутся сумма за инвентарь и итоговая сумма к оплате, которые распределяет прибыль по дням.

Скидки

Применённые скидки и их разнос по дням внутри распределения прибыли.

Депозиты, штрафы и транзакции

Штрафы в дневной прибыли и расходы через статьи расхода.

Инвентарь

Закупочная цена, заработок до подключения в систему, срок службы — влияют на окупаемость и амортизацию.

Фоновые процессы

Задачи пересчёта прибыли и их триггеры.