BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 20 июн 2025, 01:41

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Связка тарифного плана и шлюза
СообщениеДобавлено: 13 июн 2007, 19:53 
Клиенту даем доступ в интернет с ограничением по скорости 128 кб/с. В договоре прописываем тарифный план и в модуле IPN с помощью шлюза типа Manad ограничиваем скорость до 128 кб/с. Если клиент через Web-интерфейс изменяет свой тарифный план (например на 256 кб/с), как автоматически изменить и шлюз, чтобы ограничение стало 256 кб/с?


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 июн 2007, 00:19 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Необходимо встроить в скрипт смены тарифа. Обязательное требование - правила манада должны быть типизированы, т.е. не вбиты вручную в каждом договоре. Если нет - то нужно править само правило, вытаскивать адреса. Установку типа правила нужно делать в зависимости от нового тарифа. Попробуйте, будут проблемы - пишите.

Код:
import bitel.billing.server.ipn.bean.*;

// вместо mid поставьте код вашего модуля IPN
ugrm = new UserGateRuleManager( con, mid )

rule = ugrm.getUserGateRules( cid ).get( 0 );
rule.setRuleTypeId( <новый тип правила> );
ugrm.updateUserGateRule( String.valueOf( rule.getId() ), rule ) ;

// обновление правила на манаде
csm = new ContractStatusManager( con, mid );

status =  csm.getContractStatus( cid );
// открытие и закрытие шлюза
csm.changeStatus( cid, 1, userID.intValue(), true );
csm.changeStatus( cid, status, userID.intValue(), true );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 апр 2008, 22:15 
как узнать Id типа правила? у меня в клиенте под linux в модули->IPN-> типы правил Ctrl-i не работает


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 апр 2008, 16:30 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
msh писал(а):
как узнать Id типа правила? у меня в клиенте под linux в модули->IPN-> типы правил Ctrl-i не работает

Там эта функция не поддерживалась , модуль ipn для версии 4.4 обновлен


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 апр 2008, 21:00 
вот написал скрипт смены тарифа по заданию пользователя с изменением типа шлюза
Код:
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.server.ipn.bean.*;
import java.util.*;

cid = event.getContractID();
task = event.getTask();

ctm =  new ContractTariffManager(  con );

// текущий тарифный план
currentTariff = ctm.getContractTariff( cid, task.getFromDate() );
if( currentTariff == null )
{
 error( "Current tariff not found" );
 return;
}

// закрываем старый тариф днем ранее
endDate = (Calendar)task.getFromDate().clone();
endDate.add( Calendar.DAY_OF_YEAR, -1 );

currentTariff.setDate2( endDate );
ctm.updateContractTariff( String.valueOf( currentTariff.getID() ), currentTariff  );


// вносим новый тариф
newPlan = new  ContractTariff();
newPlan.setContractID( cid );
newPlan.setTariffPlanID( task.getTariffPlanID());
newPlan.setDate1( task.getFromDate() );
newPlan.setComment( "Смена тарифа через Web" );
ctm.updateContractTariff( "new", newPlan );

// получаем ID нового тарифного плана - по нему будем определять правило шлюза
newPlanID=task.getTariffPlanID();

switch ( newPlanID ){
   case 4:
      // план тестовый 256кбит/с
      ruleTypeID=11;
   break;
   case 3:
      // план базовый 1 Мбит/с
      ruleTypeID=1;
   default:
      // 64 кбит/с
      ruleTypeID=14;
}

// выставляем тип правила шлюза для данного тарифа
// вместо mid поставьте код вашего модуля IPN
ugrm = new UserGateRuleManager( con, 3 )
rule = ugrm.getUserGateRules( cid ).get( 0 );

rule.setRuleTypeId(ruleTypeID);
ugrm.updateUserGateRule( String.valueOf( rule.getId() ), rule ) ;

// обновление правила на манаде
csm = new ContractStatusManager( con, 3 );

status =  csm.getContractStatus( cid );
// открытие и закрытие шлюза
csm.changeStatus( cid, 1, userID.intValue(), true );
csm.changeStatus( cid, status, userID.intValue(), true );


возникли вследующие вопросы:
1)как проверить его работу не дожидаясь первого мая и не меняя время на сервере
2)зачем в последних 2х строчках скрипта (а они взяты из рекомендвции Администратора) сначала производится открытие шлюза а затем закрытие? по идее было бы логично наоборот
3)очень тяжко прописавать в скипте соответствие между ID тарифа и ID правила шлюза - может добавить возможность присваивать в тарифе свои параметры, а потом читать их в скрипте?


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 апр 2008, 11:53 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
1. Там есть в группе тарифов свойство "Исполнять переход за.. часов".
Поставьте побольше, сразу отработает.
2. Да, нужно сначала закрыть, потом открыть. Чего-то я не то сказал, наверное.
3. Пока ничем помочь не можем, в перспективе будем делать в биллинге завязку тарифов с правилами, так что промежуточные действия нам не особо интересны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 апр 2008, 01:00 
в 4.4 теперь надо так обновление правил делать?
метода csm.getContractStatus в 4.4 больше нет
почему-то csm.getStatus возвращает null
Код:
// обновление правила на манаде
cid = event.getContractID();
time = event.getGenerateTime();
csm = new ContractStatusManager( con);

status =  csm.getStatus( cid, time);
if (status == null){
   error("no status");
   return;
}
// закрытие  и открытие шлюза (1-шлюз закрыт)
status.setStatus(1);
csm.changeStatus( status);
status =  csm.getStatus( cid, time);
csm.changeStatus( status);


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 апр 2008, 13:13 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Класс ContractStatusManager переименован в IPNContractStatusManager, функция осталась.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.109s | 26 Queries | GZIP : On ]