Расширенные счета модуля бухгалтерии

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

(Различия между версиями)
Перейти к: навигация, поиск
(Пример счета за телефонию)
 
(15 промежуточных версий не показаны.)
Строка 1: Строка 1:
С версии 4.4 возможно использование в качестве шаблона счета формата jasperreports (аналогично модулю отчетов) вместо xsl.
С версии 4.4 возможно использование в качестве шаблона счета формата jasperreports (аналогично модулю отчетов) вместо xsl.
Для его редактирования рекомендуется использовать приложение iReport (версии >= 2.0).
Для его редактирования рекомендуется использовать приложение iReport (версии >= 2.0).
 +
 +
Так же как и xsl шаблон, jrxml шаблон необходимо скопировать в webroot/xsl и указать его имя в типе документа.
 +
 +
== Создание шаблона ==
 +
Смотри также:
 +
 +
[http://bgbilling.ru/v4.4/doc/ch13s06.html Документация:Создание шаблонов отчетов]
 +
 +
[[Редактирование_отчетов_в_iReport]]
 +
 +
В качестве источника данных (Datasource) выступает точно такая же xml как и в xsl шаблоне.
 +
 +
В запросе отчета (Data - Report Query) укажите Query Language: XPath, сам запрос:
 +
<pre>
 +
/data/bill/pos
 +
</pre>
 +
 +
Таким образом записи Datasource - это позиции счета.
 +
 +
Добавьте поля (Fields) по имени атрибутов элеметна <pos/>, т.е.
 +
* Field Name: name, Class Type: java.lang.String - $F{name}
 +
* Field Name: summ, Class Type: java.lang.Float - $F{summ}
 +
* Field Name: position_id, Class Type: java.lang.Integer - $F{position_id}
 +
 +
Добавьте параметр _xpath. Он содержит в себе эту же xml с данными и позволяет с помощью запросов XPath обратиться к его элементам, атрибутам.
 +
* Parameter Name: _xpath
 +
* Parameter Class Type: bitel.billing.server.admin.reports.BGXmlDataSource
 +
 +
Например, у текстового поля для отображения параметра договора Text Field Expression может быть таким:
 +
<pre>
 +
$P{_xpath}.select("/data/bill/contract_params/parameter[@pid='1']/@value")
 +
</pre>
 +
В данном случае возвращается объект типа java.lang.String. Если необходимо преобразовать значение в другой тип, то используется запись вида:
 +
<pre>
 +
-(java.lang.Float)$P{_xpath}.selectObject("/data/bill/pos[@position_id='6']/@summ", java.lang.Float.class)
 +
</pre>
== Пример счета за телефонию ==
== Пример счета за телефонию ==
-
http://bgbilling.ru/reports/bill.jrxml
+
<gallery>
 +
Изображение:Bill_phone.png|Пример счета за телефонию
 +
</gallery>
 +
 
 +
[[Медиа:Bill_phone.jrxml.zip]]
 +
 
 +
Оба файла должны лежать в webroot/xsl, в типе документа указывается bill.jrxml. bill_subreport0.jrxml - это подотчет используемый bill.jrxml, именно в нем выводится список МГ/МН звонков, посредством запросов в базу.
-
http://bgbilling.ru/reports/bill_subreport0.jrxml
+
В типе документа должны присутствовать позиции долг за предыдущий и оплачено за текущий месяцы.
 +
В данном примере коды этих позиций 5 и 6:
 +
<pre>
 +
bill.pos.5.title=Долг
 +
bill.pos.5.name=Долг на $month
 +
bill.pos.5.summ=DEBT($prevmonth)
 +
bill.pos.5.quantity=1
 +
bill.pos.5.unit=
 +
bill.pos.6.title=Оплачено
 +
bill.pos.6.name=Оплачено за $month
 +
bill.pos.6.summ=-PAYMENT($month)
 +
bill.pos.6.quantity=1
 +
bill.pos.6.unit=
 +
</pre>
 +
Для корректной работы необходимо скорректировать переменные (variables) в bill.jrxml:
 +
* mid - код модуля телефонии, целое число, new Integer( $mid );
 +
* localService - код услуги местной телефонии, для вывода кол-ва минут по местной связи, целое число, new Integer( $localService );
 +
* mgmnServices - коды услуг МГ/МН связи, через запятую, звонки с этими услугами будут в расшифровке, строка.
 +
* outSaldo - сальдо на начало текущего месяца, т.е значении позиции долг * (-1) -
 +
<pre>-(java.lang.Float)$P{_xpath}.selectObject("/data/bill/pos[@position_id='6']/@summ", java.lang.Float.class)</pre>
 +
* account - наработка, т.е сумма позиций, исключая позиции долг и оплачено (Calculation Type: Sum) -
 +
<pre>( $F{position_id}!=5 && $F{position_id}!=6 ? $F{summ} : new Float(0) )</pre>
 +
А также в зоне detail шаблона - указать какие позиции счета не отображать (это должны быть позиции счета долг и платежи, 5 и 6 для данного примера):
 +
Print When Expression:
 +
<pre>
 +
$F{position_id}!=5 && $F{position_id}!=6
 +
</pre>

Текущая версия на 06:58, 21 апреля 2008

С версии 4.4 возможно использование в качестве шаблона счета формата jasperreports (аналогично модулю отчетов) вместо xsl. Для его редактирования рекомендуется использовать приложение iReport (версии >= 2.0).

Так же как и xsl шаблон, jrxml шаблон необходимо скопировать в webroot/xsl и указать его имя в типе документа.

Создание шаблона

Смотри также:

Документация:Создание шаблонов отчетов

Редактирование_отчетов_в_iReport

В качестве источника данных (Datasource) выступает точно такая же xml как и в xsl шаблоне.

В запросе отчета (Data - Report Query) укажите Query Language: XPath, сам запрос:

/data/bill/pos

Таким образом записи Datasource - это позиции счета.

Добавьте поля (Fields) по имени атрибутов элеметна <pos/>, т.е.

  • Field Name: name, Class Type: java.lang.String - $F{name}
  • Field Name: summ, Class Type: java.lang.Float - $F{summ}
  • Field Name: position_id, Class Type: java.lang.Integer - $F{position_id}

Добавьте параметр _xpath. Он содержит в себе эту же xml с данными и позволяет с помощью запросов XPath обратиться к его элементам, атрибутам.

  • Parameter Name: _xpath
  • Parameter Class Type: bitel.billing.server.admin.reports.BGXmlDataSource

Например, у текстового поля для отображения параметра договора Text Field Expression может быть таким:

$P{_xpath}.select("/data/bill/contract_params/parameter[@pid='1']/@value")

В данном случае возвращается объект типа java.lang.String. Если необходимо преобразовать значение в другой тип, то используется запись вида:

-(java.lang.Float)$P{_xpath}.selectObject("/data/bill/pos[@position_id='6']/@summ", java.lang.Float.class)

Пример счета за телефонию

Медиа:Bill_phone.jrxml.zip

Оба файла должны лежать в webroot/xsl, в типе документа указывается bill.jrxml. bill_subreport0.jrxml - это подотчет используемый bill.jrxml, именно в нем выводится список МГ/МН звонков, посредством запросов в базу.

В типе документа должны присутствовать позиции долг за предыдущий и оплачено за текущий месяцы. В данном примере коды этих позиций 5 и 6:

bill.pos.5.title=Долг
bill.pos.5.name=Долг на $month 
bill.pos.5.summ=DEBT($prevmonth)
bill.pos.5.quantity=1
bill.pos.5.unit=
bill.pos.6.title=Оплачено
bill.pos.6.name=Оплачено за $month 
bill.pos.6.summ=-PAYMENT($month)
bill.pos.6.quantity=1
bill.pos.6.unit=

Для корректной работы необходимо скорректировать переменные (variables) в bill.jrxml:

  • mid - код модуля телефонии, целое число, new Integer( $mid );
  • localService - код услуги местной телефонии, для вывода кол-ва минут по местной связи, целое число, new Integer( $localService );
  • mgmnServices - коды услуг МГ/МН связи, через запятую, звонки с этими услугами будут в расшифровке, строка.
  • outSaldo - сальдо на начало текущего месяца, т.е значении позиции долг * (-1) -
-(java.lang.Float)$P{_xpath}.selectObject("/data/bill/pos[@position_id='6']/@summ", java.lang.Float.class)
  • account - наработка, т.е сумма позиций, исключая позиции долг и оплачено (Calculation Type: Sum) -
( $F{position_id}!=5 && $F{position_id}!=6 ? $F{summ} : new Float(0) )

А также в зоне detail шаблона - указать какие позиции счета не отображать (это должны быть позиции счета долг и платежи, 5 и 6 для данного примера): Print When Expression:

$F{position_id}!=5 && $F{position_id}!=6
Личные инструменты