Давненько не заходил, в 4.6 разработчики наконец исправили много глюков, и то что делалось раньше через одно место сейчас работает
Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.radius.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.common.KernelConst;
import java.util.*;
//ID абонента CID
cid = event.getContractID();
date = event.getGenerateTime().clone();
contract = new ContractManager(con).getContractByID(cid);
if (contract == null)
{return;}
//Лимит абонента
contract_limit = contract.getBalanceLimit().floatValue();
//Баланс абонента
balance = new BalanceUtils( con );
contract_balance = balance.getBalance ( date.getTime(), cid ).floatValue();
//Статус абонента
ContractStatusManager statusManager = new ContractStatusManager( con );
status = statusManager.getStatus( cid, date );
if (status != null)
{contract_status = status.getStatus();}
else
{
ContractStatus status = new ContractStatus();
status.setContractId( cid );
status.setDate1( date );
status.setDate2( null );
status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
status.setComment( "Смена статуса сервером" );
statusManager.changeStatus( status, 0 );
contract_status = status.getStatus();
};
if (contract_balance < contract_limit && contract_status == KernelConst.CONTRACT_STATUS_ACTIVE)
{
ContractStatus status = new ContractStatus();
status.setContractId( cid );
status.setDate1( date );
status.setDate2( null );
status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
status.setComment( "Смена статуса сервером - приостановка" );
statusManager.changeStatus( status, 0 );
};
if (contract_balance > contract_limit && contract_status == KernelConst.CONTRACT_STATUS_SUSPENDED)
{
ContractStatus status = new ContractStatus();
status.setContractId( cid );
status.setDate1( date );
status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
status.setComment( "Смена статуса сервером - активен" );
statusManager.changeStatus( status, 0 );
};
if ( statusManager.getStatus(cid, date).getStatus() == KernelConst.CONTRACT_STATUS_ACTIVE )
{
status.setContractId( cid );
status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
statusManager.setContractStatus ( status );
};
if ( statusManager.getStatus(cid, date).getStatus() == KernelConst.CONTRACT_STATUS_SUSPENDED )
{
status.setContractId( cid );
status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
statusManager.setContractStatus ( status );
};
Осталось придумать как день лишний не захватывать )))