Изменение подписки карты через web (cerbercrypt)
Материал из BiTel WiKi
(Различия между версиями)
												
			
		Alexey  (Обсуждение | вклад)  | 
		DimOn  (Обсуждение | вклад)  м  («Изменение подписки карты через web» переименована в «Изменение подписки карты через web (cerbercrypt)»: уточнение)  | 
		||
| (1 промежуточная версия не показана) | |||
| Строка 1: | Строка 1: | ||
Пример изменения подписки карты через web по заданию пользователя.    | Пример изменения подписки карты через web по заданию пользователя.    | ||
Скрипт срабатывает по событию "изменение подписки карты". И снимает за смену пакета 20 рублей.  | Скрипт срабатывает по событию "изменение подписки карты". И снимает за смену пакета 20 рублей.  | ||
| + | Для версии 4.6.  | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | <source lang="java">  | ||
| + | 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 );  | ||
| + | |||
| + | if( contract == null ) {  | ||
| + |     error( "Contract with ID " + cid + " was not found!" );  | ||
| + |     return;  | ||
| + | }  | ||
| + | |||
| + | print(event.getChangeMode()); //анализ типа события (2 - закрытие периода подписки)  | ||
| + | |||
| + | if(event.getChangeMode() == 2)  | ||
| + |   {  | ||
| + | 	print("Подписка закрыта");  | ||
| + | 	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 );  | ||
| + | </source>  | ||
| + | |||
| + | --[[Участник:Alexey|Alexey]] 06:17, 3 сентября 2009 (UTC)  | ||
Текущая версия на 12:49, 16 октября 2009
Пример изменения подписки карты через web по заданию пользователя. Скрипт срабатывает по событию "изменение подписки карты". И снимает за смену пакета 20 рублей. Для версии 4.6.
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 ); if( contract == null ) { error( "Contract with ID " + cid + " was not found!" ); return; } print(event.getChangeMode()); //анализ типа события (2 - закрытие периода подписки) if(event.getChangeMode() == 2) { print("Подписка закрыта"); 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 );
--Alexey 06:17, 3 сентября 2009 (UTC)
