Переинициализация тарифа в пределах сессии

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

Перейти к: навигация, поиск

В данном случае используется для обновления параметров в пределах сессии после смены тарифа в скрипте.
В качестве стартового события используется запрос учетного периода модулем Dial-UP.

import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.common.*;
import java.util.*;
import java.math.*;
import java.lang.*;
 
cm = new ContractManager( con );
ctm = new ContractTariffManager( con );
cid = event.getContractID();
chm = new ChargeManager( con );
date = (Calendar)event.getRequestDate();
contract = event.getContract();
 
event.setProcessed( true ); // ипользуется для корректной обработки события
 
//подготавливаем вчера
yesterday = (Calendar)date.clone();
yesterday.add( Calendar.DAY_OF_YEAR, -1 );
//получаем ID активного тарифного плана и его позицию
tpid = ctm.getContractTariff( cid, date ).getTariffPlanID();
tpos = ctm.getContractTariff( cid, date ).getPos();
 
//подгатавливаем новые записи о тарифе на договоре...
 
tar = new ContractTariff();
tar.setID(ctm.getContractTariff( cid, date ).getID());
tar.setContractID(cid);
tar.setPos(ctm.getContractTariff( cid, date ).getPos());
tar.setTariffPlanID(tpid);
tar.setDate1 (ctm.getContractTariff( cid, date ).getDate1());
//... закрываем его вчерашним числом...
tar.setDate2 (yesterday);
tar.setComment("Сюда забиваем коммент");
//... и обновляем на договоре
ctm.updateContractTariff(tar);
 
//подготавливаем новый тариф
tar = new ContractTariff();
tar.setContractID( cid );
// открываем его сегодняшним числом...
tar.setDate1( date );
tar.setPos(tpos + 1 );
//вместо 1 ставим нужный нам номер нового тарифа
tar.setTariffPlanID(1);
tar.setComment("сюда тоже можем забить коммент");
// обновляем тариф на договоре
ctm.updateContractTariff(tar);
 
// здесь собственно и происходит обновление атрибутов тарифа на новый, 
// вместо <mid> подставляем номер модуля dialup
contract.setTts( new ContractManager( con ).getRealtimeTariffTreeSet( contract.getID(), new GregorianCalendar(), "dialup", <mid>, true ) );
 
// Дальше можно добавить любой соус по желанию.

В общем случае написан для 4.5, в 4.6 может давать deprecated сообщение про использование дат через Calendar

Личные инструменты