Skip to main content
Полный перечень полей — в глоссарии.

Обзор

Эта страница описывает четыре связанных механизма, которые определяют, за какие дни и на каких условиях начисляется плата по аренде, а также как деньги автоматически списываются с баланса клиента:
  • Строка графика оплат — платёжный план аренды по дням (полностью описан на отдельной странице; здесь только пересчёт и адреса).
  • Пауза аренды — временная приостановка, которая останавливает «часы» просрочки.
  • Календарь рабочих дней — какие дни недели считаются рабочими, а какие выходными (и не тарифицируются).
  • Рабочие условия — форма сотрудничества по аренде: процент, фиксированная сумма или деление выручки.
Всё, что здесь описано, работает только при включённой функции платёжного графика в настройках компании. Если она выключена, график по дням не строится, а описанные ниже пересчёты пропускаются.

Строка графика оплат: построение и пересчёт

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

Как рассчитывается набор оплачиваемых дней

При каждом пересчёте аренды система заново раскладывает срок аренды на календарные дни и решает, какие из них оплачиваемые, а какие — выходные.
  1. Берётся диапазон от даты начала до даты окончания аренды, и на каждый календарный день заводится один день графика.
  2. Если аренда заканчивается ровно в полночь (00:00:00), последний день из графика убирается — он считается неотработанным.
  3. Определяется список выходных дней:
    • сначала в него попадают дни, которые пользователь вручную пометил выходными;
    • затем добавляются дни по календарю рабочих дней (см. ниже);
    • если день попал в выходные автоматически, но пользователь вручную отметил его рабочим — он снова становится оплачиваемым. Ручная правка всегда важнее авторасчёта, в обе стороны.
  4. По умолчанию первый день аренды делается бесплатным (выходным), если только в настройках компании не включена «плата за первый день».
Выходные дни исключаются из оплачиваемой длительности: сумма за такой день обнуляется, а сам он помечается как «выходной».
Пользователь может вручную открыть любой день графика и пометить его выходным или, наоборот, вернуть в оплату. Такой день получает признак «изменён вручную» и больше не перетирается автоматическим пересчётом.

Пересчёт распределения платежей

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

Адреса графика

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

Автосписание с баланса клиента

Когда у компании включены одновременно функция платёжного графика и баланс клиента (автосписание), система ведёт «долг» клиента по дням графика на его балансе.

Что происходит при пересчёте аренды

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

Ежедневная фоновая задача

Раз в сутки, в 05:00 по времени Asia/Tashkent, отдельная задача проходит по всем компаниям, где включены обе упомянутые настройки, и:
  1. для каждой активной аренды (в аренде или просрочка), срок которой охватывает текущий момент, запускает полный пересчёт — тем самым обновляя авто-списания за прошедшие дни;
  2. синхронизирует фактические платежи клиента по арендам с его балансом: за каждый ещё не учтённый платёж создаётся зачисляющая запись, после чего баланс каждого счёта пересчитывается как сумма всех его операций.
Так на балансе клиента одновременно накапливаются начисления по дням аренды (со знаком «минус») и его фактические оплаты (со знаком «плюс»).

Пауза аренды

Пауза — это период приостановки аренды. Пока аренда на паузе, время не «капает» в просрочку.

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

Пауза без даты окончания считается активной.

Как ставится и снимается пауза

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

Как пауза влияет на расчёт

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

Календарь рабочих дней

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

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

Хотя бы одна из связей (клиент, аренда или позиция) должна быть заполнена.

Две модели «цикла»

Способ разметки выходных зависит от того, складываются ли рабочие и выходные дни ровно в неделю:
  • Недельный цикл (рабочих + выходных = 7). Выходными считаются конкретные дни недели из списка «дни недели выходных». Например, 6 рабочих и 1 выходной с выходным в воскресенье — классическая рабочая неделя.
  • Иной цикл (сумма не равна 7). Дни делятся на чередующиеся блоки: сначала идёт блок рабочих дней заданной длины, затем блок такой же длины — выходные, и так по очереди. Здесь конкретные дни недели уже не важны, важен порядковый номер дня от начала аренды.
Если выходных дней в цикле ноль — выходных по календарю нет вообще, тарифицируются все дни (кроме тех, что помечены вручную или сделаны бесплатными по правилу первого дня).

Автоподбор выходного дня

Если в настройках компании включён автоматический подбор выходного дня, при построении графика система сама переводит календарь аренды в режим 6 рабочих / 1 выходной, назначая выходным день недели, предшествующий дню недели старта аренды, и помечает такой календарь как заданный вручную.

Адреса календаря

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

Рабочие условия

Рабочие условия описывают форму сотрудничества по аренде — как считается вознаграждение.

Типы условий

Для типа «деление выручки» доли клиента и компании должны в сумме давать ровно 100 — иначе сохранение отклоняется.

Уровни и связи

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

Адреса условий

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

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

  • Первый день аренды по умолчанию делается бесплатным (выходным), если в настройках компании не включена «плата за первый день».
  • Обращение к календарю рабочих дней конкретной аренды создаёт его автоматически со значениями по умолчанию (7 рабочих / 0 выходных), если записи ещё не было.
  • Для типа «деление выручки» доли клиента и компании обязаны в сумме давать 100, иначе сохранение отклоняется.
  • У клиента допускается только один общий календарь рабочих дней и только один общий набор рабочих условий (без привязки к аренде); попытка завести второй отклоняется.
  • В цикле, который не укладывается в неделю (сумма рабочих и выходных дней не равна 7), выходные размечаются чередующимися блоками по порядковому номеру дня от начала аренды, а не по дням недели.
  • Список дней графика возвращается пустым, если в запросе не передан фильтр по аренде или по дате — это сделано намеренно, чтобы не выгружать весь график.
  • При правке дня графика редактируются только признаки «выходной» и «изменён вручную»; отметка дня выходным сразу обнуляет его сумму, а сам факт правки навсегда защищает день от авторасчёта.
  • Если аренда заканчивается ровно в полночь, последний календарный день из графика убирается как неотработанный.
  • При включённом автоподборе выходного дня календарь аренды принудительно переводится в режим 6 рабочих / 1 выходной с выходным в день недели перед стартом аренды, перекрывая ранее заданные значения.
  • Календарь рабочих дней и рабочие условия, привязанные к аренде, удалить через адрес нельзя — запрос отклоняется.
  • Флаг «не тарифицировать выходные» хранится и редактируется, но в текущем построении графика выходные дни исключаются из оплачиваемой длительности в любом случае — этот флаг фактически не считывается при расчёте.
  • Рабочие условия (процент, фиксированная сумма, деление) сохраняются, редактируются и запускают пересчёт аренды, но их значение нигде в приложении не участвует в автоматическом расчёте сумм — потребитель этих условий в системе отсутствует.
  • Автосписание с баланса клиента работает только при одновременно включённых настройках платёжного графика и баланса клиента; при обычном пересчёте списания создаются для аренды в любом статусе, кроме «заявки», а ежедневная фоновая задача запускается в 05:00 по Asia/Tashkent и обходит только активные аренды (в аренде или просрочка); в обоих случаях списываются лишь уже наступившие дни графика.
  • Ежедневная синхронизация платежей на баланс не фильтрует их по статусу «успешно»: зачисляющая запись создаётся для каждого ещё не учтённого платежа по аренде, у которого есть клиент и автор; поэтому называть их «успешными» неточно.

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

Глоссарий: График оплат, паузы и рабочие дни

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

Аренда: заявки и жизненный цикл

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

Аренда и статусы

Ядро сущности аренды, автомат статусов и создание, редактирование, закрытие и архивация заявок.

Выдача и приёмка

Действия по аренде: бронирование, сборка, выдача, приёмка, отмена, архив и отмена действия с восстановлением статуса.

Позиции инвентаря и обмен

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

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

Услуги в составе аренды и доставки: выдача, приёмка, подтверждение и отмена с привязкой к действиям аренды.

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

Движок пересчёта итогов аренды: цены позиций и услуг, скидки, налоги, продление периода и суммарные поля заявки.

Депозиты и штрафы

Привязка депозитов и штрафов к аренде и позициям, а также генерация штрафных задач.

Уведомления, бонусы и воронка

Реакции на смену статуса аренды: уведомления клиентам, бонусы, реферальные выплаты и продвижение по воронке продаж.