Что описывает этот раздел
Раздел отвечает за то, сколько ресурсов разрешено компании (сотрудники, точки, техника) и сколько это стоит. Здесь три части, которые работают вместе:- Лимит компании — сколько разрешено и сколько уже используется по каждому виду ресурса.
- Цена лимита за период — прайс за единицу лимита на 1, 3, 6 или 12 месяцев, с возможностью глобальной и персональной цены.
- Фоновый пересчёт — задача, которая сверяет фактическое использование с реальными данными компании и обновляет счётчик.
Типы нормируемых ресурсов
Лимиты и цены применяются к фиксированному перечню ресурсов:Подписание документов в этот перечень не входит и лимитом плана не нормируется. Оно тарифицируется отдельно — режимом биллинга подписания, который платформа назначает компании; сама компания режим не выбирает:
- «За SMS» (режим по умолчанию) — компания платит только за сообщения подписания со своего SMS-баланса; пакеты подписей в этом режиме не расходуются и подписание ничем не ограничивают.
- «За документ» — компания платит за каждый подписываемый документ одним слотом из купленного пакета подписей (один слот на документ, сколько бы у него ни было подписантов); при нулевом остатке слотов отправка ссылки на подписание и кода подтверждения блокируется.
Модель данных
Лимит компании
Одна запись описывает лимит по одному виду ресурса для одной компании. Пара «компания + тип ресурса» уникальна — то есть на каждый ресурс у компании ровно одна строка лимита.Если поле «Лимит» пустое (не задано), ограничение по этому ресурсу не заполнено — это отдельное состояние, отличное от нуля.
Цена лимита за период
Одна запись задаёт стоимость единицы лимита для конкретного ресурса и длительности периода. Уникальна тройка «компания + тип ресурса + длительность периода».Цена бывает двух уровней. Глобальная (компания не указана) действует для всех. Персональная (указана конкретная компания) переопределяет глобальную для этой компании. Персональная всегда в приоритете.
Как подбирается цена
Точный расчёт по периоду
Основной способ получить цену — запросить её для конкретной компании, ресурса и длительности периода. Логика:- Если запрошен период вне списка 1 / 3 / 6 / 12 месяцев — операция завершается ошибкой (недопустимый период).
- Ищутся строки цены по нужному ресурсу и периоду, где компания либо не указана (глобальная), либо совпадает с запрошенной (персональная).
- Из найденного выбирается персональная цена, если она есть, иначе глобальная.
- Если ни персональной, ни глобальной цены нет — операция завершается ошибкой «цена не настроена».
Как цена применяется при покупке
Сам подбор цены отвечает только на вопрос «сколько стоит единица за такой период». Как из этой цены получается сумма к оплате — сколько единиц тарифицируется, берётся ли полный период или пропорция за остаток срока, какой период подбирается автоматически — описано на странице «Расчёт стоимости и регистрация оплаты».Цена «на лету» в списках лимитов
При выборке лимитов к каждой строке автоматически подставляется поле цены. Подбор идёт по тому же принципу приоритета персональной цены над глобальной, а если подходящей цены нет вообще — подставляется ноль (а не ошибка).Пересчёт фактического количества
Фоновая задача сверяет «Текущее количество» в лимите с реальным положением дел в компании и при расхождении обновляет счётчик.Как запускается
Задача работает только внутри контекста конкретной компании — если контекст компании не установлен, она молча завершается, ничего не делая. У задачи ограничение частоты: не чаще 10 запусков в минуту.Что и как пересчитывается
Задача принимает вид ресурса для пересчёта и флаг «слать уведомление». По виду ресурса считается фактическое количество:
Далее:
- Берётся текущая строка лимита по этому ресурсу; если её нет — создаётся новая с нулевыми значениями.
- Если новое фактическое количество отличается от сохранённого — сбрасывается кэш компании, счётчик обновляется и запись сохраняется.
- При включённом флаге уведомления в конце отправляется веб-уведомление с новым значением счётчика в канал лимитов этой компании.
Уведомление администратора о росте (фактически не срабатывает)
В задаче заложен код, который при увеличении количества должен отправлять администратору компании отдельное уведомление с заголовком вида «увеличение количества …» и текущим значением. Заголовки заготовлены для всех пяти видов ресурсов. На практике это уведомление не отправляется никогда: рост определяется сравнением нового количества с сохранённым счётчиком уже после того, как счётчику присвоено это же новое значение, поэтому условие всегда ложно.В коде отдельно перечислен сокращённый набор из трёх ресурсов (сотрудники, точки аренды, автомобили) — судя по всему, как предполагаемый список «уведомляемых». Но сама проверка на него не опирается: она срабатывает по общему перечню заголовков, заведённому для всех пяти видов ресурсов. Так что деление на «уведомляемые» и «не уведомляемые» ресурсы в поведении не реализовано, а само уведомление в любом случае не отправляется.
Как это используется
- Лимит компании — источник правды о том, сколько ресурсов разрешено компании; заполняется при провижининге плана и корректируется при оплате инвойса.
- Цена лимита за период — прайс, по которому считается стоимость расширения лимита; отсюда берутся суммы при выставлении счёта.
- Пересчёт — держит поле «Текущее количество» в актуальном состоянии, чтобы можно было сравнивать фактическое использование с разрешённым лимитом.
Связанные страницы
Глоссарий: Лимиты и тарификация
Полный перечень полей лимита и цены лимита за период.
Компании и биллинг (подписки, платежи)
Обзорная страница модуля со всеми его разделами.
Создание компании и её адрес
Модель компании и её домены, генерация новой компании с дефолтными данными и регистрация владельца.
Инвойсы и платежи
Счета и их позиции, расчёт суммы, инициация оплаты и обработка вебхуков.
Карты и автосписания
Сохранённые платёжные карты компании и их привязка к автоматическим списаниям.
Платёжные шлюзы
Интеграция с платёжным шлюзом (подпись, инициация платежа и карты, возвраты) и устаревший клиент.
Онбординг, новости и статистика
Шаги онбординга компании, лента новостей и снапшоты системной статистики.