BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 11 май 2024, 20:31

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




Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 14 апр 2009, 18:30 
Не в сети

Зарегистрирован: 09 мар 2009, 05:37
Сообщения: 59
Карма: 0
Изначально предполагалось вешать на таймер, но куда вешали они, я не знаю


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 апр 2009, 19:25 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
tiffolk писал(а):
Изначально предполагалось вешать на таймер, но куда вешали они, я не знаю

А как на таймер? В шедалере вижу только стандартные задачи.
По сути можно и по расписанию перед начислением АП пихать.

Цитата:
Вообщем получилось так, но это криво и с костылями.

А в чем были косяки?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 апр 2009, 16:19 
Не в сети

Зарегистрирован: 09 мар 2009, 05:37
Сообщения: 59
Карма: 0
Так на что его вешали?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 апр 2009, 16:29 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
http://wiki.bgbilling.ru/index.php/%D0% ... 0%B0%D1%85

Так мы снимаем абонплату для тех кто работает по предоплате.
Посмотрите может кому поможет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 апр 2009, 16:30 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
tiffolk писал(а):
Так на что его вешали?

Я пока ни на что не вешал. Думаю по расписанию, т.к. мудрить не вижу смысла. Осталось только разобраться как по расписанию свои скрипты дергать из шедалера... пока руки не дошли.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 апр 2009, 16:32 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
lda писал(а):
http://wiki.bgbilling.ru/index.php/%D0%A1%D0%BD%D1%8F%D1%82%D0%B8%D0%B5_%D0%B0%D0%B1%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%BE%D0%B9_%D0%BF%D0%BB%D0%B0%D1%82%D1%8B_%D0%B2_%D0%B4%D0%B5%D0%B1%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0%D1%85

Так мы снимаем абонплату для тех кто работает по предоплате.
Посмотрите может кому поможет.

Спасибо! Очень интересно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 апр 2009, 02:11 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
lda писал(а):
http://wiki.bgbilling.ru/index.php/%D0%A1%D0%BD%D1%8F%D1%82%D0%B8%D0%B5_%D0%B0%D0%B1%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%BE%D0%B9_%D0%BF%D0%BB%D0%B0%D1%82%D1%8B_%D0%B2_%D0%B4%D0%B5%D0%B1%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0%D1%85

Так мы снимаем абонплату для тех кто работает по предоплате.
Посмотрите может кому поможет.


Спасибо огромное за пример! Логика понятна. А какая у вас версия биллинга?

Вопрос к разработчика. Скажите пожалуйста, уже сталкивался несколько раз с тем, что большая часть примеров или скриптов пользователей просто вываливаются с ошибкой то на импорт библиотек, то на отсутствие некоторых методов или свойств.
С чем это связано? Неужели на столько сильно модифицируется API билинга в пределах одного релиза? Или это все примеры абсолютно с разных релизов?

Как быть, когда получаю подобную ошибку?

Пример из скрипта lda...
Код:
import java.sql.*;
import java.util.*;
 
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.*;
import bitel.billing.server.util.*;
import bitel.billing.common.KernelConst;

...


Ошибка я так понимаю происодит как раз при попытке импорта модуля, которого нет?

Код:
ERROR  18.04.2009 00:01:03  Eval error: Sourced file: inline evaluation of: ``import java.sql.*; import java.util.*;   import bitel.billing.server.contract.be . . . '' : null
Sourced file: inline evaluation of: ``import java.sql.*; import java.util.*;   import bitel.billing.server.contract.be . . . '' : null : at Line: 33 : in file: inline evaluation of: ``import java.sql.*; import java.util.*;   import bitel.billing.server.contract.be . . . '' : status .getStatus ( )

Target exception: java.lang.NullPointerException: Null Pointer in Method Invocation

   at bsh.UtilTargetError.toEvalError(Unknown Source)
   at bsh.UtilEvalError.toEvalError(Unknown Source)
   at bsh.BSHMethodInvocation.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHAssignment.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:158)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:248)
   at bitel.billing.server.script.bean.event.EventProcessor.run(EventProcessor.java:163)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 апр 2009, 16:18 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Цитата:
Спасибо огромное за пример! Логика понятна. А какая у вас версия биллинга?


версия 4.5

Цитата:
Ошибка я так понимаю происодит как раз при попытке импорта модуля, которого нет?

Он ругается на 33 строчку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 апр 2009, 17:04 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
lda писал(а):
Цитата:
Спасибо огромное за пример! Логика понятна. А какая у вас версия биллинга?


версия 4.5

Цитата:
Ошибка я так понимаю происодит как раз при попытке импорта модуля, которого нет?

Он ругается на 33 строчку.


У меня тоже 4.5

Ага, понятно. 33я строка это

Код:
contract_status = status.getStatus();


Только получается что он не получил до этого объект статус (status), раз он null? Интересно к чему бы это...

Код:
contract_status_manager  = new ContractStatusManager(con);
status = contract_status_manager.getStatus(cid, DateNow);
contract_status = status.getStatus();
 
if (contract_status == null)
{
   contract_status = KernelConst.CONTRACT_STATUS_ACTIVE;
};


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 апр 2009, 20:04 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Попробуйте сделать так:
Код:
contract_status_manager  = new ContractStatusManager(con);
status = contract_status_manager.getStatus(cid, DateNow);
print(status);


У меня принтуется:
bitel.billing.server.contract.bean.ContractStatus@1d94f8
А у вас?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 апр 2009, 21:07 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
lda писал(а):
Попробуйте сделать так:
Код:
contract_status_manager  = new ContractStatusManager(con);
status = contract_status_manager.getStatus(cid, DateNow);
print(status);


У меня принтуется:
bitel.billing.server.contract.bean.ContractStatus@1d94f8
А у вас?

Не совсем понимаю что происходит, но:
1. null появляется там только у некоторых договоров - сверю в чем у них разница
2. поставил проверку на status == null -- ошибка теперь хоть не мозолит глаза
3. там где status не null, он совпадает с вашим видом
4. не пойму что за Error - на русском, не подходит кодировка. в скрипте вроде нет ни одного слова Error :)

Код:
INFO   18.04.2009 19:04:04  Found event id=222
INFO   18.04.2009 19:04:04  Process event cid:3; event:Event bitel.billing.server.script.bean.event.TimerEvent cid: 3; module: 0; type: 3
INFO   18.04.2009 19:04:04  Process event cid:3; event:Event bitel.billing.server.script.bean.event.TimerEvent cid: 3; module: 0; type: 3
INFO   18.04.2009 19:04:04  Skipping in modules process..
DEBUG  18.04.2009 19:04:04  Process event with user script ID: 4
INFO   18.04.2009 19:04:04  Running function Function [id:4; title:CheckBalance]
INFO   18.04.2009 19:04:04  Process time => 5
INFO   18.04.2009 19:04:04  Found event id=223
INFO   18.04.2009 19:04:04  Process event cid:1; event:Event bitel.billing.server.script.bean.event.TimerEvent cid: 1; module: 0; type: 3
INFO   18.04.2009 19:04:04  Process event cid:1; event:Event bitel.billing.server.script.bean.event.TimerEvent cid: 1; module: 0; type: 3
INFO   18.04.2009 19:04:04  Skipping in modules process..
DEBUG  18.04.2009 19:04:04  Process event with user script ID: 2
DEBUG  18.04.2009 19:04:04  Process event with user script ID: 4
INFO   18.04.2009 19:04:04  Running function Function [id:4; title:CheckBalance]
INFO   18.04.2009 19:04:04  Process time => 13
ERROR  18.04.2009 19:04:04  // Error: ???????? ????????? ??????

INFO   18.04.2009 19:04:04  Found event id=224
INFO   18.04.2009 19:04:04  Process event cid:2; event:Event bitel.billing.server.script.bean.event.TimerEvent cid: 2; module: 0; type: 3
INFO   18.04.2009 19:04:04  Process event cid:2; event:Event bitel.billing.server.script.bean.event.TimerEvent cid: 2; module: 0; type: 3
INFO   18.04.2009 19:04:04  Skipping in modules process..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 апр 2009, 00:59 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Вроде разобрался что за ошибка, но не понятно что имеется ввиду :)
Падаем здесь:

Код:
if (calc_mode.indexOf("day") != -1 && (cost_type != 0 || calc_type != 1))
{
   error ("Неверные параметры тарифа");
   return;
};


У меня calc_type=1. Подскажите пожалуйста для чего была сделана эта проверка? Закоментировал пока - все работает. Спасибо большое за скрипт!

PS: Сейчас у тарифа стоит подневное снятие АП до текущего дня
И с появлением null в status тоже разобрался - у договора не было ни одной записи статуса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 апр 2009, 10:31 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Код:
if (calc_mode.indexOf("day") != -1 && (cost_type != 0 || calc_type != 1))
{
   error ("Неверные параметры тарифа");
   return;
};


Хотел сделать проверку проверку, но что то перемудрил...
Из wiki уберу это часть кода, что бы никого не смущало.
У нас пока не используется абонплата за день, это делалось на перспективу, так что не обкатано.


Цитата:
И с появлением null в status тоже разобрался - у договора не было ни одной записи статуса.

У нас всегда при создании договора статус переводится в "приостановлен", по этому у меня ошибок и не происходило.

Такая конструкция решает проблему?
Код:
contract_status_manager  = new ContractStatusManager(con);
status = contract_status_manager.getStatus(cid, DateNow);
contract_status = KernelConst.CONTRACT_STATUS_ACTIVE;
if (status != null)
{
   contract_status = status.getStatus();
}

if (contract_status == null)
{
   contract_status = KernelConst.CONTRACT_STATUS_ACTIVE;
};


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 апр 2009, 18:05 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
lda писал(а):
Код:
if (calc_mode.indexOf("day") != -1 && (cost_type != 0 || calc_type != 1))
{
   error ("Неверные параметры тарифа");
   return;
};


Хотел сделать проверку проверку, но что то перемудрил...
Из wiki уберу это часть кода, что бы никого не смущало.
У нас пока не используется абонплата за день, это делалось на перспективу, так что не обкатано.


Цитата:
И с появлением null в status тоже разобрался - у договора не было ни одной записи статуса.

У нас всегда при создании договора статус переводится в "приостановлен", по этому у меня ошибок и не происходило.

Такая конструкция решает проблему?
Код:
contract_status_manager  = new ContractStatusManager(con);
status = contract_status_manager.getStatus(cid, DateNow);
contract_status = KernelConst.CONTRACT_STATUS_ACTIVE;
if (status != null)
{
   contract_status = status.getStatus();
}

if (contract_status == null)
{
   contract_status = KernelConst.CONTRACT_STATUS_ACTIVE;
};


Да, думаю это то что надо. Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 май 2009, 12:27 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Мы чтобы хоть както отделить договора, используем статус закрыт на новых договорах, статус приостановлен там где не хватает денег на оплату.
Скрипт мой ставится на таймер и выполняется раз в 15м. Достаточно там все просто.
Статус null уже обсуждался посмотрите как у меня реализовано и как разработчики предлагают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 май 2009, 12:29 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Примерно так, только поправить временные диапазоны и статус сам как таковой.
Код:
//Статус абонента
ContractStatusManager statusManager  = new ContractStatusManager(con);
status = statusManager.getStatus(cid, date);
if (status != null)
   {contract_status = status.getStatus();}
else
   {
      ContractStatus status = new ContractStatus();
      status.setContractId(cid);
      status.setDate1(date_last);
      status.setDate2( null );
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      status.setComment("Смена статуса сервером");
      status.setUserId(0);
      statusManager.updateStatus(status);
      contract_status = status.getStatus();
   };


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 июн 2009, 19:38 
Не в сети

Зарегистрирован: 14 мар 2008, 12:43
Сообщения: 123
Карма: 0
Как переработать скрипт для работы с версией 4.6, т.к. ругается на отсутствие некоторых методов для определенных классов?
Как корректно произвести смену статуса с отображением в истории изменения статусов?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июн 2009, 11:41 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Ругань выложите, подскажем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июн 2009, 11:45 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
ODV писал(а):
Как переработать скрипт для работы с версией 4.6, т.к. ругается на отсутствие некоторых методов для определенных классов?
Как корректно произвести смену статуса с отображением в истории изменения статусов?


надо использовать метод changeStatus вместо updateStatus ..updateStatus - стал приватным


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июн 2009, 12:11 
Не в сети

Зарегистрирован: 14 мар 2008, 12:43
Сообщения: 123
Карма: 0
Ругается на status.setUserId( 0 );
как я понял вместо данного метода мы передаем номер пользователя
в statusManager.changeStatus( status , 0 )

Код:
GENERATE_TIME: 18.06.09 09:45:17
EXECUTION_STOP_TIME: 18.06.09 09:45:20
PROCESS_TIME: 369

OUT:


ERROR:


EXCEPTIONS:
Sourced file: Function [id:1; title:Проверка состояния шлюза] : Error in method invocation: Method setUserId( int ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 49 : in file: Function [id:1; title:Проверка состояния шлюза] : status .setUserId ( 0 )

java.util.concurrent.ExecutionException: Sourced file: Function [id:1; title:Проверка состояния шлюза] : Error in method invocation: Method setUserId( int ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 49 : in file: Function [id:1; title:Проверка состояния шлюза] : status .setUserId ( 0 )

   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:232)
   at java.util.concurrent.FutureTask.get(FutureTask.java:91)
   at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.runScriptImpl(ScriptMachine.java:336)
   at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:124)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:238)
   at bitel.billing.server.script.bean.event.EventProcessor.run(EventProcessor.java:152)
Caused by: Sourced file: Function [id:1; title:Проверка состояния шлюза] : Error in method invocation: Method setUserId( int ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 49 : in file: Function [id:1; title:Проверка состояния шлюза] : status .setUserId ( 0 )

   at bsh.BSHMethodInvocation.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHBlock.evalBlock(Unknown Source)
   at bsh.BSHBlock.eval(Unknown Source)
   at bsh.BSHBlock.eval(Unknown Source)
   at bsh.BSHIfStatement.eval(Unknown Source)
   at bsh.BSHBlock.evalBlock(Unknown Source)
   at bsh.BSHBlock.eval(Unknown Source)
   at bsh.BSHBlock.eval(Unknown Source)
   at bsh.BSHIfStatement.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:310)
   at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:65)
   at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:185)
   at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.access$0(ScriptMachine.java:1)
   at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:328)
   at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:1)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
   at java.lang.Thread.run(Thread.java:619)


WARNINGS:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июн 2009, 12:19 
Не в сети

Зарегистрирован: 14 мар 2008, 12:43
Сообщения: 123
Карма: 0
Спасибо, все заработало

вот если кого интересует для v.4.6.

Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.radius.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.common.KernelConst;
import java.util.*;

//ID абонента CID
cid = event.getContractID();
date = event.getGenerateTime().clone();
date_last = event.getGenerateTime().clone();

date_last.add( Calendar.DAY_OF_YEAR, -1 );

contract = new ContractManager(con).getContractByID(cid);
if (contract == null)
   {return;}
//Лимит абонента
contract_limit = contract.getBalanceLimit();
//Баланс абонента
balance = new BalanceUtils(con);
contract_balance = balance.getBalance (date, cid);
//Статус абонента
ContractStatusManager statusManager  = new ContractStatusManager(con);
status = statusManager.getStatus(cid, date);
if (status != null)
   {contract_status = status.getStatus();}
else
   {
      ContractStatus status = new ContractStatus();
      status.setContractId(cid);
      status.setDate1(date_last);
      status.setDate2( null );
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      status.setComment("Смена статуса сервером");
      statusManager.changeStatus( status , 0);
      contract_status = status.getStatus();
   };

if (contract_balance < contract_limit && contract_status == KernelConst.CONTRACT_STATUS_ACTIVE)
   {
      if ( date_last.after(status.getDate1()) )
         {
            status.setContractId( cid );
            status.setDate2( date_last );
            status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
            status.setComment( "Смена статуса сервером - активен" );
            statusManager.changeStatus( status , 0);

            ContractStatus status = new ContractStatus();
            status.setContractId( cid );
            status.setDate1( date );
            status.setDate2( null );
            status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
            status.setComment( "Смена статуса сервером - приостановка" );
            statusManager.changeStatus( status , 0);
         }
      else
         {
            status.setContractId( cid );
            status.setDate1( date );
            status.setDate2( null );
            status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
            status.setComment( "Смена статуса сервером - приостановка" );
            statusManager.changeStatus( status , 0);
         };
   };
if (contract_balance > contract_limit && contract_status == KernelConst.CONTRACT_STATUS_SUSPENDED)
   {
      if ( date_last.after(status.getDate1()) )
         {
            status.setContractId( cid );
            status.setDate2( date_last );
            status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
            status.setComment( "Смена статуса сервером - приостановка" );
            statusManager.changeStatus( status , 0);

            ContractStatus status = new ContractStatus();
            status.setContractId( cid );
            status.setDate1( date );
            status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
            status.setComment( "Смена статуса сервером - активен" );
            statusManager.changeStatus( status , 0);
         }
      else
         {
            status.setContractId( cid );
            status.setDate1( date );
            status.setDate2( null );
            status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
            status.setComment( "Смена статуса сервером - активен" );
            statusManager.changeStatus( status , 0);
         };
   };


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июн 2009, 18:14 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Так статью и скорректируйте..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 июн 2009, 16:06 
Не в сети

Зарегистрирован: 21 июн 2009, 16:01
Сообщения: 13
Карма: 0
ODV
использовал ваш скрипт. у меня вот такую ошибку выдало.

GENERATE_TIME: 21.06.09 14:54:33
EXECUTION_STOP_TIME: 21.06.09 14:54:33
PROCESS_TIME: 15

OUT:


ERROR:


EXCEPTIONS:


WARNINGS:
Function [id:1; title:2222]: using deprecated method [public float bitel.billing.server.contract.bean.BalanceUtils.getBalance(java.util.Calendar,int)]


что это может быть ? подскажите пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 июн 2009, 17:14 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Предупреждение об использовании устарешего метода.
contract_balance = balance.getBalance (date, cid);
заменить на
contract_balance = balance.getBalance (date.getTime(), cid);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 июн 2009, 19:28 
Не в сети

Зарегистрирован: 21 июн 2009, 16:01
Сообщения: 13
Карма: 0
спасибо. исправил. теперь вот что выдает
ID события: bgbs.contract.script.error
Время регистрации события: 21.06.2009 18:24:51

Contract z051
GENERATE_TIME: 21.06.09 18:24:50
EXECUTION_STOP_TIME: 21.06.09 18:24:51
PROCESS_TIME: 16

OUT:


ERROR:


EXCEPTIONS:
Sourced file: Function [id:1; title:2222] : Invalid types in binary operator : at Line: 40 : in file: Function [id:1; title:2222] : && contract_status == KernelConst .CONTRACT_STATUS_ACTIVE ) {

java.util.concurrent.ExecutionException: Sourced file: Function [id:1; title:2222] : Invalid types in binary operator : at Line: 40 : in file: Function [id:1; title:2222] : && contract_status == KernelConst .CONTRACT_STATUS_ACTIVE ) {

at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.runScriptImpl(ScriptMachine.java:336)
at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:124)
at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:238)
at bitel.billing.server.script.bean.event.EventProcessor.run(EventProcessor.java:152)
Caused by: Sourced file: Function [id:1; title:2222] : Invalid types in binary operator : at Line: 40 : in file: Function [id:1; title:2222] : && contract_status == KernelConst .CONTRACT_STATUS_ACTIVE ) {

at bsh.UtilEvalError.toEvalError(Unknown Source)
at bsh.UtilEvalError.toEvalError(Unknown Source)
at bsh.BSHBinaryExpression.eval(Unknown Source)
at bsh.BSHBinaryExpression.eval(Unknown Source)
at bsh.BSHIfStatement.evaluateCondition(Unknown Source)
at bsh.BSHIfStatement.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:310)
at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:65)
at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:185)
at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.access$0(ScriptMachine.java:1)
at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:328)
at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:1)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


WARNINGS:

уж простите за беспокойство.
что теперь не так?
как я понял он ругается вот на это
if (contract_balance < contract_limit && contract_status == KernelConst.CONTRACT_STATUS_ACTIVE)

если не сложно поправте плиз скрипт для 4,6,471 версии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 июн 2009, 12:11 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
А у вас в сервере в папке lib один файл bsh*.jar и какой размер файла?
попробуйте добавить скобки:
if ( (contract_balance < contract_limit) && (contract_status == KernelConst.CONTRACT_STATUS_ACTIVE) )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 июн 2009, 13:56 
Не в сети

Зарегистрирован: 21 июн 2009, 16:01
Сообщения: 13
Карма: 0
Amir писал(а):
А у вас в сервере в папке lib один файл bsh*.jar и какой размер файла?
попробуйте добавить скобки:
if ( (contract_balance < contract_limit) && (contract_status == KernelConst.CONTRACT_STATUS_ACTIVE) )

файл один. размер его 275кб.
скобки не помогли (


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 июн 2009, 14:46 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
А скрипт не меняли? Потому что поначалу вроде не было ошибок...


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

Зарегистрирован: 21 июн 2009, 16:01
Сообщения: 13
Карма: 0
вот что у меня написано в скрипте.
изменил только то что вы мне сказали.
Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.radius.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.common.KernelConst;
import java.util.*;

//ID абонента CID
cid = event.getContractID();
date = event.getGenerateTime().clone();
date_last = event.getGenerateTime().clone();

date_last.add( Calendar.DAY_OF_YEAR, -1 );

contract = new ContractManager(con).getContractByID(cid);
if (contract == null)
   {return;}
//Лимит абонента
contract_limit = contract.getBalanceLimit();
//Баланс абонента
balance = new BalanceUtils(con);
contract_balance = balance.getBalance (date.getTime(), cid);
//Статус абонента
ContractStatusManager statusManager  = new ContractStatusManager(con);
status = statusManager.getStatus(cid, date);
if (status != null)
   {contract_status = status.getStatus();}
else
   {
      ContractStatus status = new ContractStatus();
      status.setContractId(cid);
      status.setDate1(date_last);
      status.setDate2( null );
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      status.setComment("Смена статуса сервером");
      statusManager.changeStatus( status , 0);
      contract_status = status.getStatus();
   };

if ((contract_balance < contract_limit) && (contract_status == KernelConst.CONTRACT_STATUS_ACTIVE))
   {
      if ( date_last.after(status.getDate1()) )
         {
            status.setContractId( cid );
            status.setDate2( date_last );
            status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
            status.setComment( "Смена статуса сервером - активен" );
            statusManager.changeStatus( status , 0);

            ContractStatus status = new ContractStatus();
            status.setContractId( cid );
            status.setDate1( date );
            status.setDate2( null );
            status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
            status.setComment( "Смена статуса сервером - приостановка" );
            statusManager.changeStatus( status , 0);
         }
      else
         {
            status.setContractId( cid );
            status.setDate1( date );
            status.setDate2( null );
            status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
            status.setComment( "Смена статуса сервером - приостановка" );
            statusManager.changeStatus( status , 0);
         };
   };
if (contract_balance > contract_limit && contract_status == KernelConst.CONTRACT_STATUS_SUSPENDED)
   {
      if ( date_last.after(status.getDate1()) )
         {
            status.setContractId( cid );
            status.setDate2( date_last );
            status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
            status.setComment( "Смена статуса сервером - приостановка" );
            statusManager.changeStatus( status , 0);

            ContractStatus status = new ContractStatus();
            status.setContractId( cid );
            status.setDate1( date );
            status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
            status.setComment( "Смена статуса сервером - активен" );
            statusManager.changeStatus( status , 0);
         }
      else
         {
            status.setContractId( cid );
            status.setDate1( date );
            status.setDate2( null );
            status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
            status.setComment( "Смена статуса сервером - активен" );
            statusManager.changeStatus( status , 0);
         };
   };


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 июн 2009, 15:25 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
А сейчас ругается точно не на contract_status == KernelConst.CONTRACT_STATUS_SUSPENDED ?


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

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


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

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


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

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