forum.bitel.ru
http://forum.bitel.ru/

Как узнать новый статус договора?
http://forum.bitel.ru/viewtopic.php?f=19&t=4155
Страница 1 из 1

Автор:  nolka4 [ 10 июн 2010, 13:43 ]
Заголовок сообщения:  Как узнать новый статус договора?

Если создать скрипт поведения и привязать его к событию "Изменение статуса договора", и в нем написать:
Код:
public void onEvent( event, setup, con, conSlave )
{
   cid = event.getContractID();
   contract = new ContractManager(con).getContractByID(cid);
   print("status changed to contract "+cid+" to state: "+contract.getStatus() );
...

то будет возвращен текущий статус договора, до изменения. А как узнать новый установленный статус?

Автор:  Cromeshnic [ 10 июн 2010, 13:49 ]
Заголовок сообщения:  Re: Как узнать новый статус договора?

http://bgbilling.ru/v5.0/javadoc/bitel/ ... Event.html
Цитата:
getStatus()
Возвращает объект с устанавливаемым статусом, поля объекта можно изменять.

:facepalm:

Автор:  xwar [ 25 июл 2010, 03:50 ]
Заголовок сообщения:  Re: Как узнать новый статус договора?

Не вижу текущего статуса контракта
Сервер Версия 5.1 сборка 452
Что интересно по событию "Приход платежа" второй способ срабатывает, а по событию "Изменение статуса договора" нет!

1)
PreparedStatement status = con.prepareStatement("SELECT status,date2 FROM contract_status WHERE cid=? and date2 is null limit 1");
status.setInt(1,cid);
ResultSet res = status.executeQuery();
while (res.next()){
ans=res.getInt(2);
print ("integer "+ans);
};

2) и так тоже
cstm = new ContractStatusManager( con );
StatusContractList = cstm.getStatusList(cid);
print ("cid"+ cid +" date "+curtime+" status size "+StatusContractList.size()+" stat"+StatusContractList.get(0).getStatus()+StatusContractList.get(1).getStatus());
if (StatusContractList.size() == 0) return;
StatusContract = StatusContractList.get(0);
StatusContractNum=StatusContract.getStatus();

3) так вижу но тот который до изменения
contract = new ContractManager(con).getContractByID(cid);
print("status:" + contract.getStatus());

Язык JAVA плохо знаю -можно прям кусочек кода?

Автор:  xwar [ 27 июл 2010, 02:58 ]
Заголовок сообщения:  Re: Как узнать новый статус договора?

Оказывается причина была в том что скрипт вызывался по событию "Изменение статуса договора",
а надо "Статус договора изменен"!!!

Автор:  m2pod [ 27 июл 2010, 15:44 ]
Заголовок сообщения:  Re: Как узнать новый статус договора?

от перемены мест слагаемых сумма меняется? :facepalm:

Автор:  skyb [ 27 июл 2010, 15:49 ]
Заголовок сообщения:  Re: Как узнать новый статус договора?

Ну если я правильно оцениваю правила русского языка, то
Изменение статуса договора - это до совершения события
а
Статус договора изменен - это событие после совершения

Автор:  m2pod [ 27 июл 2010, 15:52 ]
Заголовок сообщения:  Re: Как узнать новый статус договора?

skyb писал(а):
Ну если я правильно оцениваю правила русского языка, то
Изменение статуса договора - это до совершения события
а
Статус договора изменен - это событие после совершения

тоесть скрипт будет выполняться до выполнения какого то действия?
как же он тогда отработает, будет знать наперед что кто-то хочет изменить статус?
я что-то не понимаю :?

Автор:  dimOn [ 27 июл 2010, 16:38 ]
Заголовок сообщения:  Re: Как узнать новый статус договора?

Есть события синхронные, которых ждут вызывающие, как, например, при попытке смены статуса. Пока соответствующий скрипт не завершится - статус не сменится. причём в этом скрипте есть возможность повлиять на смену статуса, например, отменить её или дату сместить или что-то типа того. Есть события асинхронные, которые просто оповещают, что что-либо уже произошло. В том числе, например, сменился уже статус. Можно сделать внутри какие-то действия по этому факту.

Автор:  dimOn [ 27 июл 2010, 16:41 ]
Заголовок сообщения:  Re: Как узнать новый статус договора?

m2pod писал(а):
skyb писал(а):
Ну если я правильно оцениваю правила русского языка, то
Изменение статуса договора - это до совершения события
а
Статус договора изменен - это событие после совершения

тоесть скрипт будет выполняться до выполнения какого то действия?
как же он тогда отработает, будет знать наперед что кто-то хочет изменить статус?
я что-то не понимаю :?

А мне в свою очередь не очень понятно что именно непонятно.
Скрипт отрабатывает, когда кто-то начал менять статус, уже нажал на кнопку "изменить". Мы можем знать и текущий, и тот, на который меняем. В скрипте можно делать что угодно, приложение ждёт завершения скрипта. После его завершения уже происходит собственно смена статуса физическая, в БД. После этого пуляется второе, асинхронное событие, а приложение занимается уже своими делами.

Автор:  m2pod [ 27 июл 2010, 17:39 ]
Заголовок сообщения:  Re: Как узнать новый статус договора?

оказывается есть в доке
Код:
Изменение статуса договора   : Вызывается при смене статуса договора. Позволяет изменить устанавливаемый статус.
Статус договора изменен: Вызывается после изменения статуса договора.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/