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

Подскажите с реализацией
http://forum.bitel.ru/viewtopic.php?f=19&t=1700
Страница 1 из 1

Автор:  kompot [ 10 дек 2008, 13:14 ]
Заголовок сообщения:  Подскажите с реализацией

В силу объективных причин мы не можем самостоятельно тарифицировать услуги телефонии по МГ и МН.
Счета вставляем абонентам сами от имени Операторов МГ и МН по данным, предоставляемым этими операторами. Данные представляют собой текстовые файлы, содержащие построчно: наименование абонента, направление, стоимость, префикс и длительность звонка.

Существует необходимость, пользуясь средствами биллинга, генерировать счета для абонентов, в которых помимо прочего отражалась бы эта детальная информация. Т.е., услуга МГ и МН: направление, префикс, длительность, сумма.

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

Такой вот вопрос. Интересуют любые варианты.

Автор:  Администратор [ 10 дек 2008, 17:27 ]
Заголовок сообщения: 

http://wiki.bgbilling.ru/index.php/%D0% ... 0%B0%D0%BC
Там есть пример обращения в базу из XSLT.

Автор:  kompot [ 15 дек 2008, 17:24 ]
Заголовок сообщения: 

Посмотрел пример, спасибо, но не совсем понятно, например, где в этом примере определяется URL, имя БД и xmlns?
Тут http://xml.apache.org/xalan-j/extensionslib.html#sql как-то совсем иначе всё описывается. Запутался.

Автор:  Amir [ 17 дек 2008, 16:32 ]
Заголовок сообщения: 

В примере вызывается функция API биллинга, а не используется расширение xalan.

Автор:  kompot [ 23 дек 2008, 12:10 ]
Заголовок сообщения: 

А де-нибудь можно почитать про этот API?

Автор:  Amir [ 24 дек 2008, 17:30 ]
Заголовок сообщения: 

В заголовке есть такое описание
Код:
xmlns:sql="bitel.billing.server.util.exslt.SQLQuery"   
   xmlns:utils="bitel.billing.server.util.Utils"
   xmlns:counter="bitel.billing.server.util.exslt.Counter">
   
   <xalan:component prefix="sql" functions="select">
             <xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.SQLQuery"/>
     </xalan:component>


далее использование, например, так:
Код:
<xsl:variable
         name="tariff_plan"
         select="sql:select( concat('SELECT tpid FROM contract_tariff WHERE cid=', $cid, ' AND emid=', $phone_mid, ' AND eid=', $id, $date_filter, ' LIMIT 1' ) )/row/@tpid"/>


вызов sql:select возврощает ветку xml вида
<data><row/><row/>...</data>
в row содержится результат выборки по именам полей.

есть также такой вариант:
http://wiki.bgbilling.ru/index.php/Расширенные_счета_модуля_бухгалтерии

Автор:  Администратор [ 24 дек 2008, 17:54 ]
Заголовок сообщения: 

Что-то накидал про расширения в биллинге http://wiki.bgbilling.ru/index.php/XSLT.
Про расширения вообще в бижайшее время допишем. Пробуйте.

Автор:  kompot [ 18 янв 2009, 18:13 ]
Заголовок сообщения: 

у меня вот такая ошибка:

Код:
file:///usr/local/BGBillingServer43/dummy.xsl; Номер строки0; Номер столбца0; java.lang.NoSuchMethodException: For extension function, could not find method java.lang.String.select([ExpressionContext,] ).
file:///usr/local/BGBillingServer43/dummy.xsl; Номер строки0; Номер столбца0; java.lang.NullPointerException

вот куски шаблона:

Код:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:sql="bitel.billing.server.util.exslt.SQLQuery"
xmlns:utils="bitel.billing.server.util.Utils"
xmlns:counter="bitel.billing.server.util.exslt.Counter"
xmlns:st="bitel.billing.server.bill.bean.SummaToString"
version="1.0">

<xalan:component prefix="utils" functions="maskBlank, replace">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.Utils"/>
</xalan:component>
<xalan:component prefix="sql" functions="select">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.SQLQuery"/>
</xalan:component>
<xalan:component prefix="st" functions="summaToString">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.bill.bean.SummaToString"/>
</xalan:component>
<xalan:component prefix="counter" functions="add set get">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.Counter"/>
</xalan:component>
<xsl:output encoding="windows-1251" method='xml' indent='yes' />

Код:
<xsl:variable   name="table"  select="sql:select('select title from contract limit 1')"/>


<fo:block xsl:use-attribute-sets="text" space-before="0.2cm">
          <xsl:for-each select="$table/data/row">
                      <xsl:value-of select="@title"/>
         </xsl:for-each>
                               
</fo:block>



Причём, если я комментирую в заголовке вот эту часть:
Код:
<xalan:component prefix="sql" functions="select">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.SQLQuery"/>
</xalan:component>

то ничего не меняется. и результат тот же, и ошибка в логах та же.

xalan.jar брал самый свежий в комплекте с сервером для v.4.4

Автор:  Администратор [ 20 янв 2009, 13:55 ]
Заголовок сообщения: 

Код:
<xalan:component prefix="utils" functions="maskBlank, replace">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.Utils"/>
</xalan:component>
<xalan:component prefix="sql" functions="select">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.SQLQuery"/>
</xalan:component>
<xalan:component prefix="st" functions="summaToString">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.bill.bean.SummaToString"/>
</xalan:component>
<xalan:component prefix="counter" functions="add set get">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.Counter"/>
</xalan:component>

Вот это можно вообще не писать. Расширение появилось только в 4.5 версии.

Автор:  kompot [ 21 янв 2009, 10:55 ]
Заголовок сообщения: 

То есть, на 4.4 обращение к базе из шаблона вообще не возможно, правильно я понимаю?

Автор:  kompot [ 21 янв 2009, 15:45 ]
Заголовок сообщения: 

Обновился до 4.5.
Теперь в server.log кроме этого ничего нет:

Код:
DEBUG  21.01.2009 14:43:41  executing bitel.billing.server.bill.action.ActionViewDocs; time => 115 ms.


и в документе ничего нет. Шаблон я не менял, всё осталось как описано выше.
Как искать ошибку в шаблоне, если она там есть?

Автор:  kompot [ 22 янв 2009, 02:19 ]
Заголовок сообщения: 

Всё, разобрался :)
Большое спасибо.

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