Открытие абонплаты по первой установке соединения

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

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

Версия биллинга - 5.1.

Скрипт открывает абонентскую плату на договоре по первой авторизации, если её не было и передаёт задание планировщику произвести начисление абонплат. Есть небольшой "костыль" - необходимо в BGRadiusDialup/lib либо скопировать либо сделать символическую ссылку на библиотеку BGBillingServer/lib/npay.jar. Т.к. скрипту нужны классы этой библиотеки.

Скрипт - обрабатывает событие RADIUS-аунтификация модуля DialUp.

import bitel.billing.server.util.*;
import bitel.billing.server.task.bean.*;
import java.sql.*;
import ru.bitel.bgbilling.kernel.network.radius.*;
import bitel.billing.server.npay.bean.*;
import bitel.billing.server.npay.*;
import java.util.*;
 
int NPAY_MID = 1;
int SERVICE = 1;
 
public void onEvent( event, setup, con, conSlave )
{
	int contractId = event.getContractId();
	RadiusPacket packet = event.getResponse();
 
	if( packet.getCode() == RadiusPacket.ACCESS_ACCEPT )
	{
		print( "It's accept packet" );
 
		String tableName = "npay_service_object_" + NPAY_MID;
		String query = "SELECT COUNT(*) FROM " + tableName + " WHERE cid=? AND sid=?";
 
		PreparedStatement ps = con.prepareStatement( query );		
		ps.setInt( 1, contractId );
		ps.setInt( 2, SERVICE );
 
		ResultSet rs = ps.executeQuery();
		if( !rs.next() || rs.getInt( 1 ) == 0 )
		{
			print( "Adding service" );
 
			ServiceObject serviceObject = new ServiceObject();
			serviceObject.setContractId( contractId );
			serviceObject.setServiceId( SERVICE );
			serviceObject.setDate1( new java.util.Date() );
 
			new ServiceObjectManager( con, NPAY_MID ).updateServiceObject( serviceObject );
			new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, new GregorianCalendar(), null, 0, String.valueOf( contractId ), "Автоматическое открытие абонплаты" ) );
		}
	}
}
Личные инструменты