In Reportalypse, custom reports use fields to refer to functions allowing customizing different behaviors of the engine. With this, all account.report models contain all the functions of all the custom reports, leading to possible name clashes if the functions aren't properly prefixed. We can improve that a little: instead of having multiple fields, we use but one, referring to an AbstractModel inheriting from a new AbstractModel called account.report.custom.handler. This AbstractModel simply contains the different functions that can be overridden, and its subclasses are responsible to do so. In the code, instead of calling _get_custom_report_function, we check whether there is a custom handler for the report, and call the right function on it. task-2954761 closes odoo/odoo#98973 Related: odoo/documentation#2673 Related: odoo/enterprise#30777 Signed-off-by: Olivier Colson (oco) <oco@odoo.com>
56 lines
2.5 KiB
XML
56 lines
2.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data>
|
|
|
|
<!-- GENERIC TAX REPORT -->
|
|
<record id="generic_tax_report" model="account.report">
|
|
<field name="name">Generic Tax report</field>
|
|
<field name="filter_multi_company">tax_units</field>
|
|
<field name="filter_fiscal_position" eval="1"/>
|
|
<field name="default_opening_date_filter">last_month</field>
|
|
<field name="only_tax_exigible" eval="True"/>
|
|
<field name="column_ids">
|
|
<record id="generic_tax_report_column_net" model="account.report.column">
|
|
<field name="name">NET</field>
|
|
<field name="expression_label">net</field>
|
|
</record>
|
|
<record id="generic_tax_report_column_tax" model="account.report.column">
|
|
<field name="name">TAX</field>
|
|
<field name="expression_label">tax</field>
|
|
</record>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="generic_tax_report_account_tax" model="account.report">
|
|
<field name="name">Group by: Account > Tax </field>
|
|
<field name="root_report_id" ref="generic_tax_report"/>
|
|
<field name="column_ids">
|
|
<record id="generic_tax_report_account_tax_column_net" model="account.report.column">
|
|
<field name="name">NET</field>
|
|
<field name="expression_label">net</field>
|
|
</record>
|
|
<record id="generic_tax_report_account_tax_column_tax" model="account.report.column">
|
|
<field name="name">TAX</field>
|
|
<field name="expression_label">tax</field>
|
|
</record>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="generic_tax_report_tax_account" model="account.report">
|
|
<field name="name">Group by: Tax > Account </field>
|
|
<field name="root_report_id" ref="generic_tax_report"/>
|
|
<field name="column_ids">
|
|
<record id="generic_tax_report_tax_account_column_net" model="account.report.column">
|
|
<field name="name">NET</field>
|
|
<field name="expression_label">net</field>
|
|
</record>
|
|
<record id="generic_tax_report_tax_account_column_tax" model="account.report.column">
|
|
<field name="name">TAX</field>
|
|
<field name="expression_label">tax</field>
|
|
</record>
|
|
</field>
|
|
</record>
|
|
|
|
</data>
|
|
</odoo>
|