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

Опции на договоре
http://forum.bitel.ru/viewtopic.php?f=19&t=11459
Страница 1 из 1

Автор:  Tau [ 21 мар 2016, 20:13 ]
Заголовок сообщения:  Опции на договоре

Добрый день.

В доке https://bgbilling.ru/v6.2/javadoc/ru/bi ... tract.html
Цитата:
Bean договора. По возможности старайтесь используйте этот bean, а не тот что в серверной части. Почти идентичен старому бину, только не содержит тарифы и опции.

Старый бин - это https://bgbilling.ru/v6.2/javadoc/bitel ... tract.html
Вопроса 2:

1) Где брать опции в "новом бине"?

2) В "старом бине":
bitel.billing.server.contract.bean.Contract ct = cm.getContractByTitle(contract);
ContractTariffOptionList ctol = ct.getTariffOptions();
ctol == null, хотя тарифная опция на договоре висит.

Автор:  barguzin2 [ 22 мар 2016, 11:07 ]
Заголовок сообщения:  Re: Опции на договоре

1) https://bgbilling.ru/v6.2/javadoc/ru/bi ... rvice.html
2) Тут не от бина зависит, а от ContractManager, который, скорее всего, просто не грузит опции

Автор:  dimOn [ 22 мар 2016, 11:40 ]
Заголовок сообщения:  Re: Опции на договоре

почти никакой менеджер в api не грузит связанные сущности

Автор:  Amir [ 22 мар 2016, 12:56 ]
Заголовок сообщения:  Re: Опции на договоре

Да, поле в старом бине есть, но подставлялись данные в это поле точно не в ContractManager, а где-нибудь в тарификаторе.
Как и поля, связанные с тарифом.

Автор:  Tau [ 22 мар 2016, 14:07 ]
Заголовок сообщения:  Re: Опции на договоре

А подскажите способы через API
1) Получения всех опций на договоре (как в табличке contract_tariff_option)
2) Получение всех доступных для договора опций (ну, т.е. с учетом текущего ТП, группы договора, зависимостей и видимости)

Через sql не очень хочется вытаскивать данные.

Автор:  Tau [ 22 мар 2016, 18:51 ]
Заголовок сообщения:  Re: Опции на договоре

Tau писал(а):
А подскажите способы через API
1) Получения всех опций на договоре (как в табличке contract_tariff_option)

Сделал так:
Код:
ContractTariffOptionDao ctod = new ContractTariffOptionDao(context.getConnection());
rc = ctod.list(ct.getId(), new Date());


Tau писал(а):
2) Получение всех доступных для договора опций (ну, т.е. с учетом текущего ТП, группы договора, зависимостей и видимости)

Сделал вот так:
Код:
TariffOptionServiceImpl tosi = new TariffOptionServiceImpl();
List<ContractTariffOption> lcto = getTariffOptionsFromContract(contract);
rc = tosi.tariffOptionListAvailable(ct.getId(), new Date(), lcto, true, false);

Но вываливается ошибка:

Код:
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
        at ru.bitel.bgbilling.kernel.tariff.option.server.service.TariffOptionServiceImpl.tariffOptionListAvailable(TariffOptionServiceImpl.java:101)
        at api.ru.qweasd.bgbilling.service.impl.MyImpl.getTariffOptionsForContract(MyImpl.java:372)
        ... 39 more


ЧЯДНТ?

Автор:  stark [ 22 мар 2016, 19:26 ]
Заголовок сообщения:  Re: Опции на договоре

у вас какая версия ? Объект lcto случайно не null ?

Автор:  Tau [ 22 мар 2016, 19:45 ]
Заголовок сообщения:  Re: Опции на договоре

stark писал(а):
у вас какая версия ? Объект lcto случайно не null ?

Код:
  Сервер: вер. 6.1.1113 / 29.12.2015 15:26:30
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.7.0_80-ea

Ну, вообще, лист пустой, но не null.
Вот так если объявить
Код:
lcto = new ArrayList<ContractTariffOption>();

та же ошибка.

Автор:  stark [ 22 мар 2016, 20:21 ]
Заголовок сообщения:  Re: Опции на договоре

а как вы web-сервис получили ?

Автор:  Tau [ 22 мар 2016, 21:02 ]
Заголовок сообщения:  Re: Опции на договоре

stark писал(а):
а как вы web-сервис получили ?

А поконкретней можно? Я учитель рисования по образованию, слабо ориентируюсь в терминологии...

Автор:  barguzin2 [ 23 мар 2016, 08:43 ]
Заголовок сообщения:  Re: Опции на договоре

import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.tariff.option.common.service.TariffOptionService;
...
ServerContext context = ServerContext.get();
TariffOptionService tariffOptionService = context.getService(TariffOptionService.class, 0);

И дальше уже работаешь с tariffOptionService, в данном случае нужен метод contractTariffOptionList
Этот подход аналогично применим и для использования других сервисов, пригодится на будущее, второй параметр это moduleId, для ядра это 0, для конкретных модулей будет свой.

Автор:  stark [ 23 мар 2016, 13:14 ]
Заголовок сообщения:  Re: Опции на договоре

Tau писал(а):
stark писал(а):
а как вы web-сервис получили ?

А поконкретней можно? Я учитель рисования по образованию, слабо ориентируюсь в терминологии...


А, вижу, не сразу заметил. Вы его неправильно создали.
вот пример

Автор:  Tau [ 23 мар 2016, 13:15 ]
Заголовок сообщения:  Re: Опции на договоре

barguzin2 писал(а):
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.tariff.option.common.service.TariffOptionService;
...
ServerContext context = ServerContext.get();
TariffOptionService tariffOptionService = context.getService(TariffOptionService.class, 0);

И дальше уже работаешь с tariffOptionService, в данном случае нужен метод contractTariffOptionList
Этот подход аналогично применим и для использования других сервисов, пригодится на будущее, второй параметр это moduleId, для ядра это 0, для конкретных модулей будет свой.


Спасибо огроменное!

Автор:  Tau [ 23 мар 2016, 13:16 ]
Заголовок сообщения:  Re: Опции на договоре

stark писал(а):
А, вижу, не сразу заметил. Вы его неправильно создали.

Ага, barguzin2 уже научил как правильно. Спасибо!

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