From 82d73cee766317fc57664535b289551a15d9551c Mon Sep 17 00:00:00 2001 From: Guillaume MASSON Date: Tue, 31 Oct 2023 10:38:44 +0100 Subject: [PATCH] [IMP] brand_external_report_layout : keep original company for reports and just temporarily use brand data - do not use company details and footer from brand, so that it could be used in multi-company - this avoid conflicts with other modules overriding company to add information in reports Fixes #167 Fixes #179 --- .../models/__init__.py | 1 + .../models/res_brand.py | 27 +++++++------ .../models/res_company.py | 18 +++++++++ .../views/report_template.xml | 38 ++++++++++++------- .../wizards/brand_document_layout.py | 20 ++-------- .../wizards/brand_document_layout.xml | 6 +++ 6 files changed, 69 insertions(+), 41 deletions(-) create mode 100644 brand_external_report_layout/models/res_company.py diff --git a/brand_external_report_layout/models/__init__.py b/brand_external_report_layout/models/__init__.py index 3dc20cced..7ad212075 100644 --- a/brand_external_report_layout/models/__init__.py +++ b/brand_external_report_layout/models/__init__.py @@ -1 +1,2 @@ from . import res_brand +from . import res_company diff --git a/brand_external_report_layout/models/res_brand.py b/brand_external_report_layout/models/res_brand.py index 0d9c6d180..d9f7c3381 100644 --- a/brand_external_report_layout/models/res_brand.py +++ b/brand_external_report_layout/models/res_brand.py @@ -35,14 +35,10 @@ def _get_default_brand_logo(self): external_report_layout_id = fields.Many2one( comodel_name="ir.ui.view", string="Document Template" ) - report_header = fields.Text( - help="Appears by default on the top right corner of your printed " - "documents (report header).", - ) - report_footer = fields.Text( - translate=True, - help="Footer text displayed at the bottom of all reports.", - ) + report_header = fields.Html( + string="Brand Tagline", + help="Appears by default on the top right corner of your printed documents " + "(report header).") paperformat_id = fields.Many2one( "report.paperformat", "Paper format", @@ -64,10 +60,6 @@ def _get_default_brand_logo(self): ) primary_color = fields.Char() secondary_color = fields.Char() - company_details = fields.Html( - string="Brand Details", - help="Header text displayed at the top of all reports.", - ) layout_background = fields.Selection( [("Blank", "Blank"), ("Geometric", "Geometric"), ("Custom", "Custom")], default="Blank", @@ -112,6 +104,17 @@ def _update_asset_style(self): def _get_style_fields(self): return {"external_report_layout_id", "font", "primary_color", "secondary_color"} + @api.model + def _get_company_overriden_fields(self): + return {"name", "logo", "external_report_layout_id", "report_header", + "paperformat_id", "font", "primary_color", "secondary_color", + "layout_background", "layout_background_image"} + + def _get_style_vals(self): + res = self.read(self._get_company_overriden_fields())[0] + res.pop("id") + return res + @api.model_create_multi def create(self, vals_list): companies = super().create(vals_list) diff --git a/brand_external_report_layout/models/res_company.py b/brand_external_report_layout/models/res_company.py new file mode 100644 index 000000000..056e96c19 --- /dev/null +++ b/brand_external_report_layout/models/res_company.py @@ -0,0 +1,18 @@ +# Copyright 2023 Guillaume Masson +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class ResCompany(models.Model): + + _inherit = "res.company" + + def _get_style_vals(self): + res = self.read(self.env["res.brand"]._get_company_overriden_fields())[0] + res.pop("id") + return res + + def update_style(self, vals): + self.write(vals) + return self diff --git a/brand_external_report_layout/views/report_template.xml b/brand_external_report_layout/views/report_template.xml index d53ed913c..ae62112c4 100644 --- a/brand_external_report_layout/views/report_template.xml +++ b/brand_external_report_layout/views/report_template.xml @@ -5,19 +5,31 @@