Обзор Web-интерфейса пользователя
Новости
Отображаются на первой странице кабинета пользователя.
Для редактирования новостей зайдите в Сервис⇒Настройка⇒Редактор новостей. Нажмите кнопку Новый элемент, введите тему и текст новости. При неустановленном фильтре групп, новость будет отображена всем пользователям, иначе только выбранным группам.
Чтобы работали html-теги необходимо заключить новость в xml-теги <data></data>. В этом случае содержащаяся внутри информация должна быть правильным xml-документом, т.е все теги должны быть закрыты, все атрибуты должны быть в ""
<data>
Поздравляем всех с <b>ПРАЗДНИКОМ</b>!!!<br/>
Желаем счастья и т.д и т.п
</data>
После того как клиент зайдёт на свою страницу статистики он увидит справа от меню вашу новость.
Просмотр баланса, истории платежей, расходов и наработки
Меню Просмотр баланса отображает на выбранный месяц входящий и исходящий остатки на счету пользователя, приходы, расходы и наработку договора. Приходы и расходы отображаются с комментариями.
Смена пароля на доступ к статистике
Позволяет клиенту изменить пароль договора для доступа к статистике.
Тарифные опции
Страница тарифных опций позволяют абоненту просматривать активные тарифные опции и активировать новые, тем самым, например, меняя подключенные услуги, скорость соединения.
Карточки
У абонентов есть возможность загружать на свой комьпютер карточки своего договора в формате PDF.
Загрузка карточки происходит после нажатия на ссылку Скачать. Для просмотра сохраненной карточки необходимо установить программу для просмотра PDF-документов (например: Adobe Acrobat Reader, STDUViewer и др.).
Дополнительные действия
В данном пункте возможен вывод с помощью скриптов BGBS дополнительных действий для вызова пользователем.
Параметра договора
При необходимости можно вывести в Web-интерфейсе параметры договора. Для включения данного пункта меню необходимо в конфиге прописать web.menuItem12=Параметры договора или настроить в Редакторе web-меню
Какие параметры должны отображаться в Web-интерфейсе, задается в редакторе параметров выбором двух флагов Чтение в ЛК и Правка в ЛК
В зависимости от выбранных флагов, параметр в Web-интерфейсе не будет отображаться вообще, не будет отображаться, но его можно будет редактировать, будет выводиться, но без возможности редактирования и будет отображаться и доступен для редактирования
Примечания
В данном меню отображаются разрешённые к показу пользователю примечания договора.
Смена тарифных планов
Биллинг поддерживает возможность смены тарифов пользователями через Web-интерфейс пользователя.
Процесс смены тарифа может быть изменён с штатной логики на любую другую путём обработки событий Смена тарифа по заданию пользователя и Запрос дат, с которых разрешена смена тарифа через Web.
Для предоставления пользователю смены тарифов необходимо установить для договора группу (группы) тарифных планов. Если хотя бы одна группа тарифных планов не указана, то смена их через Web-интерфейс невозможна. Группа определяет набор взаимозаменяемых тарифов договора. Обычно это линейка тарифов на одну услугу.
Рассмотрим случай наличия в системе 3х тарифных планов Тариф1..Тариф3. При этом переход между ними необходимо разрешить только в начале месяца. Предполагается что тарифы уже созданы в редакторе тарифных планов.
В Справочники⇒Группы тарифов создадим группу с названием "Первая" и установим следующие параметры.
Кроме перечня разрешённых тарифов и момента, когда можно менять тариф, необходимо установить:
-
Позиция, которую тарифные планы данной группы занимают в договоре;
-
Количество дней, следующих после текущей даты, в которые может быть добавлено задание на переход. Например, если сейчас 20-е число месяца, в котором 30 дней и в данной опции стоит, что задания можно добавлять вперёд на 30 дней, то будут просмотрены даты от 20-го числа текущего месяца до 20 числа последующего. При этом будут выбраны даты разрешённых переходов. В данном случае подойдёт только 1-ое число последующего месяца. Если данный параметр установить в 60, то пользователь сможет генерировать задания за 2 месяца.
Также обратите внимание, что для каждого тарифа может устанавливаться начальная и/или конечная даты периода, когда эти тарифы видны в Web-интерфейсе пользователя и доступны для выбора. Это дополнительное средство обеспечения гибкости. Можно, например, сделать доступными некоторые из тарифов группы через некоторое время. Но это не имеет никакого отношения к возможности установки на какое-то число начала действия тарифа. Это только период, когда тарифы видны в списке выбора тарифов для смены.
Теперь необходимо установить в договор группу тарифов и скрипт поведения. Сделать это следует, открыв договор и щёлкнув на дереве Группа тарифов. Значение добавляется с периодом. На страничке Web-статистики пользователя должно появится меню Смена тарифных планов. В верхней таблице приведена история смены тарифов.
Обратите внимание, что система предлагает к смене только тарифы, входящие в установленные на договоре группы тарифов. Не разрешается переходить на неиспользуемые тарифные планы. После смены тарифа страничка примет следующий вид.
Также для пользователей имеется возможность отменить выбор тарифа для перехода будущим числом. Таким образом, можно отменить ошибочный переход. Обратите внимание, что если на событие смены тарифа выполняются какие-либо действия, то в событии отмены перехода (см. ниже) нужно это предусмотреть и корректно обработать. Как известно, событие смены тарифа отрабатывает в момент выбора тарифа (даже, если тариф начнёт действовать только в следующем месяце). Алгоритм обработки этой ситуации работает следующим образом:
-
При смене тарифа сохраняется информация с какого тарифа_договора происходит переход (id строки из contract_tariff);
-
На будущих тарифах в Web-интерфейсе есть кнопка отмены перехода на тариф (и указано для удобства на какой тариф откатится, ведь мы знаем предыдущий тариф);
-
При нажатии на неё (после проверок на хаки) генерируется синхронное событие Отмены перехода на тариф;
-
Там можно обработать что угодно, имея ContractTariff "до" и "после";
-
Там же можно установить processed (аналогично смене тарифа), чтобы штатно не обрабатывалось;
-
Штатная обработка состоит в следующем: удаляем второй тариф (новый, который отменяем) и обновляем предыдущий, продляя дату до бесконечности (то есть "окрывая" его);
-
После этого генерируются сразу два асинхронных события ContractTariffUpdateEvent и ContractTariffDeleteEvent для соответствующих потревоженных тарифов договора.
Управление статусом
У пользователя имеется возможность самостоятельно изменить статус договора.
Имеются некоторые ограничения. Пользователь может менять только со статуса "активен" на статус "приостановлен" и наоборот. Другие статусы ему недоступны. Нельзя приостановить раньше, чем завтра. Нельзя активировать раньше, чем сегодня.
Если статус договора не "активен" и не "приостановлен" - тоже не разрешена смена.
Если closed.date.enable d, то проверятся, что устанавливаемый статус не пересекается с закрытым периодом.
Смена статусов сопровождается событиями, как и при обычной смене статусов, не из Web. Только в событии ContractStatusChangingEvent устанавливается флаг isweb=true. Событие ContractStatusChangedEvent выполняется точно так же.
Список дат, которые будут отображаться, регулируются событием GetContractStatusChangeDatesEvent. Если вернули список, то будет отображён список дат. Если не обработано событие, то будет дан выбор дня,месяца,года. Если же будет возвращен пустой список, то это означает, что смена статуса запрещена, о чём сообщится пользователю вместо выбора даты.
Управление лимитом
Данная функция аналогична функции "Обещанного платежа" других биллинговых систем.
Управление лимитом доступно только договорам с режимом Дебет |
Для активации необходимо добавить в конфигурацию биллинга один или несколько блоков записей вида.
# Коды групп договоров, для которых действует данная настройка, через ',' (чтобы узнать код группы нажмите Ctrl+i в справочнике
# групп при выбранной строке таблицы)
contract.limit.<n>.groups=
# Максимальное количество не оплаченных (не возвратившихся) понижений,
# при котором клиенту будет доступно понижение, при 0 клиент не сможет выполнять
# понижение до тех пор пока будет хотя бы одно не оплаченное
contract.limit.<n>.maxnotpayoffed=
# Максимальное количество частично оплаченных понижений,
# при котором клиенту будет доступно понижение (0-1, частично оплаченное понижение
# может быть только одно)
contract.limit.<n>.maxpartialpayoffed=
# Количество просроченных платежей после последней разблокировки,
# после которых доступ к понижению будет заблокирован, 0 - не блокировать при любом количестве
contract.limit.<n>.maxexpiredforblock=
# Дни от до
contract.limit.<n>.mindays=
contract.limit.<n>.maxdays=
# Сумма от до
contract.limit.<n>.minsumm=
contract.limit.<n>.maxsumm=
# Нижний порог лимита при понижении клиентом (по умолчанию -100),
# т.е ниже этого порога клиент понизить не сможет
contract.limit.<n>.minlimit=
Где: <n> - целое число, начинающееся с 1, определяющее блок конфигурации для определённых групп договоров.
Например, настройка понижения лимита для групп договоров с кодами 1 или 2:
# Коды групп договоров для которых действует данная настройка, через ',' (чтобы узнать код группы нажмите Ctrl+i в справочнике
# групп при выбранной строке таблицы)
contract.limit.1.groups=1,2
# Максимальное количество не оплаченных(не возвратившихся) понижений,
# при котором клиенту будет доступно понижение, при 0 клиент не сможет выполнять
# понижение до тех пор пока будет хотя бы одно не оплаченное
contract.limit.1.maxnotpayoffed=0
# Максимальное количество частично оплаченных понижений,
# при котором клиенту будет доступно понижение (0-1, частично оплаченное понижение
# может быть только одно)
contract.limit.1.maxpartialpayoffed=0
# Количество просроченных платежей после последней разблокировки
# после которых доступ к понижению будет заблокирован, 0 - не блокировать при любом количестве
contract.limit.1.maxexpiredforblock=1
# Дни от до
contract.limit.1.mindays=1
contract.limit.1.maxdays=4
# Сумма от до
contract.limit.1.minsumm=100
contract.limit.1.maxsumm=200
# Нижний порог лимита при понижении клиентом (по умолчанию -100),
# т.е ниже этого порога клиент понизить не сможет
contract.limit.1.minlimit=-400
Используя блоки, настройки управления лимитом можно задать различными для разных групп договоров. Разумеется, группы блоков не должны пересекаться.
Для управления лимитом используется меню Управление лимитом на странице статистики. Для понижения лимита выбирается сумма и на сколько дней необходимо понижение. В случае, если договор не входит хотя бы в одну из групп, указанных в конфигурации, для которых доступно понижение лимита или если режим договора не Дебет, меню Управление лимитом не отображается.
Пониженный лимит всегда возвращается в исходное состояние. Это происходит либо при внесение на счёт суммы, большей или равной сумме понижения до наступления даты восстановления, либо по наступлению даты восстановления задачей Восстановление лимитов.
В случае, если лимит возвращается в исходное состояние задачей, понижение отмечается как просроченное, максимально допустимое количество просроченных понижение устанавливается в конфигурации.
При каждом платеже, поступившем на договор, система погашает не погашенные (активные) понижения лимита. При этом понижение может быть погашено частично, становясь частично погашенным. Лимит при этом не изменяется. Если до даты восстановления будут произведены ещё платежи на счёт, понижение при достаточной сумме может быть признано погашенным, лимит возвращается в исходное состояние досрочно (разумеется, можно погасить понижение и одним платежом). Если до даты восстановления платежей больше не будет, понижение так и останется частично погашенным.
Если платежа хватает на погашение понижения с избытком, система ищет следующий непогашенный платёж, расходуя на него остаток платежа, и т.д. Все понижения могут быть погашены как одним так и серией платежей.
Понижение лимита доступно только при следующих условиях:
-
Количество уже сделанных не погашенных понижений меньше либо равно переменной contract.limit.<n>.maxnotpayoffed конфигурации блока;
-
Количество просроченных понижений меньше или равно переменной contract.limit.<n>.maxexpiredforblock конфигурации блока;
-
Количество частично оплаченных платежей меньше или равно переменной contract.limit.<n>.maxpartialpayoffed конфигурации блока.
В случае, если понижение недоступно, пользователь увидит страницу следующего вида.
В момент понижения система также контролирует следующие условия:
-
Количество дней на которое понижается лимит должно быть от contract.limit.<n>.mindays до contract.limit.<n>.maxdays;
-
Сумма понижения должна быть от contract.limit.<n>.minsumm до contract.limit.<n>.maxsumm;
-
В результате понижения лимит не должен стать менее, чем contract.limit.<n>.minlimit.
Оператор биллинга может индивидуально управлять доступом договора к сервису временного понижения лимита через вкладку Web⇒Управление лимитом договора.
На вкладке Управление возможно включение/отключение данной возможности для конкретного договора. По умолчанию возможность включается для всех групп договоров, указанных в конфигурации (см. выше).
На вкладке Статистика отображается история понижений лимита. Количество просроченных платежей сбрасывается каждый раз при активации возможности понижения лимита для договора. Таким образом, если возможность блокируется для договора системой, повторная активация администратором сбрасывает счётчики.