в общем вот скрипт:
Код:
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. я, чтот, ничего не понимаю.