forum.bitel.ru http://forum.bitel.ru/ |
|
Переращет начислений http://forum.bitel.ru/viewtopic.php?f=16&t=2457 |
Страница 1 из 1 |
Автор: | ODV [ 18 июн 2009, 19:25 ] |
Заголовок сообщения: | Переращет начислений |
Подскажите, как можно из скрипта произвести переращет начислений по конкретному договору? |
Автор: | stark [ 19 июн 2009, 13:04 ] |
Заголовок сообщения: | |
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(); |
Автор: | ODV [ 22 июн 2009, 13:29 ] |
Заголовок сообщения: | |
Спасибо. немного не по теме, как можно извлечь номер договора и его изменить из скрипта? |
Автор: | Chaos [ 23 июн 2009, 20:02 ] |
Заголовок сообщения: | |
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: |
Автор: | stark [ 24 июн 2009, 14:30 ] |
Заголовок сообщения: | |
вы не сделали import bitel.billing.server.npay.Calculator; |
Автор: | Chaos [ 24 июн 2009, 14:55 ] |
Заголовок сообщения: | |
ММ, вроде на месте. Код: 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 и тыкался вслепую. Спасибо за отклик. |
Автор: | Amir [ 24 июн 2009, 15:02 ] |
Заголовок сообщения: | |
Нету инициализации объекта Код: Calculator calculator = new Calculator();
|
Автор: | Chaos [ 24 июн 2009, 15:16 ] |
Заголовок сообщения: | |
Точно, прошляпил, сорри...Теперь другое Код: 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 ) |
Автор: | Amir [ 24 июн 2009, 15:23 ] |
Заголовок сообщения: | |
setCids ( cids ) - туда подставляется строка cid-ов, т.е. например: "123,545,852,226" Для одного cid подойдет вариант setCids ( String.valueOf( cid ) ); |
Автор: | Rionet [ 24 июн 2009, 16:09 ] |
Заголовок сообщения: | |
Двигаемся далее)) Код: 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 ) Чую, что теперь точно что-то не импортировано. |
Автор: | Amir [ 24 июн 2009, 17:25 ] |
Заголовок сообщения: | |
вместо calculator.initTask( bgSetup, 0, "mid=" + NPAY_MID ); calculator.initTask( setup, 0, "mid=" + NPAY_MID ); |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |