BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 23 май 2024, 12:53

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




Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 18 дек 2008, 17:52 
Не в сети

Зарегистрирован: 11 июл 2008, 13:01
Сообщения: 62
Карма: 0
Здравствуйте. Нам необходимо реализовать следующие.
у абонентов есть лимит - (минус) 300р, после которого доступ в интернет закрывается, но абонплата продолжается начисляться, что не нужно.
Вот необходимо что бы скрипт(задача) запущенная скажем каждый час, проверяла баланс меньше -300 р и сменяла статус договора на приостановлен, и так же если баланс больше -300 соответственно ставила статус активен.
Помогите реализовать :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 дек 2008, 18:45 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
А лучше добавьте данный функционал в модуль npay, не так там много и надо сделать, просто условие добавить что если исх остаток меньше лимита и абоненту запрещен доступ, то абонплату не снимаем
Ну или спец статус наверное лучше для абонплаты, для одних договоров так считаем для других по другому


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 дек 2008, 16:07 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Мы реализовали подобную схему на перле. Первого числа в 0 часов 5 минут запускается скрипт, который отменяет абонплату за прошлый месяц. Если абонент ушел в минус и в плюс не выходил весь месяц, то отменяется вся абонплата, а если он вышел в плюс в середине месяца, то абонплата пересчитывается исходя из того, что абонент работает с момента оплаты.
Могу скинуть скрипт если надо, подправите под свои задачи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 дек 2008, 17:25 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Я примерно уже наметки сделал как это решить, тоесть на двухдневный минус в абонплате прибавляем один день, но это очень коряво.
Хотелось бы это стандартными средствами решить, там не так уж и много надо, всего лишь одна настройка в модуль npay, и туда же одно условие лишнее


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 дек 2008, 12:50 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Возможно фиксировать дату смены остатка например лимитом и менять статус на _приостановлен_. А по приходу на _активен_ менять.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 дек 2008, 13:16 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
А каким образом это можно осуществить? Скрипт, или ещечасно всех абонентов вручную отслеживать?
Данного автоматического функционала, я не нашел, bgbilling 4.5


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Цитата:
А каким образом это можно осуществить? Скрипт, или ещечасно всех абонентов вручную отслеживать?
Данного автоматического функционала, я не нашел, bgbilling 4.5

По таймеру можно. Вы можете пользователя blib стукнуть, он подобный функционал хотел сделать. Нам бы хотелось посмотреть, как он в работе будет, чтобы может потом в ядро включить. Ну или можно в WiKi выложить, скрипты впринципе не хуже работают )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 дек 2008, 14:59 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
А готового скрипта нет нигде?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 янв 2009, 15:42 
Не в сети

Зарегистрирован: 24 окт 2007, 14:19
Сообщения: 145
Карма: 0
Да скриптик неплохоб разработчикам написать... Постоянно с абонплатами заморочки. Желательно чтоб скрипт проверял перед снятием абонплаты достаточно-ли денег на счету. Если недостаточно то менял статус договора на неактивный. Но денег приэтом неснимал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 янв 2009, 19:05 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Начал писать скрипт, дошел вот до этого
Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.radius.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.common.KernelConst;
import java.util.*;

//ID абонента CID
cid = event.getContractID();

contract = new ContractStatusManager(con);
date = event.getGenerateTime().clone();

//Статус абонента
contract_status = contract.getStatus (cid, date).getStatus();
if (contract_status == null) {contract_status = KernelConst.CONTRACT_STATUS_ACTIVE;};

//Баланс абонента
balance = new BalanceUtils(con);
contract_balance = balance.getBalance (date, cid);

Как получить текущий лимит для контракта, в доках это чтото не указано


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 янв 2009, 19:12 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Прямой запрос к БД как вариант?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 янв 2009, 20:43 
Не в сети

Зарегистрирован: 29 окт 2008, 18:03
Сообщения: 212
Карма: 0
вот тоже заинтересовала данная тема, хотелось бы не скриптами а функционал получить. Разработчики сделайте такую маленькую фичку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 янв 2009, 23:48 
Не в сети

Зарегистрирован: 24 окт 2007, 14:19
Сообщения: 145
Карма: 0
ups: и тишина.... да... мы конечно понимаем что все заняты разработкой новой версии... но отвечать тоже нужно... ту пиковый вариантик получается.... с такой поддержкой уже много проектов нагнулось...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 янв 2009, 19:17 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
stels писал(а):
Как получить текущий лимит для контракта, в доках это чтото не указано


Код:

contract = new ContractManeger( con ).getContractByID( cid );
limit = contract.getBalanceLimit();


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 янв 2009, 19:38 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Код:
ContractStatusManager statusManager  = new ContractStatusManager( con ) ;
status = statusManager.getStatus(cid, new java.util.Date())


if ( limit.compareTo( new BigDecimal( -300 )  ) < 0  && status.getStatus()  != KernelConst.CONTRACT_STATUS_SUSPENDED )
{
status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
}
else if (&& status.getStatus()  != KernelConst.CONTRACT_STATUS_ACTIVE  )
{
status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
}

statusManager.changeStatus( status );



Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 янв 2009, 17:29 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Получилось следующее:
Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.radius.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.common.KernelConst;
import java.util.*;

//ID абонента CID
cid = event.getContractID();
date = event.getGenerateTime().clone();

contract = new ContractManager(con).getContractByID(cid);
if (contract == null)
   {return;}
//Лимит абонента
contract_limit = contract.getBalanceLimit();
//Баланс абонента
balance = new BalanceUtils(con);
contract_balance = balance.getBalance (date, cid);
//Статус абонента
ContractStatusManager statusManager  = new ContractStatusManager(con);
status = statusManager.getStatus(cid, date);
if (status != null)
   {contract_status = status.getStatus ();}
else
   {contract_status = KernelConst.CONTRACT_STATUS_ACTIVE;};

if (contract_balance < contract_limit && contract_status == KernelConst.CONTRACT_STATUS_ACTIVE)
   {
      status.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED);
      statusManager.changeStatus(status);
   };
if (contract_balance > contract_limit && contract_status == KernelConst.CONTRACT_STATUS_SUSPENDED)
   {
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      statusManager.changeStatus(status);
   };

Только на смену статусов ругается, посмотрите поправьте меня где неправ. Я в java сижу уже с начала написания скрипта такчто не ругайтесь сильно )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 16:34 
Не в сети

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
А на какое событие подвешен скрипт?
Просто у меня на смену статусов не ругается. Вобще скрипт полезный. Еще бы заставить его делать пометки в истории о том, что он делал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 18:19 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Ну собственно смену статусов я поставил как должно оно быть, но это у меня не работает.
А у вас получается работает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 20:32 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
что значит на смену статусов ругается ? нужны логи с руганью


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 20:48 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Код:
ERROR  29.01.2009 19:47:58  Eval error: Sourced file: inline evaluation of: ``import bitel.billing.server.call.bean.Login; import bitel.billing.server.radius. . . . '' : null
Sourced file: inline evaluation of: ``import bitel.billing.server.call.bean.Login; import bitel.billing.server.radius. . . . '' : null : at Line: 30 : in file: inline evaluation of: ``import bitel.billing.server.call.bean.Login; import bitel.billing.server.radius. . . . '' : status .setStatus ( KernelConst .CONTRACT_STATUS_SUSPENDED )

Target exception: java.lang.NullPointerException: Null Pointer in Method Invocation

        at bsh.UtilTargetError.toEvalError(Unknown Source)
        at bsh.UtilEvalError.toEvalError(Unknown Source)
        at bsh.BSHMethodInvocation.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHBlock.evalBlock(Unknown Source)
        at bsh.BSHBlock.eval(Unknown Source)
        at bsh.BSHBlock.eval(Unknown Source)
        at bsh.BSHIfStatement.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:62)
        at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:320)
        at bitel.billing.server.processor.DefaultProcessor.standartAuth(DefaultProcessor.java:187)
        at bitel.billing.server.processor.dialup.DialUpProcessor.authenticationProcess(DialUpProcessor.java:106)
        at bitel.billing.server.radius.RadiusRequestThread.processRequest(RadiusRequestThread.java:120)
        at bitel.billing.server.radius.RadiusRequestThread.run(RadiusRequestThread.java:48)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
INFO   29.01.2009 19:47:58  Process time => 33


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 21:30 
Не в сети

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
У меня работает. Единственное что, не удалось пока привязать этот скрипт чтобы срабатывал по таймеру. Пришлось привязывать к другим параметрам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2009, 18:44 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
stels писал(а):
Код:
ERROR  29.01.2009 19:47:58  Eval error: Sourced file: inline evaluation of: ``import bitel.billing.server.call.bean.Login; import bitel.billing.server.radius. . . . '' : null
Sourced file: inline evaluation of: ``import bitel.billing.server.call.bean.Login; import bitel.billing.server.radius. . . . '' : null : at Line: 30 : in file: inline evaluation of: ``import bitel.billing.server.call.bean.Login; import bitel.billing.server.radius. . . . '' : status .setStatus ( KernelConst .CONTRACT_STATUS_SUSPENDED )

Target exception: java.lang.NullPointerException: Null Pointer in Method Invocation

        at bsh.UtilTargetError.toEvalError(Unknown Source)
        at bsh.UtilEvalError.toEvalError(Unknown Source)
        at bsh.BSHMethodInvocation.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHBlock.evalBlock(Unknown Source)
        at bsh.BSHBlock.eval(Unknown Source)
        at bsh.BSHBlock.eval(Unknown Source)
        at bsh.BSHIfStatement.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:62)
        at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:320)
        at bitel.billing.server.processor.DefaultProcessor.standartAuth(DefaultProcessor.java:187)
        at bitel.billing.server.processor.dialup.DialUpProcessor.authenticationProcess(DialUpProcessor.java:106)
        at bitel.billing.server.radius.RadiusRequestThread.processRequest(RadiusRequestThread.java:120)
        at bitel.billing.server.radius.RadiusRequestThread.run(RadiusRequestThread.java:48)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
INFO   29.01.2009 19:47:58  Process time => 33


у вас в этом блоке ошибка(в 30-ой строке судя по логу):
Код:

if (contract_balance < contract_limit && contract_status == KernelConst.CONTRACT_STATUS_ACTIVE)
   {
      //Тут падает !! у вас status -  null .. его тут надо не обновлять , а создавать этом случае
      status.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED);
      statusManager.changeStatus(status);
   };
if (contract_balance > contract_limit && contract_status == KernelConst.CONTRACT_STATUS_SUSPENDED)
   {

      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      statusManager.changeStatus(status);
   };


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2009, 18:51 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
надо
Код:

if (status == null)
{
   ContractStatus status = new ContractStatus();
        status.setContractId( cid );
        status.setDate1( new java.util.Date() );
        status.setStatus( ... );
        status.setComment( "добавили скриптом");
        //0 - значит сервер
        status.setUserId( 0 );
}



Вначале когда договор только добавили, то статуса нет(null) и он считается активным ..если потом его надо сменить , то надо его создать со значенем равным новому статусу


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 17:36 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.radius.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.common.KernelConst;
import java.util.*;

//ID абонента CID
cid = event.getContractID();
date = event.getGenerateTime().clone();

contract = new ContractManager(con).getContractByID(cid);
if (contract == null)
   {return;}
//Лимит абонента
contract_limit = contract.getBalanceLimit();
//Баланс абонента
balance = new BalanceUtils(con);
contract_balance = balance.getBalance (date, cid);
//Статус абонента
ContractStatusManager statusManager  = new ContractStatusManager(con);
status = statusManager.getStatus(cid, date);
if (status != null)
   {contract_status = status.getStatus ();}
else
   {
      ContractStatus status = new ContractStatus();
      status.setContractId(cid);
      status.setDate1(date);
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      status.setComment("Смена статуса сервером");
      status.setUserId(0);
      statusManager.updateStatus(status);
      contract_status = status.getStatus ();
   };
if (contract_balance < contract_limit && contract_status == KernelConst.CONTRACT_STATUS_ACTIVE)
   {
      status.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED);
      statusManager.updateStatus(status);
   };
if (contract_balance > contract_limit && contract_status == KernelConst.CONTRACT_STATUS_SUSPENDED)
   {
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      statusManager.updateStatus(status);
   };

Получилось вот так, даже вроде статусы верно меняет, потестировать только осталось
А changeStatus(status); так и не понял как использовать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 фев 2009, 12:57 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Код:
      status.setContractId( cid );
      status.setDate1( date );
      status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
      status.setComment( "Смена статуса сервером" );
      status.setUserId( 0 );
      statusManager.changeStatus( status );

Рисует
Код:
Sourced file: inline evaluation of: ``import bitel.billing.server.call.bean.Login; import bitel.billing.server.radius. . . . '' : Method Invocation statusManager.changeStatusjava.lang.NoClassDefFoundError: bitel/billing/server/contract/Module
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:260)
   at bitel.billing.server.contract.bean.ContractStatusManager.changeStatus(ContractStatusManager.java:343)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at bsh.Reflect.invokeOnMethod(Unknown Source)
   at bsh.Reflect.invokeObjectMethod(Unknown Source)
   at bsh.Name.invokeMethod(Unknown Source)
   at bsh.BSHMethodInvocation.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHBlock.evalBlock(Unknown Source)
   at bsh.BSHBlock.eval(Unknown Source)
   at bsh.BSHBlock.eval(Unknown Source)
   at bsh.BSHIfStatement.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:62)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:320)
   at bitel.billing.server.processor.DefaultProcessor.standartAuth(DefaultProcessor.java:187)
   at bitel.billing.server.processor.dialup.DialUpProcessor.authenticationProcess(DialUpProcessor.java:106)
   at bitel.billing.server.radius.RadiusRequestThread.processRequest(RadiusRequestThread.java:120)
   at bitel.billing.server.radius.RadiusRequestThread.run(RadiusRequestThread.java:48)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: bitel.billing.server.contract.Module
   at java.net.URLClassLoader$1.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(Unknown Source)
   at java.lang.ClassLoader.loadClass(Unknown Source)
   at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
   at java.lang.ClassLoader.loadClass(Unknown Source)
   at java.lang.ClassLoader.loadClassInternal(Unknown Source)
   ... 28 more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 фев 2009, 17:45 
Не в сети

Зарегистрирован: 20 окт 2008, 12:14
Сообщения: 121
Карма: 3
Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.radius.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.common.KernelConst;
import java.util.*;

//ID абонента CID
cid = event.getContractID();
date = event.getGenerateTime().clone();
date_last = event.getGenerateTime().clone();

date_last.add( Calendar.DAY_OF_YEAR, -1 );

contract = new ContractManager(con).getContractByID(cid);
if (contract == null)
   {return;}
//Лимит абонента
contract_limit = contract.getBalanceLimit();
//Баланс абонента
balance = new BalanceUtils(con);
contract_balance = balance.getBalance (date, cid);
//Статус абонента
ContractStatusManager statusManager  = new ContractStatusManager(con);
status = statusManager.getStatus(cid, date);
if (status != null)
   {contract_status = status.getStatus();}
else
   {
      ContractStatus status = new ContractStatus();
      status.setContractId(cid);
      status.setDate1(date_last);
      status.setDate2( null );
      status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE);
      status.setComment("Смена статуса сервером");
      status.setUserId(0);
      statusManager.updateStatus(status);
      contract_status = status.getStatus();
   };

if (contract_balance < contract_limit && contract_status == KernelConst.CONTRACT_STATUS_ACTIVE)
   {
      if ( date_last.after(status.getDate1()) )
         {
            status.setContractId( cid );
            status.setDate2( date_last );
            status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
            status.setComment( "Смена статуса сервером - активен" );
            status.setUserId( 0 );
            statusManager.updateStatus( status );

            ContractStatus status = new ContractStatus();
            status.setContractId( cid );
            status.setDate1( date );
            status.setDate2( null );
            status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
            status.setComment( "Смена статуса сервером - приостановка" );
            status.setUserId( 0 );
            statusManager.updateStatus( status );
         }
      else
         {
            status.setContractId( cid );
            status.setDate1( date );
            status.setDate2( null );
            status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
            status.setComment( "Смена статуса сервером - приостановка" );
            status.setUserId( 0 );
            statusManager.updateStatus( status );
         };
   };
if (contract_balance > contract_limit && contract_status == KernelConst.CONTRACT_STATUS_SUSPENDED)
   {
      if ( date_last.after(status.getDate1()) )
         {
            status.setContractId( cid );
            status.setDate2( date_last );
            status.setStatus( KernelConst.CONTRACT_STATUS_SUSPENDED );
            status.setComment( "Смена статуса сервером - приостановка" );
            status.setUserId( 0 );
            statusManager.updateStatus( status );

            ContractStatus status = new ContractStatus();
            status.setContractId( cid );
            status.setDate1( date );
            status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
            status.setComment( "Смена статуса сервером - активен" );
            status.setUserId( 0 );
            statusManager.updateStatus( status );
         }
      else
         {
            status.setContractId( cid );
            status.setDate1( date );
            status.setDate2( null );
            status.setStatus( KernelConst.CONTRACT_STATUS_ACTIVE );
            status.setComment( "Смена статуса сервером - активен" );
            status.setUserId( 0 );
            statusManager.updateStatus( status );
         };
   };

Вообщем получилось так, но это криво и с костылями. Разработчики ну сделайте нормально этот скрипт. В таком виде он работает, но если какие нестандартные ситуации будут, невозможно предсказать что будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 фев 2009, 17:11 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
stels писал(а):
Вообщем получилось так, но это криво и с костылями. Разработчики ну сделайте нормально этот скрипт. В таком виде он работает, но если какие нестандартные ситуации будут, невозможно предсказать что будет.


Что значит нормально ? что вы понимаеет под нестандартными ситуациями? можете обратится в платную поддержку..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 апр 2009, 14:03 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Подскажите пожалуйста, а куда привязывать подобную проверку?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 апр 2009, 16:48 
Не в сети

Зарегистрирован: 09 мар 2009, 05:37
Сообщения: 59
Карма: 0
Видимо как здесь:
http://www.bgbilling.ru/v4.5/doc/ch02s02.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 апр 2009, 18:16 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
tiffolk писал(а):
Видимо как здесь:
http://www.bgbilling.ru/v4.5/doc/ch02s02.html

Просто интересно на какое событие это повесить...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу 1, 2, 3  След.

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

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