Статус договора
Статус - это глобальная характеристика договора, общая для всех подключенных услуг. Перечень статусов в системе и их коды задаются переменной contract.status.list конфигурации сервера, например, так:
contract.status.list=0:Активен;1:В отключении;2:Отключен;3:Закрыт;4:Приостановлен;5:В подключении
Код статуса должен быть уникален. В зависимости от статуса договора различные модули меняют свое поведение. Открывается, либо блокируется доступ к услугам, начисляется, либо не начисляется абонентская плата.
Текущий статус договора отображается отдельным узлом в дереве карточки договора в виде: Статус <значение>. При выборе узла дерева в таблице отображается статусы договора.
Внизу отображается таблица с историей изменения статусов.
В этом же окне возможно изменение статусов для договоров с указанием периодов и комментария. При смене статуса оператор указывает период и новый статус. В комментарии может быть указана причина изменения. Например: "По гарантийному письму ХХХХ". Период может быть указан с пустой датой окончания, в этом случае период считается не ограниченным сверху.
Вновь установленный статус перетирает все статусы с пересекающимися периодами. В один день возможен только один статус договора.
Не все статусы доступны для ручной установки, перечень запрещённых задаётся переменной конфигурации сервера contract.status.no.manual.set. Данные статусы могут устанавливаться, например, скриптами.
Если какой-либо статус более не используется, то его код должен быть указан в переменной конфигурации сервера contract.status.deprected, коды указываются через запятую. Статус останется в истории смен, но будет недоступен в фильтрации и установке.
Если устанавливаемый статус договора включает текущую дату, то действующий статус договора меняется сразу. Однако возможна ситуация, когда меняется текущий статус и остается задание на изменение статуса договора в дальнейшем. Такие задания выполняет стандартная задача планировщика Установка статусов договоров.
При смене статуса супердоговора изменяются статусы его зависимых субдоговоров. Включить смену статусов независимых договоров можно опцией конфигурации сервера independ.subcontract.status.change=1.
Настройка активных статусов в модулях
Статусы экземпляра модуля, в которых сервис доступен, указываются в переменной конфигурации модуля contract.status.active.codes. Коды статусов указываются через запятую. Например.
contract.status.active.codes=0
Статусы, в которых сервис считается приостановленным указываются в переменной contract.status.suspend.codes. Например.
contract.status.suspend.codes=3,4
Для модуля NPay данная переменная означает статусы, при которых не снимается абонплата. Для модулей с потреблением услуг влияет, например, на узлы-диапазоны в тарифных планах. Значение в узлах уменьшается в зависимости от времени, которое сервис был пристановлен. Более подробно это описано в документации модулей.
Роль статуса в дебетовых договорах
Для договоров в режиме Дебет статусы договора устанавливаются только администратором, перевод статуса договора в любой из неактивных делает модули заблокированными. Поступление денег на счет ситуацию не меняет. При нормальной работе дебетовый договор постоянно находится в активных статусах, сервисы при этом блокируются модулями, если баланс опускается меньше лимита и автоматически разблокируются после поступления денег на счет.
Роль статуса в кредитовых договорах Для кредитовых договоров статус тесно завязан с системой работы с кредитовыми должниками. Он может изменятся в результате оплаты договора. Активный статус для кредитовых договоров задаётся переменной конфигурации сервера credit.contract.active.status. Например.
credit.contract.active.status=0
В активном статусе работает аналогичная дебетовым договорам аварийная блокировка/разблокировка сервисов в модулях по балансу и лимиту договора.
Основная рабочая область оператора для отключения кредитовых должников вкладка Сервис⇒Администрирование⇒Монитор статуса. Перед началом работы необходимо сделать срез балансов, нажав соответствующую кнопку. Все описанные далее алгоритмы применимы только к кредитовым договорам.
Монитор выводит информацию по состоянию кредитовых договоров, их статусах и сальдо (входящий остаток на начало месяца плюс платежи за месяц). Таблицу с результатами выборки договоров можно выгрузить в csv формате.
Все фильтры соединяются по условию И. Возможна фильтрация по:
-
группе договора + исключение определенных групп договоров;
-
минимальному объему наработки по указанным услугам за прошлый и текущий месяц;
-
режиму договора: кредит/дебет;
-
статусу договора;
-
периоду, который договор был в данном состоянии в днях или месяцах;
-
сумме сальдо (указывается диапазон от и до);
-
соотношению текущего баланса или баланса на начало месяца с лимитом;
-
размеру превышения модуля отрицательного сальдо начала месяца над наработкой какого-то количества предыдущих месяцев. Изменения статусов договоров производится идентично смене статуса одного договора (см. выше), необходимые договоры выбираются в таблице с использованием клавиш Ctrl и Shift. Двойной клик по строке таблицы открывает договор.
В определенный момент времени оператор выбирает все договоры с отрицательным сальдо, находящиеся в активном статусе и, выбрав строки таблицы, переводит их в отключенное состояние. Отключенных статусов может быть несколько, их состав и назначение настраивается администратором биллинга.
В случае, если отключенный статус попадает в перечень из переменной конфигурации credit.contract.open.by.payment.status, договор может быть возвращён в активный статус по приходу платежа, если сальдо станет положительным.
По звонку отключенного клиента с обещанием оплаты оператор может перевести его в активный статус на несколько дней. При этом период активного статуса указывается с датой открытия и закрытия. Если до окончания периода клиент не оплатит, отключенный статус станет действующим и клиента заблокирует. В случае оплаты вновь установленный активный статус перекроет будущий отключенный. При этом перекрытие производится только для статусов, которые указаны в переменной конфигурации credit.contract.override.future.to.active.status.
При неоплате клиента в течении какого-то времени возможна его выборка монитором статуса и перевод в другой отключенный статус, из которого уже не выводит платёж.
Если по каким-либо причинам такое поведение статусов нежелательно, то можно отключить автоматическую активацию договора при изменении сальдо на положительное. Для этого в концигурации сервера необходимо указать флаг do.not.open.contract.on.payment=1. Отсутствие этой записи или установка флага в 0 оставит поведение по умолчанию.
Если же возникла необходимость отключить данное поведение не для всех договоров, а только для каких-либо групп договоров, то необходимо установить флаг.
do.not.open.groups.on.payment=X,Y,Z,...
Где X, Y, и Z - это номера групп договоров, для которых стандартное поведение нежелательно.
Изменение стандартной логики перетирания статусов
Имеется возможность задать свою любую логику перетирания статусов при установке. Стандартная логика заключается в полном перекрытии лежащих уже в договоре отрезков статуса. Иногда требуется при разных условиях выполнять разные действия. Для этого предназначено событие BGBS Задание логики перетирания статусов. В скрипте (обработчике этого события) можно отслеживать откуда выполняется попытка установить статус (сервер, клиент, web) и полностью изменить алгоритм.
На WiKi-странице "Изменение стандартной логики перетирания статусов" приведены дополнительные подробности и прилагается полный рабочий скрипт, представляющий собой в точности реализованную стандартную логику. Его также можно использовать для изучения алгоритма. Там же расположено описание алгоритма установки статусов и примеры скриптов.
Возможность включается установкой в конфигурации сервера флага
# Использовать ли событие Задание логики установки/перетирания статусов (иначе используется стандартное поведение)
use.event.set.status.logic=1