BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 апр 2024, 04:30

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Тарифные опции, раздумие
СообщениеДобавлено: 09 июн 2016, 07:27 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Собственно вопрос, а как же заставить тарифную опцию работать как мне хочется?
Мне необходимо автоматически продлять тарифную опцию следующим днем, тоесть она сегодня отработала, а завтра должна такая же навесится скриптом, есть 2 способа это сделать (я нашел только 2), но оба у меня не заработали. Итак, первый
Код:
ServerContext context = new ServerContext( setup1, connectionSet2, -1, 0 );
TariffOptionService service = context.newService(TariffOptionService.class, -1);
java.util.List<ContractTariffOption> ctol = service.contractTariffOptionHistory(cid, calendar.getTime(), false);

if (ctol.size() > 0)
{
Calendar TimeFrom = TimeUtils.convertDateToCalendar(ctol.get(ctol.size() - 1).getTimeFrom());
TimeFrom.add(Calendar.DAY_OF_MONTH, +1);
Calendar TimeTo = TimeUtils.convertDateToCalendar(ctol.get(ctol.size() - 1).getTimeTo());
TimeTo.add(Calendar.DAY_OF_MONTH, +1);
ContractTariffOptionDao ctod = new ContractTariffOptionDao(con);
ContractTariffOption cto = new ContractTariffOption();
cto.setContractId(cid);
cto.setActivatedTime(ctol.get(ctol.size() - 1).getActivatedTime());
cto.setDeactivatedTime(ctol.get(ctol.size() - 1).getDeactivatedTime());
cto.setTimeFrom(TimeFrom.getTime());
cto.setTimeTo(TimeTo.getTime());
cto.setActivatedMode(ctol.get(ctol.size() - 1).getActivatedMode());
cto.setOptionId(ctol.get(ctol.size() - 1).getOptionId());
ctod.update(cto);
EventProcessor.getInstance().publishAfterCommit(new ContractTariffOptionChangedEvent(cid, 0, 0, cto));
}

Ищем в хистри последнюю дату активации и добавляем новую опцию, все ок, опция добавляется и работает как нужно, но при этом модуль inet ничего про эту опцию не знает и работает как будто ее там и нету. Но я не унывал, сделал тарифную опцию через сервис
Код:
service.contractTariffOptionActivate(cid, ctol.get(ctol.size() - 1).getOptionId(), ctol.get(ctol.size() - 1).getActivatedMode(), false);

тут возникла другая проблема, опция добавляется только в момент отработки скрипта, но все остальное отрабатывает верно и модуль inet видит эту опцию.
ps Пока писал, пришла в голову мысль, что стоит просто бегать скриптом каждый час и если даты старой и новой опции совпадают с разницей в 1 день то все заработает. Да, костыль это, и что то мне подсказывает что должно быть другое решение?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тарифные опции, раздумие
СообщениеДобавлено: 09 июн 2016, 10:27 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
skyb писал(а):
что должно быть другое решение?

Да, оно даже описано на форуме.
Если вкратце - надо доработку пилить :)

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тарифные опции, раздумие
СообщениеДобавлено: 09 июн 2016, 21:42 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
В модуле Subscription реализована подсистема JobScheduler (хотя на самом деле она в ядре, но явно используется вроде только для подписок), которая позволяет запланировать задачу на конкретный момент времени. В подписках задача вызывается в момент завершения активного периода, активирует новый, кидает события. В данном случае это будет время окончания опции, а задача будет активировать новую. Вот только в API на этот счёт почти ничего нет, а так задумка хорошая, надо продвигать в массы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.568s | 24 Queries | GZIP : On ]