forum.bitel.ru
http://forum.bitel.ru/

[6.1] Получить список тарифов доступных для установки
http://forum.bitel.ru/viewtopic.php?f=19&t=9579
Страница 1 из 1

Автор:  Phricker [ 15 авг 2014, 22:38 ]
Заголовок сообщения:  [6.1] Получить список тарифов доступных для установки

Как можно в глобальном скрипте получить список тарифов доступный для установки на договоре?
Изображение

Создаю группы тарифов для контрагентов (их больше 100) через глобальный скрипт. И хотел туда сразу через API загнать тарифные планы.

Автор:  Phricker [ 18 авг 2014, 10:53 ]
Заголовок сообщения:  Re: [6.1] Получить список тарифов доступных для установки

up

Автор:  stark [ 18 авг 2014, 16:06 ]
Заголовок сообщения:  Re: [6.1] Получить список тарифов доступных для установки

вот

Код:
ru.bitel.bgbilling.kernel.tariff.server.bean.TariffPlanManager.getTariffPlanList( int defaultID, long groups, int face, String title )

Автор:  Phricker [ 19 авг 2014, 10:56 ]
Заголовок сообщения:  Re: [6.1] Получить список тарифов доступных для установки

А как там отработать фильтр?
Т.е. якобы стоят галочки "Только используемые" и "Фильтр по договору"

Автор:  Artur [ 19 авг 2014, 12:24 ]
Заголовок сообщения:  Re: [6.1] Получить список тарифов доступных для установки

Phricker писал(а):
А как там отработать фильтр?
Т.е. якобы стоят галочки "Только используемые" и "Фильтр по договору"


Код:
boolean getUsed - только используемые
int mid - код модуля
tariffGroupFilter - фильтр по группе тарифа


TariffPlanManager planManager = new TariffPlanManager( con );
for ( TariffPlan plan : planManager.getTariffPlanList() )
{
     if ( (!getUsed || plan.isUsed() || plan.getId() == defaultID)
     && (planManager.usesModule( plan.getId(), mid ) || mid < 0)
     && ( !tariffGroupFilter || isPlanInContractTariffGroup( plan ) ) )
     {

     }
}

   private boolean isPlanInContractTariffGroup( TariffPlan plan )
   {
      boolean result = false;
      List<Integer> contractTariffGroups = new ContractTariffGroupManager( con ).getContractTariffGroupIds( cid, new Date() );
      for( Integer contractTariffGroup : contractTariffGroups )
      {
         TariffGroup tariffGroup = new TariffGroupManager( con ).getTariffGroupById( contractTariffGroup );
         List<TariffGroupTariff> tariffGroupItems = tariffGroup.getPlanList();
         //смотрим ТП в группе тарифов и отбираем только активные
         for( TariffGroupTariff tariffItem : tariffGroupItems )
         {
            if( tariffItem.getDate2() == null )
            {
               if( tariffItem.getId() == plan.getId() )
               {
                  result = true;
                  break;
               }
            }
         }
      }
      return result;
   }


Примерно так, если я верно понял то, что вы хотите сделать.

Автор:  Phricker [ 20 авг 2014, 19:15 ]
Заголовок сообщения:  Re: [6.1] Получить список тарифов доступных для установки

Благодарю, то что нужно. Точнее направление верное.
Правда я еще не создавал групп тарифов, поэтому пришлось чуть поменять на
Код:
for ( TariffPlan plan : planManager.getTariffPlanList(defaultID, contract.getGroups(), contract.getFc(), "") )

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/