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

Простейший скрипт смены тарифа по заданию пользователя
http://forum.bitel.ru/viewtopic.php?f=22&t=829
Страница 1 из 1

Автор:  snark [ 13 мар 2008, 23:36 ]
Заголовок сообщения:  Простейший скрипт смены тарифа по заданию пользователя

в мануале читаю:
мануал писал(а):
Кроме перечня разрешенных тарифов и момента когда можно менять тариф необходимо устаноить:

1) За сколько часов от выбранной даты производится смена тарифа. ...
2) Количество дней следующих после текущей даты, в которые может быть добавлено задание на переход. ...

Теперь необходимо установить в договор Группу тарифов и скрипт поведения. Сделать это следует открыв договор и щелнув на дереве Группа тарифов и Скрипт поведения. Оба значения необходимо добавить с периодами.

В скрипте поведения должна присутствовать функция, обрабатывающая событие "Смена тарифа по заданию пользователя". Как создавать скрипты и вносить в них функции также читайте в документации к BGBS.

после чего хочу попросить всего об одной вещи - выложите, пожалуйста, код скрипта который просто будет переводить пользователей из одного тарифа в другой тариф без начислений сумм (как дано в примере) и т.д. и т.п. с учетом указанных в п.1 и п.2 мануала условий ...

Автор:  Администратор [ 14 мар 2008, 02:28 ]
Заголовок сообщения: 

Ну уберите вот этот кусок:

Код:
// заносим расход  50 руб
charge = new Charge();
charge.setContractID( cid );
charge.setDate( task.getFromDate() );
charge.setChargeTypeID( 40 );
charge.setComment( "Смена тарифа через Web" );
charge.setSumma( 50f );

chm.updateCharge( "new", charge );

Автор:  snark [ 14 мар 2008, 15:54 ]
Заголовок сообщения: 

Администратор писал(а):
Ну уберите вот этот кусок
спасибо, я в общем то так и думал ... просто меня смущает вот это:
Код:
// закрываем старый тариф днем ранее
endDate = (Calendar)task.getFromDate().clone();
endDate.add( Calendar.DAY_OF_YEAR, -1 );
т.к. мне хотелось бы чтобы скрипт работал именно так как указано в настройках групп тарифов ...

Автор:  snark [ 25 мар 2008, 02:53 ]
Заголовок сообщения: 

up

Автор:  Администратор [ 28 мар 2008, 03:04 ]
Заголовок сообщения: 

Скрипт и будет работать, как там задано. Настройки группы тарифов задают с каких дат можно перейти на новый тариф и за какой период времени до наступления даты исполнить переход тарифа (закрыть период текущего и открыть новый). Т.е. настройка группы тарифов задает момент отработки скрипта смены тарифа.

Автор:  Alex-XXI [ 01 сен 2008, 21:15 ]
Заголовок сообщения: 

У меня почему-то не работает смена тарифного плана с "Любого дня, начиная с завтрашнего". С начала недели, начала месяца и с сегодняшего дня смена происходит нормально. В чем может быть причина? Вот сам скрипт:
Код:
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.bean.*;
import bitel.billing.server.script.event.*;
import java.util.*;

cid = event.getContractID();

task = event.getTask();

ctm =  new ContractTariffManager(  con );
chm = new ChargeManager( 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  );

// обновляем баланс
new BalanceUtils( con ).updateBalance( task.getFromDate(), cid );

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

ctm.updateContractTariff( "new", newPlan );

// передача информации о смене тарифа, для возможности разрыва соединения RADIUS сервером
new ContractManager( con ).updateLastTariffChange( cid );

Автор:  Администратор [ 02 сен 2008, 17:05 ]
Заголовок сообщения: 

А задание добавляется корректно? Скрипт отрабатывает вообще?

Автор:  Alex-XXI [ 02 сен 2008, 17:52 ]
Заголовок сообщения: 

Задание при этом не создается. В логах пишет:
Код:
INFO   02.09.2008 15:48:19  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20
INFO   02.09.2008 15:48:23  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20
INFO   02.09.2008 15:48:26  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20
INFO   02.09.2008 15:48:28  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20
INFO   02.09.2008 15:48:29  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20

При нормальном течении событий логи выглядят так:
Код:
INFO   02.09.2008 15:49:15  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20
INFO   02.09.2008 15:49:21  Process event cid:493; event:Event bitel.billing.server.script.bean.event.AddChangeTariffTaskEvent cid: 493; module: 0; type: 17
INFO   02.09.2008 15:49:21  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20
INFO   02.09.2008 15:50:07  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20
INFO   02.09.2008 15:50:09  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20
INFO   02.09.2008 15:50:10  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20
INFO   02.09.2008 15:50:40  Add tariff change task, tpid: 53
INFO   02.09.2008 15:50:40  Add event to queue Event bitel.billing.server.script.bean.event.ChangeTariffByTaskEvent cid: 493; module: 0; type: 4
INFO   02.09.2008 15:50:41  Found event id=6507
INFO   02.09.2008 15:50:41  Process event cid:493; event:Event bitel.billing.server.script.bean.event.ChangeTariffByTaskEvent cid: 493; module: 0; type: 4
INFO   02.09.2008 15:50:41  Running function Function [id:10; title:Смена тарифа по заданию пользователя]
INFO   02.09.2008 15:50:41  Process time => 80
INFO   02.09.2008 15:50:58  Process event cid:493; event:Event bitel.billing.server.script.bean.event.GetChangeTariffDatesEvent cid: 493; module: 0; type: 20


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