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

Установка времени окончания опции скриптом
http://forum.bitel.ru/viewtopic.php?f=19&t=10208
Страница 1 из 1

Автор:  abu [ 20 фев 2015, 13:46 ]
Заголовок сообщения:  Установка времени окончания опции скриптом

Возможно, что такая тема уже была, тогда прошу дать ссылку, поиском не нашел. Встала задача при подключении опции устанавливать ей определенное время окончания. На событие "Активирована/Реактивирована тарифная опция" навесил скрипт:

Код:
public class optionCloseDate
   extends EventScriptBase
{
   @Override
   public void onEvent( Event event1, Setup setup2, ConnectionSet connectionSet3 )
      throws Exception
   {
      Calendar dt = new GregorianCalendar();
      Connection con1 = connectionSet3.getConnection();
      ContractTariffOptionDao contract_tariffoption = new ContractTariffOptionDao(con1);
      
      List<ContractTariffOption> list1 = contract_tariffoption.list(event1.getContractId(), dt.getTime());

         print( "> list.size() -> " + list1.size());
         print( ">> list1.get(0).getTimeTo() -> " + list1.get(0).getTimeTo());         
         print( ">>> list1.get(0).getOptionTitle() -> " + list1.get(0).getOptionTitle());
         
         list1.get(0).setTimeTo(TimeUtils.convertStringToDate( "01.03.2015 00:00:00", "dd.MM.yyy HH:mm:ss"));
         print( ">> list1.get(0).getTimeTo() -> " + list1.get(0).getTimeTo());         
            
         list1.get(0).setDeactivatedTime(TimeUtils.convertStringToDate( "01.03.2015 00:00:00", "dd.MM.yyy HH:mm:ss"));
         print( ">> list1.get(0).getDeactivatedTime() ->" + list1.get(0).getDeactivatedTime());         
   }
}


При подключении опции на договор получаю лог:

Код:
OUT:
> list.size() -> 1
>> list1.get(0).getTimeTo() -> null
>>> list1.get(0).getOptionTitle() -> Тест
>> list1.get(0).getTimeTo() -> Sun Mar 01 00:00:00 YAKT 2015
>> list1.get(0).getDeactivatedTime() ->Sun Mar 01 00:00:00 YAKT 2015


Но на самой опции в договоре дата окончания не выставляется. Что я делаю не так? (:

Скриншот опции в приложении. Версия биллинга:

Клиент: вер. 6.0 сборка 1370 от 09.02.2015 18:40:54
os: Linux; java: Java HotSpot(TM) Server VM, v.1.7.0_55
Сервер: вер. 6.0 сборка 1830 от 09.02.2015 18:40:58
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.7.0_55

Вложения:
395.jpg
395.jpg [ 19.22 КБ | Просмотров: 2821 ]

Автор:  abu [ 20 фев 2015, 14:17 ]
Заголовок сообщения:  Re: Установка времени окончания опции скриптом

Отвечаю сам себе (: Надо было добавить:

Код:
contract_tariffoption.update(list1.get(0));


Остается один вопрос по теме - действий, приведенных в скрипте, достаточно для выставления даты закрытия опции либо что-то нужно добавлять еще?

Автор:  Cromeshnic [ 20 фев 2015, 14:56 ]
Заголовок сообщения:  Re: Установка времени окончания опции скриптом

Нужно ещё послать событие на изменение ТО, иначе во всех кэшах она останется с открытой датой.

Автор:  Cromeshnic [ 20 фев 2015, 15:03 ]
Заголовок сообщения:  Re: Установка времени окончания опции скриптом

Вообще, если по событию нужно отключать опцию прямо сразу, то лучше делать deactivateOption с режимом "сейчас" - тогда события сработают стандартно.

Автор:  abu [ 20 фев 2015, 15:13 ]
Заголовок сообщения:  Re: Установка времени окончания опции скриптом

Спасибо за ответ.

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

Цитата:
Нужно ещё послать событие на изменение ТО, иначе во всех кэшах она останется с открытой датой.


А можно на эту тему пример или хотя бы где посмотреть в API?

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