forum.bitel.ru http://forum.bitel.ru/ |
|
Текущий статус договора в скрипте http://forum.bitel.ru/viewtopic.php?f=22&t=5439 |
Страница 1 из 2 |
Автор: | mikos [ 29 апр 2011, 22:41 ] |
Заголовок сообщения: | Текущий статус договора в скрипте |
Добрый вечер. Подскажите пожалуйста, что я не так делаю? Хочу сделать скрипт, который при изменении статуса договора будет группы договоров разные ставить. Все бы хорошо, но не могу текущий статус договора взять: Код: cpu = new ContractParamUtils( con ); cid = event.getContractId(); DateNow = new GregorianCalendar(); now = DateNow.getTime(); csm = new ContractStatusManager(con); StatusContract = csm.getStatus(cid,now); if (StatusContract == null) { print("Не удалось получить статус договора"); return; } StatusContract всегда null. Список статусов тоже пытался брать - та же фигня -- ни одного статуса не возвращается. Что не так? |
Автор: | Phricker [ 30 апр 2011, 01:00 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса Спасибо пожалуйста ![]() |
Автор: | skn [ 30 апр 2011, 02:04 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
может доки почитать? (http://www.bgbilling.ru/v5.1/javadoc/bi ... nager.html) Код: getStatus(int cid, java.util.Date date)
Возвращает статус договора на какую-то дату, если записи нет, статус по-умолчанию - "активен" (отсюда вернётся null). |
Автор: | mikos [ 30 апр 2011, 02:08 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
skn писал(а): может доки почитать? (http://www.bgbilling.ru/v5.1/javadoc/bi ... nager.html) Код: getStatus(int cid, java.util.Date date) Возвращает статус договора на какую-то дату, если записи нет, статус по-умолчанию - "активен" (отсюда вернётся null). В том то и дело, что статусов у договораа хоть отбавляй и почему он их не показываает не понятноо. |
Автор: | mikos [ 30 апр 2011, 02:09 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
Phricker писал(а): http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса Спасибо пожалуйста ![]() Этот код не работает по крайней мере на 5.1 |
Автор: | skyb [ 30 апр 2011, 04:16 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
mikos писал(а): Phricker писал(а): http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса Спасибо пожалуйста ![]() Этот код не работает по крайней мере на 5.1 а что пишет? почему не работает? |
Автор: | mikos [ 30 апр 2011, 10:40 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
skyb писал(а): mikos писал(а): Phricker писал(а): http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса Спасибо пожалуйста ![]() Этот код не работает по крайней мере на 5.1 а что пишет? почему не работает? вссе тоже самое - возвращает null на статус |
Автор: | skyb [ 30 апр 2011, 10:53 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
mikos писал(а): skyb писал(а): mikos писал(а): Phricker писал(а): http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса Спасибо пожалуйста ![]() Этот код не работает по крайней мере на 5.1 а что пишет? почему не работает? вссе тоже самое - возвращает null на статус а можно логи чтоль. |
Автор: | Phricker [ 30 апр 2011, 13:39 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
В оригинале Код: GENERATE_TIME: 30.04.11 11:28:56 EXECUTION_STOP_TIME: 30.04.11 11:28:56 PROCESS_TIME: 164 OUT: EXCEPTIONS: Sourced file: Function [id:38; title:смена статуса] : at Line: 19 : in file: Function [id:38; title:смена статуса] : status .getStatus ( ) Target exception: java.lang.NullPointerException: Null Pointer in Method Invocation java.util.concurrent.ExecutionException: Sourced file: Function [id:38; title:смена статуса] : at Line: 19 : in file: Function [id:38; title:смена статуса] : status .getStatus ( ) Target exception: java.lang.NullPointerException: Null Pointer in Method Invocation 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:371) at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:129) at bitel.billing.server.script.bean.event.EventProcessor.processContractEvent(EventProcessor.java:313) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:231) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:199) at bitel.billing.server.contract.bean.ContractStatusManager.changeStatus(ContractStatusManager.java:467) at bitel.billing.server.contract.bean.ContractStatusManager.changeStatus(ContractStatusManager.java:301) at bitel.billing.server.contract.status.action.ActionContractStatusChange.doAction(ActionContractStatusChange.java:46) at bitel.billing.server.Executer.doModule(Unknown Source) at bitel.billing.server.Executer.doPost(Unknown Source) 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:662) Caused by: Sourced file: Function [id:38; title:смена статуса] : at Line: 19 : in file: Function [id:38; title:смена статуса] : status .getStatus ( ) Target exception: java.lang.NullPointerException: Null Pointer in Method Invocation at bsh.UtilTargetError.toEvalError(UtilTargetError.java:70) at bsh.UtilEvalError.toEvalError(UtilEvalError.java:90) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:99) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.Interpreter.eval(Interpreter.java:653) at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:352) at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:70) at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:190) 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:361) 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) ... 1 more Вот так Код: 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); if (status != KernelConst.CONTRACT_STATUS_ACTIVE) { cpu.setGroup( cid, 0 );//где 0 это код группы } if (status == KernelConst.CONTRACT_STATUS_ACTIVE) { cpu.unsetGroup( cid, 0 ); }; Работает с парой варнингов на устаревшие методы Код: WARNINGS:
Function [id:38; title:смена статуса]: using deprecated method [public bitel.billing.server.contract.bean.Contract bitel.billing.server.contract.bean.ContractManager.getContractByID(int)] Function [id:38; title:смена статуса]: using deprecated method [public bitel.billing.server.contract.bean.ContractStatus bitel.billing.server.contract.bean.ContractStatusManager.getStatus(int,java.util.Calendar)] Function [id:38; title:смена статуса]: using deprecated method [public int bitel.billing.server.script.bean.event.Event.getContractID()] |
Автор: | Phricker [ 30 апр 2011, 13:40 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
Если будет работать - добавлю в вики, как скрипт для 5.1 |
Автор: | mikos [ 30 апр 2011, 22:06 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
Те же грабли - всегда null возвращается статусу (все как по документации ![]() Код: 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); print("Status: "+status+"\n"); if (status != KernelConst.CONTRACT_STATUS_ACTIVE) { print("В группу Недостаточно средств\n"); cpu.setGroup( cid, 1 );//где 0 это код группы } if (status == KernelConst.CONTRACT_STATUS_ACTIVE) { print("Из группы Недостаточно средств\n"); cpu.unsetGroup( cid, 1 ); } Смена статуса раз Код: GENERATE_TIME: 30.04.11 19:54:41 EXECUTION_STOP_TIME: 30.04.11 19:54:41 PROCESS_TIME: 2 OUT: Status: null В группу Недостаточно средств WARNINGS: Function [id:48; title:Изменение группы в соотетствии со статусом]: using deprecated method [public int bitel.billing.server.script.bean.event.Event.getContractID()] Function [id:48; title:Изменение группы в соотетствии со статусом]: using deprecated method [public bitel.billing.server.contract.bean.ContractStatus bitel.billing.server.contract.bean.ContractStatusManager.getStatus(int,java.util.Calendar)] Смена статуса два Код: GENERATE_TIME: 30.04.11 20:01:24 EXECUTION_STOP_TIME: 30.04.11 20:01:24 PROCESS_TIME: 3 OUT: Status: null В группу Недостаточно средств WARNINGS: Function [id:48; title:Изменение группы в соотетствии со статусом]: using deprecated method [public int bitel.billing.server.script.bean.event.Event.getContractID()] Function [id:48; title:Изменение группы в соотетствии со статусом]: using deprecated method [public bitel.billing.server.contract.bean.ContractStatus bitel.billing.server.contract.bean.ContractStatusManager.getStatus(int,java.util.Calendar)] Статусы есть, специально снял скриншот. Почему он null то возвращает? |
Автор: | Phricker [ 01 май 2011, 03:01 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
Хмммм... Странно. У меня группа ставится, но не снимается. всегда возвращается null. Поглядим. Вопрос: Вам для чего это необходимо? Для того чтобы работать с должниками? Не будет ли более удобным функционал Монитор статуса??? Листать в конец |
Автор: | dimOn [ 03 май 2011, 12:10 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
mikos писал(а): skn писал(а): может доки почитать? (http://www.bgbilling.ru/v5.1/javadoc/bi ... nager.html) Код: getStatus(int cid, java.util.Date date) Возвращает статус договора на какую-то дату, если записи нет, статус по-умолчанию - "активен" (отсюда вернётся null). В том то и дело, что статусов у договораа хоть отбавляй и почему он их не показываает не понятноо. Вы уверены, что правильный cid берёте? Вот эта функция Код: public List<ContractStatus> getStatusList( int cid ) делает просто Код: "SELECT * FROM contract_status WHERE cid=? ORDER BY date1"; ну никак она не может вернуть пустой список, если в клиенте показывается список |
Автор: | dimOn [ 03 май 2011, 12:18 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
переделайте вот так: Код: ContractParamUtils cpu = new ContractParamUtils( con ); int cid = event.getContractId(); java.util.Date DateNow = new java.util.Date(); Contract contract = new ContractManager(con).getContractById(cid); ContractStatusManager contract_status_manager = new ContractStatusManager(con); ContractStatus status = contract_status_manager.getStatus(cid, DateNow); print("Status: "+status+"\n"); print("cid: "+cid+"\n"); if (status != KernelConst.CONTRACT_STATUS_ACTIVE) { print("В группу Недостаточно средств\n"); cpu.setGroup( cid, 1 );//где 0 это код группы } if (status == KernelConst.CONTRACT_STATUS_ACTIVE) { print("Из группы Недостаточно средств\n"); cpu.unsetGroup( cid, 1 ); } так без депрекейтов и выводит нужный cid |
Автор: | dimOn [ 03 май 2011, 12:24 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
И ещё, вот это вот: Код: if (status != KernelConst.CONTRACT_STATUS_ACTIVE) { совершенно бессмысленно, ибо status - это объект ContractStatus, а сравниваете вы его с целочисленной константой. Надо делать getStatus() у status, чтобы получить целый код, а потом сравнивать. Но сначала надо проверить не null ли status. А так как нулл у status означает у нас. что статуса в истории статусов нет => статус догоовра active => считать, что это тоже active. Т.е. последний код превращается во что-то такое (обратите внимание переставил два блока кода), проверкой на null мы заодно защищаемся от NPE: Код: if (status == null || status.getStatus() == KernelConst.CONTRACT_STATUS_ACTIVE) {
// если статуса не было (нулл) или у сущесвующего код active то делаем что-то: print("Из группы Недостаточно средств\n"); cpu.unsetGroup( cid, 1 ); } else { // во всех остальных случаях (статус есть и он не active) print("В группу Недостаточно средств\n"); cpu.setGroup( cid, 1 );//где 0 это код группы } |
Автор: | mikos [ 03 май 2011, 12:35 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
dimOn писал(а): И ещё, вот это вот: Код: if (status != KernelConst.CONTRACT_STATUS_ACTIVE) { совершенно бессмысленно, ибо status - это объект ContractStatus, а сравниваете вы его с целочисленной константой. Надо делать getStatus() у status, чтобы получить целый код, а потом сравнивать. Но сначала надо проверить не null ли status. А так как нулл у status означает у нас. что статуса в истории статусов нет => статус догоовра active => считать, что это тоже active. Т.е. последний код превращается во что-то такое (обратите внимание переставил два блока кода), проверкой на null мы заодно защищаемся от NPE: Код: if (status == null || status.getStatus() == KernelConst.CONTRACT_STATUS_ACTIVE) { // если статуса не было (нулл) или у сущесвующего код active то делаем что-то: print("Из группы Недостаточно средств\n"); cpu.unsetGroup( cid, 1 ); } else { // во всех остальных случаях (статус есть и он не active) print("В группу Недостаточно средств\n"); cpu.setGroup( cid, 1 );//где 0 это код группы } Это все понятно. На null я проверяю (начало топика), а статусы у договора есть (несколько сообщений выше скриншоты), поэтому и не понятно откуда нам постоянно null берется. |
Автор: | dimOn [ 03 май 2011, 12:43 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
Ну запрос списка то возвращает что-нибудь по этому cid? Запрос отдельного статуса работает точно так же, только проверяет date1 и date2, что они попадают периодом на переданную дату, так что тоже странно. Скорее всего вы что-то не то туда предаёте… |
Автор: | mikos [ 03 май 2011, 13:06 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
dimOn писал(а): Ну запрос списка то возвращает что-нибудь по этому cid? Запрос отдельного статуса работает точно так же, только проверяет date1 и date2, что они попадают периодом на переданную дату, так что тоже странно. Скорее всего вы что-то не то туда предаёте… Тоже хотелось бы разобраться, что я не так делаю. Вещь нужная и нужна думаю многим. Хотя что там можно сделать не так - ума не приложу ![]() Код: cpu = new ContractParamUtils( con );
cid = event.getContractId(); DateNow = new GregorianCalendar(); now = DateNow.getTime(); csm = new ContractStatusManager(con); // определяем текущий статус договора StatusContractList = csm.getStatusList(cid, now); if (StatusContractList.size() == 0) { print("Не удалось получить ни одного статуса договора"); return; } StatusContract = StatusContractList.get(0); print("StatusContract.getStatus():"+StatusContract.getStatus() ); |
Автор: | dimOn [ 03 май 2011, 13:52 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
Код: // определяем текущий статус договора StatusContractList = csm.getStatusList(cid, now); if (StatusContractList.size() == 0) { print("Не удалось получить ни одного статуса договора"); return; } StatusContract = StatusContractList.get(0); print("StatusContract.getStatus():"+StatusContract.getStatus() ); Нет! Попробуйте не эту getStatusList, а которая без даты, просто с cid одним. Если у вас список выдаётся null, как вы утверждаете, то этот скрипт у вас будет падать напрочь и ничего не выводить, потому что проверка StatusContractList.size() == 0 вызовет NPE! Не путайте "вернул null" и "вернул пустой список", это совершенно разные случаи. |
Автор: | dimOn [ 03 май 2011, 13:53 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
Физически методы getStatusList не могут вернуть null, ни тот ни этот, там внутри в любом случае создаётся ArrayList и возвращается, даже если туда ни одного элемента не добавлено. |
Автор: | mikos [ 03 май 2011, 14:00 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
dimOn писал(а): Физически методы getStatusList не могут вернуть null, ни тот ни этот, там внутри в любом случае создаётся ArrayList и возвращается, даже если туда ни одного элемента не добавлено. По поводу листа не так выразился, сорри. Возвращается ноль элементов, отрабатывает блок: Код: if (StatusContractList.size() == 0) {
|
Автор: | dimOn [ 03 май 2011, 14:59 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
ну попробуйте без даты который метод List<ContractStatus> StatusContractList = csm.getStatusList(cid); так что возвращает? вы понимаете зачем там параметр дата вообще? Это дата, НАЧИНАЯ С КОТОРОЙ выбираются статусы. Т.е. текущий момент если передадите, то отдастся последний открытый период, если он есть. Или все будущие периоды статусов. |
Автор: | skyb [ 03 май 2011, 16:07 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
dimOn писал(а): ну попробуйте без даты который метод List<ContractStatus> StatusContractList = csm.getStatusList(cid); так что возвращает? вы понимаете зачем там параметр дата вообще? Это дата, НАЧИНАЯ С КОТОРОЙ выбираются статусы. Т.е. текущий момент если передадите, то отдастся последний открытый период, если он есть. Или все будущие периоды статусов. вот поэтому мне нужно было и без даты.... многим нужно? Да. я не понимаю, как так не получается, просто 5.1 ставить неохото, и так дел много, но я не думаю что все так плохо, что многое изменилось в 5.1 и переделать там (возможно?) только дебрикейты, а остальное должно работать....я присоеденяюсь к мнению, что делаете что то не так. |
Автор: | dimOn [ 03 май 2011, 16:30 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
Я ничо не понял, кому что нужно итд. Вы хотите одно, а пишете в коде другое, при этом приводите вообще изначально нерабочий код и не можете объяснить ни что хотите, ни что имеете ![]() |
Автор: | mikos [ 03 май 2011, 16:49 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
dimOn писал(а): ну попробуйте без даты который метод List<ContractStatus> StatusContractList = csm.getStatusList(cid); так что возвращает? вы понимаете зачем там параметр дата вообще? Это дата, НАЧИНАЯ С КОТОРОЙ выбираются статусы. Т.е. текущий момент если передадите, то отдастся последний открытый период, если он есть. Или все будущие периоды статусов. Без даты уже лучше - всегда статус 4 возвращается. Статус у абонента меняю ручками одним и тем же днем с приостановленного на активен и обратно. Код: cpu = new ContractParamUtils( con ); cid = event.getContractId(); DateNow = new GregorianCalendar(); now = DateNow.getTime(); csm = new ContractStatusManager(con); // определяем текущий статус договора StatusContractList = csm.getStatusList(cid); if (StatusContractList.size() == 0) { print("Не удалось получить ни одного статуса договора"); return; } StatusContract = StatusContractList.get(0); print("StatusContract.getStatus():"+StatusContract.getStatus() ); Код: GENERATE_TIME: 03.05.11 14:45:25 EXECUTION_STOP_TIME: 03.05.11 14:45:25 PROCESS_TIME: 20 OUT: StatusContract.getStatus():4 Код: GENERATE_TIME: 03.05.11 14:45:37
EXECUTION_STOP_TIME: 03.05.11 14:45:37 PROCESS_TIME: 1 OUT: StatusContract.getStatus():4 |
Автор: | skyb [ 03 май 2011, 18:02 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
dimOn писал(а): Я ничо не понял, кому что нужно итд. Вы хотите одно, а пишете в коде другое, при этом приводите вообще изначально нерабочий код и не можете объяснить ни что хотите, ни что имеете ![]() на 5.0 у меня все работает идеально ![]() |
Автор: | dimOn [ 04 май 2011, 11:16 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
mikos писал(а): Без даты уже лучше - всегда статус 4 возвращается. Статус у абонента меняю ручками одним и тем же днем с приостановленного на активен и обратно. Без даты должны вернуться все те периоды статусов, что у вас на картинке (их там по крайней мере 10), а не один статус. Или вы просто реально что-то не то делаете, например не тот cid передаёте. |
Автор: | mikos [ 04 май 2011, 13:17 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
dimOn писал(а): mikos писал(а): Без даты уже лучше - всегда статус 4 возвращается. Статус у абонента меняю ручками одним и тем же днем с приостановленного на активен и обратно. Без даты должны вернуться все те периоды статусов, что у вас на картинке (их там по крайней мере 10), а не один статус. Или вы просто реально что-то не то делаете, например не тот cid передаёте. Как я могу делать что-то не то, если код, весь до строчки, перед Вами? ![]() Хорошо, я понял - попробую обновиться и посмотреть все что возвращается в листе, а не только последний элемент - может чего прояснится. Спасибо за помощь. |
Автор: | dimOn [ 04 май 2011, 13:21 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
ну разумеется Код: StatusContract = StatusContractList.get(0); возвращает блин один статус, потмоу что вы из списка берёте первый статус что там есть и выводите его в консоль.
print("StatusContract.getStatus():"+StatusContract.getStatus() ); |
Автор: | mikos [ 04 май 2011, 13:52 ] |
Заголовок сообщения: | Re: Текущий статус договора в скрипте |
dimOn писал(а): ну разумеется Код: StatusContract = StatusContractList.get(0); возвращает блин один статус, потмоу что вы из списка берёте первый статус что там есть и выводите его в консоль.print("StatusContract.getStatus():"+StatusContract.getStatus() ); Я почему-то думал, что нулевой элемент - это последний. Ок, смотрите - почему не выводится последний статус с открытой датой getDateTo? Стоит же статус Приостановлен с 1.05. Почему он только предыдущий вывел? Код: cpu = new ContractParamUtils( con ); cid = event.getContractId(); DateNow = new GregorianCalendar(); now = DateNow.getTime(); csm = new ContractStatusManager(con); // определяем текущий статус договора print("event.getContractId():"+cid+"\n"); StatusContractList = csm.getStatusList(cid); if (StatusContractList.size() == 0) { print("Не удалось получить ни одного статуса договора"); return; } print("StatusContractList.size():"+StatusContractList.size()+"\n"); for( Iterator it = StatusContractList.iterator(); it.hasNext(); ) { StatusContract = it.next(); print("StatusContract.getId():"+StatusContract.getId() ); print("StatusContract.getContractId():"+StatusContract.getContractId() ); print("StatusContract.getStatus():"+StatusContract.getStatus() ); print("StatusContract.getDateFrom():"+StatusContract.getDateFrom() ); print("StatusContract.getDateTo():"+StatusContract.getDateTo() ); print("StatusContract.getComment():"+StatusContract.getComment() ); print("---"); } Код: GENERATE_TIME: 04.05.11 11:47:28
EXECUTION_STOP_TIME: 04.05.11 11:47:28 PROCESS_TIME: 12 OUT: event.getContractId():609 StatusContractList.size():26 StatusContract.getId():2347 StatusContract.getContractId():609 StatusContract.getStatus():4 StatusContract.getDateFrom():2009-09-27 StatusContract.getDateTo():2009-10-21 StatusContract.getComment(): --- StatusContract.getId():3390 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2009-10-22 StatusContract.getDateTo():2009-11-21 StatusContract.getComment():установлен скриптом --- StatusContract.getId():4592 StatusContract.getContractId():609 StatusContract.getStatus():4 StatusContract.getDateFrom():2009-11-22 StatusContract.getDateTo():2009-12-12 StatusContract.getComment():Недостаточно средств --- StatusContract.getId():5848 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2009-12-13 StatusContract.getDateTo():2009-12-15 StatusContract.getComment(): --- StatusContract.getId():5946 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2009-12-16 StatusContract.getDateTo():2009-12-31 StatusContract.getComment():Принудительно из доп. действия --- StatusContract.getId():9099 StatusContract.getContractId():609 StatusContract.getStatus():4 StatusContract.getDateFrom():2010-01-01 StatusContract.getDateTo():2010-01-31 StatusContract.getComment():Недостаточно средств --- StatusContract.getId():20148 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2010-04-01 StatusContract.getDateTo():2010-09-08 StatusContract.getComment(): --- StatusContract.getId():37664 StatusContract.getContractId():609 StatusContract.getStatus():3 StatusContract.getDateFrom():2010-09-09 StatusContract.getDateTo():2010-09-22 StatusContract.getComment():Недостаточно средств --- StatusContract.getId():38887 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2010-09-23 StatusContract.getDateTo():2010-09-24 StatusContract.getComment(): --- StatusContract.getId():38935 StatusContract.getContractId():609 StatusContract.getStatus():3 StatusContract.getDateFrom():2010-09-25 StatusContract.getDateTo():2010-12-25 StatusContract.getComment():Недостаток средств для начисления абонплаты --- StatusContract.getId():45562 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2010-12-26 StatusContract.getDateTo():2010-12-26 StatusContract.getComment():Разблокирован модулем абонплат по достаточному платежу --- StatusContract.getId():45563 StatusContract.getContractId():609 StatusContract.getStatus():3 StatusContract.getDateFrom():2010-12-27 StatusContract.getDateTo():2011-01-01 StatusContract.getComment():Недостаток средств для начисления абонплаты --- StatusContract.getId():46540 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2011-01-02 StatusContract.getDateTo():2011-01-24 StatusContract.getComment(): --- StatusContract.getId():47381 StatusContract.getContractId():609 StatusContract.getStatus():3 StatusContract.getDateFrom():2011-01-25 StatusContract.getDateTo():2011-03-03 StatusContract.getComment():Недостаток средств для начисления абонплаты --- StatusContract.getId():52046 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2011-03-04 StatusContract.getDateTo():2011-03-04 StatusContract.getComment():Разблокирован модулем абонплат по достаточному платежу --- StatusContract.getId():52054 StatusContract.getContractId():609 StatusContract.getStatus():3 StatusContract.getDateFrom():2011-03-05 StatusContract.getDateTo():2011-03-09 StatusContract.getComment():Недостаток средств для начисления абонплаты --- StatusContract.getId():52244 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2011-03-10 StatusContract.getDateTo():2011-03-15 StatusContract.getComment():Разблокирован модулем абонплат по достаточному платежу --- StatusContract.getId():52390 StatusContract.getContractId():609 StatusContract.getStatus():3 StatusContract.getDateFrom():2011-03-16 StatusContract.getDateTo():2011-03-17 StatusContract.getComment():Недостаток средств для начисления абонплаты --- StatusContract.getId():52474 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2011-03-18 StatusContract.getDateTo():2011-03-18 StatusContract.getComment():Статус изменен скриптом 'Включение должников по приходу платежа' --- StatusContract.getId():52492 StatusContract.getContractId():609 StatusContract.getStatus():3 StatusContract.getDateFrom():2011-03-19 StatusContract.getDateTo():2011-04-11 StatusContract.getComment():Недостаток средств для начисления абонплаты --- StatusContract.getId():54747 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2011-04-12 StatusContract.getDateTo():2011-04-12 StatusContract.getComment():Разблокирован модулем абонплат по достаточному платежу --- StatusContract.getId():54750 StatusContract.getContractId():609 StatusContract.getStatus():3 StatusContract.getDateFrom():2011-04-13 StatusContract.getDateTo():2011-04-25 StatusContract.getComment():Недостаток средств для начисления абонплаты --- StatusContract.getId():55110 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2011-04-26 StatusContract.getDateTo():2011-04-26 StatusContract.getComment():Статус изменен скриптом 'Включение должников по приходу платежа' --- StatusContract.getId():55116 StatusContract.getContractId():609 StatusContract.getStatus():3 StatusContract.getDateFrom():2011-04-27 StatusContract.getDateTo():2011-04-27 StatusContract.getComment():Недостаток средств для начисления абонплаты --- StatusContract.getId():55145 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2011-04-28 StatusContract.getDateTo():2011-04-29 StatusContract.getComment():Статус изменен скриптом 'Включение должников по приходу платежа' --- StatusContract.getId():56840 StatusContract.getContractId():609 StatusContract.getStatus():0 StatusContract.getDateFrom():2011-04-30 StatusContract.getDateTo():2011-04-30 StatusContract.getComment(): --- |
Страница 1 из 2 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |