BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 04 июн 2024, 19:45

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




Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
СообщениеДобавлено: 17 апр 2012, 20:18 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Добрый день.
Помогите пожалуйста запросом к БД. Необходимо узнать стоимость АП по текущему тарифу пользователя.
В наличии имеем параметры:
Код:
<npay_service_object_2 cid="2271" col="1" comment="" csid="0" date1="2010-12-30" eid="0" emid="0" id="2226" oid="2302" sid="1" title="Абонплата (интернет)"/>

Я так понимаю id и oid с датой достаточно? Осталось понять откуда выгребать стоимость :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 апр 2012, 06:09 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
В общем случае это делается не в sql, а через TariffRequest


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 апр 2012, 15:06 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Это понятно, но мне стоимость надо вытянуть в xslt шаблоне, где я могу только через SQL это вытянуть.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2012, 21:59 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Не вычисляемо?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 май 2012, 05:45 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Cromeshnic писал(а):
В общем случае это делается не в sql, а через TariffRequest

а есть пример? :-[

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 май 2012, 12:24 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
skyb писал(а):
Cromeshnic писал(а):
В общем случае это делается не в sql, а через TariffRequest

а есть пример? :-[

Скриптом тоже тот еще процесс, но согласен - оно есть, к примеру viewtopic.php?f=16&t=6753
SQL я так понимаю, что не позволяет сделать запрос сама структура данных - слишком много логики подсчета АП для SQL.


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

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
если структура тарифов типовая - то можно, почему нет
вот кусок xslt - это находим ноду на которой висит модуль АП
<xsl:variable name="queryText" select="concat('SELECT t3.id,t4.title from tariff_tree_link as t1, module_tariff_tree as t2, mtree_node as t3, tariff_plan as t4 where t1.tree_id=t2.tree_id and t1.tpid=',@tpid,' and t4.id=t1.tpid and t2.id=t3.mtree_id and t3.parent_node=0 and t2.mid=MIDAP')/>
<xsl:variable name="query" select="sql:select( $queryText )"/>
<xsl:variable name="nid" select="$query/row/@id" />

потом делаем запрос и находим где у нас висит услуга АП
select * from mtree_node where parent_node=$nid
а потом зная ноду где висит АП находит ее наследователей и смотрим где там указана цена:
select * from mtree_node where parent_node="+nid2+" and type like '%cost%'

А вообще проще мне кажется сделать скриптик который будет кэшировать стоимости АП по тарифам и делать запрос к ней.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 май 2012, 16:21 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 май 2012, 23:14 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Феанор писал(а):
если структура тарифов типовая - то можно, почему нет


А если тарифы персональные? Этот запрос на персональных тарифах не фурычит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 май 2012, 23:25 
Не в сети
Аватара пользователя

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

Код:
<module id="2" name="npay" title="Абонплата">
<npay_service_object_2 cid="609" col="1" comment="" csid="0" date1="2011-09-01" eid="0" emid="0" id="2835" oid="590" sid="1" title="Абонплата (интернет)"/>
<npay_service_object_2 cid="609" col="1" comment="" csid="0" date1="2012-05-28" eid="0" emid="0" id="3514" oid="0" sid="39" title="Организация канала точка-точка"/>
</module>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2012, 11:24 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Код:
"SELECT t3.id,t1.title from contract_tree_link as t1, module_tariff_tree as t2, mtree_node as t3,contract as t4 where t1.tree_id=t2.tree_id and t1.cid="+id+" and t2.id=t3.mtree_id and t3.parent_node=0 and t4.id=t1.cid and t2.mid="+MIDAP

вот такой запрос первым.. ну а дальше - запрос из mtree_node и т.д.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2012, 13:49 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
из XSL можно запустить функцию своего класса. Что мешает сделать Java класс, где будет функция, возвращающая стоимость АП для конкретного договора на определенную дату с помощью TariffRequest ?
По-моему, так будет проще, чем городить SQL запрос к таблицам, где содержатся деревья тарифа. Да и будет использоваться стандартная логика разработчиков.
Это же и будет работать для персональных ТП.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2012, 14:22 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2012, 14:37 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
2Феанор Запрос ничего не выдает :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 июн 2012, 06:11 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Вот тут можешь посмотреть как вызывают из XSL функции объектов, написанных на Java.
Что касается реализации Java класса. Тут двумя словами не описать, но и сложного нет ничего.
Делаем свой класс, там делаем функцию, которая с помощью BG API TariffRequest/NPay Calculator считает сумму для договора.
Функция будет предельно похожа на BGBS скрипт.
После компилируешь исходник. Получившийся класс или jar файл кладем в папку BGBillingServer\lib\ext
Сервак рестартуем и пробуем xsl шаблон.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 июн 2012, 21:14 
Не в сети
Аватара пользователя

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

http://wiki.bgbilling.ru/index.php/Подстановка_данных_в_зависимости_от_текущего_пользователя_биллинга

В 5.1 будет работать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 07:08 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Да, в 5.2 тоже работает

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


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

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


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

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


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

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