Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(690)

Unified Diff: doc/topics/reports/index.rst

Issue 907042: First snapshot of trytond documentation refactoring (Closed)
Patch Set: Fix last comments Created 14 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « doc/topics/pyson.rst ('k') | doc/topics/views/extension.rst » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: doc/topics/reports/index.rst
===================================================================
new file mode 100644
--- /dev/null
+++ b/doc/topics/reports/index.rst
@@ -0,0 +1,256 @@
+.. _topics-reports:
+
+=======
+Reports
+=======
+
+Tryton can generate dynamic reports in many formats from report and style
+templates. The reports are generated in one step as follows: a report template
+in a special file format, explained later, is interpolated with dynamic data
+and placed into a document of the same file format. Tryton's ability to
+generate documents in this way allows documents to be generated for any editor
+that supports the Open Document Format which can be converted to third party
+formats, such as PDF. Extra libraries are required for this, see INSTALL for
+more information.
+
+Report Templates
+================
+
+Report templates are files with a format supported by relatorio, that contain
+snippets of the Genshi templating language.
+
+Here is an example of the text that would be placed in an open document text
+document, ``*.odt``, that displays the full name and the address lines of the
+first address of each party. The genshi code is placed in the template using
+``Functions->Placeholder->Text`` Fields. These are specific to ODT files.
+
+.. highlight:: genshi
+
+::
+
+ <for each="party in objects">
+ <party.full_name>
+ <if test="party.addresses">
+ <for each="line in party.addresses[0].full_address.split('\n')">
+ <line>
+ </for>
+ </if>
+ </for>
+
+
+Report styles
+=============
+
+Reports styles let you standardize the header, footer and styles of your
+templates.
+
+
+Report API
+==========
+
+Python API
+----------
+
+.. TODO
+
+XML Description
+---------------
+
+When defining an `ir.action.report` the following attributes are available:
+
+ * ``name``: The name of the report.
+
+ * ``report_name``: The name of the report model, for example
+ my_module.my_report. This is the name you would use with `pool.get`
+
+ * ``module_name``: If this report is of an existing model this is its name.
+ For example my_module.my_model. Custom reports that aren't of a specific
+ model will need to leave this blank.
+
+ * ``report``: The path to the template file starting with the module, for
+ example my_module/my_report.odt.
+
+ * ``style``: The path to the style file starting with the module, for
+ example, my_module/my_style.odt. If no style is to be used this field
+ will be blank.
+
+
+Report Usage
+============
+
+Using genshi and open office reports
+------------------------------------
+
+Setting up an ODT file
+^^^^^^^^^^^^^^^^^^^^^^
+
+If you are creating a report from scratch you should perform the following
+steps:
+
+ - Remove user data
+
+ * "File > Properties..."
+
+ * Uncheck "Apply user data"
+
+ * Click on "Reset"
+
+ - Select Style and Formatting
+
+ * Press F11 or "Format > Style and Formatting"
+
+ * Click on the drop down at the right top
+
+ * Select "Load Styles"
+
+ * Click on "From File..."
+
+ * Select a existing report (``company/header_A4.odt``)
+
+ - Set some parameters
+
+ * Set the zoom to 100% (View>Zoom)
+
+ * Set the document in read-only mode
+
+ (``Tools>Options>OpenOffice.org>Security``) (Decreases the time it takes to
+ open the document.)
+
+ - Usage
+
+ * Use Liberation fonts (Only necessary if being officially included in
+ Tryton)
+
+ * Try to use styles in report templates so that they can be extended in
+ report styles.
+
+Using Genshi in an ODT file
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The genshi code is placed in the template using Functions->Placeholder->Text
+Fields. These are specific to ``*.odt`` files and can be found in the open
+office menu at Insert -> Fields -> Other and then Functions -> Placeholder ->
+Text. Type genshi code into the Placeholder field. There are alternatives for
+embedding genshi that are supported by relatorio but their use is not
+encouraged within Tryton.
+
+Also note that relatorio only supports a subset of genshi. The directives that
+are supported by relatorio can be found here: `Quick Example`_ .
+
+See genshi's documentation for more information: `Genshi XML Templates`_
+
+Examples
+^^^^^^^^
+
+The modules company, account_invoice and stock all contain helpful examples.
+
+Also see relatorio's site for some examples:
+
+ - `Quick Example`_
+
+ - `In Depth Introduction`_
+
+ - `Example Documents`_
+
+
+Accessing models from within the report
+---------------------------------------
+
+By default instances of the models the report is for are passed in to the
+report via a list of objects called `objects`. These objects behave just as
+they would within trytond itself. You can access any of the models relations as
+well. For example within the invoice report each object is an invoice and you
+can access the name of the party of the invoice via `invoice.party.name`.
+Additional objects can be passed to a report. This is discussed below in
+`Passing custom data to a report`.
+
+Within Tryton the underlying model the report can be found by following the
+Menu to ``Administration > UI > Actions > Report``. Furthermore in tryton the
+fields for that model can be found by following the menu to ``Administration >
+Model > Model``. Model relation fields can be accessed to any depth, for
+example, one could access `invoice.party.addresses` to get a list of addresses
+for the party of an invoice.
+
+Creating a simple report template for a model from client
+---------------------------------------------------------
+
+TODO: Explain the steps necessary to do this.
+
+Creating a simple report template for a model in XML
+----------------------------------------------------
+
+Less work has to be done if you just want a simple report representation of a
+model. There are just 2 steps. First, create a report template file in a
+format supported by relatorio. Second, describe your report in XML making sure
+to define the correct report_name and module_name.
+
+Replacing existing Tryton reports
+---------------------------------
+
+To replace an existing report you must deactivate the old report and activate
+the new report.
+
+For example to deactivate the invoice report:
+
+.. highlight:: xml
+
+::
+
+ <record model="ir.action.report" id="account_invoice.report_invoice">
+ <field name="active" eval="False"/>
+ </record>
+
+Then you must activate the new invoice report that exists in your new module:
+
+.. highlight:: xml
+
+::
+
+ <record model="ir.action.report" id="report_invoice_new">
+ <field name="name">Invoice</field>
+ <field name="report_name">account.invoice</field>
+ <field name="model">account.invoice</field>
+ <field name="report">my_module/invoice.odt</field>
+ <field name="style">module_name/header_A4.odt</field>
+ </record>
+
+Passing custom data to a report
+-------------------------------
+
+TODO: Examples of overriding Report.execute.
+
+In this example `Report.parse` is overridden and an employee object is set into
+context. Now the invoice report will be able to access the employee object.
+
+.. highlight:: python
+
+::
+
+ class InvoiceReport(Report):
+ _name = 'account.invoice'
+ def parse(self, cursor, user_id, report, objects, datas, context):
+ employee_obj = self.pool.get('company.employee')
+ employee = False
+ if context.get('employee', False):
+ employee = employee_obj.browse(cursor, user_id,
+ context['employee'],
+ context=context)
+ context['employee'] = employee
+ return super(InvoiceReport, self).parse(cursor, user_id, report,
+ objects, datas, context)
+ InvoiceReport()
+
+
+Replacing existing Tryton styles
+--------------------------------
+
+TODO: Explanation of how to override `ir.report.get_style_content` to change
+the default style.
+
+
+.. _Genshi XML Templates: http://genshi.edgewall.org/wiki/Documentation/0.5.x/xml-templates.html
+
+.. _Quick Example: http://relatorio.openhex.org/wiki/QuickExample
+
+.. _In Depth Introduction: http://relatorio.openhex.org/wiki/IndepthIntroduction
+
+.. _Example Documents: http://relatorio.openhex.org/browser/examples
« no previous file with comments | « doc/topics/pyson.rst ('k') | doc/topics/views/extension.rst » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b