Report Substitute

report_substitute
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/18.0/report_substitute
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSsbejaoui, Weblate, OCA-git-bot, oca-ci, Matias Peralta, Samir GUESMI
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to create substitution rules for report actions.
A typical use case is to replace a standard report by alternative
reports when some conditions are met. For instance, it allows to
configure alternate reports for different companies.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
ir_actions_report_form_view ir.actions.report.form (in report_substitute) ir.actions.report xpath Inherits base.act_report_xml_view
substitution_report substitution_report ir.ui.view qweb New
substitution_report_2 substitution_report_2 ir.ui.view qweb New
Models touched (3)

New fields (1)
  • action_report_substitution_rule_ids One2many → ir.actions.report.substitution.rule
    string='Substitution Rules' args: 'ir.actions.report.substitution.rule', 'action_report_id'
Public methods (4)
  • get_action_report_substitution_rule_ids(self)
  • get_substitution_report(self, active_ids)
  • get_substitution_report_action(self, action, active_ids)
    @api.model
  • report_action(self, docids, data=None, config=True)

New fields (5)
  • action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' ondelete='cascade' required=True string='Report Action'
  • domain Char
    default='[]' required=True
  • model Char
    related='action_report_id.model'
  • sequence Integer
    default=10
  • substitution_action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' domain="[('model', '=', model)]" ondelete='cascade' required=True string='Substitution Report Action'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • message_post_with_source(self, source_ref, render_values=None, message_type='notification', subtype_xmlid=False, subtype_id=False, **kwargs)
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/17.0/report_substitute
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, augusto-weiss, Franco Leyes
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to create substitution rules for report actions.
A typical use case is to replace a standard report by alternative
reports when some conditions are met. For instance, it allows to
configure alternate reports for different companies.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
ir_actions_report_form_view ir.actions.report.form (in report_substitute) ir.actions.report xpath Inherits base.act_report_xml_view
substitution_report substitution_report ir.ui.view qweb New
substitution_report_2 substitution_report_2 ir.ui.view qweb New
Models touched (3)

New fields (1)
  • action_report_substitution_rule_ids One2many → ir.actions.report.substitution.rule
    string='Substitution Rules' args: 'ir.actions.report.substitution.rule', 'action_report_id'
Public methods (4)
  • get_action_report_substitution_rule_ids(self)
  • get_substitution_report(self, active_ids)
  • get_substitution_report_action(self, action, active_ids)
    @api.model
  • report_action(self, docids, data=None, config=True)

New fields (5)
  • action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' ondelete='cascade' required=True string='Report Action'
  • domain Char
    default='[]' required=True
  • model Char
    related='action_report_id.model' store=True
  • sequence Integer
    default=10
  • substitution_action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' domain="[('model', '=', model)]" ondelete='cascade' required=True string='Substitution Report Action'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • message_post_with_source(self, source_ref, render_values=None, message_type='notification', subtype_xmlid=False, subtype_id=False, **kwargs)
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/16.0/report_substitute
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSnicolas, Weblate, OCA-git-bot, oca-ci, augusto-weiss, Karthik, Sodexis, matiasperalta1, Matias Peralta
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
ir_actions_report_form_view ir.actions.report.form (in report_substitute) ir.actions.report xpath Inherits base.act_report_xml_view
substitution_report substitution_report ir.ui.view qweb New
substitution_report_2 substitution_report_2 ir.ui.view qweb New
Models touched (4)

New fields (1)
  • action_report_substitution_rule_ids One2many → ir.actions.report.substitution.rule
    string='Substitution Rules' args: 'ir.actions.report.substitution.rule', 'action_report_id'
Public methods (4)
  • get_action_report_substitution_rule_ids(self)
  • get_substitution_report(self, active_ids)
  • get_substitution_report_action(self, action, active_ids)
    @api.model
  • report_action(self, docids, data=None, config=True)

New fields (5)
  • action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' ondelete='cascade' required=True string='Report Action'
  • domain Char
    default='[]' required=True
  • model Char
    related='action_report_id.model' store=True
  • sequence Integer
    default=10
  • substitution_action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' domain="[('model', '=', model)]" ondelete='cascade' required=True string='Substitution Report Action'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • generate_email_for_composer(self, template_id, res_ids, fields)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • message_post_with_template(self, template_id, **kwargs)
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/13.0/report_substitute
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSsbejaoui, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
assets_backend report assets ir.ui.view qweb Inherits web.assets_backend
ir_actions_report_form_view ir.actions.report.form (in report_substitute) ir.actions.report xpath Inherits base.act_report_xml_view
substitution_report substitution_report ir.ui.view qweb New
substitution_report_2 substitution_report_2 ir.ui.view qweb New
Models touched (4)

New fields (1)
  • action_report_substitution_rule_ids One2many → ir.actions.report.substitution.rule
    comodel_name='ir.actions.report.substitution.rule' inverse_name='action_report_id' string='Substitution Rules'
Public methods (4)
  • get_substitution_report(self, active_ids)
  • get_substitution_report_action(self, action, active_ids)
    @api.model
  • render(self, res_ids, data=None)
  • report_action(self, docids, data=None, config=True)

New fields (5)
  • action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' ondelete='cascade' required=True string='Report Action'
  • domain Char
    default='[]' required=True string='Domain'
  • model Char
    related='action_report_id.model' store=True
  • sequence Integer
    default=10
  • substitution_action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' domain="[('model', '=', model)]" ondelete='cascade' required=True string='Substitution Report Action'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • onchange_template_id_wrapper(self)
    @api.onchange('template_id')

New fields (0)

No new fields.

Public methods (1)
  • message_post_with_template(self, template_id, **kwargs)
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/12.0/report_substitute
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSsbejaoui, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
assets_backend report assets ir.ui.view qweb Inherits web.assets_backend
ir_actions_report_form_view ir.actions.report.form (in report_substitute) ir.actions.report xpath Inherits base.act_report_xml_view
substitution_report substitution_report ir.ui.view qweb New
substitution_report_2 substitution_report_2 ir.ui.view qweb New
Models touched (4)

New fields (1)
  • action_report_substitution_rule_ids One2many → ir.actions.report.substitution.rule
    comodel_name='ir.actions.report.substitution.rule' inverse_name='action_report_id' string='Substitution Rules'
Public methods (4)
  • get_substitution_report(self, active_ids)
    @api.multi
  • get_substitution_report_action(self, action, active_ids)
    @api.model
  • render(self, res_ids, data=None)
    @api.multi
  • report_action(self, docids, data=None, config=True)
    @api.noguess

New fields (5)
  • action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' ondelete='cascade' required=True string='Report Action'
  • domain Char
    default='[]' required=True string='Domain'
  • model Char
    related='action_report_id.model' store=True
  • sequence Integer
    default=10
  • substitution_action_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' domain="[('model', '=', model)]" ondelete='cascade' required=True string='Substitution Report Action'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • onchange_template_id_wrapper(self)
    @api.multi@api.onchange('template_id')

New fields (0)

No new fields.

Public methods (1)
  • message_post_with_template(self, template_id, **kwargs)
    @api.multi