Обработка запроса учетного периода

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

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

Приведенный ниже скрипт обрабатывает запрос расчетного периода в 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 );
Личные инструменты