Логика
Подписание документов монетизируется двумя разными способами, и какой из них действует для компании, решает платформа. От режима зависит всё: за что платит компания, расходуются ли купленные пакеты подписей и может ли подписание быть заблокировано.Два режима биллинга подписания
Режим назначает платформа. Компания видит его в своих настройках, но сменить сама не может; незаполненное или незнакомое значение всегда трактуется как «за SMS».
В режиме «за документ» сообщения подписания для компании бесплатны: они по-прежнему попадают в историю сообщений, себестоимость у провайдера сохраняется, но с SMS-баланса компании ничего не списывается и нулевой SMS-баланс отправку не останавливает.
Режим «за SMS» не расходует пакеты попутно: раньше слот списывался даже тогда, когда компания уже заплатила за SMS. Двойной оплаты одного и того же подписания в системе нет.
Пакет подписей документов
Пакет — разовая порция лимита подписей, выданная компании в привязке к тарифу и/или к позиции счёта. Остаток и признак «Активен» — вычисляемые свойства (не хранятся в базе): остаток — это «Всего» минус «Использовано», но не меньше нуля; активен — когда остаток больше нуля. Как появляется пакет. Создаётся автоматически при подтверждении оплаты счёта компании — для каждой позиции подтверждённого счёта, которая относится к тарифу с типом «количество» и принадлежит продукту подписания документов, создаётся один новый пакет с лимитом из количества, указанного в тарифе. Старые пакеты не продлеваются и не суммируются — они накапливаются как отдельные записи. Общий остаток компании — это сумма остатков всех её пакетов с ненулевым остатком; если у компании нет ни одного пакета, общий остаток равен нулю. Списание слота выполняется только в режиме «за документ» и происходит автоматически, когда очередная подпись документа переходит в статус «Подписан»:- Если по этому документу слот уже был списан ранее — повторного списания не происходит.
- Среди пакетов компании выбирается самый старый по дате создания пакет с ненулевым остатком.
- Если такого пакета нет — слот не списывается, документ подписывается как обычно.
- Иначе «Использовано» увеличивается на единицу, создаётся запись расхода, отправляется веб-уведомление о новом значении.
Документ стоит ровно один слот, сколько бы у него ни было подписантов: учёт ведётся по документу, поэтому смена «самого старого пакета с остатком» между подписями разных подписантов больше не приводит к повторному списанию.
Блокировка подписания при нулевом остатке
В режиме «за документ» операция подписания отклоняется с ошибкой «Количество подписей исчерпано», если свободных слотов в пакетах компании не осталось (в том числе когда пакетов нет вовсе). Проверка выполняется в четырёх точках:- отправка ссылки на подписание сотрудником;
- запрос кода подтверждения клиентом;
- подтверждение кода клиентом;
- загрузка файла с электронной подписью.
Баланс документов
Отдельная сущность — счётчик суммы для компании на определённый период (даты начала и окончания). Не является частью процесса пакетов подписей выше.Разрешение на подписание по квоте документов
Помимо проверок внутри самих сценариев подписания, к адресам инициации подписи со стороны компании и к части публичных адресов клиентской ссылки подключено отдельное разрешение доступа «по квоте документов». По замыслу оно должно было отклонять запрос при исчерпании квоты, сверяясь с резервным тарифным лимитом.Что видит компания через API пакетов
- Список пакетов документов — полный список компании одним ответом, без пагинации, отсортированный от самого старого к новому; для каждого пакета отдаётся краткое описание тарифа, лимит, использовано, вычисленные остаток и активность. Все поля только на чтение.
- Остаток подписей компании — отдельный адрес с одним числом: суммарный остаток по всем активным пакетам.
Особенности поведения
- Режим биллинга подписания отдаётся в настройках компании только для чтения — сменить его может лишь платформа.
- Списание одного слота происходит по факту перехода подписи в статус «Подписан», а не в момент, когда документ становится полностью подписанным; второй и последующие подписанты того же документа слот уже не расходуют.
- Ручное подписание и подтверждение через мобильное приложение ЕГОВ не проверяют остаток пакета, поэтому в режиме «за документ» ими можно подписать документ и при нулевом остатке (слот при этом просто не спишется).
- Пакет создаётся автоматически только для позиций счёта с тарифом типа «количество»; проверка на повторное создание идёт по позиции счёта, поэтому один счёт с несколькими такими позициями создаёт несколько независимых пакетов.
- «Тариф» и «Счёт» у пакета могут быть пустыми — это не мешает вычислению остатка/активности, так как они зависят только от «Всего» и «Использовано».
- Счётчики пакета ведутся и отдаются в API одинаково в обоих режимах, но в режиме «за SMS» они не растут, потому что списаний не происходит.