BGBilling XSLT

Материал из BiTel WiKi

(Различия между версиями)
Перейти к: навигация, поиск
(Использование произвольных методов API биллинга)
Строка 1: Строка 1:
Основная статья с описанием технологии: http://wiki.bitel.ru/index.php/XSLT
Основная статья с описанием технологии: http://wiki.bitel.ru/index.php/XSLT
-
В биллинге доступные некоторые дополительные возможности XSLT.
+
В биллинге доступные некоторые дополнительные возможности XSLT.
== Счетчик ==
== Счетчик ==
Строка 26: Строка 26:
== SQL запрос ==
== SQL запрос ==
-
Используется длвы выполнения произвольных выборок из базы биллинга. Пример здесь: [[Квитанция телефонии физ. лицам]].
+
Используется для выполнения произвольных выборок из базы биллинга. Пример здесь: [[Квитанция телефонии физ. лицам]].
Объявляется расширение так:
Объявляется расширение так:
Строка 73: Строка 73:
== Генерация картинки со штрих-кодом ==
== Генерация картинки со штрих-кодом ==
 +
Используется вставки картинок с штрих-кодом в FO страницы. Пример здесь: [[Квитанция телефонии физ. лицам]].
 +
На протокол '''barcode''' в процессах биллинга повешен генератор картинок с штрих-кодом. Соответсвенно, Java машина при запросе данной картинки вызывает его. В данный момент поддержан формат Code128.
 +
Используется примерно так:
 +
 +
<source lang="xml">
 +
<!-- 128-тип кода, затем StartA, T, K, B, CodeC  -->
 +
<xsl:variable name="code_start" select="'128a|TKB&#199;'"/>
 +
<!-- номер телефона (первый) - 7 символов -->
 +
<xsl:variable name="number" select="$numbers/row/@number"/>
 +
<!-- период оплаты - 4 символа -->
 +
<xsl:variable name="period_opl" select="concat( $mm, $yy )"/>
 +
<!-- сумма -->
 +
<xsl:variable name="rub" select="substring-before(/data/bill/@total_sum,'.')"/>
 +
<xsl:variable name="kop" select="substring-after(/data/bill/@total_sum,'.')"/>
 +
<xsl:variable name="rub_length" select="string-length($rub)"/>
 +
 +
<fo:external-graphic width="6.5cm" height="1.1cm">
 +
<xsl:attribute name="src"><xsl:value-of select="concat('barcode:///', $code_start, $number, $period_opl, $sum_part_c, '&#201;', $sum_part_a, '&lt;SOH&gt;')"/></xsl:attribute>
 +
</fo:external-graphic>
 +
</source>

Версия 11:53, 24 декабря 2008

Основная статья с описанием технологии: http://wiki.bitel.ru/index.php/XSLT

В биллинге доступные некоторые дополнительные возможности XSLT.

Содержание

Счетчик

Используется для корректного сложения дробных чисел с десятичной точкой. При использовании сложения средствами XSLT возможны погрешности округления из-за перевода десятичных дробей к числам с плавающей точкой.

Объявляется так:

<xsl:stylesheet
	version="1.0" 
	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:counter="bitel.billing.server.util.exslt.Counter">
	........

Используется так:

<xsl:value-of select="counter:set('total', '0.0')"/>
<xsl:value-of select="counter:add('total', '10.00')"/>
<xsl:value-of select="counter:get('total')"/>

SQL запрос

Используется для выполнения произвольных выборок из базы биллинга. Пример здесь: Квитанция телефонии физ. лицам.

Объявляется расширение так:

<xsl:stylesheet
	version="1.0" 
	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">
	......

Используется так:

<xsl:variable name="query" select="'SELECT id, title FROM contract'"/>
<xsl:variable name="contracts" select="sql:select( $query )"/>
 
<xsl:for-each select="$numbers/row"/>
  	<xsl:value-of select="@id"/>
  	<xsl:value-of select="@title"/>
</xsl:for-each>

Использование произвольных методов Java класов

Например, вызов функции: http://bgbilling.ru/v4.5/javadoc/bitel/billing/common/CommonUtils.html#maskBlank(java.lang.String,%20java.lang.String) Возможен вызов любой функции с простыми параметрами (пустой список, либо строка) из любого класса, входящего в classpath BGBillingServer.

Объявляется так:

<xsl:stylesheet
	version="1.0" 
	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:utils="bitel.billing.common.CommonUtils">
	......

Вызывается так:

<xsl:variable name="abon_service" select="utils:replace( '5555,44', ',', '')"/>

Генерация картинки со штрих-кодом

Используется вставки картинок с штрих-кодом в FO страницы. Пример здесь: Квитанция телефонии физ. лицам. На протокол barcode в процессах биллинга повешен генератор картинок с штрих-кодом. Соответсвенно, Java машина при запросе данной картинки вызывает его. В данный момент поддержан формат Code128. Используется примерно так:

<!-- 128-тип кода, затем StartA, T, K, B, CodeC  -->
<xsl:variable name="code_start" select="'128a|TKB&#199;'"/>
<!-- номер телефона (первый) - 7 символов -->
<xsl:variable name="number" select="$numbers/row/@number"/>
<!-- период оплаты - 4 символа -->
<xsl:variable name="period_opl" select="concat( $mm, $yy )"/>
<!-- сумма -->
<xsl:variable name="rub" select="substring-before(/data/bill/@total_sum,'.')"/>
<xsl:variable name="kop" select="substring-after(/data/bill/@total_sum,'.')"/>
<xsl:variable name="rub_length" select="string-length($rub)"/>
 
<fo:external-graphic width="6.5cm" height="1.1cm">
 	<xsl:attribute name="src"><xsl:value-of select="concat('barcode:///', $code_start, $number, $period_opl, $sum_part_c, '&#201;', $sum_part_a, '&lt;SOH&gt;')"/></xsl:attribute>
</fo:external-graphic>
Личные инструменты