Расширенные счета модуля бухгалтерии
Материал из BiTel WiKi
Magic (Обсуждение | вклад) |
Amir (Обсуждение | вклад) (→Пример счета за телефонию) |
||
(12 промежуточных версий не показаны.) | |||
Строка 3: | Строка 3: | ||
Так же как и xsl шаблон, jrxml шаблон необходимо скопировать в webroot/xsl и указать его имя в типе документа. | Так же как и 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> | ||
== Пример счета за телефонию == | == Пример счета за телефонию == | ||
- | + | <gallery> | |
+ | Изображение:Bill_phone.png|Пример счета за телефонию | ||
+ | </gallery> | ||
- | + | [[Медиа:Bill_phone.jrxml.zip]] | |
Оба файла должны лежать в webroot/xsl, в типе документа указывается bill.jrxml. bill_subreport0.jrxml - это подотчет используемый bill.jrxml, именно в нем выводится список МГ/МН звонков, посредством запросов в базу. | Оба файла должны лежать в webroot/xsl, в типе документа указывается bill.jrxml. bill_subreport0.jrxml - это подотчет используемый bill.jrxml, именно в нем выводится список МГ/МН звонков, посредством запросов в базу. | ||
Строка 13: | Строка 49: | ||
В типе документа должны присутствовать позиции долг за предыдущий и оплачено за текущий месяцы. | В типе документа должны присутствовать позиции долг за предыдущий и оплачено за текущий месяцы. | ||
В данном примере коды этих позиций 5 и 6: | В данном примере коды этих позиций 5 и 6: | ||
- | < | + | <pre> |
bill.pos.5.title=Долг | bill.pos.5.title=Долг | ||
bill.pos.5.name=Долг на $month | bill.pos.5.name=Долг на $month | ||
Строка 24: | Строка 60: | ||
bill.pos.6.quantity=1 | bill.pos.6.quantity=1 | ||
bill.pos.6.unit= | bill.pos.6.unit= | ||
- | </ | + | </pre> |
Для корректной работы необходимо скорректировать переменные (variables) в bill.jrxml: | Для корректной работы необходимо скорректировать переменные (variables) в bill.jrxml: | ||
* mid - код модуля телефонии, целое число, new Integer( $mid ); | * mid - код модуля телефонии, целое число, new Integer( $mid ); | ||
* localService - код услуги местной телефонии, для вывода кол-ва минут по местной связи, целое число, new Integer( $localService ); | * localService - код услуги местной телефонии, для вывода кол-ва минут по местной связи, целое число, new Integer( $localService ); | ||
* mgmnServices - коды услуг МГ/МН связи, через запятую, звонки с этими услугами будут в расшифровке, строка. | * mgmnServices - коды услуг МГ/МН связи, через запятую, звонки с этими услугами будут в расшифровке, строка. | ||
- | * outSaldo - сальдо на начало текущего месяца, т.е значении позиции долг * (-1) - | + | * outSaldo - сальдо на начало текущего месяца, т.е значении позиции долг * (-1) - |
- | * account - наработка, т.е сумма позиций, исключая позиции долг и оплачено - | + | <pre>-(java.lang.Float)$P{_xpath}.selectObject("/data/bill/pos[@position_id='6']/@summ", java.lang.Float.class)</pre> |
- | А также в зоне detail шаблона - указать какие позиции счета не отображать (это должны быть позиции счета долг и платежи, 5 и 6 для данного примера) | + | * 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)
Пример счета за телефонию
Оба файла должны лежать в 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