Обработка события "добавление услуги RSCM в договор" . Скипт сменяет тариф, подключает абонплату

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

(Различия между версиями)
Перейти к: навигация, поиск
Строка 1: Строка 1:
-
<pre>
 
Необходимо ,было сделать, чтобы следующие услуги автоматически меняли статус абонента и/или тариф:
Необходимо ,было сделать, чтобы следующие услуги автоматически меняли статус абонента и/или тариф:
*Подключение к сети КТВ на Базовый тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
*Подключение к сети КТВ на Базовый тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
*Подключение к сети КТВ на Эфирный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
*Подключение к сети КТВ на Эфирный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
-
- Подключение к сети КТВ на Локальный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
+
*Подключение к сети КТВ на Локальный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
-
- Подключение к сети КТВ на Служебный тариф (стоимость 0 рублей) – начинала начисляться абонплата и у абонента появлялся Служебный тариф.
+
*Подключение к сети КТВ на Служебный тариф (стоимость 0 рублей) – начинала начисляться абонплата и у абонента появлялся Служебный тариф.
-
- Льготное подключение к сети КТВ на Базовый тариф (0) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
+
*Льготное подключение к сети КТВ на Базовый тариф (0) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
-
- Льготное подключение к сети КТВ на Эфирный тариф (0) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
+
*Льготное подключение к сети КТВ на Эфирный тариф (0) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
-
- Льготное подключение к сети КТВ на Локальный тариф (0) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
+
*Льготное подключение к сети КТВ на Локальный тариф (0) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
-
- 50 % подключение к сети КТВ на Базовый тариф (165) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
+
*50 % подключение к сети КТВ на Базовый тариф (165) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
-
- 50 % подключение к сети КТВ на Эфирный тариф (165) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
+
*50 % подключение к сети КТВ на Эфирный тариф (165) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
-
- 50 % подключение к сети КТВ на Локальный тариф (165) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
+
*50 % подключение к сети КТВ на Локальный тариф (165) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
-
- Повторное подключение к сети КТВ (100 рублей) – начинала начисляться абонплата.
+
*Повторное подключение к сети КТВ (100 рублей) – начинала начисляться абонплата.
-
- Бесплатное повторное подключение к сети КТВ (0 рублей) – начинала начисляться абонплата.
+
*Бесплатное повторное подключение к сети КТВ (0 рублей) – начинала начисляться абонплата.
-
- Переключение на Эфирный тариф (150) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
+
*Переключение на Эфирный тариф (150) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
-
- Бесплатное переключение на Эфирный тариф (0) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
+
*Бесплатное переключение на Эфирный тариф (0) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
-
- Переключение на Базовый тариф (0) – у абонента вместо какого-либо тарифа появлялся Базовый тариф.
+
*Переключение на Базовый тариф (0) – у абонента вместо какого-либо тарифа появлялся Базовый тариф.
-
- Переключение на Локальный тариф (0) – у абонента вместо какого-либо тарифа появлялся Локальный тариф.
+
*Переключение на Локальный тариф (0) – у абонента вместо какого-либо тарифа появлялся Локальный тариф.
-
- Переключение на Служебный тариф (0) – у абонента вместо какого-либо тарифа появлялся Служебный тариф.
+
*Переключение на Служебный тариф (0) – у абонента вместо какого-либо тарифа появлялся Служебный тариф.
-
- Приостановление действия договора (0) –  статус абонента переводился в «приостановлен».
+
*Приостановление действия договора (0) –  статус абонента переводился в «приостановлен».
-
- Расторжение договора (0) - статус абонента переводился в «закрыт».
+
*Расторжение договора (0) - статус абонента переводился в «закрыт».
-
</pre>
+
 
На основании события добавления услуги в RSCM модуле реализуются BGBS скрипты, реализующие данные действия.
На основании события добавления услуги в RSCM модуле реализуются BGBS скрипты, реализующие данные действия.

Версия 07:09, 14 января 2009

Необходимо ,было сделать, чтобы следующие услуги автоматически меняли статус абонента и/или тариф:

  • Подключение к сети КТВ на Базовый тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
  • Подключение к сети КТВ на Эфирный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
  • Подключение к сети КТВ на Локальный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
  • Подключение к сети КТВ на Служебный тариф (стоимость 0 рублей) – начинала начисляться абонплата и у абонента появлялся Служебный тариф.
  • Льготное подключение к сети КТВ на Базовый тариф (0) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
  • Льготное подключение к сети КТВ на Эфирный тариф (0) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
  • Льготное подключение к сети КТВ на Локальный тариф (0) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
  • 50 % подключение к сети КТВ на Базовый тариф (165) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
  • 50 % подключение к сети КТВ на Эфирный тариф (165) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
  • 50 % подключение к сети КТВ на Локальный тариф (165) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
  • Повторное подключение к сети КТВ (100 рублей) – начинала начисляться абонплата.
  • Бесплатное повторное подключение к сети КТВ (0 рублей) – начинала начисляться абонплата.
  • Переключение на Эфирный тариф (150) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
  • Бесплатное переключение на Эфирный тариф (0) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
  • Переключение на Базовый тариф (0) – у абонента вместо какого-либо тарифа появлялся Базовый тариф.
  • Переключение на Локальный тариф (0) – у абонента вместо какого-либо тарифа появлялся Локальный тариф.
  • Переключение на Служебный тариф (0) – у абонента вместо какого-либо тарифа появлялся Служебный тариф.
  • Приостановление действия договора (0) – статус абонента переводился в «приостановлен».
  • Расторжение договора (0) - статус абонента переводился в «закрыт».

На основании события добавления услуги в RSCM модуле реализуются BGBS скрипты, реализующие данные действия.

Скрипт(возможно в коде скрипта несколько изменена логика , описанная выше, скрипт и коментарии в нем являются первичными ):

import bitel.billing.server.contract.bean.*;	
import bitel.billing.server.tariff.bean.*;
import bitel.billing.server.script.event.*;
import java.util.*;
import bitel.billing.common.*;
 
private getPrevDate( date )
{
	Calendar result = new GregorianCalendar();	
	result.setTime( date.getTime() );
	result.add( Calendar.DAY_OF_YEAR, -1 );
	return result;		
}
 
private void setTariff( cid, tariffId, date )
{
	ctm =  new ContractTariffManager(  con );
	cm = new ContractManager( con );
 
	t = null;
 
	//пытаемся найти на текущий момент тариф 
	t = ctm.getContractTariff(cid, date);
 
	//Если нашли , то закрываем предыдушим днем 
	createNew = true;
  	if ( t != null)
	{
		if ( t.getDate1() == null || t.getDate1().compareTo( date ) < 0 )
		{
			print ("close tariff..");
			Calendar stopDate = getPrevDate( date) ;
			t.setDate2(  stopDate );
			ctm.updateContractTariff( String.valueOf( t.getID() ) , t );		
		}
		//если открыт сегодняшним числом  - ничего не делаем
		else if ( t.getDate1().compareTo( date ) == 0 )
		{
			print ("update tariff ");
			createNew = false;						
			t.setTariffPlanID( tariffId );
			t.setComment( "создан автоматически" );
			ctm.updateContractTariff( String.valueOf( t.getID() ) , t );		
		}
	}
 
 
	// создаем новый
	if ( createNew )
	{
		print ("add new tariff..");
		t = new ContractTariff();
		t.setContractID( cid );
		t.setTariffPlanID( tariffId );
		t.setPos( 0 );
		t.setDate1(  date );
		t.setDate2(  null );
		t.setComment( "создан автоматически" );                
		ctm.updateContractTariff( "new", t );
	}
 
 
	cm.updateLastTariffChange( cid );	
 
}
 
private addNPayService( date )
{
 
 
	sm = new ContractServiceManager( con );
 
	services = sm.getContractServiceList( cid, date );
	cs = null;
	for (cs2 :  services)
	{
		if (cs2.getServiceID() == PAY_SERVICE)
		{
			cs = cs2;
			break;
		} 
	}
 
	createNew = true;
   //Если нашли , то закрываем предыдушим днем
	if ( cs != null)
	{
 
		if ( cs.getDate1().compareTo( date ) < 0 )
		{
 
 
			print ("close pay service...");
			Calendar stopDate = getPrevDate( date) ;
 
			cs.setDate2( stopDate );
			sm.updateContractService(String.valueOf( cs.getID() ) , cs );
		}
		//если открыт сегодняшним числом  - ничего не делаем
		else  if ( cs.getDate1().compareTo( date ) == 0 )
		{
			print ("update pay service...");
			createNew = false;						
			cs.setComment( "Установлена скриптом" );
			sm.updateContractService(String.valueOf( cs.getID() ) , cs );
 
		}
	}
 
	if ( createNew )
	{
		// установка абонплаты
		print ("add pay service...");	
		cs = new ContractService();
		cs.setContractID( cid );
		cs.setServiceID( PAY_SERVICE );
		cs.setDate1( date );
		cs.setComment( "Установлена скриптом" );
		sm.updateContractService( "new", cs );
	}
 
 
}
 
private void setStatus( cid, date, statusId )
{
	status = new ContractStatus();
	status.setContractId( cid );
	status.setUserId( USER_ID );
	status.setStatus( statusId );
	status.setDate1( date );
	status.setComment( "установлен скриптом " );	
	sm = new ContractStatusManager( con );
	sm.changeStatus( status.clone() );	
}
 
//id услуги абонплат
PAY_SERVICE = 1;
 
 
TARIFF_BASE_ID = 103315;
TARIFF_LOCAL_ID = 103317;
TARIFF_EFIR_ID = 103316;
TARIFF_SERVICE_ID = 103312;
 
//id пользователя от имени которого будет изменяться статус договора, 0 - если от имени сервера 
USER_ID = 1;
 
 
service = event.getContractService();
serviceId = service.getServiceId();
cid = event.getContractID();
print ("serviceId=" + serviceId);
date = service.getDate();
 
switch(serviceId)
 
{
//Подключение к сети КТВ на Базовый тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
case 5: setTariff(cid, TARIFF_BASE_ID, date); addNPayService( date );  break;
//Подключение к сети КТВ на Эфирный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
case 6: setTariff(cid, TARIFF_EFIR_ID, date); addNPayService( date ); break;
//Подключение к сети КТВ на Локальный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
case 23: setTariff(cid, TARIFF_LOCAL_ID, date); addNPayService( date ); break;
//Подключение к сети КТВ на Служебный тариф (стоимость 0 рублей) – начинала начисляться абонплата и у абонента появлялся Служебный тариф.
case 7:  setTariff(cid, TARIFF_SERVICE_ID, date); addNPayService( date ); break;
//Льготное подключение к сети КТВ на Базовый тариф (0) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
case 8: setTariff(cid, TARIFF_BASE_ID, date); addNPayService( date );  break;
//Льготное подключение к сети КТВ на Эфирный тариф (0) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
case 9:  setTariff(cid, TARIFF_EFIR_ID, date); addNPayService( date ); break;
//Льготное подключение к сети КТВ на Локальный тариф (0) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
case 10:  setTariff(cid, TARIFF_LOCAL_ID, date); addNPayService( date ); break;
//50 % подключение к сети КТВ на Базовый тариф (165) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
case 11:  setTariff(cid, TARIFF_BASE_ID, date); addNPayService( date ); break;
//50 % подключение к сети КТВ на Эфирный тариф (165) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
case 12:  setTariff(cid, TARIFF_EFIR_ID, date); addNPayService( date ); break;
//50 % подключение к сети КТВ на Локальный тариф (165) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
case 13:  setTariff(cid, TARIFF_LOCAL_ID, date); addNPayService( date ); break;
//Повторное подключение к сети КТВ (100 рублей) – начинала начисляться абонплата. состояние переходит в активен
case 14: addNPayService( date ); setStatus(cid, date, KernelConst.CONTRACT_STATUS_ACTIVE); break;
//Бесплатное повторное подключение к сети КТВ (0 рублей) – начинала начисляться абонплата. состояние переходит в активен
case 15: addNPayService( date ); setStatus(cid, date, KernelConst.CONTRACT_STATUS_ACTIVE); break;
//Переключение на Эфирный тариф (150) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
case 16: setTariff(cid, TARIFF_EFIR_ID, date); break;
//Бесплатное переключение на Эфирный тариф (0) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
case 17: setTariff(cid, TARIFF_EFIR_ID, date); break;
//Переключение на Базовый тариф (0) – у абонента вместо какого-либо тарифа появлялся Базовый тариф.
case 18: setTariff(cid, TARIFF_BASE_ID, date); break;
//Переключение на Локальный тариф (0) – у абонента вместо какого-либо тарифа появлялся Локальный тариф.
case 19: setTariff(cid, TARIFF_LOCAL_ID, date); break;
//Переключение на Служебный тариф (0) – у абонента вместо какого-либо тарифа появлялся Служебный тариф.
case 20: setTariff(cid, TARIFF_SERVICE_ID, date); break;
//Приостановление действия договора (0) –  статус абонента переводился в «приостановлен».
case 21: setStatus(cid, date, KernelConst.CONTRACT_STATUS_SUSPENDED); break;
//Расторжение договора (0) - статус абонента переводился в «закрыт».
case 22: setStatus(cid, date, KernelConst.CONTRACT_STATUS_CLOSED); break;
}
Личные инструменты