<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.infinite-erp.co.id/index.php?action=history&amp;feed=atom&amp;title=How_to_create_a_Report_using_Process_Definition</id>
	<title>How to create a Report using Process Definition - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.infinite-erp.co.id/index.php?action=history&amp;feed=atom&amp;title=How_to_create_a_Report_using_Process_Definition"/>
	<link rel="alternate" type="text/html" href="https://wiki.infinite-erp.co.id/index.php?title=How_to_create_a_Report_using_Process_Definition&amp;action=history"/>
	<updated>2026-04-06T23:23:28Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.infinite-erp.co.id/index.php?title=How_to_create_a_Report_using_Process_Definition&amp;diff=270&amp;oldid=prev</id>
		<title>Wikiadmin: /* Parameter Definition */</title>
		<link rel="alternate" type="text/html" href="https://wiki.infinite-erp.co.id/index.php?title=How_to_create_a_Report_using_Process_Definition&amp;diff=270&amp;oldid=prev"/>
		<updated>2018-10-15T13:46:05Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Parameter Definition&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 13:46, 15 October 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l99&quot; &gt;Line 99:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 99:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: jasper_hbSession value: SessionImpl(PersistenceContext[entityKeys=...&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: jasper_hbSession value: SessionImpl(PersistenceContext[entityKeys=...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: IS_IGNORE_PAGINATION value: false&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: IS_IGNORE_PAGINATION value: false&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Report Datasource Definition ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Report Datasource Definition ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff::1.12:old-64:rev-270 --&gt;
&lt;/table&gt;</summary>
		<author><name>Wikiadmin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.infinite-erp.co.id/index.php?title=How_to_create_a_Report_using_Process_Definition&amp;diff=64&amp;oldid=prev</id>
		<title>Wikiadmin: Created page with &quot;== Introduction ==  This how to will add a new Report using a Process Definition and create a menu entry to invoke it.  The implementation requires development experience with...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.infinite-erp.co.id/index.php?title=How_to_create_a_Report_using_Process_Definition&amp;diff=64&amp;oldid=prev"/>
		<updated>2018-10-14T13:57:02Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Introduction ==  This how to will add a new Report using a Process Definition and create a menu entry to invoke it.  The implementation requires development experience with...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This how to will add a new Report using a Process Definition and create a menu entry to invoke it.&lt;br /&gt;
&lt;br /&gt;
The implementation requires development experience with Process Definitions. See the following concept pages for background information:&lt;br /&gt;
* [[How_to_create_a_Standard_Process_Definition|How to create a Standard Process Definition]]&lt;br /&gt;
* [[How_to_create_a_Report]] to build the Jasper Report templates.&lt;br /&gt;
&lt;br /&gt;
{{(!)| This feature is available from '''3.0PR15Q2'''}}&lt;br /&gt;
&lt;br /&gt;
== Example Module ==&lt;br /&gt;
This howto is supported by an example module which includes the simple report described in the examples of this document. The report is named ''Product Simple Report'' and prints in PDF a list of Products that can be filtered by Product Category.&lt;br /&gt;
&lt;br /&gt;
The code of the example module can be downloaded from this mercurial repository: https://code.openbravo.com/erp/mods/org.openbravo.platform.features&lt;br /&gt;
&lt;br /&gt;
== Report Definition in Application Dictionary ==&lt;br /&gt;
&lt;br /&gt;
=== Process Definition ===&lt;br /&gt;
&lt;br /&gt;
Create a new record in ''Process Definition'' window. Fields to consider:&lt;br /&gt;
&lt;br /&gt;
;'''UI Pattern''': Set ''Report (Using JR Templates)''. This value will display the Report Definition tab.&lt;br /&gt;
;'''Action Handler''':If none is set when the UI Pattern is selected the ''org.openbravo.client.application.report.BaseReportActionHandler'' is set.&lt;br /&gt;
&lt;br /&gt;
[[Image:howto-report-pd-processdefinition.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
The ''BaseReportActionHandler'' is the default action handler to use in reports. In case you desire to make some Java validations or include some extra parameters that are not defined in the Process Definition parameters tab it is possible to use a custom Action Handler that extends the ''BaseReportActionHandler''.&lt;br /&gt;
&lt;br /&gt;
=== Parameter Definition ===&lt;br /&gt;
&lt;br /&gt;
In the ''Parameter'' tab are added all the parameters that are needed to filter the results of the report. Their values are handled by the ''BaseReportActionHandler'' and sent to Jasper Reports as parameters. This parameters need to be defined in the JR template with the same name as the column name.&lt;br /&gt;
&lt;br /&gt;
[[Image:howto-report-pd-parameterad.png|600px|thumb|center]]&lt;br /&gt;
[[Image:Howto-report-pd-parameterjr2_.png|200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
When the filter parameter is a Selector reference the value is sent as a ''JSONOBject'' that includes 2 keys:&lt;br /&gt;
* ''value'' with the id of the selected BaseOBObject to be used in the SQL query&lt;br /&gt;
* ''identifier'' with the readable identifier that can be used to print in the report the filter values.&lt;br /&gt;
&lt;br /&gt;
In case of Multiple Selectors the ''JSONObject'' includes 4 keys:&lt;br /&gt;
* ''values'' with a JSONArray including all the selected ids.&lt;br /&gt;
* ''identifiers'' with a JSONArray including all the identifiers.&lt;br /&gt;
* ''strValues'' with a comma separated String with all the selected ids that can be used in a SQL ''IN'' clause.&lt;br /&gt;
* ''strIdentifiers'' with a comma separated String with all the selected identifiers.&lt;br /&gt;
&lt;br /&gt;
In the Jasper Template the parameter has to be defined using the class ''org.codehaus.jettison.json.JSONObject''.&lt;br /&gt;
In the example it is set a ''Product Category'' multiple selector. As this parameter is optional, the filter is included in the query using an auxiliary parameter (''AUX_Product_category''). The auxiliary parameter has a default expression that returns ''&amp;quot; 1 = 1 &amp;quot;'' when there is no category selected and the corresponding where clause when some categories are selected:&lt;br /&gt;
&lt;br /&gt;
 (&amp;quot;&amp;quot;.equals($P{M_Product_Category_ID}.getString(&amp;quot;strValues&amp;quot;))) ? &amp;quot; 1 = 1 &amp;quot; : &amp;quot; pc.m_product_category_id IN (&amp;quot;+$P{M_Product_Category_ID}.getString(&amp;quot;strValues&amp;quot;)+&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This parameter is then included in the query using the &amp;quot;$P!{}&amp;quot; notation to replace it with the parameter value instead of using SQL Parameters.&lt;br /&gt;
&lt;br /&gt;
 FROM m_product p&lt;br /&gt;
   JOIN m_product_category pc ON p.m_product_category_id = pc.m_product_category_id&lt;br /&gt;
 WHERE $P!{AUX_Product_category}&lt;br /&gt;
   AND p.ad_client_id = $P{Current_Client_ID}&lt;br /&gt;
&lt;br /&gt;
The identifiers can be shown in a Text field with the following Expression:&lt;br /&gt;
 $P{M_Product_Category_ID}.getString(&amp;quot;strIdentifiers&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
[[Image:howto-report-pd-prodcat2.png|350px|thumb|center]]&lt;br /&gt;
[[Image:howto-report-pd-auxprodcat2.png|350px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ''BaseReportActionHandler'' and the ''ReportingUtils'' class used to generate the report includes some additional parameters that can be used in the template:&lt;br /&gt;
&lt;br /&gt;
;'''SUBREPORT_DIR''': The path where the main template is located. Useful to set the paths of the subreports.&lt;br /&gt;
;'''jasper_process''': A ''org.openbravo.client.application.Process'' object with the Process Definition of the report.&lt;br /&gt;
;'''jasper_hbSession''': A ''org.hibernate.Session'' object with the current hibernate session.&lt;br /&gt;
;'''jasper_obContext''': A ''org.openbravo.dal.core.OBContext'' with the OBContext that has launched the report.&lt;br /&gt;
;'''AMOUNTFORMAT''': A ''java.text.DecimalFormat'' object with the format to be used on Amounts.&lt;br /&gt;
;'''QUANTITYFORMAT''': A ''java.text.DecimalFormat'' object with the format to be used on Quantities.&lt;br /&gt;
;'''REPORT_FORMAT_FACTORY''': JR Base parameter with the date format.&lt;br /&gt;
;'''Current_Client_ID''': String with the current ''AD_Client_ID''. Useful to filter the SQL of the report.&lt;br /&gt;
;'''Readable_Organizations''': Comma separated String with the readable organizations of the User/Role executing the report. Useful to filter the SQL of the report.&lt;br /&gt;
&lt;br /&gt;
Depending on the report output some additional parameters are set:&lt;br /&gt;
&lt;br /&gt;
'''PDF''' output:&lt;br /&gt;
;'''IS_IGNORE_PAGINATION''': with '''false''' value to ensure that there report is break in different pages.&lt;br /&gt;
'''XLS''' output:&lt;br /&gt;
;'''IS_IGNORE_PAGINATION''': with '''true''' value to ensure that there report is not break in different pages and all the results are shown in the same sheet.&lt;br /&gt;
&lt;br /&gt;
In case it is desired to add more parameters that cannot be defined as ''Parameters'' of the ''Process Definition'' it is possible to use a custom ''Handler'' that extends the ''BaseReportActionHandler'' and overwrites the ''addAdditionalParameters'' method.&lt;br /&gt;
&lt;br /&gt;
It is possible to check all the parameters and values sent to the Jasper Report engine by enabling the ''DEBUG log level'' on the ''org.openbravo.client.application.report.ReportingUtils'' class by modifying the log4j.lcf file:&lt;br /&gt;
&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - list of parameters available in the jasper report&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: SUBREPORT_DIR value: /home/gorkaion/src/openbravo/pi-reporting-merge/WebContent/web/org.openbravo.platform.features/jasper/&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: Current_Client_ID value: 23C59575B9CF467C9620760EB255B389&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: REPORT_FORMAT_FACTORY value: org.openbravo.erpCommon.utility.JRFormatFactory@14ffa3fc&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: REPORT_VIRTUALIZER value: net.sf.jasperreports.engine.fill.JRSwapFileVirtualizer@1b670029&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: jasper_process value: OBUIAPP_Process(70889433974B409BAC4F9D7BFB211248) (name: Product Simple Report)&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: M_Product_Category_ID value: {&amp;quot;values&amp;quot;:[&amp;quot;291B401A38354A2C8247DFF0DFBDF4AE&amp;quot;,&amp;quot;5525FCABFE9545018EE221E8802AA283&amp;quot;],&amp;quot;identifiers&amp;quot;:[&amp;quot;Bio&amp;quot;,&amp;quot;Fruit juice&amp;quot;],&amp;quot;strValues&amp;quot;:&amp;quot;'291B401A38354A2C8247DFF0DFBDF4AE', '5525FCABFE9545018EE221E8802AA283'&amp;quot;,&amp;quot;strIdentifiers&amp;quot;:&amp;quot;Bio, Fruit juice&amp;quot;}&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: AMOUNTFORMAT value: java.text.DecimalFormat@674dc&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: QUANTITYFORMAT value: java.text.DecimalFormat@674dc&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: Readable_Organizations value: 'E443A31992CB4635AFCAEABE7183CE85','0','DC206C91AA6A4897B44DA897936E0EC3','7BABA5FF80494CAFA54DEBD22EC46F01','BAE22373FEBE4CCCA24517E23F0C8A48','19404EAD144C49A0AF37D54377CF452D','B843C30461EA4501935CB1D125C9C25A','2E60544D37534C0B89E765FE29BC0B43'&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: jasper_obContext value: org.openbravo.dal.core.OBContext@73b91cd&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: jasper_hbSession value: SessionImpl(PersistenceContext[entityKeys=...&lt;br /&gt;
 DEBUG org.openbravo.client.application.report.ReportingUtils - parameter name: IS_IGNORE_PAGINATION value: false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Report Datasource Definition ===&lt;br /&gt;
&lt;br /&gt;
{{AvailableFrom|3.0PR17Q1}}&lt;br /&gt;
&lt;br /&gt;
There exists two ways of defining the data to be displayed by the report:&lt;br /&gt;
&lt;br /&gt;
# Defining a '''query''' in the jrxml template&lt;br /&gt;
# Providing a '''datasource''' to the jrxml template&lt;br /&gt;
&lt;br /&gt;
In case of the second approach, we need to use a custom ''Handler'' that extends the ''BaseReportActionHandler'' and overwrites the ''getReportData'' method. This method receives a parameter map as an argument that contains:&lt;br /&gt;
&lt;br /&gt;
* The parameters of the HTTP request&lt;br /&gt;
* The parameters available inside the Jasper Report. They are available through another map that can be accessed by using the ''JASPER_REPORT_PARAMETERS'' key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  protected JRDataSource getReportData(Map&amp;lt;String, Object&amp;gt; parameters) {&lt;br /&gt;
    // Retrieve the report id (HTTP request parameter)&lt;br /&gt;
    String reportId = (String) parameters.get(&amp;quot;reportId&amp;quot;);&lt;br /&gt;
    // retrieve the map of JR Parameters&lt;br /&gt;
    Map&amp;lt;String, Object&amp;gt; jrParameters = (Map&amp;lt;String, Object&amp;gt;) parameters&lt;br /&gt;
        .get(JASPER_REPORT_PARAMETERS);&lt;br /&gt;
    // Here goes the logic to generate the JRDataSource&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows to generate the report data dynamically, i.e, based on some kind of logic built with the value of any of these parameters.&lt;br /&gt;
&lt;br /&gt;
=== Sub-Report Runtime Compilation ===&lt;br /&gt;
&lt;br /&gt;
{{AvailableFrom|3.0PR17Q1}}&lt;br /&gt;
&lt;br /&gt;
In case our process definition report contains sub-reports, the infrastructure allows to compile the sub-reports at runtime. In that case we will need to:&lt;br /&gt;
&lt;br /&gt;
# Use a custom ''Handler'' that extends the ''BaseReportActionHandler'' and overwrites the ''isCompilingSubreports'' method. This method will return &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
# The parameter name for the sub-report in the main report will follow this pattern: &amp;lt;code&amp;gt;SUBREP_name_of_the_sub_report_file&amp;lt;/code&amp;gt;.&lt;br /&gt;
# The sub-reports (jrxml files) must be placed in the same folder as the main report.&lt;br /&gt;
&lt;br /&gt;
=== Report Definition ===&lt;br /&gt;
&lt;br /&gt;
In the ''Report Definition'' tab are defined the JR Templates of the report. Each Process Definition can only have a Report definition. It is also needed to define at least one template: HTML, PDF or Excel. &lt;br /&gt;
&lt;br /&gt;
{{(!)| The '''HTML''' output is available since version '''[http://wiki.openbravo.com/wiki/Release_Notes/3.0PR17Q1 3.0PR17Q1.]'''}}&lt;br /&gt;
&lt;br /&gt;
* If PDF and Excel outputs share the same template, it is possible to set the PDF template and check the ''Use PDF as Excel Template'' flag. &lt;br /&gt;
* If PDF and HTML outputs share the same template, it is possible to set the PDF template and check the ''Use PDF as HTML Template'' flag. &lt;br /&gt;
* If HTML, PDF and Excel outputs share the same template, then the PDF template must be set and both flags must be checked.&lt;br /&gt;
&lt;br /&gt;
The templates need to be stored in the ''web'' folder.&lt;br /&gt;
&lt;br /&gt;
[[Image:Report_process_definition.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
&lt;br /&gt;
The result is shown in a new form with all the parameters and the corresponding Export button(s).&lt;br /&gt;
&lt;br /&gt;
[[Image:PD - Form buttons enabled.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Once the report is generated a file download is requested in the browser. The form is kept enabled so it is possible to rerun the report with different parameters.&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
An example of XLS Report defined with a Process Definition can be found [http://wiki.openbravo.com/wiki/How_to_create_an_XLS_Report_with_Formulas here].&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
&lt;br /&gt;
An example of a Process Definition Report using the HTML output (displayed in a tab) can be downloaded from this [https://code.openbravo.com/erp/mods/org.openbravo.platform.features/ repository].&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
		
	</entry>
</feed>