Смена тарифного плана по заданию пользователя

Материал из BiTel WiKi

Версия от 18:51, 19 июня 2008; Admin (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Для смены тарифного плана по заданию пользователя можно использовать следующий скрипт. Он заносит расход 50 рублей на баланс пользователя и сменяет тарифный план. Тип расхода необходимо подставить свой, в данном случае он равен 40. Скрипт подходит для односервисных договоров, в которых возможна смена тарифа только по одной услуге. В один момент времени на договоре может быть только один тариф, при наличии тарифов на доп. услуги или другием модули следует модифицировать скрипт.

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 );
 
// передача информации о смене тарифа, для возможности разрыва соединения RADIUS сервером
new ContractManager( con ).updateLastTariffChange( cid );
Личные инструменты