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

Логика

Подписание документов монетизируется двумя разными способами, и какой из них действует для компании, решает платформа. От режима зависит всё: за что платит компания, расходуются ли купленные пакеты подписей и может ли подписание быть заблокировано.

Два режима биллинга подписания

Режим назначает платформа. Компания видит его в своих настройках, но сменить сама не может; незаполненное или незнакомое значение всегда трактуется как «за SMS».
Режим берётся из настроек той компании, которой принадлежит документ, — в том числе когда клиент подписывает документ по публичной ссылке, не входя в систему.
В режиме «за документ» сообщения подписания для компании бесплатны: они по-прежнему попадают в историю сообщений, себестоимость у провайдера сохраняется, но с SMS-баланса компании ничего не списывается и нулевой SMS-баланс отправку не останавливает.
Режим «за SMS» не расходует пакеты попутно: раньше слот списывался даже тогда, когда компания уже заплатила за SMS. Двойной оплаты одного и того же подписания в системе нет.

Пакет подписей документов

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

Блокировка подписания при нулевом остатке

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

Баланс документов

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

Разрешение на подписание по квоте документов

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

Что видит компания через API пакетов

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

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

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