diff --git a/brand_external_report_layout/README.rst b/brand_external_report_layout/README.rst new file mode 100644 index 000000000..8f54f9196 --- /dev/null +++ b/brand_external_report_layout/README.rst @@ -0,0 +1,124 @@ +============================ +Brand External Report Layout +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:fe74ea73dedf1d958b01a6384df8cea1fdf6987c374d98517a25d52ed398048d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbrand-lightgray.png?logo=github + :target: https://github.com/OCA/brand/tree/17.0/brand_external_report_layout + :alt: OCA/brand +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/brand-17-0/brand-17-0-brand_external_report_layout + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/brand&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows you to have a different layout by brand for your +external reports. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +1. Go to Settings > Users & Companies > Brands +2. Add a new brand or select an existing one +3. Enter brand information and select the a layout +4. Go to any branded object abd print the PDF report. It includes the + information of the brand. + +Known issues / Roadmap +====================== + +To simplify the customization of the external layout we replaced the +variable company that odoo compute in the external_layout view by the +object brand. + +With this module, all custom layouts will display brand information out +of the box. + +This was possible and easy to implement as the company and the brand +models inherit from partner model and share the same informational +fields. + +The computed variable company is used to set report header and footer. +It's not meant to be used in the report business logic itself. But in +that case (if a custom layout use the variable company for some-reason +other then header and footer) this module can cause an issue because the +used field can be missing in the brand model or not correctly set. + +In this case, we recommend to always use document field company for this +use-end. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* ACSONE SA/NV + +Contributors +------------ + +- Souheil Bejaoui +- `Landoo, Sistemas de Información, S.L. `__: + + - Vicent Cubells + +- Freni Patel + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-sbejaoui| image:: https://github.com/sbejaoui.png?size=40px + :target: https://github.com/sbejaoui + :alt: sbejaoui + +Current `maintainer `__: + +|maintainer-sbejaoui| + +This module is part of the `OCA/brand `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/brand_external_report_layout/__init__.py b/brand_external_report_layout/__init__.py new file mode 100644 index 000000000..aee8895e7 --- /dev/null +++ b/brand_external_report_layout/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizards diff --git a/brand_external_report_layout/__manifest__.py b/brand_external_report_layout/__manifest__.py new file mode 100644 index 000000000..e6f239e82 --- /dev/null +++ b/brand_external_report_layout/__manifest__.py @@ -0,0 +1,27 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Brand External Report Layout", + "summary": """ + This module allows you to have a different layout by brand for your + external reports.""", + "version": "17.0.1.0.0", + "license": "AGPL-3", + "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/brand", + "depends": ["base", "brand", "web"], + "data": [ + "security/brand_document_layout.xml", + "views/res_brand.xml", + "views/report_template.xml", + "wizards/brand_document_layout.xml", + ], + "maintainers": ["sbejaoui"], + "assets": { + "web.report_assets_common": [ + "/brand_external_report_layout/" + "static/src/legacy/scss/asset_styles_brand_report.scss" + ] + }, +} diff --git a/brand_external_report_layout/i18n/brand_external_report_layout.pot b/brand_external_report_layout/i18n/brand_external_report_layout.pot new file mode 100644 index 000000000..33e811606 --- /dev/null +++ b/brand_external_report_layout/i18n/brand_external_report_layout.pot @@ -0,0 +1,291 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * brand_external_report_layout +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_header +msgid "" +"Appears by default on the top right corner of your printed documents (report" +" header)." +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background_image +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background_image +msgid "Background Image" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__blank +msgid "Blank" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_res_brand +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__brand_id +msgid "Brand" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__company_details +msgid "Brand Details" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_brand_document_layout +msgid "Brand Document Layout" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__logo +msgid "Brand Logo" +msgstr "" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.brand_document_layout_form_view +msgid "Brand document layout" +msgstr "" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.res_brand_form_view +msgid "Change Document Template" +msgstr "" + +#. module: brand_external_report_layout +#. odoo-python +#: code:addons/brand_external_report_layout/models/res_brand.py:0 +#, python-format +msgid "Choose Your Document Layout" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_id +msgid "Company" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__name +msgid "Company Name" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__country_id +msgid "Country" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_uid +msgid "Created by" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_date +msgid "Created on" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__custom +msgid "Custom" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__custom_colors +msgid "Custom Colors" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__display_name +msgid "Display Name" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__external_report_layout_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__external_report_layout_id +msgid "Document Template" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__email +msgid "Email" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__font +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__font +msgid "Font" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_footer +msgid "Footer text displayed at the bottom of all reports." +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__geometric +msgid "Geometric" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__company_details +msgid "Header text displayed at the top of all reports." +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__id +msgid "ID" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__is_company_details_empty +msgid "Is Company Details Empty" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout____last_update +msgid "Last Modified on" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_date +msgid "Last Updated on" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__lato +msgid "Lato" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background +msgid "Layout Background" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_primary_color +msgid "Logo Primary Color" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_secondary_color +msgid "Logo Secondary Color" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__montserrat +msgid "Montserrat" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__open_sans +msgid "Open Sans" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__oswald +msgid "Oswald" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__paperformat_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__paperformat_id +msgid "Paper format" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__partner_id +msgid "Partner" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__phone +msgid "Phone" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview +msgid "Preview" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview_logo +msgid "Preview logo" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__primary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__primary_color +msgid "Primary Color" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__raleway +msgid "Raleway" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_footer +msgid "Report Footer" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_header +msgid "Report Header" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_layout_id +msgid "Report Layout" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__roboto +msgid "Roboto" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__secondary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__secondary_color +msgid "Secondary Color" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__vat +msgid "Tax ID" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__vat +msgid "" +"The Tax Identification Number. Values here will be validated based on the " +"country format. You can use '/' to indicate that the partner is not subject " +"to tax." +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__website +msgid "Website Link" +msgstr "" diff --git a/brand_external_report_layout/i18n/es.po b/brand_external_report_layout/i18n/es.po new file mode 100644 index 000000000..094a0d229 --- /dev/null +++ b/brand_external_report_layout/i18n/es.po @@ -0,0 +1,301 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * brand_external_report_layout +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-31 18:09+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_header +msgid "" +"Appears by default on the top right corner of your printed documents (report " +"header)." +msgstr "" +"Aparece por defecto en la esquina superior derecha de los documentos " +"impresos (cabecera del informe)." + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background_image +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background_image +msgid "Background Image" +msgstr "Imagen de fondo" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__blank +msgid "Blank" +msgstr "En blanco" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_res_brand +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__brand_id +msgid "Brand" +msgstr "Marca" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__company_details +msgid "Brand Details" +msgstr "Detalles de la marca" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_brand_document_layout +msgid "Brand Document Layout" +msgstr "Diseño del documento de marca" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__logo +msgid "Brand Logo" +msgstr "Logotipo de la marca" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.brand_document_layout_form_view +msgid "Brand document layout" +msgstr "Diseño del documento de marca" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.res_brand_form_view +msgid "Change Document Template" +msgstr "Plantilla de documento de modificación" + +#. module: brand_external_report_layout +#. odoo-python +#: code:addons/brand_external_report_layout/models/res_brand.py:0 +#, python-format +msgid "Choose Your Document Layout" +msgstr "Elija el diseño de su documento" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_id +msgid "Company" +msgstr "Companía" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__name +msgid "Company Name" +msgstr "Nombre de la Compañía" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__country_id +msgid "Country" +msgstr "País" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__custom +msgid "Custom" +msgstr "Personalizar" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__custom_colors +msgid "Custom Colors" +msgstr "Colores Personalizados" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__display_name +msgid "Display Name" +msgstr "Nombre a Mostrar" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__external_report_layout_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__external_report_layout_id +msgid "Document Template" +msgstr "Plantilla de documento" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__email +msgid "Email" +msgstr "Correo Electrónico" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__font +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__font +msgid "Font" +msgstr "Fuente" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_footer +msgid "Footer text displayed at the bottom of all reports." +msgstr "" +"Texto a pie de página que aparece en la parte inferior de todos los informes." + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__geometric +msgid "Geometric" +msgstr "Geométrico" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__company_details +msgid "Header text displayed at the top of all reports." +msgstr "" +"Texto de cabecera que aparece en la parte superior de todos los informes." + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__is_company_details_empty +msgid "Is Company Details Empty" +msgstr "Están vacíos los detalles de la empresa" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_uid +msgid "Last Updated by" +msgstr "Actualizado por última vez por" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_date +msgid "Last Updated on" +msgstr "Última Actualización el" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__lato +msgid "Lato" +msgstr "Lato" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background +msgid "Layout Background" +msgstr "Diseño de fondo" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_primary_color +msgid "Logo Primary Color" +msgstr "Color primario del logotipo" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_secondary_color +msgid "Logo Secondary Color" +msgstr "Color secundario del logotipo" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__montserrat +msgid "Montserrat" +msgstr "Montserrat" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__open_sans +msgid "Open Sans" +msgstr "Abrir sans" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__oswald +msgid "Oswald" +msgstr "Osvaldo" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__paperformat_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__paperformat_id +msgid "Paper format" +msgstr "Formato del papel" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__partner_id +msgid "Partner" +msgstr "Proveedor" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__phone +msgid "Phone" +msgstr "Teléfono" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview +msgid "Preview" +msgstr "Previsualización" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview_logo +msgid "Preview logo" +msgstr "Vista previa del logotipo" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__primary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__primary_color +msgid "Primary Color" +msgstr "Color primario" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__raleway +msgid "Raleway" +msgstr "Carretera" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_footer +msgid "Report Footer" +msgstr "Pie de página del informe" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_header +msgid "Report Header" +msgstr "Encabezado del informe" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_layout_id +msgid "Report Layout" +msgstr "Diseño del informe" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__roboto +msgid "Roboto" +msgstr "Roboto" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__secondary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__secondary_color +msgid "Secondary Color" +msgstr "Color secundario" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__vat +msgid "Tax ID" +msgstr "Número de identificación fiscal" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__vat +msgid "" +"The Tax Identification Number. Values here will be validated based on the " +"country format. You can use '/' to indicate that the partner is not subject " +"to tax." +msgstr "" +"El número de identificación fiscal. Los valores aquí se validarán en función " +"del formato del país. Puede utilizar '/' para indicar que el socio no está " +"sujeto a impuestos." + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__website +msgid "Website Link" +msgstr "Enlace a página web" diff --git a/brand_external_report_layout/i18n/es_AR.po b/brand_external_report_layout/i18n/es_AR.po new file mode 100644 index 000000000..c97eb6fde --- /dev/null +++ b/brand_external_report_layout/i18n/es_AR.po @@ -0,0 +1,303 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * brand_external_report_layout +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-25 18:08+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_header +msgid "" +"Appears by default on the top right corner of your printed documents (report " +"header)." +msgstr "" +"Aparece de forma predeterminada en la esquina superior derecha de sus " +"documentos impresos (encabezado del reporte)." + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background_image +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background_image +msgid "Background Image" +msgstr "Imagen de Fondo" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__blank +msgid "Blank" +msgstr "Blanco" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_res_brand +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__brand_id +msgid "Brand" +msgstr "Marca" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__company_details +msgid "Brand Details" +msgstr "Detalles de la Marca" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_brand_document_layout +msgid "Brand Document Layout" +msgstr "Diseño de Documento de Marca" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__logo +msgid "Brand Logo" +msgstr "Logo de Marca" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.brand_document_layout_form_view +msgid "Brand document layout" +msgstr "Diseño de Documento de Marca" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.res_brand_form_view +msgid "Change Document Template" +msgstr "Cambiar Plantilla del Documento" + +#. module: brand_external_report_layout +#. odoo-python +#: code:addons/brand_external_report_layout/models/res_brand.py:0 +#, python-format +msgid "Choose Your Document Layout" +msgstr "Elija su Diseño de Documento" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_id +msgid "Company" +msgstr "Compañía" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__name +msgid "Company Name" +msgstr "Nombre de Compañía" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__country_id +msgid "Country" +msgstr "País" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__custom +msgid "Custom" +msgstr "Personalizado" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__custom_colors +msgid "Custom Colors" +msgstr "Personalizar Colores" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__display_name +msgid "Display Name" +msgstr "Nombre Mostrado" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__external_report_layout_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__external_report_layout_id +msgid "Document Template" +msgstr "Plantilla de Documento" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__email +msgid "Email" +msgstr "Correo Electrónico" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__font +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__font +msgid "Font" +msgstr "Fuente" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_footer +msgid "Footer text displayed at the bottom of all reports." +msgstr "" +"Texto de pie de página que se muestra en la parte inferior de todos los " +"reportes." + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__geometric +msgid "Geometric" +msgstr "Geométrico" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__company_details +msgid "Header text displayed at the top of all reports." +msgstr "" +"Texto de encabezado que se muestra en la parte superior de todos los " +"reportes." + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__id +msgid "ID" +msgstr "ID" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__is_company_details_empty +msgid "Is Company Details Empty" +msgstr "Están vacíos los detalles de la Compañía" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_date +msgid "Last Updated on" +msgstr "Última modificación el" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__lato +msgid "Lato" +msgstr "Lato" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background +msgid "Layout Background" +msgstr "Diseño del Fondo" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_primary_color +msgid "Logo Primary Color" +msgstr "Color Primario del Logo" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_secondary_color +msgid "Logo Secondary Color" +msgstr "Color Secundario del Logo" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__montserrat +msgid "Montserrat" +msgstr "Montserrat" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__open_sans +msgid "Open Sans" +msgstr "Open Sans" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__oswald +msgid "Oswald" +msgstr "Oswald" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__paperformat_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__paperformat_id +msgid "Paper format" +msgstr "Formato de papel" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__partner_id +msgid "Partner" +msgstr "Contacto" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__phone +msgid "Phone" +msgstr "Teléfono" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview +msgid "Preview" +msgstr "Previsualizar" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview_logo +msgid "Preview logo" +msgstr "Previsualizar Logo" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__primary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__primary_color +msgid "Primary Color" +msgstr "Color Primario" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__raleway +msgid "Raleway" +msgstr "Raleway" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_footer +msgid "Report Footer" +msgstr "Pie de Página del Reporte" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_header +msgid "Report Header" +msgstr "Encabezado del Reporte" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_layout_id +msgid "Report Layout" +msgstr "Diseño del Reporte" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__roboto +msgid "Roboto" +msgstr "Roboto" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__secondary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__secondary_color +msgid "Secondary Color" +msgstr "Color Secundario" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__vat +msgid "Tax ID" +msgstr "ID de Impuesto" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__vat +msgid "" +"The Tax Identification Number. Values here will be validated based on the " +"country format. You can use '/' to indicate that the partner is not subject " +"to tax." +msgstr "" +"El Número de Identificación Fiscal. Los valores aquí se validarán según el " +"formato del país. Puede utilizar '/' para indicar que el contacto no está " +"sujeto a impuestos." + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__website +msgid "Website Link" +msgstr "Vínculo de Sitio Web" diff --git a/brand_external_report_layout/i18n/hr.po b/brand_external_report_layout/i18n/hr.po new file mode 100644 index 000000000..42dd92c90 --- /dev/null +++ b/brand_external_report_layout/i18n/hr.po @@ -0,0 +1,300 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * brand_external_report_layout +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-02-16 14:23+0000\n" +"Last-Translator: Bole \n" +"Language-Team: none\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_header +msgid "" +"Appears by default on the top right corner of your printed documents (report " +"header)." +msgstr "" +"Pojavljuje se kao zadano u gornjem desnom kutu na vašem ispisu (zaglavlje " +"dokumenta)." + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background_image +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background_image +msgid "Background Image" +msgstr "Pozadinska slika" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__blank +msgid "Blank" +msgstr "Prazno" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_res_brand +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__brand_id +msgid "Brand" +msgstr "Brend" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__company_details +msgid "Brand Details" +msgstr "Detalji Brenda" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_brand_document_layout +msgid "Brand Document Layout" +msgstr "Izgled dokumenta za brend" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__logo +msgid "Brand Logo" +msgstr "Brend logo" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.brand_document_layout_form_view +msgid "Brand document layout" +msgstr "Izgled dokumenata brenda" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.res_brand_form_view +msgid "Change Document Template" +msgstr "Promjeni predložak dokumenta" + +#. module: brand_external_report_layout +#. odoo-python +#: code:addons/brand_external_report_layout/models/res_brand.py:0 +#, python-format +msgid "Choose Your Document Layout" +msgstr "Odaberi vaš izgled dokumenata" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_id +msgid "Company" +msgstr "Tvrtka" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__name +msgid "Company Name" +msgstr "Naziv tvrtke" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__country_id +msgid "Country" +msgstr "Država" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__custom +msgid "Custom" +msgstr "Prilagođeno" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__custom_colors +msgid "Custom Colors" +msgstr "Prilagođene boje" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__external_report_layout_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__external_report_layout_id +msgid "Document Template" +msgstr "Predložak dokumenta" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__email +msgid "Email" +msgstr "Email" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__font +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__font +msgid "Font" +msgstr "Font" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_footer +msgid "Footer text displayed at the bottom of all reports." +msgstr "Tekst podnožja prikazan na svim ispisanim dokumentima." + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__geometric +msgid "Geometric" +msgstr "Geometrijski" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__company_details +msgid "Header text displayed at the top of all reports." +msgstr "Tekst zaglavlja prikazan na vrhu svih dokumenata." + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__id +msgid "ID" +msgstr "ID" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__is_company_details_empty +msgid "Is Company Details Empty" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout____last_update +msgid "Last Modified on" +msgstr "Zadnje modificirano" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__lato +msgid "Lato" +msgstr "Lato" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background +msgid "Layout Background" +msgstr "Pozadina predloška" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_primary_color +msgid "Logo Primary Color" +msgstr "Primarna boja loga" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_secondary_color +msgid "Logo Secondary Color" +msgstr "Sekundarna boja loga" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__montserrat +msgid "Montserrat" +msgstr "Montserrat" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__open_sans +msgid "Open Sans" +msgstr "Open Sans" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__oswald +msgid "Oswald" +msgstr "Oswald" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__paperformat_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__paperformat_id +msgid "Paper format" +msgstr "Format papira" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__partner_id +msgid "Partner" +msgstr "Partner" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__phone +msgid "Phone" +msgstr "Telefon" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview +msgid "Preview" +msgstr "Pregled" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview_logo +msgid "Preview logo" +msgstr "Pregled loga" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__primary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__primary_color +msgid "Primary Color" +msgstr "Primarna boja" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__raleway +#, fuzzy +msgid "Raleway" +msgstr "Raleway" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_footer +msgid "Report Footer" +msgstr "Podnožje izvještaja" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_header +msgid "Report Header" +msgstr "Zaglavlje izvještaja" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_layout_id +msgid "Report Layout" +msgstr "Izgled izvještaja" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__roboto +msgid "Roboto" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__secondary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__secondary_color +msgid "Secondary Color" +msgstr "Sekundarna boja" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__vat +msgid "Tax ID" +msgstr "Por Br" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__vat +msgid "" +"The Tax Identification Number. Values here will be validated based on the " +"country format. You can use '/' to indicate that the partner is not subject " +"to tax." +msgstr "" +"Porezni broj. Ove vrijednosti se provjeravaju bazirano na formatima država. " +"Možete koristiti '/' da naznačite da partner nije podložan oporezivanju." + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__website +msgid "Website Link" +msgstr "Poveznica na webstranicu" diff --git a/brand_external_report_layout/i18n/it.po b/brand_external_report_layout/i18n/it.po new file mode 100644 index 000000000..7931a3ed9 --- /dev/null +++ b/brand_external_report_layout/i18n/it.po @@ -0,0 +1,292 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * brand_external_report_layout +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_header +msgid "" +"Appears by default on the top right corner of your printed documents (report" +" header)." +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background_image +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background_image +msgid "Background Image" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__blank +msgid "Blank" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_res_brand +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__brand_id +msgid "Brand" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__company_details +msgid "Brand Details" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model,name:brand_external_report_layout.model_brand_document_layout +msgid "Brand Document Layout" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__logo +msgid "Brand Logo" +msgstr "" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.brand_document_layout_form_view +msgid "Brand document layout" +msgstr "" + +#. module: brand_external_report_layout +#: model_terms:ir.ui.view,arch_db:brand_external_report_layout.res_brand_form_view +msgid "Change Document Template" +msgstr "" + +#. module: brand_external_report_layout +#. odoo-python +#: code:addons/brand_external_report_layout/models/res_brand.py:0 +#, python-format +msgid "Choose Your Document Layout" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__company_id +msgid "Company" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__name +msgid "Company Name" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__country_id +msgid "Country" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_uid +msgid "Created by" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__create_date +msgid "Created on" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__custom +msgid "Custom" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__custom_colors +msgid "Custom Colors" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__display_name +msgid "Display Name" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__external_report_layout_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__external_report_layout_id +msgid "Document Template" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__email +msgid "Email" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__font +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__font +msgid "Font" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__report_footer +msgid "Footer text displayed at the bottom of all reports." +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__layout_background__geometric +msgid "Geometric" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__company_details +#: model:ir.model.fields,help:brand_external_report_layout.field_res_brand__company_details +msgid "Header text displayed at the top of all reports." +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__id +msgid "ID" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__is_company_details_empty +msgid "Is Company Details Empty" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout____last_update +msgid "Last Modified on" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__write_date +msgid "Last Updated on" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__lato +msgid "Lato" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__layout_background +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__layout_background +msgid "Layout Background" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_primary_color +msgid "Logo Primary Color" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__logo_secondary_color +msgid "Logo Secondary Color" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__montserrat +msgid "Montserrat" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__open_sans +msgid "Open Sans" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__oswald +msgid "Oswald" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__paperformat_id +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__paperformat_id +msgid "Paper format" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__partner_id +msgid "Partner" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__phone +msgid "Phone" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview +msgid "Preview" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__preview_logo +msgid "Preview logo" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__primary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__primary_color +msgid "Primary Color" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__raleway +msgid "Raleway" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_footer +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_footer +msgid "Report Footer" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_header +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__report_header +msgid "Report Header" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__report_layout_id +msgid "Report Layout" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields.selection,name:brand_external_report_layout.selection__res_brand__font__roboto +msgid "Roboto" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__secondary_color +#: model:ir.model.fields,field_description:brand_external_report_layout.field_res_brand__secondary_color +msgid "Secondary Color" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__vat +msgid "Tax ID" +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,help:brand_external_report_layout.field_brand_document_layout__vat +msgid "" +"The Tax Identification Number. Values here will be validated based on the " +"country format. You can use '/' to indicate that the partner is not subject " +"to tax." +msgstr "" + +#. module: brand_external_report_layout +#: model:ir.model.fields,field_description:brand_external_report_layout.field_brand_document_layout__website +msgid "Website Link" +msgstr "" diff --git a/brand_external_report_layout/models/__init__.py b/brand_external_report_layout/models/__init__.py new file mode 100644 index 000000000..3dc20cced --- /dev/null +++ b/brand_external_report_layout/models/__init__.py @@ -0,0 +1 @@ +from . import res_brand diff --git a/brand_external_report_layout/models/res_brand.py b/brand_external_report_layout/models/res_brand.py new file mode 100644 index 000000000..6f89783df --- /dev/null +++ b/brand_external_report_layout/models/res_brand.py @@ -0,0 +1,135 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import base64 +import os + +from odoo import _, api, fields, models, tools + + +class ResBrand(models.Model): + _inherit = "res.brand" + + def _get_default_brand_logo(self): + return base64.b64encode( + open( + os.path.join( + tools.config["root_path"], + "addons", + "base", + "static", + "img", + "res_company_logo.png", + ), + "rb", + ).read() + ) + + logo = fields.Binary( + related="partner_id.image_1920", + default=_get_default_brand_logo, + string="Brand Logo", + readonly=False, + ) + 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.", + ) + paperformat_id = fields.Many2one( + "report.paperformat", + "Paper format", + default=lambda self: self.env.ref( + "base.paperformat_euro", raise_if_not_found=False + ), + ) + + font = fields.Selection( + [ + ("Lato", "Lato"), + ("Roboto", "Roboto"), + ("Open_Sans", "Open Sans"), + ("Montserrat", "Montserrat"), + ("Oswald", "Oswald"), + ("Raleway", "Raleway"), + ], + default="Lato", + ) + 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.", + ) + is_company_details_empty = fields.Boolean(compute="_compute_empty_company_details") + layout_background = fields.Selection( + [("Blank", "Blank"), ("Geometric", "Geometric"), ("Custom", "Custom")], + default="Blank", + required=True, + ) + layout_background_image = fields.Binary("Background Image") + + @api.depends("company_details") + def _compute_empty_company_details(self): + for record in self: + record.is_company_details_empty = not tools.html2plaintext( + record.company_details or "" + ) + + def change_report_template(self): + self.ensure_one() + context = {"default_brand_id": self.id} + context.update(self.env.context) + return { + "name": _("Choose Your Document Layout"), + "type": "ir.actions.act_window", + "view_mode": "form", + "target": "new", + "res_model": "brand.document.layout", + "context": context, + } + + def _get_asset_style_b64(self): + brand_styles = self.env["ir.qweb"]._render( + "brand_external_report_layout.styles_brand_report", + {"brand_ids": self.sudo().search([])}, + raise_if_not_found=False, + ) + return base64.b64encode(brand_styles.encode()) + + def _update_asset_style(self): + asset_attachment = self.env.ref( + "brand_external_report_layout.asset_styles_brand_report", + raise_if_not_found=False, + ) + if not asset_attachment: + return + asset_attachment = asset_attachment.sudo() + b64_val = self._get_asset_style_b64() + if b64_val != asset_attachment.datas: + asset_attachment.write({"datas": b64_val}) + + @api.model + def _get_style_fields(self): + return {"external_report_layout_id", "font", "primary_color", "secondary_color"} + + @api.model_create_multi + def create(self, vals_list): + companies = super().create(vals_list) + style_fields = self._get_style_fields() + if any(not style_fields.isdisjoint(values) for values in vals_list): + self._update_asset_style() + return companies + + def write(self, values): + res = super().write(values) + style_fields = self._get_style_fields() + if not style_fields.isdisjoint(values): + self._update_asset_style() + return res diff --git a/brand_external_report_layout/pyproject.toml b/brand_external_report_layout/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/brand_external_report_layout/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/brand_external_report_layout/readme/CONTRIBUTORS.md b/brand_external_report_layout/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..b64226c6c --- /dev/null +++ b/brand_external_report_layout/readme/CONTRIBUTORS.md @@ -0,0 +1,4 @@ +- Souheil Bejaoui \<\> +- [Landoo, Sistemas de Información, S.L.](https://www.landoo.es): + - Vicent Cubells \<\> +- Freni Patel \<\> diff --git a/brand_external_report_layout/readme/DESCRIPTION.md b/brand_external_report_layout/readme/DESCRIPTION.md new file mode 100644 index 000000000..a0d303dcd --- /dev/null +++ b/brand_external_report_layout/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module allows you to have a different layout by brand for your +external reports. diff --git a/brand_external_report_layout/readme/ROADMAP.md b/brand_external_report_layout/readme/ROADMAP.md new file mode 100644 index 000000000..46d322bb3 --- /dev/null +++ b/brand_external_report_layout/readme/ROADMAP.md @@ -0,0 +1,19 @@ +To simplify the customization of the external layout we replaced the +variable company that odoo compute in the external_layout view by the +object brand. + +With this module, all custom layouts will display brand information out +of the box. + +This was possible and easy to implement as the company and the brand +models inherit from partner model and share the same informational +fields. + +The computed variable company is used to set report header and footer. +It's not meant to be used in the report business logic itself. But in +that case (if a custom layout use the variable company for some-reason +other then header and footer) this module can cause an issue because the +used field can be missing in the brand model or not correctly set. + +In this case, we recommend to always use document field company for this +use-end. diff --git a/brand_external_report_layout/readme/USAGE.md b/brand_external_report_layout/readme/USAGE.md new file mode 100644 index 000000000..efe0899e3 --- /dev/null +++ b/brand_external_report_layout/readme/USAGE.md @@ -0,0 +1,7 @@ +To use this module, you need to: + +1. Go to Settings \> Users & Companies \> Brands +2. Add a new brand or select an existing one +3. Enter brand information and select the a layout +4. Go to any branded object abd print the PDF report. It includes the + information of the brand. diff --git a/brand_external_report_layout/security/brand_document_layout.xml b/brand_external_report_layout/security/brand_document_layout.xml new file mode 100644 index 000000000..22e9563af --- /dev/null +++ b/brand_external_report_layout/security/brand_document_layout.xml @@ -0,0 +1,15 @@ + + + + + + brand.document.layout manager access + + + + + + + + diff --git a/brand_external_report_layout/static/description/icon.png b/brand_external_report_layout/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/brand_external_report_layout/static/description/icon.png differ diff --git a/brand_external_report_layout/static/description/index.html b/brand_external_report_layout/static/description/index.html new file mode 100644 index 000000000..fedfb3aa0 --- /dev/null +++ b/brand_external_report_layout/static/description/index.html @@ -0,0 +1,462 @@ + + + + + +Brand External Report Layout + + + +
+

Brand External Report Layout

+ + +

Beta License: AGPL-3 OCA/brand Translate me on Weblate Try me on Runboat

+

This module allows you to have a different layout by brand for your +external reports.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Settings > Users & Companies > Brands
  2. +
  3. Add a new brand or select an existing one
  4. +
  5. Enter brand information and select the a layout
  6. +
  7. Go to any branded object abd print the PDF report. It includes the +information of the brand.
  8. +
+
+
+

Known issues / Roadmap

+

To simplify the customization of the external layout we replaced the +variable company that odoo compute in the external_layout view by the +object brand.

+

With this module, all custom layouts will display brand information out +of the box.

+

This was possible and easy to implement as the company and the brand +models inherit from partner model and share the same informational +fields.

+

The computed variable company is used to set report header and footer. +It’s not meant to be used in the report business logic itself. But in +that case (if a custom layout use the variable company for some-reason +other then header and footer) this module can cause an issue because the +used field can be missing in the brand model or not correctly set.

+

In this case, we recommend to always use document field company for this +use-end.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • ACSONE SA/NV
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

sbejaoui

+

This module is part of the OCA/brand project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/brand_external_report_layout/tests/__init__.py b/brand_external_report_layout/tests/__init__.py new file mode 100644 index 000000000..d2250bfcf --- /dev/null +++ b/brand_external_report_layout/tests/__init__.py @@ -0,0 +1 @@ +from . import test_brand_external_report_layout diff --git a/brand_external_report_layout/tests/test_brand_external_report_layout.py b/brand_external_report_layout/tests/test_brand_external_report_layout.py new file mode 100644 index 000000000..b7ab3b773 --- /dev/null +++ b/brand_external_report_layout/tests/test_brand_external_report_layout.py @@ -0,0 +1,13 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestBrandExternalReportLayout(TransactionCase): + def setUp(self): + super().setUp() + self.brand = self.env["res.brand"].create({"name": "brand"}) + + def test_get_default_brand_logo(self): + self.assertEqual(self.brand.logo, self.brand._get_default_brand_logo()) diff --git a/brand_external_report_layout/views/report_template.xml b/brand_external_report_layout/views/report_template.xml new file mode 100644 index 000000000..5ca5e87d4 --- /dev/null +++ b/brand_external_report_layout/views/report_template.xml @@ -0,0 +1,244 @@ + + + + + + + + + + + + + text/scss + res.brand.scss + binary + /brand_external_report_layout/static/src/legacy/scss/asset_styles_brand_report.scss + + + diff --git a/brand_external_report_layout/views/res_brand.xml b/brand_external_report_layout/views/res_brand.xml new file mode 100644 index 000000000..797d53b9b --- /dev/null +++ b/brand_external_report_layout/views/res_brand.xml @@ -0,0 +1,24 @@ + + + + + + res.brand + + + +
+
+
+
+
+
diff --git a/brand_external_report_layout/wizards/__init__.py b/brand_external_report_layout/wizards/__init__.py new file mode 100644 index 000000000..98639f9c3 --- /dev/null +++ b/brand_external_report_layout/wizards/__init__.py @@ -0,0 +1 @@ +from . import brand_document_layout diff --git a/brand_external_report_layout/wizards/brand_document_layout.py b/brand_external_report_layout/wizards/brand_document_layout.py new file mode 100644 index 000000000..96377e695 --- /dev/null +++ b/brand_external_report_layout/wizards/brand_document_layout.py @@ -0,0 +1,132 @@ +# Copyright 2022 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import markupsafe + +from odoo import api, fields, models + +from odoo.addons.web.models.base_document_layout import ( + DEFAULT_PRIMARY, + DEFAULT_SECONDARY, +) + + +class BrandDocumentLayout(models.TransientModel): + _name = "brand.document.layout" + _description = "Brand Document Layout" + _inherit = "base.document.layout" + + brand_id = fields.Many2one("res.brand", required=True) + + logo = fields.Binary(related="brand_id.logo", readonly=False) + report_header = fields.Text(related="brand_id.report_header", readonly=False) + report_footer = fields.Text(related="brand_id.report_footer", readonly=False) + paperformat_id = fields.Many2one(related="brand_id.paperformat_id", readonly=False) + external_report_layout_id = fields.Many2one( + related="brand_id.external_report_layout_id", readonly=False + ) + + font = fields.Selection(related="brand_id.font", readonly=False) + primary_color = fields.Char(related="brand_id.primary_color", readonly=False) + secondary_color = fields.Char(related="brand_id.secondary_color", readonly=False) + company_details = fields.Html(related="brand_id.company_details", readonly=False) + layout_background = fields.Selection( + related="brand_id.layout_background", readonly=False + ) + layout_background_image = fields.Binary( + related="brand_id.layout_background_image", readonly=False + ) + + @api.onchange("company_id") + def _onchange_company_id(self): + return {} + + @api.onchange("brand_id") + def _onchange_brand_id(self): + for wizard in self: + wizard.logo = wizard.brand_id.logo + wizard.report_header = wizard.brand_id.report_header + wizard.report_footer = ( + wizard.brand_id.report_footer + if isinstance(wizard.brand_id.report_footer, str) + else wizard.report_footer + ) + wizard.company_details = ( + wizard.brand_id.company_details + if isinstance(wizard.brand_id.company_details, str) + else wizard.company_details + ) + wizard.paperformat_id = wizard.brand_id.paperformat_id + wizard.external_report_layout_id = wizard.brand_id.external_report_layout_id + wizard.font = wizard.brand_id.font + wizard.primary_color = wizard.brand_id.primary_color + wizard.secondary_color = wizard.brand_id.secondary_color + wizard_layout = wizard.env["report.layout"].search( + [("view_id.key", "=", wizard.brand_id.external_report_layout_id.key)] + ) + wizard.report_layout_id = wizard_layout or wizard_layout.search([], limit=1) + + if not wizard.primary_color: + wizard.primary_color = wizard.logo_primary_color or DEFAULT_PRIMARY + if not wizard.secondary_color: + wizard.secondary_color = ( + wizard.logo_secondary_color or DEFAULT_SECONDARY + ) + + @api.onchange("logo") + def _onchange_logo(self): + for wizard in self: + brand = wizard.brand_id + if ( + wizard.logo == brand.logo + and brand.primary_color + and brand.secondary_color + ): + continue + + if wizard.logo_primary_color: + wizard.primary_color = wizard.logo_primary_color + if wizard.logo_secondary_color: + wizard.secondary_color = wizard.logo_secondary_color + + def _get_asset_style(self): + return self.env["ir.qweb"]._render( + "brand_external_report_layout.styles_brand_report", + {"brand_ids": self}, + raise_if_not_found=False, + ) + + @api.depends( + "report_layout_id", + "logo", + "font", + "primary_color", + "secondary_color", + "report_header", + "report_footer", + "layout_background", + "layout_background_image", + "company_details", + ) + def _compute_preview(self): + styles = self._get_asset_style() + for wizard in self: + if wizard.report_layout_id: + if wizard.env.context.get("bin_size"): + wizard_with_logo = wizard.with_context(bin_size=False) + else: + wizard_with_logo = wizard + preview_css = markupsafe.Markup( + self._get_css_for_preview(styles, wizard_with_logo.id) + ) + ir_ui_view = wizard_with_logo.env["ir.ui.view"] + wizard.preview = ir_ui_view._render_template( + "web.report_invoice_wizard_preview", + { + "brand": wizard_with_logo, + "company": wizard_with_logo, + "preview_css": preview_css, + }, + ) + else: + wizard.preview = False diff --git a/brand_external_report_layout/wizards/brand_document_layout.xml b/brand_external_report_layout/wizards/brand_document_layout.xml new file mode 100644 index 000000000..c39c6badd --- /dev/null +++ b/brand_external_report_layout/wizards/brand_document_layout.xml @@ -0,0 +1,18 @@ + + + + + brand.document.layout + + primary + + + Brand document layout + + + + + + +