BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: 07 июл 2010, 17:28 
Не в сети

Зарегистрирован: 01 окт 2009, 13:19
Сообщения: 56
Карма: 0
в общем вот скрипт:
Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.bean.event.*;
import bitel.billing.server.service.bean.*;
import bitel.billing.server.npay.bean.*;
import bitel.billing.common.KernelConst;
import java.util.*;
import bitel.billing.server.ipn.bean.*;
import ru.bitel.bgbilling.server.util.ModuleSetup;


GROUP_ERROR_BALANCE = 62;
cid = event.getContractId();
date = event.getGenerateTime().clone();
contract = new ContractManager(con).getContractByID(cid);

payment = event.getPayment();
pt = payment.getPaymentTypeID();

cl = contract.getBalanceLimit();

balance = new BalanceUtils(con);
cb = balance.getBalance(date.getTime(), cid);

ContractStatusManager statusManager = new ContractStatusManager(con);
status = statusManager.getStatus(cid, date.getTime());
print("status:" + status);
if (status != null) {
   cs = status.getStatus();
print("0.cs:" + cs);
} else {
//   ContractStatusManager statusManager = new ContractStatusManager(con);
print("0.5.cs:" + cs);
   status.setContractId(cid);
   status.setFromDate(date);
   status.getToDate(null);
   status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
   status.setComment("Инициализация статуса сервером");
   statusManager.changeStatus(status, 0);
   cs = status.getStatus();
print("1.cs:" + cs);
};
print("1.1.cs:" + cs);
//NPAY_MID = 2;
//csm = new ContractServiceManager(con);
//List sl = csm.getContractServiceList(cid, NPAY_MID);
print("1.2.cs:" + cs);
//print("csm:" + csm);
print("Contract Limit: " + cl);
print("Contract Balance: " + cb);

//for (Iterator it=sl.iterator(); it.hasNext(); ) {
//   cs = (ContractService)it.next();
//   print (cs.getServiceTitle());
//print("2.cs:" + cs);
//}
//print("pt:" + pt);
//print("3.cs:" + cs);
print("KernelConst.CONTRACT_STATUS_ACTIVE=" + KernelConst.CONTRACT_STATUS_ACTIVE);
print("KernelConst.CONTRACT_STATUS_SUSPENDED=" + KernelConst.CONTRACT_STATUS_SUSPENDED);
if (pt == -1) { // Изменение лимита
   if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) {
      print("Balans > limita. podkluchaem dogovor");
      // Баланс больше лимита. Подключаем договор.
      cg = contract.getGroups();
      cg = cg & ~(1L<<GROUP_ERROR_BALANCE);
      query = "UPDATE contract SET gr=? WHERE id=?";
      psUpdate = con.prepareStatement(query);
      psUpdate.setLong(1, cg);
      psUpdate.setInt(2, cid);
      psUpdate.executeUpdate();
     
 //     ContractStatusManager statusManager = new ContractStatusManager(con);
      status = statusManager.getStatus(cid, date.getTime());
      status.setContractId(cid);
      status.setFromDate(date);
      status.getToDate(null);
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      status.setComment("Смена статуса сервером - подключен по изменению лимита");
      statusManager.changeStatus(status, 0);
   } else if ((cb.floatValue() < cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_ACTIVE)) {
      print("Balans < limita. priostonovit` dogovor");
      // Баланса ниже лимита. Приостанавливаем договор.
      cg = contract.getGroups();
      cg = cg | (1L<<GROUP_ERROR_BALANCE);
      query = "UPDATE contract SET gr=? WHERE id=?";
      psUpdate = con.prepareStatement(query);
      psUpdate.setLong(1, cg);
      psUpdate.setInt(2, cid);
      psUpdate.executeUpdate();
   
//      ContractStatusManager statusManager = new ContractStatusManager(con);
      status = statusManager.getStatus(cid, date.getTime());
      status.setContractId(cid);
      status.setFromDate(date);
      status.getToDate(null);
      status.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED);
      status.setComment("Смена статуса сервером - приостановлен, поступивших средств недостаточно");
      statusManager.changeStatus(status, 0);
   }
} else { // Пришёл реальный платёж
   if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) {
      // Баланс больше лимита. Подключаем договор.
      cg = contract.getGroups();
      cg = cg & ~(1L<<GROUP_ERROR_BALANCE);
      query = "UPDATE contract SET gr=? WHERE id=?";
      psUpdate = con.prepareStatement(query);
      psUpdate.setLong(1, cg);
      psUpdate.setInt(2, cid);
      psUpdate.executeUpdate();
     
//      ContractStatusManager statusManager = new ContractStatusManager(con);
      status = statusManager.getStatus(cid, date.getTime());
      status.setContractId(cid);
      status.setFromDate(date);
      status.getToDate(null);
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      status.setComment("Смена статуса сервером - подключен по поступлению платежа");
      statusManager.changeStatus(status, 0);
     
      //Открыть шлюз
   print("ChangeStatus.Open Gate. print modset:" + modset);
      modset = new ModuleSetup(con, 1);
      (new IPNContractStatusManager(con, 1, modset)).changeStatus(cid, 0, 0, true);

   }
}


в логах появляется
Цитата:
07-07/15:24:57 INFO [http-8080-5] script - Process event cid:219; event:Event bitel.billing.server.script.bean.event.PaymentEvent cid: 219; module: 0; type: 1; userId: 7
07-07/15:24:57 INFO [http-8080-5] script - Process event cid:219; event:Event bitel.billing.server.script.bean.event.PaymentEvent cid: 219; module: 0; type: 1; userId: 7
07-07/15:24:57 INFO [pool-1-thread-120] ScriptInstance - Eval script Function [id:3; title:????? ??????? ???????? ??? ??????????? ???????]
07-07/15:24:57 INFO [http-8080-5] script - Process time => 34
07-07/15:24:57 INFO [http-8080-5] script - status:bitel.billing.server.contract.bean.ContractStatus@9c639e
0.cs:4
1.1.cs:void
1.2.cs:void
Contract Limit: -300.00
Contract Balance: 4351.13
KernelConst.CONTRACT_STATUS_ACTIVE=0
KernelConst.CONTRACT_STATUS_SUSPENDED=4


почему
1.1.cs:void
1.2.cs:void
должно же быть 4. я, чтот, ничего не понимаю.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 июл 2010, 17:52 
Не в сети

Зарегистрирован: 01 окт 2009, 13:19
Сообщения: 56
Карма: 0
для теста пока статикой прописал cs = 4, дальше идем вываливается ошибка
Цитата:
07-07/15:48:02 ERROR [http-8080-3] script - Eval error: Sourced file: Function [id:3; title:????? ??????? ???????? ??? ??????????? ???????] : Error in method invocation: Method setFromDate( java.util.GregorianCalendar ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 117 : in file: Function [id:3; title:????? ??????? ???????? ??? ??????????? ???????] : status .setFromDate ( date )

java.util.concurrent.ExecutionException: Sourced file: Function [id:3; title:????? ??????? ???????? ??? ??????????? ???????] : Error in method invocation: Method setFromDate( java.util.GregorianCalendar ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 117 : in file: Function [id:3; title:????? ??????? ???????? ??? ??????????? ???????] : status .setFromDate ( date )

не нравится биллингу
Код:
status.setFromDate(date);

в API написано использовать setFromDate вместо setDate1, как это было у меня раньше.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 июл 2010, 18:09 
Не в сети

Зарегистрирован: 01 окт 2009, 13:19
Сообщения: 56
Карма: 0
короче вот рабочая версия, некоторые моменты меня в коде смущают(на яве никогда не программировал, так что извините), но свою работу он выполняет:
Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.bean.event.*;
import bitel.billing.server.service.bean.*;
import bitel.billing.server.npay.bean.*;
import bitel.billing.common.KernelConst;
import java.util.*;
import bitel.billing.server.ipn.bean.*;
import ru.bitel.bgbilling.server.util.ModuleSetup;


GROUP_ERROR_BALANCE = 62;
cid = event.getContractId();
date = event.getGenerateTime().clone();
contract = new ContractManager(con).getContractByID(cid);

payment = event.getPayment();
pt = payment.getPaymentTypeID();

cl = contract.getBalanceLimit();

balance = new BalanceUtils(con);
cb = balance.getBalance(date.getTime(), cid);

ContractStatusManager statusManager = new ContractStatusManager(con);
status = statusManager.getStatus(cid, date.getTime());
print("status:" + status);
if (status != null) {
   cs = status.getStatus();
print("0.cs:" + cs);
} else {
ContractStatusManager statusManager = new ContractStatusManager(con);
print("0.5.cs:" + cs);
   status.setContractId(cid);
   status.setDate1(date);
   status.getDate2(null);
   status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
   status.setComment("Инициализация статуса сервером");
   statusManager.changeStatus(status, 0);
   cs = status.getStatus();
print("1.cs:" + cs);
};
print("1.1.cs:" + cs);
cs = status.getStatus();
NPAY_MID = 2;
csm = new ContractServiceManager(con);
List sl = csm.getContractServiceList(cid, NPAY_MID);
print("1.2.cs:" + cs);
print("csm:" + csm);
print("Contract Limit: " + cl);
print("Contract Balance: " + cb);

for (Iterator it=sl.iterator(); it.hasNext(); ) {
   cs = (ContractService)it.next();
   print (cs.getServiceTitle());
print("2.cs:" + cs);
}

if (pt == -1) { // Изменение лимита
   if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) {
      print("Balans > limita. podkluchaem dogovor");
      // Баланс больше лимита. Подключаем договор.
      cg = contract.getGroups();
      cg = cg & ~(1L<<GROUP_ERROR_BALANCE);
      query = "UPDATE contract SET gr=? WHERE id=?";
      psUpdate = con.prepareStatement(query);
      psUpdate.setLong(1, cg);
      psUpdate.setInt(2, cid);
      psUpdate.executeUpdate();
     
     ContractStatusManager statusManager = new ContractStatusManager(con);
      status = statusManager.getStatus(cid, date.getTime());
      status.setContractId(cid);
      status.setDate1(date);
 //     status.getDate2(null);
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      status.setComment("Смена статуса сервером - подключен по изменению лимита");
      statusManager.changeStatus(status, 0);
   } else if ((cb.floatValue() < cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_ACTIVE)) {
      print("Balans < limita. priostonovit` dogovor");
      // Баланса ниже лимита. Приостанавливаем договор.
      cg = contract.getGroups();
      cg = cg | (1L<<GROUP_ERROR_BALANCE);
      query = "UPDATE contract SET gr=? WHERE id=?";
      psUpdate = con.prepareStatement(query);
      psUpdate.setLong(1, cg);
      psUpdate.setInt(2, cid);
      psUpdate.executeUpdate();
   
      ContractStatusManager statusManager = new ContractStatusManager(con);
      status = statusManager.getStatus(cid, date.getTime());
      status.setContractId(cid);
      status.setDate1(date);
//      status.getDate2(null);
      status.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED);
      status.setComment("Смена статуса сервером - приостановлен, поступивших средств недостаточно");
      statusManager.changeStatus(status, 0);
   }
} else { // Пришёл реальный платёж
   if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) {
   print("Balans > limit. set dogovor active");
      // Баланс больше лимита. Подключаем договор.
      cg = contract.getGroups();
      cg = cg & ~(1L<<GROUP_ERROR_BALANCE);
      query = "UPDATE contract SET gr=? WHERE id=?";
      psUpdate = con.prepareStatement(query);
      psUpdate.setLong(1, cg);
      psUpdate.setInt(2, cid);
      psUpdate.executeUpdate();
     
      ContractStatusManager statusManager = new ContractStatusManager(con);
      status = statusManager.getStatus(cid, date.getTime());
      status.setContractId(cid);
      status.setDate1(date);
 //     status.getDate2(null);
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      status.setComment("Смена статуса сервером - подключен по поступлению платежа");
      statusManager.changeStatus(status, 0);
     
      //Открыть шлюз
      modset = new ModuleSetup(con, 1);
      (new IPNContractStatusManager(con, 1, modset)).changeStatus(cid, 0, 0, true);

   }
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 июл 2010, 19:50 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
loginex писал(а):
почему
1.1.cs:void
1.2.cs:void
должно же быть 4. я, чтот, ничего не понимаю.

Потому что у вас переменная cs не обявлена вне блока ..у вас ее нет получается ..присвоили в блоке, потом вышли из него и ее больше нет . обвите вышке Integer cs = 0


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

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


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

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


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

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