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

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

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

Пример изменения подписки карты через 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)

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