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

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

(Различия между версиями)
Перейти к: навигация, поиск
Строка 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)

Версия 06:17, 3 сентября 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)

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