Обработка события "добавление услуги RSCM в договор" . Скипт сменяет тариф, подключает абонплату
Материал из BiTel WiKi
(Различия между версиями)
Stark (Обсуждение | вклад) |
Stark (Обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
- | |||
Необходимо ,было сделать, чтобы следующие услуги автоматически меняли статус абонента и/или тариф: | Необходимо ,было сделать, чтобы следующие услуги автоматически меняли статус абонента и/или тариф: | ||
*Подключение к сети КТВ на Базовый тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Базовый тариф. | *Подключение к сети КТВ на Базовый тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Базовый тариф. | ||
*Подключение к сети КТВ на Эфирный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф. | *Подключение к сети КТВ на Эфирный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф. | ||
- | + | *Подключение к сети КТВ на Локальный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Локальный тариф. | |
- | + | *Подключение к сети КТВ на Служебный тариф (стоимость 0 рублей) – начинала начисляться абонплата и у абонента появлялся Служебный тариф. | |
- | + | *Льготное подключение к сети КТВ на Базовый тариф (0) – начинала начисляться абонплата и у абонента появлялся Базовый тариф. | |
- | + | *Льготное подключение к сети КТВ на Эфирный тариф (0) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф. | |
- | + | *Льготное подключение к сети КТВ на Локальный тариф (0) – начинала начисляться абонплата и у абонента появлялся Локальный тариф. | |
- | + | *50 % подключение к сети КТВ на Базовый тариф (165) – начинала начисляться абонплата и у абонента появлялся Базовый тариф. | |
- | + | *50 % подключение к сети КТВ на Эфирный тариф (165) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф. | |
- | + | *50 % подключение к сети КТВ на Локальный тариф (165) – начинала начисляться абонплата и у абонента появлялся Локальный тариф. | |
- | + | *Повторное подключение к сети КТВ (100 рублей) – начинала начисляться абонплата. | |
- | + | *Бесплатное повторное подключение к сети КТВ (0 рублей) – начинала начисляться абонплата. | |
- | + | *Переключение на Эфирный тариф (150) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф. | |
- | + | *Бесплатное переключение на Эфирный тариф (0) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф. | |
- | + | *Переключение на Базовый тариф (0) – у абонента вместо какого-либо тарифа появлялся Базовый тариф. | |
- | + | *Переключение на Локальный тариф (0) – у абонента вместо какого-либо тарифа появлялся Локальный тариф. | |
- | + | *Переключение на Служебный тариф (0) – у абонента вместо какого-либо тарифа появлялся Служебный тариф. | |
- | + | *Приостановление действия договора (0) – статус абонента переводился в «приостановлен». | |
- | + | *Расторжение договора (0) - статус абонента переводился в «закрыт». | |
- | + | ||
На основании события добавления услуги в RSCM модуле реализуются BGBS скрипты, реализующие данные действия. | На основании события добавления услуги в RSCM модуле реализуются BGBS скрипты, реализующие данные действия. | ||
Версия 07:09, 14 января 2009
Необходимо ,было сделать, чтобы следующие услуги автоматически меняли статус абонента и/или тариф:
- Подключение к сети КТВ на Базовый тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
- Подключение к сети КТВ на Эфирный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
- Подключение к сети КТВ на Локальный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
- Подключение к сети КТВ на Служебный тариф (стоимость 0 рублей) – начинала начисляться абонплата и у абонента появлялся Служебный тариф.
- Льготное подключение к сети КТВ на Базовый тариф (0) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
- Льготное подключение к сети КТВ на Эфирный тариф (0) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
- Льготное подключение к сети КТВ на Локальный тариф (0) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
- 50 % подключение к сети КТВ на Базовый тариф (165) – начинала начисляться абонплата и у абонента появлялся Базовый тариф.
- 50 % подключение к сети КТВ на Эфирный тариф (165) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф.
- 50 % подключение к сети КТВ на Локальный тариф (165) – начинала начисляться абонплата и у абонента появлялся Локальный тариф.
- Повторное подключение к сети КТВ (100 рублей) – начинала начисляться абонплата.
- Бесплатное повторное подключение к сети КТВ (0 рублей) – начинала начисляться абонплата.
- Переключение на Эфирный тариф (150) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
- Бесплатное переключение на Эфирный тариф (0) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф.
- Переключение на Базовый тариф (0) – у абонента вместо какого-либо тарифа появлялся Базовый тариф.
- Переключение на Локальный тариф (0) – у абонента вместо какого-либо тарифа появлялся Локальный тариф.
- Переключение на Служебный тариф (0) – у абонента вместо какого-либо тарифа появлялся Служебный тариф.
- Приостановление действия договора (0) – статус абонента переводился в «приостановлен».
- Расторжение договора (0) - статус абонента переводился в «закрыт».
На основании события добавления услуги в RSCM модуле реализуются BGBS скрипты, реализующие данные действия.
Скрипт(возможно в коде скрипта несколько изменена логика , описанная выше, скрипт и коментарии в нем являются первичными ):
import bitel.billing.server.contract.bean.*; import bitel.billing.server.tariff.bean.*; import bitel.billing.server.script.event.*; import java.util.*; import bitel.billing.common.*; private getPrevDate( date ) { Calendar result = new GregorianCalendar(); result.setTime( date.getTime() ); result.add( Calendar.DAY_OF_YEAR, -1 ); return result; } private void setTariff( cid, tariffId, date ) { ctm = new ContractTariffManager( con ); cm = new ContractManager( con ); t = null; //пытаемся найти на текущий момент тариф t = ctm.getContractTariff(cid, date); //Если нашли , то закрываем предыдушим днем createNew = true; if ( t != null) { if ( t.getDate1() == null || t.getDate1().compareTo( date ) < 0 ) { print ("close tariff.."); Calendar stopDate = getPrevDate( date) ; t.setDate2( stopDate ); ctm.updateContractTariff( String.valueOf( t.getID() ) , t ); } //если открыт сегодняшним числом - ничего не делаем else if ( t.getDate1().compareTo( date ) == 0 ) { print ("update tariff "); createNew = false; t.setTariffPlanID( tariffId ); t.setComment( "создан автоматически" ); ctm.updateContractTariff( String.valueOf( t.getID() ) , t ); } } // создаем новый if ( createNew ) { print ("add new tariff.."); t = new ContractTariff(); t.setContractID( cid ); t.setTariffPlanID( tariffId ); t.setPos( 0 ); t.setDate1( date ); t.setDate2( null ); t.setComment( "создан автоматически" ); ctm.updateContractTariff( "new", t ); } cm.updateLastTariffChange( cid ); } private addNPayService( date ) { sm = new ContractServiceManager( con ); services = sm.getContractServiceList( cid, date ); cs = null; for (cs2 : services) { if (cs2.getServiceID() == PAY_SERVICE) { cs = cs2; break; } } createNew = true; //Если нашли , то закрываем предыдушим днем if ( cs != null) { if ( cs.getDate1().compareTo( date ) < 0 ) { print ("close pay service..."); Calendar stopDate = getPrevDate( date) ; cs.setDate2( stopDate ); sm.updateContractService(String.valueOf( cs.getID() ) , cs ); } //если открыт сегодняшним числом - ничего не делаем else if ( cs.getDate1().compareTo( date ) == 0 ) { print ("update pay service..."); createNew = false; cs.setComment( "Установлена скриптом" ); sm.updateContractService(String.valueOf( cs.getID() ) , cs ); } } if ( createNew ) { // установка абонплаты print ("add pay service..."); cs = new ContractService(); cs.setContractID( cid ); cs.setServiceID( PAY_SERVICE ); cs.setDate1( date ); cs.setComment( "Установлена скриптом" ); sm.updateContractService( "new", cs ); } } private void setStatus( cid, date, statusId ) { status = new ContractStatus(); status.setContractId( cid ); status.setUserId( USER_ID ); status.setStatus( statusId ); status.setDate1( date ); status.setComment( "установлен скриптом " ); sm = new ContractStatusManager( con ); sm.changeStatus( status.clone() ); } //id услуги абонплат PAY_SERVICE = 1; TARIFF_BASE_ID = 103315; TARIFF_LOCAL_ID = 103317; TARIFF_EFIR_ID = 103316; TARIFF_SERVICE_ID = 103312; //id пользователя от имени которого будет изменяться статус договора, 0 - если от имени сервера USER_ID = 1; service = event.getContractService(); serviceId = service.getServiceId(); cid = event.getContractID(); print ("serviceId=" + serviceId); date = service.getDate(); switch(serviceId) { //Подключение к сети КТВ на Базовый тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Базовый тариф. case 5: setTariff(cid, TARIFF_BASE_ID, date); addNPayService( date ); break; //Подключение к сети КТВ на Эфирный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф. case 6: setTariff(cid, TARIFF_EFIR_ID, date); addNPayService( date ); break; //Подключение к сети КТВ на Локальный тариф (стоимость 330 рублей) – начинала начисляться абонплата и у абонента появлялся Локальный тариф. case 23: setTariff(cid, TARIFF_LOCAL_ID, date); addNPayService( date ); break; //Подключение к сети КТВ на Служебный тариф (стоимость 0 рублей) – начинала начисляться абонплата и у абонента появлялся Служебный тариф. case 7: setTariff(cid, TARIFF_SERVICE_ID, date); addNPayService( date ); break; //Льготное подключение к сети КТВ на Базовый тариф (0) – начинала начисляться абонплата и у абонента появлялся Базовый тариф. case 8: setTariff(cid, TARIFF_BASE_ID, date); addNPayService( date ); break; //Льготное подключение к сети КТВ на Эфирный тариф (0) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф. case 9: setTariff(cid, TARIFF_EFIR_ID, date); addNPayService( date ); break; //Льготное подключение к сети КТВ на Локальный тариф (0) – начинала начисляться абонплата и у абонента появлялся Локальный тариф. case 10: setTariff(cid, TARIFF_LOCAL_ID, date); addNPayService( date ); break; //50 % подключение к сети КТВ на Базовый тариф (165) – начинала начисляться абонплата и у абонента появлялся Базовый тариф. case 11: setTariff(cid, TARIFF_BASE_ID, date); addNPayService( date ); break; //50 % подключение к сети КТВ на Эфирный тариф (165) – начинала начисляться абонплата и у абонента появлялся Эфирный тариф. case 12: setTariff(cid, TARIFF_EFIR_ID, date); addNPayService( date ); break; //50 % подключение к сети КТВ на Локальный тариф (165) – начинала начисляться абонплата и у абонента появлялся Локальный тариф. case 13: setTariff(cid, TARIFF_LOCAL_ID, date); addNPayService( date ); break; //Повторное подключение к сети КТВ (100 рублей) – начинала начисляться абонплата. состояние переходит в активен case 14: addNPayService( date ); setStatus(cid, date, KernelConst.CONTRACT_STATUS_ACTIVE); break; //Бесплатное повторное подключение к сети КТВ (0 рублей) – начинала начисляться абонплата. состояние переходит в активен case 15: addNPayService( date ); setStatus(cid, date, KernelConst.CONTRACT_STATUS_ACTIVE); break; //Переключение на Эфирный тариф (150) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф. case 16: setTariff(cid, TARIFF_EFIR_ID, date); break; //Бесплатное переключение на Эфирный тариф (0) – у абонента вместо какого-либо тарифа появлялся Эфирный тариф. case 17: setTariff(cid, TARIFF_EFIR_ID, date); break; //Переключение на Базовый тариф (0) – у абонента вместо какого-либо тарифа появлялся Базовый тариф. case 18: setTariff(cid, TARIFF_BASE_ID, date); break; //Переключение на Локальный тариф (0) – у абонента вместо какого-либо тарифа появлялся Локальный тариф. case 19: setTariff(cid, TARIFF_LOCAL_ID, date); break; //Переключение на Служебный тариф (0) – у абонента вместо какого-либо тарифа появлялся Служебный тариф. case 20: setTariff(cid, TARIFF_SERVICE_ID, date); break; //Приостановление действия договора (0) – статус абонента переводился в «приостановлен». case 21: setStatus(cid, date, KernelConst.CONTRACT_STATUS_SUSPENDED); break; //Расторжение договора (0) - статус абонента переводился в «закрыт». case 22: setStatus(cid, date, KernelConst.CONTRACT_STATUS_CLOSED); break; }