Вопрос конкретнее:
Типовой скрипт смены тарифа пользователем за деньги:
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.bean.*;
import bitel.billing.server.script.event.*;
import java.util.*;
cid = event.getContractID();
task = event.getTask();
ctm = new ContractTariffManager( con );
chm = new ChargeManager( con );
// текущий тарифный план
currentTariff = ctm.getContractTariff( cid, task.getFromDate() );
if( currentTariff == null )
{
error( "Current tariff not found" );
return;
}
// закрываем старый тариф днем ранее
endDate = (Calendar)task.getFromDate().clone();
endDate.add( Calendar.DAY_OF_YEAR, -1 );
currentTariff.setDate2( endDate );
ctm.updateContractTariff( String.valueOf( currentTariff.getID() ), currentTariff );
// заносим расход 50 руб
charge = new Charge();
charge.setContractID( cid );
charge.setDate( task.getFromDate() );
charge.setChargeTypeID( 40 );
charge.setComment( "Смена тарифа через WEB" );
charge.setSumma( 50f );
chm.updateCharge( "new", charge );
// обновляем баланс
new BalanceUtils( con ).updateBalance( task.getFromDate(), cid );
// вносим новый тариф
newPlan = new ContractTariff();
newPlan.setContractID( cid );
newPlan.setTariffPlanID( task.getTariffPlanID() );
newPlan.setDate1( task.getFromDate() );
newPlan.setComment( "Смена тарифа через WEB" );
ctm.updateContractTariff( "new", newPlan );
Деньги снимаются два раза ну и ладно.
Нужно не снимать деньги а проверять снята-ли абонплата и если нет то снимать (иначе получается, что абонплата снимается раз в час и не чаще - чаще шедуллер не запускается и клиент прыгая с тарифа на тариф меняет его (тариф) а абонплаты неуспевают начислиться)...
|