Изменение параметров договора из личного кабинета
Материал из BiTel WiKi
Определение нужных параметров.
Создать нужные параметры -- в справочнике «Параметры договоров». Для обращения к ним из скриптов и action'а достаточно знать код параметра (pid). Однако, для удобства, решено было использовать мнемонические обозначения параметров, попросту говоря, имена.
Связь (map) между кодом параметра и именем задается в конфигурации биллинга. Нам будут нужны следующие map'ы (в скобках - префикс):
- по имени параметра, полученного из объекта request (т.е. из POST-запроса) определить его код (pid);
- по имени параметра определить его описание, которое будет отображаться в личном кабинете (desc);
- по коду параметра определить его имя - для обработки событий и отсылки сообщения (name).
Для того, чтобы имена наших переменных не пересекались с другими (стандартными) параметрами конфигурации BGBilling, разумно использовать префикс, например, название компании.
# Имя параметра -> ID параметра my.pid.email=19 my.pid.login=33 # # Имя параметра -> Описание параметра my.desc.email=Email my.desc.login=Логин # # ID параметра -> Имя параметра my.name.19=email my.name.33=login
Обработка событий в BGBilling.
Введенные пользователем данные необходимо проверить - провести валидацию. В моем случае - еще и отослать email с уведомлением об изменении. В принципе, эти действия можно выполнить в теле action'а, но грамотнее будет воспользоваться механизмом обработки событий BGBilling'а. В этом случае значения параметров будут проверяться и обрабатываться как при изменении пользователем через личный кабинет, так и администратором/оператором через клиент BGBilling.
- Создать новый скрипт поведения "Параметры".
- Создать обработчик для события "Перед изменением параметра договора" - [Валидация параметра|Скрипт валидации параметров].
- Создать обработчик для события "Измененен параметр договора" - [Изменение параметра|Скрипт изменения параметров].
Action.
Алгоритм работы action'а:
- Определить ID клиента (см. Получение текущего пользователя биллинга).
- Просканировать список всех параметров, и, если, было задано новое значение (через POST-запрос), то:
- Сгенерировать событие ContractParamBeforeChangeEvent - для валидации параметра (см. Валидация текстового параметра)
- Если параметр прошел валидацию, то установить новое значение и сгенеририровать событие ContractParamChangedEvent (для выполнения нужных действий с новым значением параметра)
- По результатам выполнения заполнить XML-отчет, который пригодится для отображения результатов в ЛК.
[Код action'а|Action для дополнительных параметров].
Шаблон личного кабинета.
Внести необходимые изменения в шаблон ЛК, а именно, [common.xsl] и [main.xsl].