BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 22 июн 2025, 23:25

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 08 апр 2010, 22:36 
Не в сети

Зарегистрирован: 29 окт 2008, 18:03
Сообщения: 212
Карма: 0
на тестовом сервере поднял 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)


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


Последний раз редактировалось m2pod 08 апр 2010, 23:34, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 апр 2010, 22:47 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
на форуме эти проблемы уже обсуждались с год назад.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 апр 2010, 23:34 
Не в сети

Зарегистрирован: 29 окт 2008, 18:03
Сообщения: 212
Карма: 0
если обсуждалось, я думаю не затруднит ткнуть как и что?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 апр 2010, 11:22 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
тут вроде :
viewtopic.php?f=16&t=1743&hilit=setUserId&start=45


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 апр 2010, 12:42 
Не в сети

Зарегистрирован: 29 окт 2008, 18:03
Сообщения: 212
Карма: 0
я заменил как там написано, ругается на эту строчку

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 апр 2010, 12:49 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
m2pod писал(а):
я заменил как там написано, ругается на эту строчку

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


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 апр 2010, 12:51 
Не в сети

Зарегистрирован: 29 окт 2008, 18:03
Сообщения: 212
Карма: 0
а как ругается я писал слегка выше где написано что в server.log(error.log)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 апр 2010, 12:55 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
m2pod писал(а):
а как ругается я писал слегка выше где написано что в server.log(error.log)

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

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


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

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


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

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


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

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