BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 16 июн 2024, 09:35

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Переращет начислений
СообщениеДобавлено: 18 июн 2009, 19:25 
Не в сети

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


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
bitel.billing.server.npay.Calculator;

Calculator calculator = new Calculator();
//врем пересчета
calculator.setExecutingTime( cal );
//договора через запутяую
calculator.setCids( cids );
// NPAY_MID - код модуля абонплат
calculator.initTask( bgSetup, 0, "mid=" + NPAY_MID );
calculator.startTask();


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

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


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

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
stark писал(а):
bitel.billing.server.npay.Calculator;

Calculator calculator = new Calculator();
//врем пересчета
calculator.setExecutingTime( cal );
//договора через запутяую
calculator.setCids( cids );
// NPAY_MID - код модуля абонплат
calculator.initTask( bgSetup, 0, "mid=" + NPAY_MID );
calculator.startTask();


Код:
GENERATE_TIME: 23.06.09 14:07:08
EXECUTION_STOP_TIME: 23.06.09 14:07:09
PROCESS_TIME: 797

OUT:
Payment added
sid11
cost:1.62271
1.62271
sid18
cost:9.856263
9.856263
TotalCost = 11.478973
Balance = 325.21


ERROR:


EXCEPTIONS:
Sourced file: Function [id:17; title:payment_added] : Attempt to resolve method: setCids() on undefined variable or class name: calculator : at Line: 122 : in file: Function [id:17; title:payment_added] : calculator .setCids ( cid )

java.util.concurrent.ExecutionException: Sourced file: Function [id:17; title:payment_added] : Attempt to resolve method: setCids() on undefined variable or class name: calculator : at Line: 122 : in file: Function [id:17; title:payment_added] : calculator .setCids ( cid )

   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.contract.action.ActionUpdateContractPayment.doAction(ActionUpdateContractPayment.java:173)
   at bitel.billing.server.Executer.doModule(Executer.java:740)
   at bitel.billing.server.Executer.doPost(Executer.java:190)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Thread.java:619)
Caused by: Sourced file: Function [id:17; title:payment_added] : Attempt to resolve method: setCids() on undefined variable or class name: calculator : at Line: 122 : in file: Function [id:17; title:payment_added] : calculator .setCids ( cid )

   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.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)
   ... 1 more


WARNINGS:


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
вы не сделали
import bitel.billing.server.npay.Calculator;


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

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
ММ, вроде на месте.
Код:
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.server.service.bean.*;
import bitel.billing.server.tariff.*;
import bitel.billing.server.util.*;
import bitel.billing.server.npay.*;
import bitel.billing.common.*;
import bitel.billing.common.KernelConst;
import java.util.*;
import java.mysql.*;
import bitel.billing.server.npay.Calculator;
 
NPAY_MID = 2;
limit = 0d;
print ("Payment added");
cid = event.getContractID();
// округляем день (на 00:00:00) платежа
egt = event.getGenerateTime();
df = egt.clone();
df.clear();
df.set(egt.get(Calendar.YEAR), egt.get(Calendar.MONTH), egt.get(Calendar.DAY_OF_MONTH));
// получаем день, предыдущий платежу
dt = df.clone();
dt.roll(Calendar.DAY_OF_YEAR, -1);
// получаем дату начала месяца
db = df.clone();
db.set(Calendar.DAY_OF_MONTH, 1);
ps = con.prepareStatement( "SELECT gr FROM contract WHERE id=?" );
ps.setInt ( 1, cid);
rs = ps.executeQuery();
gr = 0;
if (rs.first())
{
gr = rs.getInt( 1 );
}
// если договор принадлежит к группе "Приостановлен по балансу", или "С пониженным лимитом" то определяем размер абонплаты для снятия и сравниваем с балансом после платежа
if( gr == 2 || gr == 8)
{
  DateNow = new GregorianCalendar();
  ContractStatusManager statusManager  = new ContractStatusManager(con);
  status = statusManager.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;
   };
 ctm = new ContractTariffManager(  con );
 csm   = new ContractServiceManager( con );
 cu   = new ContractUtils( con );
 cman = new ContractManager( con );
 cn   = cman.getContractByID( cid );
 tts = cman.getRealtimeTariffTreeSet( cid, df, "npay", NPAY_MID, true );
 msu = new ModuleAndServiceUtils( con );
 bu  = new BalanceUtils( con );
 // получаем текущий баланс (с учетом данного платежа)
 balance = bu.getBalance(new Date(), cid );
 limit = cn.getBalanceLimit();
 //limit = Double.parseDouble(limit);
 fbm = cn.getFakeBalanceMode();
 bm = cn.getBalanceMode();
 //print ( "balance = "+balance );
 //print ( "limit = "+limit );
 //print ( "fbm = "+fbm+"; bm = "+bm );
 totalCost = 0d;
 // получаем список услуг
 serviceList  = csm.getContractServiceList( cid, df );
 for( Iterator it = serviceList.iterator(); it.hasNext(); )
  {
  service = (ContractService)it.next();
  sid = service.getServiceID();       
  mid = msu.getService(sid).getModuleId();
 //print ( "Service.title "+msu.getService(sid).getTitle() );
 //print ( "Module.title "+msu.getModule(mid).getTitle() );
 // Если услуга относится к модулю "NPay"
  if( mid == NPAY_MID )
   {
    print ("sid" + sid );
    // считаем сумму абонплаты
    // перебор тарифов в порядке позиций сначала персональных, потом глобальных
     for( TariffModuleTree tree : tts.getTreeList( df ) )
     {
      req = new TariffRequest();
      req.setRequestParam( "action", "calculate" );
      req.setRequestParam( "sid", sid );
      // считаем абонплату пропорционально количеству дней до конца месяца(действует для тарифов "Пропорционально периоду")
      // всего дней в месяце
      req.setRequestParam( "month_days", df.getActualMaximum(Calendar.DAY_OF_MONTH) );
      // всего дней до конца месяца
      req.setRequestParam( "period_days", df.getActualMaximum(Calendar.DAY_OF_MONTH) - df.get(Calendar.DAY_OF_MONTH) + 1 );
      tree.processRequest( req );
      cost = (Double) req.getResponseParam( "cost" );               
      print ( "cost:" + cost );
     if( req.wasAccepted() && cost != null )
     {
      print( cost );
      totalCost += cost;
      break;
     }
   }
   }
  }
   print ("TotalCost = " + totalCost);
   print ("Balance = "+ balance);
// если денег на продление услуг хватает, то меняем группу договора, запускаем перерасчет абонплаты
 if ( balance > (totalCost * 7))
 {
  ContractStatus status = new ContractStatus();
  status.setContractId(cid);
  status.setDate1(DateNow);
  status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
  status.setComment("Активирован по поступлению платежа");
  statusManager.changeStatus(status, 0);
  psup = con.prepareStatement( "UPDATE contract SET gr=1 WHERE id=?" );
  psup.setInt ( 1, cid);
  psup.executeUpdate();
 /* Calendar cal = Calendar.getInstance();
  calculator.setCid( cid );
  calculator.setExecutingTime( cal );
  calculator.initTask( bgSetup, 0, "mid=" + NPAY_MID );
  calculator.startTask();*/
 }
}

Скопипастил все, как есть, кусок перенаслений закоменчен до разбора. setCids пробовал менять на setCid, т.к. описалово класса не нашел в API и тыкался вслепую. Спасибо за отклик.


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Нету инициализации объекта
Код:
Calculator calculator = new Calculator();


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

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Точно, прошляпил, сорри...Теперь другое
Код:
Sourced file: Function [id:17; title:payment_added] : Error in method invocation: Method setCids( int ) not found in class'bitel.billing.server.npay.Calculator' : at Line: 123 : in file: Function [id:17; title:payment_added] : calculator .setCids ( cid )

java.util.concurrent.ExecutionException: Sourced file: Function [id:17; title:payment_added] : Error in method invocation: Method setCids( int ) not found in class'bitel.billing.server.npay.Calculator' : at Line: 123 : in file: Function [id:17; title:payment_added] : calculator .setCids ( cid )


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
setCids ( cids ) - туда подставляется строка cid-ов, т.е. например: "123,545,852,226"
Для одного cid подойдет вариант
setCids ( String.valueOf( cid ) );


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

Зарегистрирован: 17 апр 2009, 18:57
Сообщения: 28
Карма: 0
Двигаемся далее))
Код:
Sourced file: Function [id:17; title:payment_added] : Undefined argument: bgSetup  : at Line: 125 : in file: Function [id:17; title:payment_added] : ( bgSetup , 0 , "mid=" + NPAY_MID )

java.util.concurrent.ExecutionException: Sourced file: Function [id:17; title:payment_added] : Undefined argument: bgSetup  : at Line: 125 : in file: Function [id:17; title:payment_added] : ( bgSetup , 0 , "mid=" + NPAY_MID )

Чую, что теперь точно что-то не импортировано.


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
вместо
calculator.initTask( bgSetup, 0, "mid=" + NPAY_MID );

calculator.initTask( setup, 0, "mid=" + NPAY_MID );


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

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


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

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


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

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