From c0d012e281c1c2dafbcbe20ebcbe27db221f6d78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Todorovich?= Date: Mon, 2 Dec 2024 11:12:39 -0300 Subject: [PATCH 1/5] [ADD] fieldservice_sale_agreement --- fieldservice_sale_agreement/README.rst | 89 ++++ fieldservice_sale_agreement/__init__.py | 1 + fieldservice_sale_agreement/__manifest__.py | 19 + .../i18n/fieldservice_sale_agreement.pot | 19 + .../models/__init__.py | 1 + .../models/sale_order.py | 14 + fieldservice_sale_agreement/pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 3 + .../readme/DESCRIPTION.md | 3 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 432 ++++++++++++++++++ fieldservice_sale_agreement/tests/__init__.py | 1 + .../tests/test_fsm_sale_agreement.py | 56 +++ 13 files changed, 641 insertions(+) create mode 100644 fieldservice_sale_agreement/README.rst create mode 100644 fieldservice_sale_agreement/__init__.py create mode 100644 fieldservice_sale_agreement/__manifest__.py create mode 100644 fieldservice_sale_agreement/i18n/fieldservice_sale_agreement.pot create mode 100644 fieldservice_sale_agreement/models/__init__.py create mode 100644 fieldservice_sale_agreement/models/sale_order.py create mode 100644 fieldservice_sale_agreement/pyproject.toml create mode 100644 fieldservice_sale_agreement/readme/CONTRIBUTORS.md create mode 100644 fieldservice_sale_agreement/readme/DESCRIPTION.md create mode 100644 fieldservice_sale_agreement/static/description/icon.png create mode 100644 fieldservice_sale_agreement/static/description/index.html create mode 100644 fieldservice_sale_agreement/tests/__init__.py create mode 100644 fieldservice_sale_agreement/tests/test_fsm_sale_agreement.py diff --git a/fieldservice_sale_agreement/README.rst b/fieldservice_sale_agreement/README.rst new file mode 100644 index 0000000000..8a59eac97f --- /dev/null +++ b/fieldservice_sale_agreement/README.rst @@ -0,0 +1,89 @@ +=============================== +Field Service - Sale Agreements +=============================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:51e39dfe70b9f047e57fb1bddb25c479a39139d3388fbcf2ca252ae9d409ec16 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Ffield--service-lightgray.png?logo=github + :target: https://github.com/OCA/field-service/tree/17.0/fieldservice_sale_agreement + :alt: OCA/field-service +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_sale_agreement + :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/field-service&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Integrates the Field Service and Sale Agreements modules, to: + +- Propagate the ``agreement_id`` field from the Sales Order to the FSM + Order + +**Table of contents** + +.. contents:: + :local: + +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 +------- + +* Camptocamp + +Contributors +------------ + +- `Camptocamp `__: + + - Iván Todorovich + +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-ivantodorovich| image:: https://github.com/ivantodorovich.png?size=40px + :target: https://github.com/ivantodorovich + :alt: ivantodorovich + +Current `maintainer `__: + +|maintainer-ivantodorovich| + +This module is part of the `OCA/field-service `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fieldservice_sale_agreement/__init__.py b/fieldservice_sale_agreement/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/fieldservice_sale_agreement/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/fieldservice_sale_agreement/__manifest__.py b/fieldservice_sale_agreement/__manifest__.py new file mode 100644 index 0000000000..646625831e --- /dev/null +++ b/fieldservice_sale_agreement/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2024 Camptocamp SA (https://www.camptocamp.com). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Field Service - Sale Agreements", + "summary": "Integrate Field Service with Sale Agreements", + "version": "17.0.1.0.0", + "author": "Camptocamp, Odoo Community Association (OCA)", + "maintainers": ["ivantodorovich"], + "website": "https://github.com/OCA/field-service", + "license": "AGPL-3", + "category": "Field Service", + "depends": [ + "fieldservice_agreement", + "fieldservice_sale", + "agreement_sale", + ], + "auto_install": True, +} diff --git a/fieldservice_sale_agreement/i18n/fieldservice_sale_agreement.pot b/fieldservice_sale_agreement/i18n/fieldservice_sale_agreement.pot new file mode 100644 index 0000000000..1b8e9aeced --- /dev/null +++ b/fieldservice_sale_agreement/i18n/fieldservice_sale_agreement.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_sale_agreement +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.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: fieldservice_sale_agreement +#: model:ir.model,name:fieldservice_sale_agreement.model_sale_order +msgid "Sales Order" +msgstr "" diff --git a/fieldservice_sale_agreement/models/__init__.py b/fieldservice_sale_agreement/models/__init__.py new file mode 100644 index 0000000000..6aacb75313 --- /dev/null +++ b/fieldservice_sale_agreement/models/__init__.py @@ -0,0 +1 @@ +from . import sale_order diff --git a/fieldservice_sale_agreement/models/sale_order.py b/fieldservice_sale_agreement/models/sale_order.py new file mode 100644 index 0000000000..521b65b1bc --- /dev/null +++ b/fieldservice_sale_agreement/models/sale_order.py @@ -0,0 +1,14 @@ +# Copyright 2024 Camptocamp SA (https://www.camptocamp.com). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + def _prepare_fsm_values(self, **kwargs): + # OVERRIDE to propagate the agreement_id to the FSM Order + res = super()._prepare_fsm_values(**kwargs) + res.update({"agreement_id": self.agreement_id.id}) + return res diff --git a/fieldservice_sale_agreement/pyproject.toml b/fieldservice_sale_agreement/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/fieldservice_sale_agreement/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/fieldservice_sale_agreement/readme/CONTRIBUTORS.md b/fieldservice_sale_agreement/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..4fa5a70e1d --- /dev/null +++ b/fieldservice_sale_agreement/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- [Camptocamp](https://camptocamp.com): + + - Iván Todorovich \<\> diff --git a/fieldservice_sale_agreement/readme/DESCRIPTION.md b/fieldservice_sale_agreement/readme/DESCRIPTION.md new file mode 100644 index 0000000000..3d5836afe8 --- /dev/null +++ b/fieldservice_sale_agreement/readme/DESCRIPTION.md @@ -0,0 +1,3 @@ +Integrates the Field Service and Sale Agreements modules, to: + +* Propagate the `agreement_id` field from the Sales Order to the FSM Order diff --git a/fieldservice_sale_agreement/static/description/icon.png b/fieldservice_sale_agreement/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/fieldservice_sale_agreement/static/description/index.html b/fieldservice_sale_agreement/static/description/index.html new file mode 100644 index 0000000000..e26878885e --- /dev/null +++ b/fieldservice_sale_agreement/static/description/index.html @@ -0,0 +1,432 @@ + + + + + +Field Service - Sale Agreements + + + +
+

Field Service - Sale Agreements

+ + +

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

+

Integrates the Field Service and Sale Agreements modules, to:

+
    +
  • Propagate the agreement_id field from the Sales Order to the FSM +Order
  • +
+

Table of contents

+ +
+

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

+
    +
  • Camptocamp
  • +
+
+
+

Contributors

+ +
+
+

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:

+

ivantodorovich

+

This module is part of the OCA/field-service project on GitHub.

+

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

+
+
+
+ + diff --git a/fieldservice_sale_agreement/tests/__init__.py b/fieldservice_sale_agreement/tests/__init__.py new file mode 100644 index 0000000000..f3b083d003 --- /dev/null +++ b/fieldservice_sale_agreement/tests/__init__.py @@ -0,0 +1 @@ +from . import test_fsm_sale_agreement diff --git a/fieldservice_sale_agreement/tests/test_fsm_sale_agreement.py b/fieldservice_sale_agreement/tests/test_fsm_sale_agreement.py new file mode 100644 index 0000000000..c835a25e46 --- /dev/null +++ b/fieldservice_sale_agreement/tests/test_fsm_sale_agreement.py @@ -0,0 +1,56 @@ +# Copyright 2024 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import Command + +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT +from odoo.addons.sale.tests.common import TestSaleCommonBase + + +class TestFieldServiceSaleAgreement(TestSaleCommonBase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + cls.fsm_template = cls.env["fsm.template"].create( + { + "name": "Test FSM Template", + "instructions": "Test Notes", + "duration": 2, + } + ) + cls.product = cls.env["product.product"].create( + { + "name": "FSM Product", + "type": "service", + "invoice_policy": "delivery", + "field_service_tracking": "line", + "fsm_order_template_id": cls.fsm_template.id, + } + ) + cls.order = cls.env["sale.order"].create( + { + "partner_id": cls.env.ref("base.main_partner").id, + "agreement_id": cls.env.ref("agreement.market1").id, + "fsm_location_id": cls.env.ref("fieldservice.test_location").id, + "order_line": [ + Command.create( + { + "product_id": cls.product.id, + "product_uom_qty": 1, + } + ) + ], + } + ) + + def test_propagate_agreement_id(self): + self.order.action_confirm() + self.assertTrue( + self.order.fsm_order_ids, "The FSM Order should've been created" + ) + self.assertEqual( + self.order.fsm_order_ids.agreement_id, + self.order.agreement_id, + "The FSM Order should have the same agreement as the Sale Order", + ) From 27fb0dc9e4701581194c9f3ae8d1aeb8879fac41 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 22 Jan 2025 09:44:45 +0000 Subject: [PATCH 2/5] Added translation using Weblate (Italian) --- fieldservice_sale_agreement/i18n/it.po | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 fieldservice_sale_agreement/i18n/it.po diff --git a/fieldservice_sale_agreement/i18n/it.po b/fieldservice_sale_agreement/i18n/it.po new file mode 100644 index 0000000000..407df89e1c --- /dev/null +++ b/fieldservice_sale_agreement/i18n/it.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_sale_agreement +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-01-22 12:06+0000\n" +"Last-Translator: mymage \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" +"X-Generator: Weblate 5.6.2\n" + +#. module: fieldservice_sale_agreement +#: model:ir.model,name:fieldservice_sale_agreement.model_sale_order +msgid "Sales Order" +msgstr "Ordine di vendita" From 0e3f836a4d55a76191537238d868946b8c69967d Mon Sep 17 00:00:00 2001 From: Vincent Van Rossem Date: Mon, 18 Aug 2025 10:33:01 +0200 Subject: [PATCH 3/5] [MIG] fieldservice_sale_agreement: Migration to 18.0 --- fieldservice_sale_agreement/README.rst | 18 +++++++++--------- fieldservice_sale_agreement/__manifest__.py | 2 +- .../static/description/index.html | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/fieldservice_sale_agreement/README.rst b/fieldservice_sale_agreement/README.rst index 8a59eac97f..4a2549c6ae 100644 --- a/fieldservice_sale_agreement/README.rst +++ b/fieldservice_sale_agreement/README.rst @@ -17,21 +17,21 @@ Field Service - Sale Agreements :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ffield--service-lightgray.png?logo=github - :target: https://github.com/OCA/field-service/tree/17.0/fieldservice_sale_agreement + :target: https://github.com/OCA/field-service/tree/18.0/fieldservice_sale_agreement :alt: OCA/field-service .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_sale_agreement + :target: https://translation.odoo-community.org/projects/field-service-18-0/field-service-18-0-fieldservice_sale_agreement :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/field-service&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/field-service&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| Integrates the Field Service and Sale Agreements modules, to: -- Propagate the ``agreement_id`` field from the Sales Order to the FSM - Order +- Propagate the ``agreement_id`` field from the Sales Order to the FSM + Order **Table of contents** @@ -44,7 +44,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -59,9 +59,9 @@ Authors Contributors ------------ -- `Camptocamp `__: +- `Camptocamp `__: - - Iván Todorovich + - Iván Todorovich Maintainers ----------- @@ -84,6 +84,6 @@ Current `maintainer `__: |maintainer-ivantodorovich| -This module is part of the `OCA/field-service `_ project on GitHub. +This module is part of the `OCA/field-service `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fieldservice_sale_agreement/__manifest__.py b/fieldservice_sale_agreement/__manifest__.py index 646625831e..2062d38ea4 100644 --- a/fieldservice_sale_agreement/__manifest__.py +++ b/fieldservice_sale_agreement/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Field Service - Sale Agreements", "summary": "Integrate Field Service with Sale Agreements", - "version": "17.0.1.0.0", + "version": "18.0.1.0.0", "author": "Camptocamp, Odoo Community Association (OCA)", "maintainers": ["ivantodorovich"], "website": "https://github.com/OCA/field-service", diff --git a/fieldservice_sale_agreement/static/description/index.html b/fieldservice_sale_agreement/static/description/index.html index e26878885e..b7b48b9570 100644 --- a/fieldservice_sale_agreement/static/description/index.html +++ b/fieldservice_sale_agreement/static/description/index.html @@ -369,7 +369,7 @@

Field Service - Sale Agreements

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:51e39dfe70b9f047e57fb1bddb25c479a39139d3388fbcf2ca252ae9d409ec16 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Integrates the Field Service and Sale Agreements modules, to:

  • Propagate the agreement_id field from the Sales Order to the FSM @@ -392,7 +392,7 @@

    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.

    +feedback.

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

    @@ -423,7 +423,7 @@

    Maintainers

    promote its widespread use.

    Current maintainer:

    ivantodorovich

    -

    This module is part of the OCA/field-service project on GitHub.

    +

    This module is part of the OCA/field-service project on GitHub.

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

    From 339ea001be26114bee4c3cd23b387d6e3078f004 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 4 Sep 2025 11:31:42 +0000 Subject: [PATCH 4/5] [UPD] Update fieldservice_sale_agreement.pot --- fieldservice_sale_agreement/README.rst | 16 +++++++----- .../i18n/fieldservice_sale_agreement.pot | 2 +- .../static/description/index.html | 26 ++++++++++++------- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/fieldservice_sale_agreement/README.rst b/fieldservice_sale_agreement/README.rst index 4a2549c6ae..397e021a76 100644 --- a/fieldservice_sale_agreement/README.rst +++ b/fieldservice_sale_agreement/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + =============================== Field Service - Sale Agreements =============================== @@ -7,13 +11,13 @@ Field Service - Sale Agreements !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:51e39dfe70b9f047e57fb1bddb25c479a39139d3388fbcf2ca252ae9d409ec16 + !! source digest: sha256:fa7c285214870a1b35dc7164ed3e8f4c8f2b06924d272e043a98bfeb5452cd06 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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 +.. |badge2| image:: https://img.shields.io/badge/license-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%2Ffield--service-lightgray.png?logo=github @@ -30,8 +34,8 @@ Field Service - Sale Agreements Integrates the Field Service and Sale Agreements modules, to: -- Propagate the ``agreement_id`` field from the Sales Order to the FSM - Order +- Propagate the ``agreement_id`` field from the Sales Order to the FSM + Order **Table of contents** @@ -59,9 +63,9 @@ Authors Contributors ------------ -- `Camptocamp `__: +- `Camptocamp `__: - - Iván Todorovich + - Iván Todorovich Maintainers ----------- diff --git a/fieldservice_sale_agreement/i18n/fieldservice_sale_agreement.pot b/fieldservice_sale_agreement/i18n/fieldservice_sale_agreement.pot index 1b8e9aeced..40c107d18e 100644 --- a/fieldservice_sale_agreement/i18n/fieldservice_sale_agreement.pot +++ b/fieldservice_sale_agreement/i18n/fieldservice_sale_agreement.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/fieldservice_sale_agreement/static/description/index.html b/fieldservice_sale_agreement/static/description/index.html index b7b48b9570..7efc753475 100644 --- a/fieldservice_sale_agreement/static/description/index.html +++ b/fieldservice_sale_agreement/static/description/index.html @@ -3,7 +3,7 @@ -Field Service - Sale Agreements +README.rst -
    -

    Field Service - Sale Agreements

    +
    + + +Odoo Community Association + +
    +

    Field Service - Sale Agreements

    -

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

    +

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

    Integrates the Field Service and Sale Agreements modules, to:

    • Propagate the agreement_id field from the Sales Order to the FSM @@ -388,7 +393,7 @@

      Field Service - Sale Agreements

    -

    Bug Tracker

    +

    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 @@ -396,15 +401,15 @@

    Bug Tracker

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

    -

    Credits

    +

    Credits

    -

    Authors

    +

    Authors

    • Camptocamp
    -

    Maintainers

    +

    Maintainers

    This module is maintained by the OCA.

    Odoo Community Association @@ -428,5 +433,6 @@

    Maintainers

    +
    From b1d5aa9129e84202bcb57967c4f1e8ddbe84fd6f Mon Sep 17 00:00:00 2001 From: Vang - Nguyen Phu Date: Wed, 21 Jan 2026 14:39:14 +0700 Subject: [PATCH 5/5] [MIG] fieldservice_sale_agreement: Migration to 19.0 --- fieldservice_sale_agreement/README.rst | 14 +++++++++----- fieldservice_sale_agreement/__manifest__.py | 2 +- fieldservice_sale_agreement/readme/CONTRIBUTORS.md | 3 +++ .../static/description/index.html | 10 +++++++--- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/fieldservice_sale_agreement/README.rst b/fieldservice_sale_agreement/README.rst index 397e021a76..2b06680b94 100644 --- a/fieldservice_sale_agreement/README.rst +++ b/fieldservice_sale_agreement/README.rst @@ -21,13 +21,13 @@ Field Service - Sale Agreements :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ffield--service-lightgray.png?logo=github - :target: https://github.com/OCA/field-service/tree/18.0/fieldservice_sale_agreement + :target: https://github.com/OCA/field-service/tree/19.0/fieldservice_sale_agreement :alt: OCA/field-service .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/field-service-18-0/field-service-18-0-fieldservice_sale_agreement + :target: https://translation.odoo-community.org/projects/field-service-19-0/field-service-19-0-fieldservice_sale_agreement :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/field-service&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/field-service&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -48,7 +48,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -67,6 +67,10 @@ Contributors - Iván Todorovich +- ``Komit ``\ \_\_: + + - Vang Nguyen Phu + Maintainers ----------- @@ -88,6 +92,6 @@ Current `maintainer `__: |maintainer-ivantodorovich| -This module is part of the `OCA/field-service `_ project on GitHub. +This module is part of the `OCA/field-service `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fieldservice_sale_agreement/__manifest__.py b/fieldservice_sale_agreement/__manifest__.py index 2062d38ea4..f8856bdfc7 100644 --- a/fieldservice_sale_agreement/__manifest__.py +++ b/fieldservice_sale_agreement/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Field Service - Sale Agreements", "summary": "Integrate Field Service with Sale Agreements", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "author": "Camptocamp, Odoo Community Association (OCA)", "maintainers": ["ivantodorovich"], "website": "https://github.com/OCA/field-service", diff --git a/fieldservice_sale_agreement/readme/CONTRIBUTORS.md b/fieldservice_sale_agreement/readme/CONTRIBUTORS.md index 4fa5a70e1d..73482f6290 100644 --- a/fieldservice_sale_agreement/readme/CONTRIBUTORS.md +++ b/fieldservice_sale_agreement/readme/CONTRIBUTORS.md @@ -1,3 +1,6 @@ - [Camptocamp](https://camptocamp.com): - Iván Todorovich \<\> +- `Komit `__: + + - Vang Nguyen Phu diff --git a/fieldservice_sale_agreement/static/description/index.html b/fieldservice_sale_agreement/static/description/index.html index 7efc753475..7fa18c31f8 100644 --- a/fieldservice_sale_agreement/static/description/index.html +++ b/fieldservice_sale_agreement/static/description/index.html @@ -374,7 +374,7 @@

    Field Service - Sale Agreements

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:fa7c285214870a1b35dc7164ed3e8f4c8f2b06924d272e043a98bfeb5452cd06 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

    +

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

    Integrates the Field Service and Sale Agreements modules, to:

    • Propagate the agreement_id field from the Sales Order to the FSM @@ -397,7 +397,7 @@

      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.

      +feedback.

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

      @@ -415,6 +415,10 @@

      Contributors

    • Iván Todorovich <ivan.todorovich@camptocamp.com>
  • +
  • Komit <https://komit-consulting.com>__:
      +
    • Vang Nguyen Phu
    • +
    +
@@ -428,7 +432,7 @@

Maintainers

promote its widespread use.

Current maintainer:

ivantodorovich

-

This module is part of the OCA/field-service project on GitHub.

+

This module is part of the OCA/field-service project on GitHub.

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