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;
}
Т.е. мне надо сделать так, чтобы при нажатии кнопки сменить тариф, сработал этот метод?