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

Смена тарифа пользователем???
http://forum.bitel.ru/viewtopic.php?f=22&t=504
Страница 1 из 1

Автор:  dsheptalin [ 04 ноя 2007, 00:55 ]
Заголовок сообщения:  Смена тарифа пользователем???

Поясните вразумительно как настроить и что к чему привязано.

Лог:

INFO 03.11.2007 20:15:39 Process event cid:14; event:Event bitel.billing.server.script.bean.event.AddChangeTariffTaskEvent cid: 14; module: 0; type: 17
INFO 03.11.2007 21:00:58 Add tariff change task, tpid: 6
INFO 03.11.2007 21:00:58 Add event to queue Event bitel.billing.server.script.bean.event.ChangeTariffByTaskEvent cid: 14; module: 0; type: 4
INFO 03.11.2007 21:00:58 Found event id=75
INFO 03.11.2007 21:00:58 Process event cid:14; event:Event bitel.billing.server.script.bean.event.ChangeTariffByTaskEvent cid: 14; module: 0; type: 4
INFO 03.11.2007 21:20:33 Process event cid:14; event:Event bitel.billing.server.script.bean.event.AddChangeTariffTaskEvent cid: 14; module: 0; type: 17
INFO 03.11.2007 21:20:59 Add tariff change task, tpid: 6
INFO 03.11.2007 21:20:59 Add event to queue Event bitel.billing.server.script.bean.event.ChangeTariffByTaskEvent cid: 14; module: 0; type: 4
INFO 03.11.2007 21:20:59 Found event id=76
INFO 03.11.2007 21:20:59 Process event cid:14; event:Event bitel.billing.server.script.bean.event.ChangeTariffByTaskEvent cid: 14; module: 0; type: 4



И если выбираеш сменить с текущей даты - ставит к исполнению прошедшей датой.

Автор:  dsheptalin [ 04 ноя 2007, 15:11 ]
Заголовок сообщения: 

Вопрос конкретнее:
Типовой скрипт смены тарифа пользователем за деньги:

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 );

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

chm.updateCharge( "new", charge );

// обновляем баланс
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 );


Деньги снимаются два раза ну и ладно.


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

Автор:  dsheptalin [ 04 ноя 2007, 16:09 ]
Заголовок сообщения: 

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

Автор:  lspci [ 21 ноя 2007, 18:24 ]
Заголовок сообщения: 

не сбрасывает клиента при смене тарифа?
можно это как-нибудь реализовать?

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

В данный момент это можно реализовать только разрешением смены раз в месяц и принудительным сбросом всех абонентов на границе месяца. Принудительно сбрасывать нужно в любом случае, чтобы правильно шла тарификация. Иначе будет расти наработка за прошедший уже месяц.

Автор:  lspci [ 22 ноя 2007, 19:42 ]
Заголовок сообщения: 

а нельзя закрыть сессию и начать новую не разрывая связь у клиента?

Автор:  Администратор [ 22 ноя 2007, 19:45 ]
Заголовок сообщения: 

Нет. Такой возможности нет.

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