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