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

проблема со скриптами при переходе с 4.5 на 4.6
http://forum.bitel.ru/viewtopic.php?f=22&t=3830
Страница 1 из 1

Автор:  m2pod [ 08 апр 2010, 22:36 ]
Заголовок сообщения:  проблема со скриптами при переходе с 4.5 на 4.6

на тестовом сервере поднял 4.5 и решил его перевести на 4.6.
перевод осуществился легко, а вот со скриптами загвоздка.
сам скрипт
Код:
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;
 

// код услуги
sid = 6;
// код экземпляра модуля
mid = 2;
//Группа "Недостаточно средств"
GROUP_ERROR_BALANCE = 4;
 
if( event.getFlag() != 1 ) {
    return;
};
 
cid = event.getContractID();
DateNow = new GregorianCalendar();
contract = new ContractManager(con).getContractByID(cid);

if (contract == null){

   return;
};
BalanceMode = contract.getBalanceMode();
if (BalanceMode == 0){
   //Пропускаем тех кто работает по факту
   return;
};
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;
};
if (contract_status != KernelConst.CONTRACT_STATUS_ACTIVE)
{
   //Пропускаем не активные договора
   return;
};

date_str=TimeUtils.format(DateNow, "yyyy-MM-dd");
 
//Проверяем привязана ли услуга "абонплата"
abn_count = "0";
query_check_abn =
" SELECT npay_service_object_"+mid+".col"+
" FROM contract_service"+
"   LEFT JOIN npay_service_object_"+mid+
"   ON (contract_service.id=npay_service_object_"+mid+".csid)"+
" WHERE (contract_service.date1 is NULL OR contract_service.date1<='"+date_str+"') AND"+
" (contract_service.date2 is NULL OR contract_service.date2>='"+date_str+"') AND"+
" contract_service.sid='"+sid+"' AND contract_service.cid='"+cid+"'";
re_check_abn = con.prepareStatement(query_check_abn);
rs_check_abn = re_check_abn.executeQuery();
while (rs_check_abn.next())
{
   if (rs_check_abn.getString(1) == null)
   {
      abn_count = "1";
   }
   else
   {
      abn_count = rs_check_abn.getString(1);
   };
};
abn_count = Double.parseDouble(abn_count);
if (abn_count == 0)
{
 
   //Услуга не найдена.
   return;
};
 
day_str=TimeUtils.format(DateNow, "dd");
day = Double.parseDouble(day_str);
 
cost = null;
cost_type = null;
calc_mode = null;
calc_type = null;
// поиск параметров абонплаты
tts = new ContractManager( con ).getRealtimeTariffTreeSet( cid, DateNow, "npay", mid, true );
for( TariffModuleTree tree : tts.getTreeList( DateNow ) )
{
   req_cost = new TariffRequest();
   req_cost.setRequestParam( "action", "calculate" );
   req_cost.setRequestParam( "sid", sid );
   req_cost.setRequestParam( "month_days", 1 );
   req_cost.setRequestParam( "period_days", 1 );
   req_cost.setRequestParam( "time",  DateNow);
   tree.processRequest( req_cost );
   cost = (Double)req_cost.getResponseParam( "cost" );
   cost_type = req_cost.getResponseParam( "cost_type" );
 
   req_calc_mode = new TariffRequest();
   req_calc_mode.setRequestParam( "action", "reset" );
   req_calc_mode.setRequestParam( "sid", sid );
   req_calc_mode.setRequestParam( "time",  DateNow);
   tree.processRequest( req_calc_mode );
   calc_mode = (String)req_calc_mode.getResponseParam( "calc_mode" );
   calc_type = req_calc_mode.getResponseParam( "calc_type" );
};
 
if (cost == null || calc_mode == null)
{
   error ("Параметры абонплаты не найдены");
   return;
};
if (calc_mode.indexOf("month") != -1 && day != 1)
{
   //абонплату за месяц снимаем только 1-ого числа
   return;
};
if (cost == 0)
{
   return;
};
 
 
cost = cost*abn_count;

print ("cid="+cid);
balance = new BalanceUtils(con);
contract_balance = balance.getBalance (date.getTime(), cid); <-----135 line
contract_limit = contract.getBalanceLimit();
print ("contract_balance="+contract_balance); 
print ("contract_limit="+contract_limit); 
print ("contract_abn="+cost);
contract_balance_new = contract_balance - cost;
print ("contract_balance_new="+contract_balance_new);
if (contract_balance_new >= contract_limit)
{
   print ("Balance OK");
}
else
{
   print ("Balance error");
 
   contract_groups = contract.getGroups();
   contract_groups = contract_groups | 1L<<GROUP_ERROR_BALANCE;
 
   query = "UPDATE contract SET gr=? WHERE id=?";
   psUpdate = con.prepareStatement( query );
   psUpdate.setLong( 1, contract_groups );
   psUpdate.setInt( 2, cid );
   psUpdate.executeUpdate();
 
   ContractStatus status = new ContractStatus();
   status.setContractId( cid );
   status.setDate1( DateNow    );
   status.setDate2( null );
   status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
   status.setComment( "Недостаточно средств. Нехватило: " + contract_balance_new);
   status.setUserId( 0 );   <---165 line
   contract_status_manager.changeStatus( status );    
};



ошибка
Код:
GENERATE_TIME: 01.05.10 00:06:07
EXECUTION_STOP_TIME: 01.05.10 00:06:46
PROCESS_TIME: 132

OUT:
cid=7342
contract_balance=-1090.33
contract_limit=0.00
contract_abn=770.0
contract_balance_new=-1860.33
Balance error


ERROR:


EXCEPTIONS:
Sourced file: Function [id:11; title:таймер_снятия] : Error in method invocation: Method setUserId( int ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 165 : in file: Function [id:11; title:таймер_снятия] : status .setUserId ( 0 )

java.util.concurrent.ExecutionException: Sourced file: Function [id:11; title:таймер_снятия] : Error in method invocation: Method setUserId( int ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 165 : in file: Function [id:11; 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:359)
   at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:128)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:239)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:182)
   at bitel.billing.server.script.bean.event.EventProcessor.run(EventProcessor.java:140)
Caused by: Sourced file: Function [id:11; title:таймер_снятия] : Error in method invocation: Method setUserId( int ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 165 : in file: Function [id:11; 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.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:69)
   at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:219)
   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:349)
   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:886)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:619)


WARNINGS:



в логах планировщика еще есть такое

Код:
scheduler 04-30/23:55:04 ERROR [pool-2-thread-1] Calculator - Contract 4729 sid=8 calcMode=null
scheduler 04-30/23:55:04 ERROR [pool-2-thread-1] Calculator - Contract 4729 sid=11 calcMode=null
scheduler 04-30/23:55:04 ERROR [pool-2-thread-1] Calculator - Contract 4730 sid=8 calcMode=null
scheduler 04-30/23:55:04 ERROR [pool-2-thread-1] Calculator - Contract 4730 sid=11 calcMode=null
scheduler 04-30/23:55:04 ERROR [pool-2-thread-1] Calculator - Contract 4731 sid=8 calcMode=null
scheduler 04-30/23:55:04 ERROR [pool-2-thread-1] Calculator - Contract 4731 sid=11 calcMode=null
scheduler 04-30/23:55:04 ERROR [pool-2-thread-1] Calculator - Contract 4734 sid=8 calcMode=null
scheduler 04-30/23:55:04 ERROR [pool-2-thread-1] Calculator - Contract 4734 sid=11 calcMode=null
scheduler 04-30/23:55:04 ERROR [pool-2-thread-1] Calculator - Contract 4736 sid=8 calcMode=null


а в server.log такое

Код:
script 05-01/00:06:46 ERROR [Thread-7] script - Eval error: Sourced file: Function [id:11; title:таймер_снятия] : Attempt to resolve method: getTime() on undefined variable or class name: date : at Line: 135 : in file: Function [id:11; title:таймер_снятия] : date .getTime ( )

java.util.concurrent.ExecutionException: Sourced file: Function [id:11; title:таймер_снятия] : Attempt to resolve method: getTime() on undefined variable or class name: date : at Line: 135 : in file: Function [id:11; title:таймер_снятия] : date .getTime ( )

   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:359)
   at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:128)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:239)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:182)
   at bitel.billing.server.script.bean.event.EventProcessor.run(EventProcessor.java:140)
Caused by: Sourced file: Function [id:11; title:таймер_снятия] : Attempt to resolve method: getTime() on undefined variable or class name: date : at Line: 135 : in file: Function [id:11; title:таймер_снятия] : date .getTime ( )

   at bsh.UtilEvalError.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.BSHArguments.getArguments(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 ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:310)
   at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:69)
   at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:219)
   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:349)
   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:886)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:619)


на даты не смотрите, специально перевел на след месяц чтобы посмотреть как снимать будет.

Автор:  skn [ 08 апр 2010, 22:47 ]
Заголовок сообщения:  Re: проблема со скриптами при переходе с 4.5 на 4.6

на форуме эти проблемы уже обсуждались с год назад.

Автор:  m2pod [ 08 апр 2010, 23:34 ]
Заголовок сообщения:  Re: проблема со скриптами при переходе с 4.5 на 4.6

если обсуждалось, я думаю не затруднит ткнуть как и что?

Автор:  stark [ 09 апр 2010, 11:22 ]
Заголовок сообщения:  Re: проблема со скриптами при переходе с 4.5 на 4.6

тут вроде :
viewtopic.php?f=16&t=1743&hilit=setUserId&start=45

Автор:  m2pod [ 09 апр 2010, 12:42 ]
Заголовок сообщения:  Re: проблема со скриптами при переходе с 4.5 на 4.6

я заменил как там написано, ругается на эту строчку

Код:
contract_balance = balance.getBalance (date.getTime(), cid);

Автор:  stark [ 09 апр 2010, 12:49 ]
Заголовок сообщения:  Re: проблема со скриптами при переходе с 4.5 на 4.6

m2pod писал(а):
я заменил как там написано, ругается на эту строчку

Код:
contract_balance = balance.getBalance (date.getTime(), cid);


смотрите как ругается , потом в описание класса(http://bgbilling.ru/v5.0/javadoc/index.html) и что там нужно передавать в метод.

Автор:  m2pod [ 09 апр 2010, 12:51 ]
Заголовок сообщения:  Re: проблема со скриптами при переходе с 4.5 на 4.6

а как ругается я писал слегка выше где написано что в server.log(error.log)

Автор:  stark [ 09 апр 2010, 12:55 ]
Заголовок сообщения:  Re: проблема со скриптами при переходе с 4.5 на 4.6

m2pod писал(а):
а как ругается я писал слегка выше где написано что в server.log(error.log)

ну вам же там сказали четкло в чем пнрична :

Attempt to resolve method: getTime() on undefined variable or class name: date
перевод фразы нужен ?

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