Открытие абонплаты по первой установке соединения
Материал из BiTel WiKi
(Различия между версиями)
Admin (Обсуждение | вклад)
(Новая страница: «Версия биллинга - 5.1. Скрипт открывает абонентскую плату на договоре по первой авторизаци…»)
Следующая правка →
(Новая страница: «Версия биллинга - 5.1. Скрипт открывает абонентскую плату на договоре по первой авторизаци…»)
Следующая правка →
Версия 09:35, 13 июля 2010
Версия биллинга - 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 ), "Автоматическое открытие абонплаты" ) ); } } }