Изменение подписки карты через web (cerbercrypt)
Материал из BiTel WiKi
Пример изменения подписки карты через 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 );