| 
		 | 
		
		| Строка 1: | 
Строка 1: | 
|   | Пример изменения подписки карты через web по заданию пользователя.    |   | Пример изменения подписки карты через web по заданию пользователя.    | 
|   | Скрипт срабатывает по событию "изменение подписки карты". И снимает за смену пакета 20 рублей.  |   | Скрипт срабатывает по событию "изменение подписки карты". И снимает за смену пакета 20 рублей.  | 
| - | 
  |   | 
| - | import bitel.billing.server.contract.bean.*;
  |   | 
| - | import bitel.billing.server.tariff.bean.*;
  |   | 
| - | import bitel.billing.server.script.event.*;
  |   | 
| - | import bitel.billing.common.*;
  |   | 
| - | import java.util.*;
  |   | 
| - | import java.math.*;
  |   | 
| - | import bitel.billing.server.cerbercrypt.bean.event.CerbercryptEventNumbers;
  |   | 
| - | import bitel.billing.server.cerbercrypt.bean.event.SubscriptionChangedEvent;
  |   | 
| - | 
  |   | 
| - | CHARGE_TYPE = 18; //тип расхода - "Смена пакета"
  |   | 
| - |  
  |   | 
| - | cm = new ContractManager( con );
  |   | 
| - | bu = new BalanceUtils( con );
  |   | 
| - | chm = new ChargeManager( con );
  |   | 
| - | 
  |   | 
| - | 
  |   | 
| - | 
  |   | 
| - | cid = event.getContractID();
  |   | 
| - | contract = cm.getContractByID( cid );
  |   | 
| - | print(event.getChangeMode()); //анализ типа события (2 - закрытие периода подписки)
  |   | 
| - | 
  |   | 
| - | if(event.getChangeMode() == 2)
  |   | 
| - |   {
  |   | 
| - | 	print("Подписка закрыта");
  |   | 
| - | 	return;
  |   | 
| - |   }
  |   | 
| - | 
  |   | 
| - | if( contract == null ) {
  |   | 
| - |     error( "Contract with ID " + cid + " was not found!" );
  |   | 
| - |     return;
  |   | 
| - | }
  |   | 
| - | 
  |   | 
| - | date = new Date();
  |   | 
| - | 
  |   | 
| - | // цена смены
  |   | 
| - | changeCost = new BigDecimal(20);
  |   | 
| - |  
  |   | 
| - | // текущий баланс
  |   | 
| - | balance = bu.getBalance( date, cid ); 
  |   | 
| - | 
  |   | 
| - | if( balance.compareTo( changeCost ) < 0 )
  |   | 
| - | {
  |   | 
| - |   // установка флага обработанности скриптом прервет стандартную смену пакета
  |   | 
| - |   event.setProcessed( true );
  |   | 
| - |   event.setError( "Недостаточно средств для смены пакета!" ); 
  |   | 
| - |   return;
  |   | 
| - | }
  |   | 
| - | 
  |   | 
| - | 
  |   | 
| - | // заносим расход
  |   | 
| - | charge = new Charge();
  |   | 
| - | charge.setContractID( cid );
  |   | 
| - | 
  |   | 
| - | charge.setChargeDate( date );
  |   | 
| - | 
  |   | 
| - | charge.setChargeTypeID( CHARGE_TYPE );
  |   | 
| - | charge.setComment( "Смена пакета через Web" );
  |   | 
| - | charge.setSumma( changeCost );
  |   | 
| - | 
  |   | 
| - | chm.updateCharge( charge );
  |   | 
| - | 
  |   | 
| - | bu.updateBalance( date, cid );
  |   | 
Пример изменения подписки карты через web по заданию пользователя. 
Скрипт срабатывает по событию "изменение подписки карты". И снимает за смену пакета 20 рублей.