stark писал(а):
Inspire писал(а):
Т.е. мне в моем личном кабинете нужно вызвать метод changeTariff и передать в него все эти параметры. Как я понял из wiki код этого метода представлен здесь:
...
Но че за параметры ( event, setup, con, conSlave) не понятно. И почему у этих переменных такие исходные значения int RSCM_MID = 2; int RSCM_SID = 30;
Как мне это сделать смену тарифного плана в своем личном кабинете?
Нет, это не код этого метода. changeTariff меняет тариф, а потом бросает событие на смену тарифа. И это пример обработчика этого события. Он пытается узнать цену за смену тарифа из модуля rscm и повесить расход зачем-то(не знаю зачем, вешать расход, а не просто добавлять услугу rscm). Это просто чья-то конкретная реализация обработчика события, преследующая его конкретные цели( снять деньги за смену тарифа, а если денег нет, то не менять - не уверен что это работает).
Спасибо за помощь. Походу, вот этот метод меняет тариф:
Код:
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.*;
import bitel.billing.server.npay.bean.*;
import bitel.billing.server.admin.eventbus.event.*;
import bitel.billing.server.admin.eventbus.*;
private getPrevDate( date )
{
Calendar result = new GregorianCalendar();
result.setTime( date );
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;
//пытаемся найти на текущий момент тариф
list = ctm.getContractTariffList(cid, date);
if ( list.size() > 0)
{
t = list.get(0);
}
//Если нашли , то закрываем предыдушим днем
createNew = true;
changed = false;
if ( t != null)
{
if ( t.getDate1() == null || t.getDate1().getTime().compareTo( date ) < 0 )
{
print ("close tariff..");
changed = true;
Calendar stopDate = getPrevDate( date) ;
t.setDate2( stopDate );
ctm.updateContractTariff( t );
}
//если открыт сегодняшним числом - ничего не делаем
else if ( t.getDate1().getTime().compareTo( date ) == 0 )
{
print ("update tariff ");
createNew = false;
changed = true;
t.setTariffPlanID( tariffId );
t.setComment( "создан автоматически" );
ctm.updateContractTariff( t );
}
}
// создаем новый
if ( createNew )
{
print ("add new tariff..");
changed = true;
t = new ContractTariff();
t.setContractID( cid );
t.setTariffPlanID( tariffId );
t.setPos( 0 );
t.setDate1( TimeUtils.convertDateToCalendar( date ) );
t.setDate2( null );
t.setComment( "создан автоматически" );
ctm.updateContractTariff( t );
}
if ( changed )
{
BillingEventBus.publish( new TariffChangedEvent( cid ) );
}
}
private addNpayModule()
{
ContractModuleManager manager = new ContractModuleManager( con );
modules = manager.getContractModuleSet( cid );
if ( !modules.contains( NPAY_MID ) )
{
ContractModule module = new ContractModule();
module.setContractId( cid );
module.setModuleId( NPAY_MID );
manager.addContractModule( module );
}
}
private addNPayService( date )
{
addNpayModule();
ServiceObjectManager som = new ServiceObjectManager( con, NPAY_MID ) ;
services = som.getServiceObjectList( cid, 0, 0, 0 );
object = null;
//TODO - переделать так чтобы искал в нужно врменном отрезке, а не последнюю незакрытую
if ( services.size() > 0)
{
//ищем последнюю не закрытую ..
Date maxdate = new Date (0 );
for ( ServiceObject o : services )
{
if ( o.getDate2() == null && o.getDate1().compareTo( maxdate) >= 0 )
{
maxdate = o.getDate1();
object = o;
}
}
}
createNew = true;
//Если нашли , то закрываем предыдушим днем
if ( object != null)
{
if ( object.getDate1().compareTo( date ) < 0 )
{
print ("close pay service...");
Calendar stopDate = getPrevDate( date) ;
object.setDate2( stopDate.getTime() );
print ("object.Date2=" + object.getDate2() );
som.updateServiceObject( object );
}
//если открыт сегодняшним числом - ничего не делаем
else if ( object.getDate1().compareTo( date ) == 0 )
{
print ("update pay service...");
createNew = false;
object.setComment( "Установлена скриптом" );
som.updateServiceObject( object );
}
}
if ( createNew )
{
// установка абонплаты
print ("add pay service...");
object = new ServiceObject();
object.setContractId( cid );
object.setServiceId( PAY_SERVICE );
object.setDate1( date );
object.setComment( "Установлена скриптом" );
som.updateServiceObject( object );
}
}
private void setStatus( cid, date, statusId )
{
status = new ContractStatus();
status.setContractId( cid );
status.setStatus( statusId );
status.setDate1( TimeUtils.convertDateToCalendar( date ) );
status.setComment( "установлен скриптом " );
sm = new ContractStatusManager( con );
sm.changeStatus( status.clone(), USER_ID );
}
//id услуги абонплат
PAY_SERVICE = 1;
NPAY_MID = 1;
TARIFF_BASE_ID = 103315;
TARIFF_LOCAL_ID = 103317;
TARIFF_EFIR_ID = 103316;
TARIFF_SERVICE_ID = 103312;
//id пользователя от имени которого будет изменяться статус договора
USER_ID = 0;
service = event.getContractService();
serviceId = service.getServiceId();
cid = event.getContractID();
print ("serviceId=" + serviceId);
date = service.getDate().getTime();
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: setStatus(cid, date, KernelConst.CONTRACT_STATUS_ACTIVE); break;
//Бесплатное повторное подключение к сети КТВ (0 рублей) - состояние переходит в активен
case 15: 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;
}
Т.е. мне надо сделать так, чтобы при нажатии кнопки сменить тариф, сработал этот метод?