Обработка запроса учетного периода
Материал из BiTel WiKi
Приведенный ниже скрипт обрабатывает запрос расчетного периода в RADIUS сервера модуля DialUP. При этом проверяется баланс пользователя и если он больше 30 рублей, взымается абонплата и расчетный период устанавливается от текущей даты до даты отстоящей через 30 дней от текущей. В дальнейшем этот расчетный период может использоваться при тарификации. Для этого необоходимо использовать узел "Диапазон", указав в поле за "расчетный период". Если при запросе расчетного периода скрипт не обработал запрос, расчетный период принимается равным текущему месяцу. Если скрипт обработки был найден, но не поставил флаг processed в запросе, то выдается ошибка авторизации. Абонплата добавляется как наработка по услуге с кодом 52. Если вы хотите использовать данный скрипт, создайте в модуле DialUP услугу Абонплата и возьмите ее код.
import bitel.billing.server.contract.bean.*; import java.util.*; bu = new BalanceUtils( con ) ; cm = new ContractManager( con ); event.setProcessed( true ); if( event.getRequestDate() == null ) { error( "event.requestDate() == null" ); return; } contract = cm.getContractByID( event.getContractID() ); if( contract == null ) { error( "Contract with ID:" + event.getContractID() + " not found!" ); return; } date = (Calendar)event.getRequestDate(); PAY = 30.0f; balance = bu.getBalance( date, event.getContractID() ); if( balance - contract.getLimit() < PAY ) { error( "Not money for open period!!" ); return; } bu.addContractAccount( event.getContractID(), date, 52, PAY ); bu.setBalanceFromAccount( event.getContractID(), date ); event.setPeriodStart( date ); date = (Calendar)date.clone(); date.add( Calendar.DAY_OF_YEAR, 30 ); event.setPeriodEnd( date );