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

как получить список активных на дату услуг(абонплат)договора
http://forum.bitel.ru/viewtopic.php?f=22&t=12168
Страница 1 из 1

Автор:  Galkov [ 16 дек 2016, 18:55 ]
Заголовок сообщения:  как получить список активных на дату услуг(абонплат)договора

код типа:

Код:
public void onEvent( Event event1, Setup setup2, ConnectionSet connectionSet3 )      {

Connection con = connectionSet3.getConnection();
int cid = event1.getContractId();
ContractServiceManager csm = new ContractServiceManager(con);
Set csmSet = csm.getContractServiceSet(cid, new Date());

Iterator iterator = csmSet.iterator();
while (iterator.hasNext()){   logger.info("Абонплата:"+iterator.next());      }

}




Возвращает какую-то дичь, которая ни числом ни качеством не соответствует тому, что прописано в договоре во вкладке договор=>модули=> абонентская плата=> <список услуг(абонплат)>

Собственно поэтому вопрос - Как получить список активных на дату услуг(абонплат)договора?
К сожалению и в таблице npay_service_object_[mid] в этот момент (событие изменения абонплаты, вызванное добавлением услуги/абонплаты) почему-то нет добавленной абонплаты, хотя событие - асинхронное..

Автор:  Phricker [ 16 дек 2016, 18:58 ]
Заголовок сообщения:  Re: как получить список активных на дату услуг(абонплат)дого

ЕМНИМП оно все тут
https://bgbilling.ru/v7.0/javadoc/bitel ... nager.html

Автор:  Phricker [ 16 дек 2016, 19:03 ]
Заголовок сообщения:  Re: как получить список активных на дату услуг(абонплат)дого

И кстати то событие о котором вы упомянули так же ведет к ссылке которой я дал
https://bgbilling.ru/v7.0/javadoc/ru/bi ... Event.html

В нем есть ServiceObject
https://bgbilling.ru/v7.0/javadoc/bitel ... bject.html
Который собственно в том же пакете что и вышеприведенная ссылка

Автор:  Galkov [ 16 дек 2016, 19:08 ]
Заголовок сообщения:  Re: как получить список активных на дату услуг(абонплат)дого

Благодарю!

Автор:  Galkov [ 16 дек 2016, 19:42 ]
Заголовок сообщения:  Re: как получить список активных на дату услуг(абонплат)дого

запускаю скрипт(по событию, добавлением абонплаты с id 359).

Код:

ServiceObjectManager som = new ServiceObjectManager(con, Megogo_MID);
List Lsom1 = som.getServiceObjectList(cid, new Date()); // <ServiceObject>
ServiceObject co = new ServiceObject();
      
for (int j = 0; j<Lsom1.size(); j++) {   
         co = (ServiceObject) Lsom1.get(j);
         logger.info(co.getServiceId()+" VOT "+co.getServiceTitle());
      }



Код:
17:31:31  INFO [dyn-clss-evnt-lstnr-p-5-t-623] Megogo_service_add - 82 VOT Ежемесячная абонентская плата, Интернет
12-16/17:31:31  INFO [dyn-clss-evnt-lstnr-p-5-t-623] Check_service_order - 84 VOT Ежемесячная абонентская плата, Пакет 2в1
12-16/17:31:31  INFO [dyn-clss-evnt-lstnr-p-5-t-623] Check_service_order - 85 VOT Ежемесячная абонентская плата, Пакет 3в1
----------- вывод из цикла тут заканчиается. ниже - вывод из таблицы(другим способом) только нужной услуги, которую мы отлавливаем... по идее выше уже должна была быть запись про услугу 359

12-16/17:31:31  INFO [dyn-clss-evnt-lstnr-p-5-t-623] Check_service_order - SQL: select sid from npay_service_object_4 where (cid=15578) and ((date1 is NULL) or (date1<NOW())) and ((date2 is NULL) or (date2>NOW())) and (sid IN (359,360,361,362)) limit 1
12-16/17:31:31 ERROR [event-proc-p-2-t-1] ScriptEventListener - Eval error: java.lang.Exception: java.sql.SQLException: Illegal operation on empty result set.


sql возвращает пустоту и скрипт вываливается(нет сервиса в базе).

выполняется это в момент события изменения абонплаты.
логи показывают, что она так и не учтена(выведено 3шт, а добавлена была оператором 4я с id 359) ...

после чтения логов, ничего более не делая запустил sql запрос(который тут выдал пустой результат), - получил код добавленной услуги, это 359....
повторный запуск скрипта (по update абонплаты) выводит
12-16/17:44:17 INFO [dyn-clss-evnt-lstnr-p-5-t-625] Check_service_order - 82 VOT Ежемесячная абонентская плата, Интернет
12-16/17:44:17 INFO [dyn-clss-evnt-lstnr-p-5-t-625] Check_service_order - 84 VOT Ежемесячная абонентская плата, Пакет 2в1
12-16/17:44:17 INFO [dyn-clss-evnt-lstnr-p-5-t-625] Check_service_order - 85 VOT Ежемесячная абонентская плата, Пакет 3в1
12-16/17:44:17 INFO [dyn-clss-evnt-lstnr-p-5-t-625] Check_service_order - 359 VOT Пакет 1

---------------------------



похоже данные в указанные элементы среды попадают после завершения обработки события и в процессе обработки события так их не вынуть.

Автор:  stark [ 26 дек 2016, 14:16 ]
Заголовок сообщения:  Re: как получить список активных на дату услуг(абонплат)дого

В какой версии ? Для 7.0 исправлено и будет в следующем обновлении.

Автор:  Galkov [ 09 янв 2017, 14:24 ]
Заголовок сообщения:  Re: как получить список активных на дату услуг(абонплат)дого

stark писал(а):
В какой версии ? Для 7.0 исправлено и будет в следующем обновлении.


у меня 6.0... но намёк понятен :))))))) жаль трудно пока это осуществить. ;)

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