From ffa1841c694869092cd16308a8d15195738e4b5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Didderen?= Date: Thu, 5 Jun 2025 14:10:21 +0200 Subject: [PATCH 01/12] [ADD] text_element_base / text_element_accounting / text_element_sale --- text_element_sale/README.rst | 3 + text_element_sale/__init__.py | 1 + text_element_sale/__manifest__.py | 19 +++++ text_element_sale/i18n/text_element_sale.pot | 51 +++++++++++++ text_element_sale/models/__init__.py | 2 + text_element_sale/models/sale_order.py | 38 ++++++++++ text_element_sale/models/text_element.py | 14 ++++ text_element_sale/pyproject.toml | 3 + text_element_sale/static/description/icon.png | Bin 0 -> 29496 bytes text_element_sale/views/sale_order_report.xml | 34 +++++++++ text_element_sale/views/sale_order_views.xml | 67 ++++++++++++++++++ .../views/text_element_views.xml | 45 ++++++++++++ 12 files changed, 277 insertions(+) create mode 100644 text_element_sale/README.rst create mode 100644 text_element_sale/__init__.py create mode 100644 text_element_sale/__manifest__.py create mode 100644 text_element_sale/i18n/text_element_sale.pot create mode 100644 text_element_sale/models/__init__.py create mode 100644 text_element_sale/models/sale_order.py create mode 100644 text_element_sale/models/text_element.py create mode 100644 text_element_sale/pyproject.toml create mode 100644 text_element_sale/static/description/icon.png create mode 100644 text_element_sale/views/sale_order_report.xml create mode 100644 text_element_sale/views/sale_order_views.xml create mode 100644 text_element_sale/views/text_element_views.xml diff --git a/text_element_sale/README.rst b/text_element_sale/README.rst new file mode 100644 index 0000000..5153702 --- /dev/null +++ b/text_element_sale/README.rst @@ -0,0 +1,3 @@ +=========================== +Text Elements - Sale module +=========================== diff --git a/text_element_sale/__init__.py b/text_element_sale/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/text_element_sale/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/text_element_sale/__manifest__.py b/text_element_sale/__manifest__.py new file mode 100644 index 0000000..45d8915 --- /dev/null +++ b/text_element_sale/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2009-2023 Noviat +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Text Elements - Sale module", + "version": "18.0.1.0.0", + "license": "AGPL-3", + "author": "Noviat, Elneo", + "website": "https://www.noviat.com/", + "category": "Sales", + "summary": "Text Elements - Sale module", + "depends": ["text_element_base", "text_element_accounting", "sale"], + "data": [ + "views/sale_order_report.xml", + "views/sale_order_views.xml", + "views/text_element_views.xml", + ], + "installable": True, +} diff --git a/text_element_sale/i18n/text_element_sale.pot b/text_element_sale/i18n/text_element_sale.pot new file mode 100644 index 0000000..9c3b9ca --- /dev/null +++ b/text_element_sale/i18n/text_element_sale.pot @@ -0,0 +1,51 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * text_element_sale +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0+e\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: text_element_sale +#: model_terms:ir.ui.view,arch_db:text_element_sale.view_order_form +msgid "Add Text Element" +msgstr "" + +#. module: text_element_sale +#: model:ir.model.fields,field_description:text_element_sale.field_sale_order__text_element_custom_ids +#: model_terms:ir.ui.view,arch_db:text_element_sale.view_order_form +msgid "Custom Text Elements" +msgstr "" + +#. module: text_element_sale +#: model_terms:ir.ui.view,arch_db:text_element_sale.view_order_form +msgid "Edit Text Element" +msgstr "" + +#. module: text_element_sale +#: model:ir.model.fields,field_description:text_element_sale.field_sale_order__report_lang +msgid "Report Lang" +msgstr "" + +#. module: text_element_sale +#: model:ir.model,name:text_element_sale.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: text_element_sale +#: model:ir.model.fields,field_description:text_element_sale.field_sale_order__text_element_ids +#: model_terms:ir.ui.view,arch_db:text_element_sale.view_order_form +msgid "Text Elements" +msgstr "" + +#. module: text_element_sale +#: model:ir.model,name:text_element_sale.model_text_element +msgid "Text elements" +msgstr "" diff --git a/text_element_sale/models/__init__.py b/text_element_sale/models/__init__.py new file mode 100644 index 0000000..1344951 --- /dev/null +++ b/text_element_sale/models/__init__.py @@ -0,0 +1,2 @@ +from . import sale_order +from . import text_element diff --git a/text_element_sale/models/sale_order.py b/text_element_sale/models/sale_order.py new file mode 100644 index 0000000..4ad7097 --- /dev/null +++ b/text_element_sale/models/sale_order.py @@ -0,0 +1,38 @@ +# Copyright 2009-2023 Noviat +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class SaleOrder(models.Model): + _name = "sale.order" + _inherit = ["sale.order", "text.element.abstract"] + + text_element_ids = fields.Many2many( + domain=[("res_model", "in", ("sale.order", "all"))] + ) + text_element_custom_ids = fields.One2many( + domain=[("res_model", "in", ("sale.order", "all"))] + ) + + @api.depends("partner_id") + def _compute_report_lang(self): + for rec in self: + if rec.partner_id.lang: + rec.report_lang = rec.partner_id.lang + else: + rec.report_lang = self.env.lang + + def _get_text_element_records(self, position): + self.ensure_one() + text_elements, custom_text_elements = super()._get_text_element_records( + position + ) + if not self.env.context.get("proforma"): + text_elements = text_elements.filtered( + lambda te: not te.only_shown_in_proforma + ) + custom_text_elements = custom_text_elements.filtered( + lambda te: not te.only_shown_in_proforma + ) + return text_elements, custom_text_elements diff --git a/text_element_sale/models/text_element.py b/text_element_sale/models/text_element.py new file mode 100644 index 0000000..c75faba --- /dev/null +++ b/text_element_sale/models/text_element.py @@ -0,0 +1,14 @@ +# Copyright 2009-2023 Noviat +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class TextElement(models.Model): + _inherit = "text.element" + + @api.model + def _selection_model(self): + res = super()._selection_model() + res.append(["sale.order", "Sale Orders"]) + return res diff --git a/text_element_sale/pyproject.toml b/text_element_sale/pyproject.toml new file mode 100644 index 0000000..4231d0c --- /dev/null +++ b/text_element_sale/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/text_element_sale/static/description/icon.png b/text_element_sale/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..281f84b2b47b2e62204038b9d4f443e88007381b GIT binary patch literal 29496 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 Y{+to|iM|xL3KR53Nkg&Xl|{t=0dWcGGynhq literal 0 HcmV?d00001 diff --git a/text_element_sale/views/sale_order_report.xml b/text_element_sale/views/sale_order_report.xml new file mode 100644 index 0000000..c4511da --- /dev/null +++ b/text_element_sale/views/sale_order_report.xml @@ -0,0 +1,34 @@ + + + + + diff --git a/text_element_sale/views/sale_order_views.xml b/text_element_sale/views/sale_order_views.xml new file mode 100644 index 0000000..97a9c2b --- /dev/null +++ b/text_element_sale/views/sale_order_views.xml @@ -0,0 +1,67 @@ + + + + sale.order.form + sale.order + + + + +