BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 21 июл 2016, 10:29 
Не в сети

Зарегистрирован: 28 авг 2014, 09:26
Сообщения: 162
Карма: 0
Здравствуйте.

Не отрабатывает восстановление лимитов при выставлении лимита через API. Задача в планировщике стоит + запускал вручную. Далее код и изображение результата его выполнения.
Вложение:
Screenshot.png
Screenshot.png [ 8.58 КБ | Просмотров: 2726 ]

Код:
         CLMT = Math.abs( Double.parseDouble( closesumma ) );
         CLMT = CLMT + 2000000;
         CLMT = CLMT * -1;
         LMT = BigDecimal.valueOf( CLMT );

         LimitManager lm = new LimitManager(con);
         ServerContext context = ServerContext.get();

         List<LimitChangeTask> taskList = lm.getContractMoveTasks( CID );

         for (LimitChangeTask task : taskList) {
            lm.deleteMoveTaskAndLog(task.getId(), task.getContractId(), task.getUserId());
         }

         lm.updateContractLimit(User.USER_SERVER, LMT, CID, comment, String.valueOf( days ) );

         context.publishAfterCommit(new SystemLimitChangedEvent( CID, LMT ) );
         context.publishAfterCommit(new LimitChangedEvent( CID, LMT ) );


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июл 2016, 10:36 
Не в сети

Зарегистрирован: 28 авг 2014, 09:26
Сообщения: 162
Карма: 0
Блин! Вот этот метод удаляет задачу по воставлению лимита? (судя по названию)
Код:
lm.deleteMoveTaskAndLog(task.getId(), task.getContractId(), task.getUserId());


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июл 2016, 11:59 
Не в сети

Зарегистрирован: 28 авг 2014, 09:26
Сообщения: 162
Карма: 0
Изменил код
Код:
         LimitManager lm = new LimitManager(con);
         ServerContext context = ServerContext.get();

         List<LimitChangeTask> taskList = lm.getContractMoveTasks( CID );

         for (LimitChangeTask task : taskList) {

//            lm.deleteMoveTaskAndLog(task.getId(), task.getContractId(), task.getUserId());

            LimitChangeTask taskRestore=new LimitChangeTask();
            taskRestore.setContractId( CID );
            taskRestore.setDate( Calendar.getInstance() );
            taskRestore.setUserId( User.USER_SERVER );
            taskRestore.setSubSumm( task.getSubSumm() );

            lm.addMoveTask( taskRestore );

         }

         lm.updateContractLimit( User.USER_SERVER, LMT, CID, comment, String.valueOf( days ) );

         context.publishAfterCommit( new SystemLimitChangedEvent( CID, LMT ) );
         context.publishAfterCommit( new LimitChangedEvent( CID, LMT ) );


Но восстановление лимитов не происходит, что я упускаю?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июл 2016, 14:32 
Не в сети

Зарегистрирован: 28 авг 2014, 09:26
Сообщения: 162
Карма: 0
Разобрался...

Но есть один вопрос, почему setSubSumm возвращает отрицательное значение?
Код:
   double SLMT = 2000000;
   ...
   task.setSubSumm( BigDecimal.valueOf( SLMT ) );


Результат выполнения: -2000000

Карл??


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июл 2016, 19:20 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Карл, потому что понижение лимита нужно отрицательным делать. А вообще, используй просто lm.lowLimit(cid, summ, days) + кидание событий и будет тебе щщастье. Оно и лимит понижает (правда без коммента, но сумму положительную ставить) и задачу на восстановление добавляет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 июл 2016, 11:28 
Не в сети

Зарегистрирован: 28 авг 2014, 09:26
Сообщения: 162
Карма: 0
barguzin2
Спасибо.

В 90% лимит отрицательный, но может быть и положительным (разрабы сами не исключают эту возможность). Отсюда и удивление на возврат функции. Минус я и сам могу приделать, а вот угадывать возвращаемые значения не очень хорошо...


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

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


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

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


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

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