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

Возможно ли активировать Тарифные опции из скрипта в BGB5.2?
http://forum.bitel.ru/viewtopic.php?f=22&t=7407
Страница 1 из 1

Автор:  nikav80 [ 08 ноя 2012, 23:19 ]
Заголовок сообщения:  Возможно ли активировать Тарифные опции из скрипта в BGB5.2?

В BGB 5.1 есть метод ContractTariffOptionActivateManager(con).activateOption(int userId, int cid, int optionId, int modeId, boolean web) и он работает, а в BGB 5.2 метод немного изменился ContractTariffOptionActivateManager(con).activateOption(ru.bitel.bgbilling.kernel.tariff.option.common.service.TariffOptionService tariffOptionService, int userId, int cid, int optionId, int modeId, boolean web) и я никак не пойму как он работает?

Автор:  stark [ 09 ноя 2012, 19:19 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

Из скрипта вызываете?

Тогда

Код:

ServerContext context = ServerContext.get();
TariffOptionService service = context.getService( TariffOptionService.class, INET_MODULE_ID );



где INET_MODULE_ID - код модуля inet.

Автор:  nikav80 [ 09 ноя 2012, 21:13 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

А если из action (из ЛК)?

Автор:  dimOn [ 12 ноя 2012, 11:12 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

В смысле из самописного экшена?

Автор:  nikav80 [ 12 ноя 2012, 11:27 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

Да.

Автор:  dimOn [ 12 ноя 2012, 11:34 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

Ну так же на самом деле. Лучше сразу вызывать через вызов сервиса TariffOptionService, как это в родном веб экшене сделано:

tariffOptionService.contractTariffOptionActivate( cid, optionId, modeId, true );

Автор:  nikav80 [ 12 ноя 2012, 11:38 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

Спасибо, попробую!

Посмотрите пожалуйста еще одну тему касающуюся Тарифных опций
http://forum.bgbilling.ru/viewtopic.php?f=5&t=7408

Автор:  Bazhutyan [ 20 дек 2012, 05:55 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

при вызове tariffOptionService.contractTariffOptionActivate( cid, optionId, modeId, true ) из события "Запрос учетного периода" летят ошибки:

Код:
script 12-20/11:45:15 ERROR [rdsLstnr-p-9-t-3] ScriptEventListener - Eval error: java.lang.Exception: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.Exception: java.lang.NullPointerException
        at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:232)
        at java.util.concurrent.FutureTask.get(FutureTask.java:91)
        at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener$ThreadedScriptEventListener.runScriptImpl(DynamicScriptEventListener.java:267)
        at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener.runScript(DynamicScriptEventListener.java:149)
        at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener.notify(DynamicScriptEventListener.java:117)
        at ru.bitel.bgbilling.kernel.event.LocalEventProcessor.request(LocalEventProcessor.java:240)
        at ru.bitel.bgbilling.kernel.event.EventProcessor.request(EventProcessor.java:848)
        at ru.bitel.bgbilling.modules.inet.runtime.InetServRuntime.accountingPeriodActivate(InetServRuntime.java:313)
        at ru.bitel.bgbilling.modules.inet.runtime.InetServRuntime.accountingPeriodCheck(InetServRuntime.java:401)
        at ru.bitel.bgbilling.modules.inet.runtime.InetApplication.authorization0(InetApplication.java:640)
        at ru.bitel.bgbilling.modules.inet.runtime.InetApplication.authorization(InetApplication.java:629)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.authorization(InetRadiusProcessor.java:770)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.authenticationImpl(InetRadiusProcessor.java:567)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.authentication(InetRadiusProcessor.java:462)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.authentication(InetRadiusProcessor.java:1)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusSession.authentication(RadiusSession.java:115)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusSession.accessRequest(RadiusSession.java:92)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequestImpl(RadiusProcessor.java:390)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.accessRequestImpl(InetRadiusProcessor.java:379)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.accessRequestImpl(InetRadiusProcessor.java:1)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequest(RadiusProcessor.java:377)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusListenerWorker.accessRequest(InetRadiusListenerWorker.java:58)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusListenerWorker.accessRequest(InetRadiusListenerWorker.java:1)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.processPacket(RadiusListenerWorker.java:213)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.runImpl(RadiusListenerWorker.java:135)
        at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
        at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)
Caused by: java.lang.Exception: java.lang.NullPointerException
        at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener.runScriptImpl(DynamicScriptEventListener.java:200)
        at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener$ThreadedScriptEventListener.access$0(DynamicScriptEventListener.java:1)
        at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener$ThreadedScriptEventListener$1.call(DynamicScriptEventListener.java:254)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        ... 4 more
Caused by: java.lang.NullPointerException
        at ru.bitel.bgbilling.kernel.tariff.option.server.bean.ContractTariffOptionDao.getFromRS(ContractTariffOptionDao.java:209)
        at ru.bitel.bgbilling.kernel.tariff.option.server.bean.ContractTariffOptionDao.list(ContractTariffOptionDao.java:82)
        at ru.bitel.bgbilling.kernel.tariff.option.server.bean.ContractTariffOptionActivateManager.activateOptionWhithSum(ContractTariffOptionActivateManager.java:211)
        at ru.bitel.bgbilling.kernel.tariff.option.server.bean.ContractTariffOptionActivateManager.activateOption(ContractTariffOptionActivateManager.java:62)
        at ru.bitel.bgbilling.kernel.tariff.option.server.service.TariffOptionServiceImpl.contractTariffOptionActivate(TariffOptionServiceImpl.java:289)
        at ru.iks.inet.dyn.tariff.myAccountingPeriod.onEvent(myAccountingPeriod.java:87)
        at ru.iks.inet.dyn.tariff.myAccountingPeriod.onEvent(myAccountingPeriod.java:25)
        at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener.runScriptImpl(DynamicScriptEventListener.java:196)
        ... 8 more


причем эта ошибка пишется два раза.

В чем может быть проблема?

Вот код:
Код:
      ServerContext context = new ServerContext(setup, connectionSet, 1, UserId);
         TariffOptionService tariffOptionService = context.getService( TariffOptionService.class, 1 );
         tariffOptionService.contractTariffOptionActivate( cid, optionId, modeId, true );


Если повторить код метода activateOptionWhithSum из класса ContractTariffOptionActivateManager, то ошибок нет, опция активируется, учетный период создается.

Автор:  Cromeshnic [ 20 дек 2012, 08:56 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

Зачем
Код:
new ServerContext
?
вам же сказали:
Код:
ServerContext context = ServerContext.get();

Автор:  Bazhutyan [ 21 дек 2012, 03:15 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

Cromeshnic писал(а):
Зачем
Код:
new ServerContext
?
вам же сказали:
Код:
ServerContext context = ServerContext.get();


Так тоже не работает. Эту же ошибку получаю.
Если вызов делать из глобального класса, то все работает нормально и через new ServerContext и через ServerContext.get()

Видимо какая-то проблема при вызове по Event'у

Автор:  Cromeshnic [ 21 дек 2012, 06:32 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

Зависит от евента. Вернее, где отрабатывает евент. Видимо, это происходит не в сервере или шедулере, а где-нибудь в радиусе.
Что-то такое припоминаю, связано с классом-снглтоном UserMap, который в радиусе не инициализирован.
Сделайте так перед вызовом деактивации:

Код:
if(UserMap.getMap().size()==0){
    UserMap.initUserMap(con);
}

Автор:  Cromeshnic [ 21 дек 2012, 06:34 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

Ах, да, UserMap:

Код:
import ru.bitel.bgbilling.server.util.UserMap;

Автор:  Bazhutyan [ 28 дек 2012, 03:34 ]
Заголовок сообщения:  Re: Возможно ли активировать Тарифные опции из скрипта в BGB

Спасибо, помогло!

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