BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 21 июн 2025, 00:50

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




Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 29 апр 2011, 22:41 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Добрый вечер.
Подскажите пожалуйста, что я не так делаю? Хочу сделать скрипт, который при изменении статуса договора будет группы договоров разные ставить. Все бы хорошо, но не могу текущий статус договора взять:
Код:
   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. Список статусов тоже пытался брать - та же фигня -- ни одного статуса не возвращается.
Что не так?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 01:00 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса
Спасибо пожалуйста :D

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 02:04 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
может доки почитать? (http://www.bgbilling.ru/v5.1/javadoc/bi ... nager.html)

Код:
getStatus(int cid, java.util.Date date)
          Возвращает статус договора на какую-то дату, если записи нет, статус по-умолчанию - "активен" (отсюда вернётся null).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 02:08 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
skn писал(а):
может доки почитать? (http://www.bgbilling.ru/v5.1/javadoc/bi ... nager.html)

Код:
getStatus(int cid, java.util.Date date)
          Возвращает статус договора на какую-то дату, если записи нет, статус по-умолчанию - "активен" (отсюда вернётся null).

В том то и дело, что статусов у договораа хоть отбавляй и почему он их не показываает не понятноо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 02:09 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Phricker писал(а):
http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса
Спасибо пожалуйста :D

Этот код не работает по крайней мере на 5.1


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 04:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
mikos писал(а):
Phricker писал(а):
http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса
Спасибо пожалуйста :D

Этот код не работает по крайней мере на 5.1

а что пишет? почему не работает?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 10:40 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
skyb писал(а):
mikos писал(а):
Phricker писал(а):
http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса
Спасибо пожалуйста :D

Этот код не работает по крайней мере на 5.1

а что пишет? почему не работает?

вссе тоже самое - возвращает null на статус


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 10:53 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
mikos писал(а):
skyb писал(а):
mikos писал(а):
Phricker писал(а):
http://wiki.bgbilling.ru/index.php/Добавление_группы_и_снятие_в_зависимости_от_статуса
Спасибо пожалуйста :D

Этот код не работает по крайней мере на 5.1

а что пишет? почему не работает?

вссе тоже самое - возвращает null на статус

а можно логи чтоль.

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 13:39 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
В оригинале
Код:
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()]

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 13:40 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Если будет работать - добавлю в вики, как скрипт для 5.1

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 апр 2011, 22:06 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Те же грабли - всегда 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 то возвращает?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 май 2011, 03:01 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Хмммм... Странно. У меня группа ставится, но не снимается. всегда возвращается null.
Поглядим.

Вопрос: Вам для чего это необходимо? Для того чтобы работать с должниками? Не будет ли более удобным функционал Монитор статуса??? Листать в конец

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 12:10 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
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";

ну никак она не может вернуть пустой список, если в клиенте показывается список

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 12:18 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
переделайте вот так:
Код:
   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

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 12:24 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
И ещё, вот это вот:
Код:
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 это код группы
   }

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 12:35 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
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 берется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 12:43 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну запрос списка то возвращает что-нибудь по этому cid? Запрос отдельного статуса работает точно так же, только проверяет date1 и date2, что они попадают периодом на переданную дату, так что тоже странно. Скорее всего вы что-то не то туда предаёте…

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 13:06 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
Ну запрос списка то возвращает что-нибудь по этому cid? Запрос отдельного статуса работает точно так же, только проверяет date1 и date2, что они попадают периодом на переданную дату, так что тоже странно. Скорее всего вы что-то не то туда предаёте…

Тоже хотелось бы разобраться, что я не так делаю. Вещь нужная и нужна думаю многим.
Хотя что там можно сделать не так - ума не приложу :) На список тоже всегда выдает null - это меня и смутило.

Код:
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() );


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 13:52 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Код:
// определяем текущий статус договора
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" и "вернул пустой список", это совершенно разные случаи.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 13:53 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Физически методы getStatusList не могут вернуть null, ни тот ни этот, там внутри в любом случае создаётся ArrayList и возвращается, даже если туда ни одного элемента не добавлено.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 14:00 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
Физически методы getStatusList не могут вернуть null, ни тот ни этот, там внутри в любом случае создаётся ArrayList и возвращается, даже если туда ни одного элемента не добавлено.

По поводу листа не так выразился, сорри. Возвращается ноль элементов, отрабатывает блок:
Код:
if (StatusContractList.size() == 0) {


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 14:59 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
ну попробуйте без даты который метод
List<ContractStatus> StatusContractList = csm.getStatusList(cid);
так что возвращает?

вы понимаете зачем там параметр дата вообще? Это дата, НАЧИНАЯ С КОТОРОЙ выбираются статусы. Т.е. текущий момент если передадите, то отдастся последний открытый период, если он есть. Или все будущие периоды статусов.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 16:07 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
dimOn писал(а):
ну попробуйте без даты который метод
List<ContractStatus> StatusContractList = csm.getStatusList(cid);
так что возвращает?

вы понимаете зачем там параметр дата вообще? Это дата, НАЧИНАЯ С КОТОРОЙ выбираются статусы. Т.е. текущий момент если передадите, то отдастся последний открытый период, если он есть. Или все будущие периоды статусов.

вот поэтому мне нужно было и без даты....
многим нужно? Да. я не понимаю, как так не получается, просто 5.1 ставить неохото, и так дел много, но я не думаю что все так плохо, что многое изменилось в 5.1 и переделать там (возможно?) только дебрикейты, а остальное должно работать....я присоеденяюсь к мнению, что делаете что то не так.

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 16:30 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Я ничо не понял, кому что нужно итд. Вы хотите одно, а пишете в коде другое, при этом приводите вообще изначально нерабочий код и не можете объяснить ни что хотите, ни что имеете :facepalm:

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 16:49 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 18:02 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
dimOn писал(а):
Я ничо не понял, кому что нужно итд. Вы хотите одно, а пишете в коде другое, при этом приводите вообще изначально нерабочий код и не можете объяснить ни что хотите, ни что имеете :facepalm:

на 5.0 у меня все работает идеально :-P

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 11:16 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
mikos писал(а):
Без даты уже лучше - всегда статус 4 возвращается. Статус у абонента меняю ручками одним и тем же днем с приостановленного на активен и обратно.

Без даты должны вернуться все те периоды статусов, что у вас на картинке (их там по крайней мере 10), а не один статус. Или вы просто реально что-то не то делаете, например не тот cid передаёте.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 13:17 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
mikos писал(а):
Без даты уже лучше - всегда статус 4 возвращается. Статус у абонента меняю ручками одним и тем же днем с приостановленного на активен и обратно.

Без даты должны вернуться все те периоды статусов, что у вас на картинке (их там по крайней мере 10), а не один статус. Или вы просто реально что-то не то делаете, например не тот cid передаёте.

Как я могу делать что-то не то, если код, весь до строчки, перед Вами? :)
Хорошо, я понял - попробую обновиться и посмотреть все что возвращается в листе, а не только последний элемент - может чего прояснится. Спасибо за помощь.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 13:21 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
ну разумеется
Код:
StatusContract = StatusContractList.get(0);
print("StatusContract.getStatus():"+StatusContract.getStatus() );
возвращает блин один статус, потмоу что вы из списка берёте первый статус что там есть и выводите его в консоль.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 13:52 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
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():
---


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2  След.

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


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

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


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

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