forum.bitel.ru http://forum.bitel.ru/ |
|
Скрипты и 5.2 http://forum.bitel.ru/viewtopic.php?f=19&t=5774 |
Страница 1 из 1 |
Автор: | skyb [ 08 авг 2011, 13:30 ] |
Заголовок сообщения: | Скрипты и 5.2 |
Начал перетаскиваться потихоньку на 5.2 ...... удивило то что некоторое даже заработало, но не все. Подскажите скрипт Код: import bitel.billing.common.*; import java.util.*; import bitel.billing.server.dialup.*; import bitel.billing.server.task.bean.*; mid = 1; Calendar date1 = new GregorianCalendar(); date1.add( Calendar.MONTH, -1 ); Calendar date2 = TimeUtils.getEndMonth( date1 ); String email = "mail@mail.ru"; long groups = CommonUtils.enumToMask( "12" ); String contracts = null; new RunTaskDataManager( con ).addTask( new SessionsRecalculator( email, date1, date2, mid, groups, contracts ) ); Ругается так EXCEPTIONS: Код: Sourced file: Переобсчет сессий : Typed variable declaration : Attempt to resolve method: enumToMask() on undefined variable or class name: CommonUtils Sourced file: Переобсчет сессий : Typed variable declaration : Attempt to resolve method: enumToMask() on undefined variable or class name: CommonUtils : at Line: 12 : in file: Переобсчет сессий : CommonUtils .enumToMask ( "12" ) Код: 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; cpu = new ContractParamUtils( con ); cid = event.getContractID(); DateNow = new GregorianCalendar(); contract = new ContractManager(con).getContractByID(cid); contract_status_manager = new ContractStatusManager(con); status = contract_status_manager.getStatus(cid, DateNow); contract_status = status.getStatus(); if (contract_status == KernelConst.CONTRACT_STATUS_CLOSED) { cpu.setGroup( cid, 0 ); } if (contract_status == KernelConst.CONTRACT_STATUS_ACTIVE) { cpu.unsetGroup( cid, 0 ); }; ругается так Код: EXCEPTIONS:
Sourced file: Function [id:29; title:Добавление/удаление группы] : Undefined argument: con : at Line: 9 : in file: Function [id:29; title:Добавление/удаление группы] : ( con ) java.util.concurrent.ExecutionException: Sourced file: Function [id:29; title:Добавление/удаление группы] : Undefined argument: con : at Line: 9 : in file: Function [id:29; title:Добавление/удаление группы] : ( con ) |
Автор: | Amir [ 08 авг 2011, 13:58 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Первое - нужно переделать на Utils.enumToMask() import ru.bitel.common.*; Второе - ошибка, похоже. Перестал нормально поддерживаться старый метод добавления скриптов. Но по хорошему тоже лучше переделать на вызов метода, так и быстрее работать будет: Код: public void onEvent( event, setup, con, conSlave ) { cpu = new ContractParamUtils( con ); cid = event.getContractID(); DateNow = new GregorianCalendar(); contract = new ContractManager(con).getContractByID(cid); contract_status_manager = new ContractStatusManager(con); status = contract_status_manager.getStatus(cid, DateNow); contract_status = status.getStatus(); if (contract_status == KernelConst.CONTRACT_STATUS_CLOSED) { cpu.setGroup( cid, 0 ); } if (contract_status == KernelConst.CONTRACT_STATUS_ACTIVE) { cpu.unsetGroup( cid, 0 ); } } А можно и на классы java сразу переписать (Управление динамическим кодом). Скорее всего это станет основным, т.к. там всегда видно, что какой-то метод пропал или изменился, в отличие от скриптов, где об этом узнается только когда выполнение дойдет до строчки вызова несуществующего метода. Да и, опять таки, еще быстрее. |
Автор: | skyb [ 08 авг 2011, 17:00 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Согласен - что было бы не плохо на код перейти. Наверное завтро и попробую. |
Автор: | skyb [ 09 авг 2011, 05:14 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Глупый канечно вопрос, но вот я не догоняю -- нужно ли как то уже во встроенное дерево пакетов запихивать классы чтоб биллинг их увидел? или можно с / создавать? |
Автор: | Amir [ 09 авг 2011, 12:29 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Не понял вопроса ![]() Открываете функции скриптов поведения, закладка Классы Java, нажимаете добавить, выбираете событие, выбираете класс. Если класса еще нет - нажимаете плюсик рядом с выбором класса и вводите имя класса, например, что-нибудь вроде skyb.bgbilling.kernel.PaymentEventListener. Откроется Управление динамическим кодом. Там также работают кнопки добавления и удаления классов. Эти файлы иходников хранятся не в базе а на диске, в папке dyn. Т.е. если есть желание, можно замаунтить папку dyn к себе, поставить eclipse и создать проект, библиотеками указав все библиотеки биллинга, а папкой исходников - эту папку dyn. Только изменение этих файлов на диске не отслеживается - если поменяли файлы прямо на диске на будет на вкладке Управление динамическим кодом нажать Скомпилировать все. |
Автор: | stark [ 10 авг 2011, 10:21 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
skyb писал(а): да вот чегота покачто не понял как это работает. Нужна ли точка входа ? Что в данном случае имеется ввиду под точкой входа? . раньше вы просто скрипт писали , а теперь это код помещаете в класс и имя этого класса (со всеми пакетами) указываете и все. skyb писал(а): а есть хелоуворлд который будет работать? я с эклипсом и маунтом разобрался, а вот с тем как код должен быть расположен нет. ![]() вот как правильно выстраивать иерархию (скрин) Иерархию можете выставлять как хотите , это ваше по сути дело . Это просто пакеты . Например можно назвать класс ru.skyb.device.cisco.ISGFunnySkybProtocolHandler. ru.skyb - гарантирует то, что пакеты будут не пересекаться с нашими, а дальше уже как вам удобно . |
Автор: | skyb [ 10 авг 2011, 11:06 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
stark писал(а): Что в данном случае имеется ввиду под точкой входа? Что и в обычной яве ![]() В ваших скриптах ведь тоже есть точки входа(в глобальных) ![]() |
Автор: | stark [ 10 авг 2011, 13:04 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
skyb писал(а): stark писал(а): Что в данном случае имеется ввиду под точкой входа? Что и в обычной яве ![]() В ваших скриптах ведь тоже есть точки входа(в глобальных) ![]() там много точек входа . надо смотреть api интерфейсов , там описаны методы |
Автор: | skyb [ 02 сен 2011, 13:06 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
А почему не все события в динамическом коде? и как быть если класс необходимо навешать на 2 события? |
Автор: | skyb [ 02 сен 2011, 13:32 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
http://wiki.bgbilling.ru/index.php/%D0% ... 1%82%D1%83 Код: GENERATE_TIME: 02.09.11 17:35:15 EXECUTION_STOP_TIME: 02.09.11 17:35:15 PROCESS_TIME: 41 OUT: serviceId=24 update tariff EXCEPTIONS: Sourced file: Function [id:20; title:Приостановление абонента] : Unknown class: TariffChangedEvent : at Line: 77 : in file: Function [id:20; title:Приостановление абонента] : new TariffChangedEvent ( cid ) java.util.concurrent.ExecutionException: Sourced file: Function [id:20; title:Приостановление абонента] : Unknown class: TariffChangedEvent : at Line: 77 : in file: Function [id:20; title:Приостановление абонента] : new TariffChangedEvent ( 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:269) at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:120) at bitel.billing.server.script.bean.event.EventProcessor.processContractEvent(EventProcessor.java:306) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:224) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:192) at bitel.billing.server.script.bean.event.EventProcessor.run(EventProcessor.java:141) Caused by: Sourced file: Function [id:20; title:Приостановление абонента] : Unknown class: TariffChangedEvent : at Line: 77 : in file: Function [id:20; title:Приостановление абонента] : new TariffChangedEvent ( cid ) at bsh.BSHAllocationExpression.objectAllocation(BSHAllocationExpression.java:98) at bsh.BSHAllocationExpression.eval(BSHAllocationExpression.java:62) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHArguments.getArguments(BSHArguments.java:65) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:69) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:186) at bsh.Name.invokeLocalMethod(Name.java:917) at bsh.Name.invokeMethod(Name.java:804) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHSwitchStatement.eval(BSHSwitchStatement.java:82) at bsh.Interpreter.eval(Interpreter.java:653) at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:366) at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:61) at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:182) 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:259) 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:662) Код: 75 if ( changed )
76 { 77 BillingEventBus.publish( new TariffChangedEvent( cid ) ); 78 } |
Автор: | skyb [ 19 сен 2011, 11:00 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Есть скрипт Код: package ru.skyb.scripts.global.reestr; import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; import java.sql.Connection; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMultipart; import ru.bitel.bgbilling.server.util.DefaultServerSetup; import ru.bitel.bgbilling.server.util.ServerUtils; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.model.Page; import bitel.billing.common.TimeUtils; import bitel.billing.server.mps.bean.MPSPayment; import bitel.billing.server.mps.bean.MPSPaymentManager; import bitel.billing.server.mps.bean.MPSPaymentManager.MPSPaymentList; import bitel.billing.server.util.MailMsg; public class tembrbank extends GlobalScriptBase { @Override public void execute( Setup setup1, ConnectionSet connectionSet2 ) throws Exception { Connection con = connectionSet2.getConnection(); //Calendar date = new GregorianCalendar(2010,3,1); Calendar date = new GregorianCalendar(); date.setTime( new Date() ); date.add( Calendar.DATE, -1 ); Date from = date.getTime(); Date until = null; int type = 3; //номер системы int service = 3; long gr = 0L; int mid = 5; print("find payment for mid="+mid+"; service="+service+"; date="+date.getTime()); MPSPaymentManager manager = MPSPaymentManager.getInstance( service, setup1, mid ); DecimalFormatSymbols dfs = new DecimalFormatSymbols(); dfs.setDecimalSeparator( '.' ); DecimalFormat df = new DecimalFormat( "########0.00##", dfs ); Page page = new Page( 0, 0 ); MPSPaymentList paymentList = manager.getPaymentList( con, mid, service, from, until, type, gr, page ); String separator = ";"; final ByteArrayOutputStream bos = new ByteArrayOutputStream( 1000000 ); ZipOutputStream zos = new ZipOutputStream( bos ); zos.setLevel( -1 ); zos.putNextEntry( new ZipEntry( "payment_"+TimeUtils.format( date.getTime(), "dd_MM_yyyy" ) +".csv" ) ); // PrintStream csvReport = new PrintStream( zos, false, "cp1251" ); int count = 0; for( MPSPayment payment : paymentList.paymentList ) { //номер в система провайдера csvReport.append( String.valueOf( payment.getId()) ); csvReport.append( separator ); //номер в платежной системе csvReport.append( payment.getTransId() ); csvReport.append( separator ); //лицевой счет csvReport.append( payment.getContract() ); csvReport.append( separator ); //сумма csvReport.append( df.format( payment.getSumm() ) ); csvReport.append( separator ); //дата csvReport.append( TimeUtils.format( payment.getTime(), "dd.MM.yyyy HH:mm:ss" ) ); csvReport.append( separator ); //статус String status = payment.getStatus() == 1 ? "0" : "1" ; csvReport.append( status ); csvReport.append( separator ); //комментарий csvReport.append( payment.getComment()==null?"":payment.getComment() ); csvReport.append( separator ); csvReport.append( '\n' ); count++; } csvReport.flush(); zos.closeEntry(); zos.flush(); zos.close(); print("find "+count+" payment"); final String fileName = "payment_"+TimeUtils.format( date.getTime(), "dd_MM_yyyy" ) +".zip"; // MimeBodyPart attach = new MimeBodyPart(); DataSource ds = new DataSource() { public String getContentType() { return "application/zip"; } public InputStream getInputStream() throws IOException { return new ByteArrayInputStream( bos.toByteArray() ); } public String getName() { return fileName; } public OutputStream getOutputStream() throws IOException { return null; } }; // attach.setDataHandler( new DataHandler( ds ) ); attach.setFileName( fileName ); // String fullSubject ="prov "+TimeUtils.format( date.getTime(), "yyyyMMdd" ); // StringBuilder messageBody = new StringBuilder(); messageBody.append( "Отчет по платежам c "+TimeUtils.format( date.getTime(), "dd.MM.yyyy" ) ); sendDetailMail( setup1, fullSubject, messageBody, attach ); } protected void sendDetailMail( DefaultServerSetup setup, String subject, StringBuilder messageBody, MimeBodyPart attach ) throws MessagingException { Multipart m = new MimeMultipart(); if( attach != null ) { m.addBodyPart( attach ); } // String encoding = setup.getStringValue( "mail.encoding", "koi8-r" ); // MimeBodyPart text = new MimeBodyPart(); text.setText( messageBody.toString(), encoding ); m.addBodyPart( text ); MailMsg msg = new MailMsg( setup ); msg.sendMessage( "mail@mail.ru", subject, m ); } } Проблема в том что даже до первого Код: print("find payment for mid="+mid+"; service="+service+"; date="+date.getTime()); не доходит, ошибок не выдает
|
Автор: | Администратор [ 19 сен 2011, 13:17 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
А компилируется класс без ошибок? |
Автор: | skyb [ 19 сен 2011, 14:43 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Администратор писал(а): А компилируется класс без ошибок? угу ![]() |
Автор: | stark [ 20 сен 2011, 15:25 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
skyb писал(а): Код: 75 if ( changed ) 76 { 77 BillingEventBus.publish( new TariffChangedEvent( cid ) ); 78 } а в импортах TariffChangedEvent есть? |
Автор: | skyb [ 21 сен 2011, 06:26 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
stark писал(а): skyb писал(а): Код: 75 if ( changed ) 76 { 77 BillingEventBus.publish( new TariffChangedEvent( cid ) ); 78 } а в импортах TariffChangedEvent есть? Не нашел что именно нужно объявить в javadoc. ![]() Есть библиотека скриптов http://wiki.bgbilling.ru/index.php/%D0% ... 0%B3%D0%B0 Не ругается что метод getID дебрикет, а просто сыпит эрор. Поправить на getId, все работает (в качестве информации, мож кому понадобится). Продублировал в вики |
Автор: | skyb [ 21 сен 2011, 06:43 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Код: 09-21/10:38:53 DEBUG ["http-bio-/0.0.0.0-8080"-exec-4] CommonExecuter - executing bitel.billing.server.contract.action.ActionContractCard2; time => 183 ms. 09-21/10:38:57 ERROR ["http-bio-/0.0.0.0-8080"-exec-4] XSLManager - Error XSLT file card_telenettv_request.xsl java.lang.NullPointerException at ru.bitel.bgbilling.kernel.container.web.action.XSLManager.newTransformer(XSLManager.java:86) at ru.bitel.bgbilling.kernel.container.web.action.XSLManager.getTransformer(XSLManager.java:108) at ru.bitel.bgbilling.kernel.container.web.action.XSLManager.getTransformer(XSLManager.java:170) at ru.bitel.bgbilling.kernel.container.web.action.XSLManager.transform(XSLManager.java:235) at bitel.billing.server.contract.action.ActionContractCard2.doAction(ActionContractCard2.java:126) at bitel.billing.server.Executer.doModule(Unknown Source) at bitel.billing.server.Executer$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at bitel.billing.server.Executer.doPost(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 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:662) Пытаюсь открыть карточку. |
Автор: | skyb [ 21 сен 2011, 13:03 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
stark Спасибо, заработало. Вот скрипт переделанный Код: import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.bean.*; import bitel.billing.server.script.event.*; import java.util.*; import bitel.billing.common.*; import bitel.billing.server.npay.bean.*; import bitel.billing.server.admin.eventbus.event.*; import bitel.billing.server.admin.eventbus.*; import ru.bitel.bgbilling.kernel.tariff.server.event.ContractTariffChangedEvent; private getPrevDate( date ) { Calendar result = new GregorianCalendar(); result.setTime( date ); result.add( Calendar.DAY_OF_YEAR, -1 ); return result; } private void setTariff( cid, tariffId, date ) { ctm = new ContractTariffManager( con ); cm = new ContractManager( con ); t = null; //пытаемся найти на текущий момент тариф list = ctm.getContractTariffList(cid, date); if ( list.size() > 0) { t = list.get(0); } //Если нашли , то закрываем предыдушим днем createNew = true; changed = false; if ( t != null) { if ( t.getDate1() == null || t.getDate1().getTime().compareTo( date ) < 0 ) { print ("close tariff.."); changed = true; Calendar stopDate = getPrevDate( date) ; t.setDate2( stopDate ); ctm.updateContractTariff( t ); } //если открыт сегодняшним числом - ничего не делаем else if ( t.getDate1().getTime().compareTo( date ) == 0 ) { print ("update tariff "); createNew = false; changed = true; t.setTariffPlanId( tariffId ); t.setComment( "создан автоматически" ); ctm.updateContractTariff( t ); } } // создаем новый if ( createNew ) { print ("add new tariff.."); changed = true; t = new ContractTariff(); t.setContractId( cid ); t.setTariffPlanId( tariffId ); t.setPos( 0 ); t.setDate1( TimeUtils.convertDateToCalendar( date ) ); t.setDate2( null ); t.setComment( "создан автоматически" ); ctm.updateContractTariff( t ); } if ( changed ) { ru.bitel.bgbilling.kernel.event.EventProcessor.getInstance().publish( new ContractTariffChangedEvent( cid) );; } } private addNpayModule() { ContractModuleManager manager = new ContractModuleManager( con ); modules = manager.getContractModuleSet( cid ); if ( !modules.contains( NPAY_MID ) ) { ContractModule module = new ContractModule(); module.setContractId( cid ); module.setModuleId( NPAY_MID ); manager.addContractModule( module ); } } private addNPayService( date ) { addNpayModule(); ServiceObjectManager som = new ServiceObjectManager( con, NPAY_MID ) ; services = som.getServiceObjectList( cid, 0, 0, 0 ); object = null; //TODO - переделать так чтобы искал в нужно врменном отрезке, а не последнюю незакрытую if ( services.size() > 0) { //ищем последнюю не закрытую .. Date maxdate = new Date (0 ); for ( ServiceObject o : services ) { if ( o.getDate2() == null && o.getDate1().compareTo( maxdate) >= 0 ) { maxdate = o.getDate1(); object = o; } } } createNew = true; //Если нашли , то закрываем предыдушим днем if ( object != null) { if ( object.getDate1().compareTo( date ) < 0 ) { print ("close pay service..."); Calendar stopDate = getPrevDate( date) ; object.setDate2( stopDate.getTime() ); print ("object.Date2=" + object.getDate2() ); som.updateServiceObject( object ); } //если открыт сегодняшним числом - ничего не делаем else if ( object.getDate1().compareTo( date ) == 0 ) { print ("update pay service..."); createNew = false; object.setComment( "Установлена скриптом" ); som.updateServiceObject( object ); } } if ( createNew ) { // установка абонплаты print ("add pay service..."); object = new ServiceObject(); object.setContractId( cid ); object.setServiceId( PAY_SERVICE ); object.setDate1( date ); object.setComment( "Установлена скриптом" ); som.updateServiceObject( object ); } } private void setStatus( cid, date, statusId ) { status = new ContractStatus(); status.setContractId( cid ); status.setStatus( statusId ); status.setDate1( TimeUtils.convertDateToCalendar( date ) ); status.setComment( "установлен скриптом " ); sm = new ContractStatusManager( con ); sm.changeStatus( status.clone(), USER_ID ); } //id услуги абонплат PAY_SERVICE = 23; NPAY_MID = 4; TARIFF_BASE_ID = 57; //id пользователя от имени которого будет изменяться статус договора USER_ID = 0; service = event.getContractService(); serviceId = service.getServiceId(); cid = event.getContractId(); print ("serviceId=" + serviceId); date = service.getDate().getTime(); switch(serviceId) { //Установка тарифа приостановленный. case 24: setTariff(cid, TARIFF_BASE_ID, date); addNPayService( date ); break; } |
Автор: | supp [ 23 май 2012, 13:46 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Прошу помощи. есть скрипт... работал в версиях от 4.5 до 5.1... в 5.2 выдает ошибку. Скрипт: import bitel.billing.server.contract.bean.*; import bitel.billing.server.util.*; import java.util.*; import java.math.*; VPN_MID = 1; CHARGE_TYPE = 2; bu = new BalanceUtils( con ) ; cm = new ContractManager( con ); chm = new ChargeManager( con ); ctm = new ContractTariffManager( con ); event.setProcessed( true ); if( event.getRequestDate() == null ) { error( "event.requestDate() == null" ); return; } cid = event.getContractID(); contract = cm.getContractByID( cid ); if( contract == null ) { error( "Contract with ID " + cid + " was not found!" ); return; } date_clndr = (Calendar)event.getRequestDate(); date = date_clndr.getTime(); currentTariff = ctm.getContractTariff( cid, date_clndr ); if( currentTariff == null ) { error( "Current tariff was not found!" ); return; } PAY = 0; tpid = currentTariff.getTariffPlanID(); if( tpid == 1 ) { PAY = 350; } else if ( tpid == 2 ) { PAY = 400; } else { error( "Incorrect current tariff!" ); return; } balance = bu.getBalance( date, cid ); if( balance.intValue() < PAY ) { error( "Not enough money to open a period!!" ); return; } charge = new Charge(); charge.setContractID( cid ); charge.setChargeDate( date ); charge.setChargeTypeID( CHARGE_TYPE ); charge.setComment( "абонплата по тарифу за текущий месяц." ); charge.setSumma( new BigDecimal( PAY ) ); chm.updateCharge( "new", charge ); bu.updateBalance( date, cid ); date_start = new GregorianCalendar(); date_start.setTime( date ); date_end = (Calendar)date_start.clone(); date_end.set(Calendar.DATE, date_end.getActualMaximum(Calendar.DATE) ); event.setPeriodStart( date_start ); event.setPeriodEnd( date_end ); print( "PAY = " + PAY ); ошибка: GENERATE_TIME: 23.05.12 09:52:02 EXECUTION_STOP_TIME: 23.05.12 09:52:02 PROCESS_TIME: 32 OUT: EXCEPTIONS: Sourced file: Function [id:1; title:?????????? ?????????] : Error in method invocation: Method updateCharge( java.lang.String, bitel.billing.server.contract.bean.Charge ) not found in class'bitel.billing.server.contract.bean.ChargeManager' : at Line: 157 : in file: Function [id:1; title:?????????? ?????????] : chm .updateCharge ( "new" , charge ) java.util.concurrent.ExecutionException: Sourced file: Function [id:1; title:?????????? ?????????] : Error in method invocation: Method updateCharge( java.lang.String, bitel.billing.server.contract.bean.Charge ) not found in class'bitel.billing.server.contract.bean.ChargeManager' : at Line: 157 : in file: Function [id:1; title:?????????? ?????????] : chm .updateCharge ( "new" , charge ) at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:232) at java.util.concurrent.FutureTask.get(FutureTask.java:91) at ru.bitel.bgbilling.kernel.script.server.ScriptEventListener$ThreadedScriptEventListener.runScript(ScriptEventListener.java:458) at ru.bitel.bgbilling.kernel.script.server.ScriptEventListener.runScript(ScriptEventListener.java:302) at ru.bitel.bgbilling.kernel.script.server.ScriptEventListener.notify(ScriptEventListener.java:271) at ru.bitel.bgbilling.kernel.event.LocalEventProcessor.request(LocalEventProcessor.java:240) at ru.bitel.bgbilling.kernel.event.EventProcessor.request(EventProcessor.java:850) at ru.bitel.bgbilling.kernel.event.EventProcessor.request(EventProcessor.java:819) at bitel.billing.server.processor.dialup.DialUpSessionRealtime.setCalculatePeriod(DialUpSessionRealtime.java:2049) at ru.bitel.bgbilling.modules.dialup.radius.DialUpRadiusProcessor.authorization(DialUpRadiusProcessor.java:741) at ru.bitel.bgbilling.modules.dialup.radius.DialUpRadiusProcessor.authorization(DialUpRadiusProcessor.java:1) at ru.bitel.bgbilling.kernel.network.radius.AbstractRadiusProcessor.authenticationImpl(AbstractRadiusProcessor.java:434) at ru.bitel.bgbilling.modules.dialup.radius.DialUpRadiusProcessor.authenticationImpl(DialUpRadiusProcessor.java:590) at ru.bitel.bgbilling.modules.dialup.radius.DialUpRadiusProcessor.authenticationImpl(DialUpRadiusProcessor.java:1) at ru.bitel.bgbilling.kernel.network.radius.AbstractRadiusProcessor.authentication(AbstractRadiusProcessor.java:207) at ru.bitel.bgbilling.kernel.network.radius.RadiusSession.authentication(RadiusSession.java:115) at ru.bitel.bgbilling.kernel.network.radius.RadiusSession.accessRequest(RadiusSession.java:92) at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequestImpl(RadiusProcessor.java:374) at ru.bitel.bgbilling.kernel.network.radius.AbstractRadiusProcessor.accessRequestImpl(AbstractRadiusProcessor.java:182) at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequest(RadiusProcessor.java:361) at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.accessRequest(RadiusListenerWorker.java:309) at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.processPacket(RadiusListenerWorker.java:189) at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.runImpl(RadiusListenerWorker.java:111) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) 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:662) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40) Caused by: Sourced file: Function [id:1; title:?????????? ?????????] : Error in method invocation: Method updateCharge( java.lang.String, bitel.billing.server.contract.bean.Charge ) not found in class'bitel.billing.server.contract.bean.ChargeManager' : at Line: 157 : in file: Function [id:1; title:?????????? ?????????] : chm .updateCharge ( "new" , charge ) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:77) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.Interpreter.eval(Interpreter.java:653) at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:322) at ru.bitel.bgbilling.kernel.script.server.ScriptEventListener$Worker.runScriptImpl(ScriptEventListener.java:99) at ru.bitel.bgbilling.kernel.script.server.ScriptEventListener.runScript(ScriptEventListener.java:345) at ru.bitel.bgbilling.kernel.script.server.ScriptEventListener$ThreadedScriptEventListener.access$0(ScriptEventListener.java:1) at ru.bitel.bgbilling.kernel.script.server.ScriptEventListener$ThreadedScriptEventListener$1.call(ScriptEventListener.java:446) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) ... 4 more |
Автор: | skyb [ 23 май 2012, 14:14 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Код: chm.updateCharge( "new", charge ); Кажись new убрать полностью нада, или ноль поставить, и да, используйте тег CODE |
Автор: | supp [ 23 май 2012, 14:58 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
неа, непомогает |
Автор: | dimOn [ 23 май 2012, 15:32 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
вообще первый параметр убрать надо. читайте явадоку, там же всё русским по белому: http://bgbilling.ru/v5.2/javadoc/bitel/billing/server/contract/bean/ChargeManager.html#updateCharge(bitel.billing.server.contract.bean.Charge) |
Автор: | supp [ 23 май 2012, 16:02 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
Спасибо за ссыль на доку. Все заработало. |
Автор: | skyb [ 24 май 2012, 00:50 ] |
Заголовок сообщения: | Re: Скрипты и 5.2 |
supp писал(а): Спасибо за ссыль на доку. Все заработало. эээ, а я разве не это сказал? |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |