forum.bitel.ru http://forum.bitel.ru/ |
|
Сгенерировать событие изменения абонплаты из скрипта http://forum.bitel.ru/viewtopic.php?f=19&t=6533 |
Страница 1 из 2 |
Автор: | Феанор [ 06 мар 2012, 15:28 ] |
Заголовок сообщения: | Сгенерировать событие изменения абонплаты из скрипта |
Добрый день. Есть вот такое событие в API: ru.bitel.bgbilling.modules.npay.server.bean.event.ContractNpayChangedEvent, которое наследовано от ru.bitel.bgbilling.kernel.event.Event. Сейчас у меня события из скриптов генерируются вот так: EventProcessor.getProcessor().processEvent(con,new PaymentEvent(-1, payment)); где евентпроцессор это bitel.billing.server.script.bean.event.EventProcessor, а обрабатывает он событие из bitel.billing.server.script.bean.event.Event. Т.е. им обработать событие изменения абонплаты не получается. Процессором ru.bitel.bgbilling.kernel.event.EventProcessor вроде не ругается, но ничего и не обрабатывает EventProcessor.getInstance().publish(contractNpayChangedEvent); Вопрос. Как мне сгенерировать событие? Добавляю ServiceObject через ServiceObjectManager. Нужно сразу сделать начисления. Ай нид хэлп. |
Автор: | dimOn [ 06 мар 2012, 15:40 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
версии |
Автор: | Феанор [ 06 мар 2012, 15:43 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
5.1 Ну или как инициировать пересчет абонплат по договору за указанный месяц? Как то же работает начислятор абонплат. Хотя событием (имхо) правильнее и красивее. |
Автор: | Феанор [ 11 мар 2012, 14:13 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
up |
Автор: | stark [ 12 мар 2012, 21:39 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Феанор писал(а): 5.1 Ну или как инициировать пересчет абонплат по договору за указанный месяц? Как то же работает начислятор абонплат. Хотя событием (имхо) правильнее и красивее. Инициировать через событие не получится . Оно для обработки скриптами только используется . Чтобы инициировать , нужно калькулятор запустить. |
Автор: | Феанор [ 13 мар 2012, 07:55 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
stark писал(а): Феанор писал(а): 5.1 Ну или как инициировать пересчет абонплат по договору за указанный месяц? Как то же работает начислятор абонплат. Хотя событием (имхо) правильнее и красивее. Инициировать через событие не получится . Оно для обработки скриптами только используется . Чтобы инициировать , нужно калькулятор запустить. ок, подскажите, плз, как?:) Задача следующая - через скрипт добавляется/изменяется/удаляется АП, хочу чтобы корректировка баланса (читай переначисление) для договора по которому шла модификация произошла сразу а не ночью. Через клиента все проходит, через скрипт не знаю как. |
Автор: | Universe [ 13 мар 2012, 12:13 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Феанор писал(а): stark писал(а): Феанор писал(а): 5.1 ок, подскажите, плз, как?:) Задача следующая - через скрипт добавляется/изменяется/удаляется АП, хочу чтобы корректировка баланса (читай переначисление) для договора по которому шла модификация произошла сразу а не ночью. Через клиента все проходит, через скрипт не знаю как. Я тоже хочу, чтобы сразу было переначисление в этом же скрипте синхронизации услуг. (Скрипт брала на WIKI, автор Skyb) |
Автор: | stark [ 13 мар 2012, 13:53 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
http://wiki.bgbilling.ru/index.php/%D0% ... D0%B5_NPay |
Автор: | skyb [ 13 мар 2012, 15:54 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Universe писал(а): Феанор писал(а): stark писал(а): Феанор писал(а): 5.1 ок, подскажите, плз, как?:) Задача следующая - через скрипт добавляется/изменяется/удаляется АП, хочу чтобы корректировка баланса (читай переначисление) для договора по которому шла модификация произошла сразу а не ночью. Через клиента все проходит, через скрипт не знаю как. Я тоже хочу, чтобы сразу было переначисление в этом же скрипте синхронизации услуг. (Скрипт брала на WIKI, автор Skyb) ненене, автор Akhmat, я лишь стараюсь поддерживать его |
Автор: | Universe [ 14 мар 2012, 10:31 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
stark писал(а): http://wiki.bgbilling.ru/index.php/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA_%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%B0%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5_NPay Это я видела, спасибо. А как здесь указать, чтобы пересчитывались не все договора, а только тот, у которого сработал скрипт синхронизации? И ещё вопрос: Перерасчёт лучше запускать отдельным скриптом на те же события или добавить в Синхронизацию можно? |
Автор: | stark [ 14 мар 2012, 11:38 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Universe писал(а): А как здесь указать, чтобы пересчитывались не все договора, а только тот, у которого сработал скрипт синхронизации? В переменной cids через запятую указать id договоров. Universe писал(а): И ещё вопрос: Перерасчёт лучше запускать отдельным скриптом на те же события или добавить в Синхронизацию можно? как хотите. |
Автор: | Феанор [ 14 мар 2012, 13:40 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
stark писал(а): http://wiki.bgbilling.ru/index.php/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA_%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%B0%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5_NPay Ага, а я этого не видел, искал события. Работает. Спасибо |
Автор: | Universe [ 05 апр 2012, 12:35 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Феанор писал(а): Ага, а я этого не видел, искал события. Работает. Спасибо Подскажите, пожалуйста, как он у Вас работает? Что писать в строке cids = ""; чтобы пересчитывался только тот договор на котором скрипт срабатывает?: Плохо у меня со скриптами. ( |
Автор: | skyb [ 05 апр 2012, 13:13 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Universe писал(а): Феанор писал(а): Ага, а я этого не видел, искал события. Работает. Спасибо Подскажите, пожалуйста, как он у Вас работает? Что писать в строке cids = ""; чтобы пересчитывался только тот договор на котором скрипт срабатывает?: Плохо у меня со скриптами. ( Я жеж написал - примерно так, не уверен, не проверял Код: import bitel.billing.server.task.bean.*;
import bitel.billing.server.npay.*; import java.util.*; NPAY_MID = <число с кодом экземпляра модуля>; // можно указать через запятую конкретные коды договоров, пустая строка - все договора // месяц за который идёт перерасчёт date = new GregorianCalendar(); // EMail для отправки отчёта о завершении начисления email = null; // набор услуг, 0- все услуги serviceSet = 0; new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, date, email, serviceSet, event.getContractId() ) ); |
Автор: | Universe [ 05 апр 2012, 14:20 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
skyb писал(а): Universe писал(а): Феанор писал(а): Ага, а я этого не видел, искал события. Работает. Спасибо Подскажите, пожалуйста, как он у Вас работает? Что писать в строке cids = ""; чтобы пересчитывался только тот договор на котором скрипт срабатывает?: Плохо у меня со скриптами. ( Я жеж написал - примерно так, не уверен, не проверял Код: import bitel.billing.server.task.bean.*; import bitel.billing.server.npay.*; import java.util.*; NPAY_MID = <число с кодом экземпляра модуля>; // можно указать через запятую конкретные коды договоров, пустая строка - все договора // месяц за который идёт перерасчёт date = new GregorianCalendar(); // EMail для отправки отчёта о завершении начисления email = null; // набор услуг, 0- все услуги serviceSet = 0; new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, date, email, serviceSet, event.getContractId() ) ); Не работает! Феанор, Ваш работающий скрипт покажите, пожалуйста. |
Автор: | skyb [ 05 апр 2012, 15:15 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Universe писал(а): Не работает! оппа, а так в явадок нету описания, а даже если подставлять тупо цифры не работает О_о |
Автор: | Феанор [ 06 апр 2012, 11:05 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Universe писал(а): Не работает! Феанор, Ваш работающий скрипт покажите, пожалуйста. Код: new RunTaskDataManager( con ).addTask( new Recalculator( MIDAP, Calendar.getInstance(), "", 1, Integer.toString(cid) ) ); вы в последний аргумент event.getContractId() передавали, это int, а нужно String... там список договоров через запятую вообще передаваться может - "1,2,3". Если просто один то "1". |
Автор: | skyb [ 06 апр 2012, 11:50 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Феанор писал(а): Universe писал(а): Не работает! Феанор, Ваш работающий скрипт покажите, пожалуйста. Код: new RunTaskDataManager( con ).addTask( new Recalculator( MIDAP, Calendar.getInstance(), "", 1, Integer.toString(cid) ) ); вы в последний аргумент event.getContractId() передавали, это int, а нужно String... там список договоров через запятую вообще передаваться может - "1,2,3". Если просто один то "1". Код: bitel.billing.server.npay.Recalculator( int, java.util.GregorianCalendar, null, int, int ) in class: bitel.billing.server.npay.Recalculator чегота я не понимаю |
Автор: | Phricker [ 06 апр 2012, 12:07 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
skyb писал(а): чегота я не понимаю офк не понимаешь. у Феанора 5.1 если мне память не изменяет. А у нас 5.2 И в случае с этим мы ловим Код: EXCEPTIONS: Constructor error: Can't find constructor: bitel.billing.server.npay.Recalculator( int, java.util.GregorianCalendar, java.lang.String, int, java.lang.String ) in class: bitel.billing.server.npay.Recalculator А дока по API рулит и педалит. Надо разрабов ждать, чтобы сказали что туда передавать. Я уже все что можно попробовал ![]() |
Автор: | skyb [ 06 апр 2012, 12:10 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Phricker писал(а): skyb писал(а): чегота я не понимаю офк не понимаешь. у Феанора 5.1 если мне память не изменяет. А у нас 5.2 И в случае с этим мы ловим Код: EXCEPTIONS: Constructor error: Can't find constructor: bitel.billing.server.npay.Recalculator( int, java.util.GregorianCalendar, java.lang.String, int, java.lang.String ) in class: bitel.billing.server.npay.Recalculator А дока по API рулит и педалит. Надо разрабов ждать, чтобы сказали что туда передавать. Я уже все что можно попробовал ![]() Декомпильнуть класс чтоль ![]() |
Автор: | Феанор [ 06 апр 2012, 13:35 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
skyb писал(а): Phricker писал(а): skyb писал(а): чегота я не понимаю офк не понимаешь. у Феанора 5.1 если мне память не изменяет. А у нас 5.2 И в случае с этим мы ловим Код: EXCEPTIONS: Constructor error: Can't find constructor: bitel.billing.server.npay.Recalculator( int, java.util.GregorianCalendar, java.lang.String, int, java.lang.String ) in class: bitel.billing.server.npay.Recalculator А дока по API рулит и педалит. Надо разрабов ждать, чтобы сказали что туда передавать. Я уже все что можно попробовал ![]() Декомпильнуть класс чтоль ![]() ну у меня 5.1, да, невнимательно смотрел ) |
Автор: | aardvark [ 06 апр 2012, 13:55 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
skyb писал(а): Phricker писал(а): skyb писал(а): чегота я не понимаю офк не понимаешь. у Феанора 5.1 если мне память не изменяет. А у нас 5.2 И в случае с этим мы ловим Код: EXCEPTIONS: Constructor error: Can't find constructor: bitel.billing.server.npay.Recalculator( int, java.util.GregorianCalendar, java.lang.String, int, java.lang.String ) in class: bitel.billing.server.npay.Recalculator А дока по API рулит и педалит. Надо разрабов ждать, чтобы сказали что туда передавать. Я уже все что можно попробовал ![]() Декомпильнуть класс чтоль ![]() А через скажем Reflection получить параметры конструктора не легче будет? Вот тут даже старый годный пример. http://java.sun.com/developer/technical ... eflection/ Это конечно если очень хочется. |
Автор: | aardvark [ 06 апр 2012, 15:38 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Вобщем reflection o классе говорит следущее Код: *** Constructors *** public bitel.billing.server.npay.Recalculator(int, java.util.Calendar, java.lang.String, int, java.lang.String, java.lang.String) *** Methods *** public void bitel.billing.server.npay.Recalculator.executeTask() public java.lang.String bitel.billing.server.task.bean.RunTaskRecalculator.getDescription() public final void bitel.billing.server.task.bean.RunTask.run() public void bitel.billing.server.task.bean.RunTask.init(ru.bitel.bgbilling.server.util.Setup) public void bitel.billing.server.task.bean.RunTask.setQueueId(int) public int bitel.billing.server.task.bean.RunTask.getQueueId() public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException public final void java.lang.Object.wait() throws java.lang.InterruptedException public boolean java.lang.Object.equals(java.lang.Object) public java.lang.String java.lang.Object.toString() public native int java.lang.Object.hashCode() public final native java.lang.Class java.lang.Object.getClass() public final native void java.lang.Object.notify() public final native void java.lang.Object.notifyAll() То есть в конце надо еще один string какойта. |
Автор: | dimOn [ 09 апр 2012, 11:44 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Есть и такой и такой в 5.1 public Recalculator( int mid, Calendar dt, String email, int serviceSet, String cids ) public Recalculator( int mid, Calendar dt, String email, int serviceSet, String cids, String comment ) в 5.2 только второй |
Автор: | Phricker [ 09 апр 2012, 11:55 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Код: public void onEvent( event, setup, con, conSlave ) { //print( event ) ; int NPAY_MID = 3 ; SidsSynchroManager sidman = new SidsSynchroManager() ; int cid = event.getContractId() ; //sidman.setDebugMode(0) ; sidman.setDeleteNonNeeded(1) ; sidman.setNpayMid(NPAY_MID) ; sidman.notSynchronizeServices("10"); sidman.synchronizeServices( cid, con ) ; // месяц за который идёт перерасчёт dateTask = new GregorianCalendar(); // набор услуг, 0- все услуги serviceSet = 0; new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, dateTask, "null", serviceSet, Integer.toString(cid), "" ) ); } Работает чо ![]() |
Автор: | Universe [ 09 апр 2012, 12:09 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Phricker писал(а): Работает чо ![]() И у меня работает! ![]() ![]() ![]() |
Автор: | Universe [ 10 апр 2012, 09:44 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Только лучше вот так писать: Код: email = null;
new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, date, email, serviceSet, Integer.toString(cid), "" ) ); |
Автор: | Phricker [ 10 апр 2012, 09:57 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Universe писал(а): Только лучше вот так писать: Код: email = null; new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, date, email, serviceSet, Integer.toString(cid), "" ) ); Угу. Тогда уж так, если придираться xD И если email не обрамлять в кавычки - и туда написать реальный email. Будет ругаться на @ Код: email = null;
comment = ""; new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, date, email, serviceSet, Integer.toString(cid), comment ) ); |
Автор: | stark [ 13 апр 2012, 17:07 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Добавил Recalculator в javadoc. |
Автор: | Phricker [ 17 июл 2012, 23:26 ] |
Заголовок сообщения: | Re: Сгенерировать событие изменения абонплаты из скрипта |
Добавлю 5 копеек. В случае если указывать null вместо e-mail'а Код: new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, dateTask, "null", serviceSet, Integer.toString(cid), "" ) ); при смене тарифа временами может выскочить ошибка в scheduler.error.log Код: scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - javax.mail.SendFailedException: Invalid Addresses; nested exception is: com.sun.mail.smtp.SMTPAddressFailedException: 553-5.1.2 We weren't able to find the recipient domain. Please check for any 553-5.1.2 spelling errors, and make sure you didn't enter any spaces, periods, 553 5.1.2 or other punctuation after the recipient's email address. gv8sm19401803lab.14 scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1446) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:736) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at javax.mail.Transport.send0(Transport.java:191) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at javax.mail.Transport.send(Transport.java:120) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at bitel.billing.server.util.MailMsg.sendMessage(MailMsg.java:131) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at bitel.billing.server.util.MailMsg.sendMessage(MailMsg.java:110) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at bitel.billing.server.npay.Recalculator.executeTask(Recalculator.java:69) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at bitel.billing.server.task.bean.RunTask.run(RunTask.java:41) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at java.lang.Thread.run(Thread.java:662) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 553-5.1.2 We weren't able to find the recipient domain. Please check for any 553-5.1.2 spelling errors, and make sure you didn't enter any spaces, periods, 553 5.1.2 or other punctuation after the recipient's email address. gv8sm19401803lab.14 scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1297) scheduler 07-17/21:07:14 ERROR [pool-1-thread-4] LoggingPrintStream - ... 10 more Причем e-mail меняется временами Код: 553 5.1.2 or other punctuation after the recipient's email address. jj5sm19090830lab.1 553 5.1.2 or other punctuation after the recipient's email address. d3sm4161314lbh.3 553 5.1.2 or other punctuation after the recipient's email address. d3sm4161314lbh.3 553 5.1.2 or other punctuation after the recipient's email address. n7sm4180790lbk.10 553 5.1.2 or other punctuation after the recipient's email address. n7sm4180790lbk.10 553 5.1.2 or other punctuation after the recipient's email address. i4sm4178229lbg.17 553 5.1.2 or other punctuation after the recipient's email address. i4sm4178229lbg.17 553 5.1.2 or other punctuation after the recipient's email address. j5sm4188509lbg.1 553 5.1.2 or other punctuation after the recipient's email address. j5sm4188509lbg.1 553 5.1.2 or other punctuation after the recipient's email address. u10sm4183337lbm.14 553 5.1.2 or other punctuation after the recipient's email address. u10sm4183337lbm.14 553 5.1.2 or other punctuation after the recipient's email address. b3sm4189214lbh.6 553 5.1.2 or other punctuation after the recipient's email address. b3sm4189214lbh.6 553 5.1.2 or other punctuation after the recipient's email address. s3sm4187483lbk.11 553 5.1.2 or other punctuation after the recipient's email address. s3sm4187483lbk.11 553 5.1.2 or other punctuation after the recipient's email address. er3sm4185993lbb.16 Поменял на рабочий спам ящик - пока пусто в логе. |
Страница 1 из 2 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |