forum.bitel.ru
http://forum.bitel.ru/

ContractTariffManager и сервисы Inet на договоре
http://forum.bitel.ru/viewtopic.php?f=44&t=9930
Страница 1 из 1

Автор:  oldb0y [ 15 ноя 2014, 14:30 ]
Заголовок сообщения:  ContractTariffManager и сервисы Inet на договоре

Здравствуйте.

Есть код, который в зависимости от значения спискового параметра добавляет ТП(глоб. тарифный план) на договор. В этой группе ТП передаются опции для Inet модуля. Работает, только часть кода, которая добавляет ТП на договор, а вот оповещение сервиса на договоре не происходит (то есть опции не обновляются для сервиса). Подозреваю, что необходимо добавить какой-то метод, чтобы оповестить сервисы на договоре об изменениях в ТП.

Подскажите, какой метод нужно добавить?
Собственно, часть кода которая добавляет ТП на договор:
Код:
      ContractTariffManager CTM =  new ContractTariffManager( con );
      ContractTariff CT = new ContractTariff();
      CT.setContractId( contractId );
      CT.setTariffPlanId( GT );
      CT.setDate1( EventDate );
      CTM.updateContractTariff( CT );

Весрии:
Код:
Сервер: вер. 6.0 сборка 1756 от 11.06.2014 17:26:36
inet вер. 6.0 сборка 1400 от 11.06.2014 15:20:15


Важное примечание: Если в клиенте открыть ТП договора, нажать кнопку ОК, далее открыть сервис договора, нажать ОК, то опции применяются. Иначе, ничего не происходт. Собственно отсюда и предположение, что есть метод или класс, которые оповещает все компоненты.

Автор:  Phricker [ 15 ноя 2014, 15:04 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

Это в другой подфорум надо было, и там же среди первых тем есть
viewtopic.php?f=19&t=9813

Автор:  oldb0y [ 17 ноя 2014, 09:15 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

Phricker
Спасибо, буду изучать.
Мне кажется и здесь контекст задачи подходит, и для того раздела тоже.

Автор:  oldb0y [ 17 ноя 2014, 10:49 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

Данное решение не срабатывает. Что еще можно посмотреть?
Код:
ContractTariffManager CTM =  new ContractTariffManager( con );
ContractTariff CT = new ContractTariff();
CT.setContractId( contractId );
CT.setTariffPlanId( GT );
CT.setDate1( EventDate );
CTM.updateContractTariff( CT );
EventProcessor.getInstance().publishAfterCommit(new ContractTariffUpdateEvent(0, contractId, CT, true));
//EventProcessor.getInstance().publish(new ContractTariffUpdateEvent(0, contractId, CT, true));

Автор:  Phricker [ 17 ноя 2014, 12:06 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

Ошибку выдает какую-то или же просто не устанавливает опции?

Автор:  oldb0y [ 17 ноя 2014, 12:19 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

Ни ошибок, ни варнингов.
server.script.log
Код:
11-17/12:15:45  INFO ["http-bio-/0.0.0.0-8080"-exec-7] ScriptEventListener - Caught event: ru.bitel.bgbilling.kernel.event.events.ContractParamBeforeChangeEvent
11-17/12:15:45  INFO ["http-bio-/0.0.0.0-8080"-exec-7] ScriptEventListener - Process time => 6
11-17/12:15:45  INFO ["http-bio-/0.0.0.0-8080"-exec-7] ScriptEventListener - Caught event: ru.bitel.bgbilling.kernel.event.events.ContractParamBeforeChangeEvent
11-17/12:15:45  INFO ["http-bio-/0.0.0.0-8080"-exec-7] ScriptEventListener - Process time => 2
11-17/12:15:45  INFO ["http-bio-/0.0.0.0-8080"-exec-7] ScriptEventListener - Caught event: ru.bitel.bgbilling.kernel.event.events.ContractParamBeforeChangeEvent
11-17/12:15:45  INFO [dyn-clss-evnt-lstnr-p-4-t-17] LoggingPrintStream - Update CT cid: 56
11-17/12:15:45  INFO ["http-bio-/0.0.0.0-8080"-exec-7] ScriptEventListener - Process time => 74

Автор:  oldb0y [ 18 ноя 2014, 09:33 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

Вот это судя по всему MQ логам экшн UpdateContractTariffPlan, который оповещает Inet-модули...
Код:
[17/Nov/2014:12:43:18 +0600] 0.163 200 117 "POST /executer HTTP/1.1" UID=1 module=contract&cid=56&BGBillingSecret=XXX&pos=0&id=235&tpid=98&action=UpdateContractTariffPlan&date2=&comment=&date1=17.11.2014&


Какие методы еще возможно подключить для оповещения?

Незнаю на сколько это важно... Но во всех подключаемых ТП не установленны, ни цена, ни услуга - только модуль и опция.
Класс работает "Перед изменением параметров договора".

Автор:  stark [ 18 ноя 2014, 12:16 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

oldb0y писал(а):
Данное решение не срабатывает. Что еще можно посмотреть?
Код:
ContractTariffManager CTM =  new ContractTariffManager( con );
ContractTariff CT = new ContractTariff();
CT.setContractId( contractId );
CT.setTariffPlanId( GT );
CT.setDate1( EventDate );
CTM.updateContractTariff( CT );
EventProcessor.getInstance().publishAfterCommit(new ContractTariffUpdateEvent(0, contractId, CT, true));
//EventProcessor.getInstance().publish(new ContractTariffUpdateEvent(0, contractId, CT, true));


Еще нужно добавить :
Код:
EventProcessor.getInstance().publishAfterCommit(new ContractTariffChangedEvent( cid);

Автор:  Phricker [ 18 ноя 2014, 12:38 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

stark писал(а):
Еще нужно добавить :
Код:
EventProcessor.getInstance().publishAfterCommit(new ContractTariffChangedEvent( cid));

А Димон ничего не сказал ((((
У вас кстати скобка не была закрыта

Автор:  oldb0y [ 18 ноя 2014, 12:53 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

stark
Пошел процесс! Остался последний шаг. Оповещение происходит, но Inet-сервис его "не слушает". Иначе говоря, теперь в клиенте достаточно открыть Сервис, нажать сохранить и тогда опции применяются.

Помогите найти последний метод?

Автор:  stark [ 18 ноя 2014, 13:04 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

oldb0y писал(а):
stark
Пошел процесс! Остался последний шаг. Оповещение происходит, но Inet-сервис его "не слушает". Иначе говоря, теперь в клиенте достаточно открыть Сервис, нажать сохранить и тогда опции применяются.

Помогите найти последний метод?




Если тариф изменить вручную на договоре, то сервис тоже не поменяет опцию?

Автор:  oldb0y [ 18 ноя 2014, 13:24 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

stark
Нет не меняет. Пока не откроешь сервис, и не нажмешь Сохранить.

Автор:  Amir [ 18 ноя 2014, 18:57 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

Значит скрипт отрабатывает корректно. По умолчанию опции на сервисе не меняеются пока нет активной сессии.

Однако, можно добавить обработчик сервисов без сессий, а также можно добавить обработчик, реагирующий на события (после изменения нужно перезапустить InetAccounting):
http://bgbilling.ru/v6.1/doc/ch17s07s01.html (в самом низу).

Автор:  oldb0y [ 19 ноя 2014, 09:23 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

Phricker
stark
Amir

Спасибо вам ребята!

Все опции передаются, как только NAS'ку послал на биллинг. Вариант "без сессий" изучу нужен ли он в таком случае (ресурсы).

Ps Ну как так. Почему форум дал мне апнуть карму только Phricker.

Автор:  skyb [ 20 ноя 2014, 04:12 ]
Заголовок сообщения:  Re: ContractTariffManager и сервисы Inet на договоре

oldb0y писал(а):
Ps Ну как так. Почему форум дал мне апнуть карму только Phricker.

да он читер, постоянно помогают все, а апается только ему ((( :lol: :mrgreen:

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/