BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 апр 2024, 04:01

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
СообщениеДобавлено: 15 май 2009, 12:54 
Не в сети

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
Может кто сталкивался и подскажет, в какую сторону копать:

Необходимо при создании договора автоматически выдавать IP адрес из пула свободных адресов.

Буду благодарен за примеры кода.

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

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


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
stark писал(а):
можуль какой? IPN или dialup?


в контракте у нас вводится IP клиента как параметр

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mrlexy писал(а):
stark писал(а):
можуль какой? IPN или dialup?


в контракте у нас вводится IP клиента как параметр


а где пул хранится ? может в скриптом на событие создания договора добавлять параметр, вопрос только - где брать пул и где хранить занятые ..и зачем вам это нужно ? чем вас не устривает функуионал одного из модулей - dialup и ipn


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
пул вычисляется из списка двух параметров договора, как сделать запрос - я понимаю. IPN мы не используем, в dialup этих данных тоже нет. Выдача адресов происходит не зависящими от BGbilling'a процедурами, которые получают данные с БД биллинга. По сути, я хотел посмотреть, как пишутся скрипты на это событие, т.к. на данный момент я нашел только описание API (достаточно куцее), и на его основе допилить под свои нужды.

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 29 июл 2008, 13:57
Сообщения: 94
Карма: 0
Я тоже так хочу... Ничего не прояснилось?..


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
Fate писал(а):
Я тоже так хочу... Ничего не прояснилось?..

сейчас пытаюсь сваять самостоятельно, сделать все равно надо ))))))
как что будет - по результату отпишусь

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Событие - создание договора.
Для 4.6 добавили описание событий: http://www.bgbilling.ru/v4.6/doc/ch02s02s01.html. Скоро будет полное.


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
Администратор писал(а):
Событие - создание договора.

оно вызывается сразу после создания, пришлось использовать событие на изменение параметра.
Администратор писал(а):
Для 4.6 добавили описание событий: http://www.bgbilling.ru/v4.6/doc/ch02s02s01.html. Скоро будет полное.
HTTP/404

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Точку в конце URL уберите, ошибся.


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
предварительно что получилось...
первый раз пишу на BeanShell, поэтому готов к замечаниям и объективной критике ;-)
подсеть в виде 172.16.x указывется в поле квартал адреса клиента, адреса 172.16..x.1 не используются
Код:
import java.sql.*;
import java.util.*;
import java.util.regex.Pattern;


//Auto inserting IP into contract on change customer city address value

//const
ADDRESS_PARAM_ID=15; //Customer city address parameter id
IP_PARAM_ID=16; // Ip address parameter id
//functions
/* int freeLastOctet */private getFreeIP(subnet){
   qPool = "SELECT val FROM `contract_parameter_type_1` "
      + "WHERE pid=? AND val LIKE ? "
         + " AND INET_ATON( val )>INET_ATON( ? ) "
      + "ORDER BY INET_ATON(val) ASC";
   pool = con.prepareStatement(qPool);
   pool.setInt(1,IP_PARAM_ID);
   pool.setString(2,subnet+".%");
   pool.setString(3,subnet+".1");
   resPool=pool.executeQuery();
   
   prevLO=2;
   count=0;
   for( ;resPool.next(); ){
      prevIp=resPool.getString(1);
      String[] aOctets=Pattern.compile("\\.").split(prevIp);
      curLO = aOctets[3];

      print("Prev: "+prevLO+" Cur: "+curLO);

      if((Integer.valueOf(curLO)-Integer.valueOf(prevLO))>1){
         return Integer.valueOf(prevLO)+1;
      } else {
         prevLO=curLO;
      }
      count++;
   }
   if(count==0 ){
      return 2;
   } else if (Integer.valueOf(prevLO)>=2 && Integer.valueOf(prevLO)<253){
         return Integer.valueOf(prevLO)+1;
   } else {
      return 0;
   }
}
//code
cid = event.getContractID();

if( event.getParamId() == ADDRESS_PARAM_ID ){
   print ("CID="+cid);
   qSubnet = "SELECT address_quarter.title FROM `contract_parameter_type_2` "
      +"JOIN address_house "
         +"ON hid = address_house.id "
      +"JOIN address_quarter " 
         +"ON quarterid = address_quarter.id "
      +"WHERE cid = '"+cid+"'";

   ps = con.prepareStatement(qSubnet);
   rs = ps.executeQuery();
   if( rs.next() ){
       strSubnet = rs.getString(1);
      print("Subnet: "+strSubnet);
   } else {
      print("В адресе не определена подсеть!");
      return;
   }
   print( "Select: "+getFreeIP(strSubnet));
}

осталось разобраться, как вставлять поолученый параметр в договор.
Кстати, с MessageBox'ом на стороне клиента ничего не поменялось? Хотелось бы информировать оператора о некоторых событиях, например, что закончились адреса в пуле ;-)

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
Код:
new ContractParamUtils( con ).setStringParam( cid, IP_PARAM_ID, strFreeIP );

работает, но не обновляет визуально пока не выйдешь страницы контракта и не зайдешь снова. Это особенность клиента или можно что-то сделать, чтоб отображалось сразу?

для изменения атрибута договора пробовал
Код:
   cm = new ContractManager(con);
   contract=cm.getContractByID(cid);
   contraсt.setTitle(strFreeIP);

ошибок не выдает, но и заголовок договора не меняет...
ЧЯДНТ?

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Цитата:
работает, но не обновляет визуально пока не выйдешь страницы контракта и не зайдешь снова. Это особенность клиента или можно что-то сделать, чтоб отображалось сразу?

ничего не сделаешь, клиент не знает, что на сервере какой-то скрипт что-то менял..

Цитата:
ошибок не выдает, но и заголовок договора не меняет...

меняйте запросом в таблице contract


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
:shock:
понятно...
непонятно только, к чему тогда городить огород с api, если клиенту никаких действий не передается? можно было и не париться, все писать через sql

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

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


это api не специально только для того, чтобы скрипты писать . Его использует код биллинга , оно в первую очередь нам нужно .. А вы , да может использовать sql, если оно вам не нужно.


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
stark писал(а):
это api не специально только для того, чтобы скрипты писать . Его использует код биллинга , оно в первую очередь нам нужно .. А вы , да может использовать sql, если оно вам не нужно.

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

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
В http://wiki.bgbilling.ru/index.php/%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0_%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%B4_%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC

проверка телефонного номера есть такой код:
Код:
event.setError("Не надо писать что попало!");


у меня он не работает, говорит, что метод не определен, в чем может быть ошибка?

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mrlexy писал(а):
В http://wiki.bgbilling.ru/index.php/%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0_%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%B4_%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC

проверка телефонного номера есть такой код:
Код:
event.setError("Не надо писать что попало!");


у меня он не работает, говорит, что метод не определен, в чем может быть ошибка?


этот метов доступен только в обработчике события "Перед изменением параметра договора" , но не у других ..Это метов класса bitel.billing.server.script.bean.event.ContractParamBeforeChangeEvent


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

Зарегистрирован: 15 май 2009, 12:39
Сообщения: 16
Откуда: Волхов
Карма: 0
спасибо, помогло.
А говорили - месажбоксы выкидывать нельзя! :D

но появился следующий вопрос, можно ли как то переопроделить вводимое поле?
Т.е. если я ввожу к примеру '?=' в текстовом параметре, то скрипт производит поиск свободного IP и вместо введенного вставляет в поле его.
Подобные конструкции результата не дали:
Код:
      ip_addr=event.getValue();
      ip_addr=strFreeIP;


Код:
      cpu=new ContractParamUtils( con );
      cpu.setStringParam( cid, IP_PARAM_ID, strFreeIP );

_________________
Код:
Сервер: вер. 6.2.1088 / 14.07.2016 18:10:53
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

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


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

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


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

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