From 61eef73b52c078daaae37f8d57e93830a2e53410 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Thu, 26 Jul 2018 09:55:01 +0200 Subject: [PATCH] [IMP] base, *: use a many2one for the company report layout Before this rev. one could set the report layout on the company using a hardcoded list (background, clean, standard, etc.). Other modules (typically accounting modules) could add options in this list. The used template was built on the layout key. Now, the layout is a many2one field to a newly created model `report.layout`, which is linked to a view with the layout architecture. This gives more control to customize reports and create a new layout (without creating a python module that extend the layout selection). --- .../base_setup/models/res_config_settings.py | 8 +- .../views/res_config_settings_views.xml | 4 +- addons/l10n_de/__manifest__.py | 1 + addons/l10n_de/data/report_layout.xml | 10 +++ addons/l10n_de/models/chart_template.py | 10 +-- addons/l10n_de/report/din5008_report.xml | 2 +- addons/l10n_de/views/account_view.xml | 67 --------------- addons/point_of_sale/wizard/pos_details.py | 2 +- addons/product/wizard/product_price_list.py | 2 +- addons/web/__manifest__.py | 3 + addons/web/data/report_layout.xml | 25 ++++++ addons/web/data/res_company.xml | 8 ++ addons/web/models/__init__.py | 1 + addons/web/models/report_layout.py | 17 ++++ addons/web/security/ir.model.access.csv | 2 + .../web}/static/img/preview_background.png | Bin .../web}/static/img/preview_boxed.png | Bin .../web}/static/img/preview_clean.png | Bin .../web}/static/img/preview_standard.png | Bin .../web}/static/pdf/preview_background.pdf | Bin .../web}/static/pdf/preview_boxed.pdf | Bin .../web}/static/pdf/preview_clean.pdf | Bin .../web}/static/pdf/preview_standard.pdf | Bin .../web/static/src/js/fields/basic_fields.js | 51 ------------ .../static/src/js/fields/field_registry.js | 4 +- .../static/src/js/fields/special_fields.js | 67 +++++++++++++++ addons/web/static/src/scss/form_view.scss | 3 +- .../static/tests/fields/basic_fields_tests.js | 41 ---------- .../web/static/tests/fields/special_fields.js | 47 +++++++++++ addons/web/views/report_templates.xml | 76 ++++++++++-------- odoo/addons/base/data/res_company_demo.xml | 1 - odoo/addons/base/models/ir_actions_report.py | 2 +- odoo/addons/base/models/ir_qweb_fields.py | 4 +- odoo/addons/base/models/res_company.py | 10 +-- odoo/addons/base/views/res_company_views.xml | 53 ++++-------- 35 files changed, 257 insertions(+), 264 deletions(-) create mode 100644 addons/l10n_de/data/report_layout.xml create mode 100644 addons/web/data/report_layout.xml create mode 100644 addons/web/data/res_company.xml create mode 100644 addons/web/models/report_layout.py create mode 100644 addons/web/security/ir.model.access.csv rename {odoo/addons/base => addons/web}/static/img/preview_background.png (100%) rename {odoo/addons/base => addons/web}/static/img/preview_boxed.png (100%) rename {odoo/addons/base => addons/web}/static/img/preview_clean.png (100%) rename {odoo/addons/base => addons/web}/static/img/preview_standard.png (100%) rename {odoo/addons/base => addons/web}/static/pdf/preview_background.pdf (100%) rename {odoo/addons/base => addons/web}/static/pdf/preview_boxed.pdf (100%) rename {odoo/addons/base => addons/web}/static/pdf/preview_clean.pdf (100%) rename {odoo/addons/base => addons/web}/static/pdf/preview_standard.pdf (100%) diff --git a/addons/base_setup/models/res_config_settings.py b/addons/base_setup/models/res_config_settings.py index 3e548b015e2..de5037a2245 100644 --- a/addons/base_setup/models/res_config_settings.py +++ b/addons/base_setup/models/res_config_settings.py @@ -39,8 +39,8 @@ class ResConfigSettings(models.TransientModel): group_multi_currency = fields.Boolean(string='Multi-Currencies', implied_group='base.group_multi_currency', help="Allows to work in a multi currency environment") - paperformat_id = fields.Many2one(related="company_id.paperformat_id", string='Paper Format') - external_report_layout = fields.Selection(related="company_id.external_report_layout") + paperformat_id = fields.Many2one(related="company_id.paperformat_id", string='Paper format') + external_report_layout_id = fields.Many2one(related="company_id.external_report_layout_id") show_effect = fields.Boolean(string="Show Effect", config_parameter='base_setup.show_effect') @api.model @@ -87,9 +87,9 @@ class ResConfigSettings(models.TransientModel): @api.multi def edit_external_header(self): - if not self.external_report_layout: + if not self.external_report_layout_id: return False - return self._prepare_report_view_action('web.external_layout_' + self.external_report_layout) + return self._prepare_report_view_action(self.external_report_layout_id.key) @api.multi def change_report_template(self): diff --git a/addons/base_setup/views/res_config_settings_views.xml b/addons/base_setup/views/res_config_settings_views.xml index 58c4a0162a4..bebdaf16f64 100644 --- a/addons/base_setup/views/res_config_settings_views.xml +++ b/addons/base_setup/views/res_config_settings_views.xml @@ -35,8 +35,8 @@
-