Изменение подписки карты через web (cerbercrypt)
Материал из BiTel WiKi
(Различия между версиями)
Alexey (Обсуждение | вклад) (Новая: Пример изменения подписки карты через web по заданию пользователя. Скрипт срабатывает по событию "изм...) |
DimOn (Обсуждение | вклад) м («Изменение подписки карты через web» переименована в «Изменение подписки карты через web (cerbercrypt)»: уточнение) |
||
(2 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
Пример изменения подписки карты через web по заданию пользователя. | Пример изменения подписки карты через web по заданию пользователя. | ||
Скрипт срабатывает по событию "изменение подписки карты". И снимает за смену пакета 20 рублей. | Скрипт срабатывает по событию "изменение подписки карты". И снимает за смену пакета 20 рублей. | ||
+ | Для версии 4.6. | ||
+ | |||
+ | |||
+ | |||
+ | <source lang="java"> | ||
import bitel.billing.server.contract.bean.*; | import bitel.billing.server.contract.bean.*; | ||
import bitel.billing.server.tariff.bean.*; | import bitel.billing.server.tariff.bean.*; | ||
Строка 12: | Строка 17: | ||
CHARGE_TYPE = 18; //тип расхода - "Смена пакета" | CHARGE_TYPE = 18; //тип расхода - "Смена пакета" | ||
+ | |||
cm = new ContractManager( con ); | cm = new ContractManager( con ); | ||
bu = new BalanceUtils( con ); | bu = new BalanceUtils( con ); | ||
chm = new ChargeManager( con ); | chm = new ChargeManager( con ); | ||
+ | |||
Строка 21: | Строка 28: | ||
cid = event.getContractID(); | cid = event.getContractID(); | ||
contract = cm.getContractByID( cid ); | contract = cm.getContractByID( cid ); | ||
+ | |||
+ | if( contract == null ) { | ||
+ | error( "Contract with ID " + cid + " was not found!" ); | ||
+ | return; | ||
+ | } | ||
+ | |||
print(event.getChangeMode()); //анализ типа события (2 - закрытие периода подписки) | print(event.getChangeMode()); //анализ типа события (2 - закрытие периода подписки) | ||
Строка 29: | Строка 42: | ||
} | } | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
date = new Date(); | date = new Date(); | ||
+ | |||
// цена смены | // цена смены | ||
Строка 53: | Строка 64: | ||
// заносим расход | // заносим расход | ||
charge = new Charge(); | charge = new Charge(); | ||
+ | |||
charge.setContractID( cid ); | charge.setContractID( cid ); | ||
Строка 58: | Строка 70: | ||
charge.setChargeTypeID( CHARGE_TYPE ); | charge.setChargeTypeID( CHARGE_TYPE ); | ||
+ | |||
charge.setComment( "Смена пакета через Web" ); | charge.setComment( "Смена пакета через Web" ); | ||
+ | |||
charge.setSumma( changeCost ); | charge.setSumma( changeCost ); | ||
Строка 64: | Строка 78: | ||
bu.updateBalance( date, cid ); | 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)