Изменение подписки карты через web (cerbercrypt)

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

Версия от 06:07, 3 сентября 2009; Alexey (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Пример изменения подписки карты через web по заданию пользователя. Скрипт срабатывает по событию "изменение подписки карты". И снимает за смену пакета 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 );

Личные инструменты