forum.bitel.ru http://forum.bitel.ru/ |
|
SQL: Стоимость АП по текущему тарифу абонента http://forum.bitel.ru/viewtopic.php?f=16&t=6710 |
Страница 1 из 1 |
Автор: | mikos [ 17 апр 2012, 20:18 ] |
Заголовок сообщения: | SQL: Стоимость АП по текущему тарифу абонента |
Добрый день. Помогите пожалуйста запросом к БД. Необходимо узнать стоимость АП по текущему тарифу пользователя. В наличии имеем параметры: Код: <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 с датой достаточно? Осталось понять откуда выгребать стоимость ![]() |
Автор: | Cromeshnic [ 18 апр 2012, 06:09 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
В общем случае это делается не в sql, а через TariffRequest |
Автор: | mikos [ 18 апр 2012, 15:06 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
Это понятно, но мне стоимость надо вытянуть в xslt шаблоне, где я могу только через SQL это вытянуть. |
Автор: | mikos [ 04 май 2012, 21:59 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
Не вычисляемо? |
Автор: | skyb [ 05 май 2012, 05:45 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
Cromeshnic писал(а): В общем случае это делается не в sql, а через TariffRequest а есть пример? :-[ |
Автор: | mikos [ 05 май 2012, 12:24 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
skyb писал(а): Cromeshnic писал(а): В общем случае это делается не в sql, а через TariffRequest а есть пример? :-[ Скриптом тоже тот еще процесс, но согласен - оно есть, к примеру viewtopic.php?f=16&t=6753 SQL я так понимаю, что не позволяет сделать запрос сама структура данных - слишком много логики подсчета АП для SQL. |
Автор: | Феанор [ 05 май 2012, 12:54 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
если структура тарифов типовая - то можно, почему нет вот кусок 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%' А вообще проще мне кажется сделать скриптик который будет кэшировать стоимости АП по тарифам и делать запрос к ней. |
Автор: | mikos [ 05 май 2012, 16:21 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
Вот спасибо! Поковыряю. |
Автор: | mikos [ 28 май 2012, 23:14 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
Феанор писал(а): если структура тарифов типовая - то можно, почему нет А если тарифы персональные? Этот запрос на персональных тарифах не фурычит. |
Автор: | mikos [ 28 май 2012, 23:25 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
По сути, в 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 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
Код: "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 и т.д. |
Автор: | focus [ 04 июн 2012, 13:49 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
из XSL можно запустить функцию своего класса. Что мешает сделать Java класс, где будет функция, возвращающая стоимость АП для конкретного договора на определенную дату с помощью TariffRequest ? По-моему, так будет проще, чем городить SQL запрос к таблицам, где содержатся деревья тарифа. Да и будет использоваться стандартная логика разработчиков. Это же и будет работать для персональных ТП. |
Автор: | mikos [ 04 июн 2012, 14:22 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
В Java не силен. Есть ли где нибудь пример реализации своего класса и его вызов из XSL? По образу и подобию бы сделал. С нуля не хватит мозгов ![]() |
Автор: | mikos [ 04 июн 2012, 14:37 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
2Феанор Запрос ничего не выдает ![]() |
Автор: | focus [ 05 июн 2012, 06:11 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
Вот тут можешь посмотреть как вызывают из XSL функции объектов, написанных на Java. Что касается реализации Java класса. Тут двумя словами не описать, но и сложного нет ничего. Делаем свой класс, там делаем функцию, которая с помощью BG API TariffRequest/NPay Calculator считает сумму для договора. Функция будет предельно похожа на BGBS скрипт. После компилируешь исходник. Получившийся класс или jar файл кладем в папку BGBillingServer\lib\ext Сервак рестартуем и пробуем xsl шаблон. |
Автор: | mikos [ 15 июн 2012, 21:14 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
Таким способом можно использовать свою функцию расчета АП в XSL? http://wiki.bgbilling.ru/index.php/Подстановка_данных_в_зависимости_от_текущего_пользователя_биллинга В 5.1 будет работать? |
Автор: | skyb [ 18 июн 2012, 07:08 ] |
Заголовок сообщения: | Re: SQL: Стоимость АП по текущему тарифу абонента |
Да, в 5.2 тоже работает |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |