OdooWiki OCA HUB
Reporting License: AGPL-3

This module was written to extend the functionality of the reporting engine to support XML reports and allow modules to generate them by code or by QWeb templates.

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Adds a new XML report type to Odoo, so reports can be generated as XML files and optionally checked against an XSD schema before download.

This module extends Odoo's reporting engine with an XML output format. When configuring a report (in the report action form), a new report type "XML" becomes available, and an extra "XML Report Settings" section appears with fields for an XSD validation schema, XML encoding, file extension and an option to include an XML declaration at the top of the file.

When a user runs such a report, Odoo renders its QWeb template, formats the result as XML, and, if an XSD schema was uploaded, validates the produced content against it. If the content does not match the schema, a validation error is raised instead of downloading a broken file. The report is then downloaded as an XML file, using the configured extension (default xml) and, when available, the report's print name as file name.

  • New report type "XML" on ir.actions.report
  • Extra settings: XSD Validation Schema, XML Encoding, XML Declaration, XML Extension
  • Automatic validation of the generated XML against the uploaded schema
  • Download handled through the standard report download route, with XML content type
  • A demo report on companies shows how an XML report is defined

The module also provides an abstract model report.report_xml.abstract that other modules can reuse to build their own XML reports.

Depends on

web
Models and fields (2)
  • ir.actions.report · extends an existing modelxsd_schema (XSD Validation Schema), report_type, xml_encoding (XML Encoding), xml_extension, xml_declaration (XML Declaration)
  • report.report_xml.abstract · new model

Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 8 confirmed, 1 with no information of 9 versions.

Sources · Odoo 13.0

Confirmed on 2026-11-03 in branch 13.0 of OCA/reporting-engine.

terminal Installation and usage

OCA documentation · Odoo 19.0

To install this module, you need to:

  • Install lxml in Odoo's $PYTHONPATH.
  • Install the repository reporting-engine.

But this module does nothing for the end user by itself, so if you have it installed it's probably because there is another module that depends on it.

This module is intended as a base engine for other modules to use it, so no direct result if you are a user.

If you are a developer

To learn from an example, just check the demo report on GitHub for the model res.company or check it in interface from companies views.

To develop with this module, you need to:

  • Create a module.
  • Make it depend on this one.
  • Follow instructions to create reports having in mind that the report_type field in your ir.actions.report record must be qweb-xml.

In case you want to create a custom report, the instructions remain the same as for HTML reports, and the method that you must override is also called _get_report_values, even when this time you are creating a XML report.

You can make your custom report inherit report.report_xml.abstract, name it in such way report.<module.report_name>. Also you can add a XSD file for report validation into xsd_schema field of your report (check report definition) and have XSD automatic checking for free.

You can customize rendering process and validation way via changing logic of generate_report and validate_report methods in your report class.

You can visit http://<server-address>/report/xml/<module.report_name>/<ids> to see your XML report online as a web page.

For further information, please visit:

- -

No verified information in OCA: Configuration.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.