From 509e0931420452de6fba4b00ded4f0df8e26116b Mon Sep 17 00:00:00 2001 From: "r.perez" Date: Wed, 7 Jan 2026 20:32:15 -0500 Subject: [PATCH 1/2] [ADD] fieldservice_order_property --- fieldservice_order_property/README.rst | 97 ++++ fieldservice_order_property/__init__.py | 1 + fieldservice_order_property/__manifest__.py | 13 + .../models/__init__.py | 2 + .../models/fsm_order.py | 14 + .../models/fsm_team.py | 12 + fieldservice_order_property/pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 2 + .../readme/DESCRIPTION.md | 1 + fieldservice_order_property/readme/USAGE.md | 9 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 446 ++++++++++++++++++ fieldservice_order_property/tests/__init__.py | 1 + .../tests/test_fsm_order.py | 40 ++ .../views/fsm_order_views.xml | 41 ++ 15 files changed, 682 insertions(+) create mode 100644 fieldservice_order_property/README.rst create mode 100644 fieldservice_order_property/__init__.py create mode 100644 fieldservice_order_property/__manifest__.py create mode 100644 fieldservice_order_property/models/__init__.py create mode 100644 fieldservice_order_property/models/fsm_order.py create mode 100644 fieldservice_order_property/models/fsm_team.py create mode 100644 fieldservice_order_property/pyproject.toml create mode 100644 fieldservice_order_property/readme/CONTRIBUTORS.md create mode 100644 fieldservice_order_property/readme/DESCRIPTION.md create mode 100644 fieldservice_order_property/readme/USAGE.md create mode 100644 fieldservice_order_property/static/description/icon.png create mode 100644 fieldservice_order_property/static/description/index.html create mode 100644 fieldservice_order_property/tests/__init__.py create mode 100644 fieldservice_order_property/tests/test_fsm_order.py create mode 100644 fieldservice_order_property/views/fsm_order_views.xml diff --git a/fieldservice_order_property/README.rst b/fieldservice_order_property/README.rst new file mode 100644 index 0000000000..75917e9eb0 --- /dev/null +++ b/fieldservice_order_property/README.rst @@ -0,0 +1,97 @@ +============================ +Field Service Order_Property +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:4313d0f9c2af696a8028514e9abef93e599ee85dbbda8d999e06c7af67053942 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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_order_property + :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_order_property + :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| + +This module enables property management in field service orders. +Properties are shared across all field service orders within the same +field service team. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Add property fields: + +1. Go to Field Service and create or edit a record. +2. Click ⚙ **Add Properties** → select a **Field Type**, and optionally + add a default value. Check **View in Kanban** to display the fields + in kanban views. Click anywhere to validate and close the dialog. +3. The displayed properties automatically adjust based on the team + associated with the record. + +Delete property fields: + +1. Click the pencil icon next to the targeted property, then click + Delete. + +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 +------- + +* Binhex + +Contributors +------------ + +- `Binhex `__: + + - Rolando Pérez + +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. + +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_order_property/__init__.py b/fieldservice_order_property/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/fieldservice_order_property/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/fieldservice_order_property/__manifest__.py b/fieldservice_order_property/__manifest__.py new file mode 100644 index 0000000000..100e148904 --- /dev/null +++ b/fieldservice_order_property/__manifest__.py @@ -0,0 +1,13 @@ +{ + "name": "Field Service Order_Property", + "summary": "Manage custom properties for Field Service Orders", + "author": "Binhex, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/field-service", + "category": "Field Service", + "version": "17.0.1.0.0", + "depends": ["fieldservice"], + "data": [ + "views/fsm_order_views.xml", + ], + "license": "AGPL-3", +} diff --git a/fieldservice_order_property/models/__init__.py b/fieldservice_order_property/models/__init__.py new file mode 100644 index 0000000000..3c6f82f0b8 --- /dev/null +++ b/fieldservice_order_property/models/__init__.py @@ -0,0 +1,2 @@ +from . import fsm_team +from . import fsm_order diff --git a/fieldservice_order_property/models/fsm_order.py b/fieldservice_order_property/models/fsm_order.py new file mode 100644 index 0000000000..8105787d18 --- /dev/null +++ b/fieldservice_order_property/models/fsm_order.py @@ -0,0 +1,14 @@ +# Copyright 2026 Binhex - Rolando Pérez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FSMOrder(models.Model): + _inherit = "fsm.order" + + fsm_order_properties = fields.Properties( + "Properties", + definition="team_id.fsm_order_properties_definition", + copy=True, + ) diff --git a/fieldservice_order_property/models/fsm_team.py b/fieldservice_order_property/models/fsm_team.py new file mode 100644 index 0000000000..b8032466d0 --- /dev/null +++ b/fieldservice_order_property/models/fsm_team.py @@ -0,0 +1,12 @@ +# Copyright 2026 Binhex - Rolando Pérez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FSMTeam(models.Model): + _inherit = "fsm.team" + + fsm_order_properties_definition = fields.PropertiesDefinition( + "FSM Order Properties" + ) diff --git a/fieldservice_order_property/pyproject.toml b/fieldservice_order_property/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/fieldservice_order_property/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/fieldservice_order_property/readme/CONTRIBUTORS.md b/fieldservice_order_property/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..cb9586f0d6 --- /dev/null +++ b/fieldservice_order_property/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- [Binhex](https://binhex.cloud): + - Rolando Pérez diff --git a/fieldservice_order_property/readme/DESCRIPTION.md b/fieldservice_order_property/readme/DESCRIPTION.md new file mode 100644 index 0000000000..da7ca5f816 --- /dev/null +++ b/fieldservice_order_property/readme/DESCRIPTION.md @@ -0,0 +1 @@ +This module enables property management in field service orders. Properties are shared across all field service orders within the same field service team. diff --git a/fieldservice_order_property/readme/USAGE.md b/fieldservice_order_property/readme/USAGE.md new file mode 100644 index 0000000000..56eff5360c --- /dev/null +++ b/fieldservice_order_property/readme/USAGE.md @@ -0,0 +1,9 @@ +Add property fields: + +1. Go to Field Service and create or edit a record. +2. Click ⚙ **Add Properties** → select a **Field Type**, and optionally add a default value. Check **View in Kanban** to display the fields in kanban views. Click anywhere to validate and close the dialog. +3. The displayed properties automatically adjust based on the team associated with the record. + +Delete property fields: + +1. Click the pencil icon next to the targeted property, then click Delete. diff --git a/fieldservice_order_property/static/description/icon.png b/fieldservice_order_property/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_order_property/static/description/index.html b/fieldservice_order_property/static/description/index.html new file mode 100644 index 0000000000..ccd048d2b1 --- /dev/null +++ b/fieldservice_order_property/static/description/index.html @@ -0,0 +1,446 @@ + + + + + +Field Service Order_Property + + + +
+

Field Service Order_Property

+ + +

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

+

This module enables property management in field service orders. +Properties are shared across all field service orders within the same +field service team.

+

Table of contents

+ +
+

Usage

+

Add property fields:

+
    +
  1. Go to Field Service and create or edit a record.
  2. +
  3. Click ⚙ Add Properties → select a Field Type, and optionally +add a default value. Check View in Kanban to display the fields +in kanban views. Click anywhere to validate and close the dialog.
  4. +
  5. The displayed properties automatically adjust based on the team +associated with the record.
  6. +
+

Delete property fields:

+
    +
  1. Click the pencil icon next to the targeted property, then click +Delete.
  2. +
+
+
+

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

+
    +
  • Binhex
  • +
+
+
+

Contributors

+
    +
  • Binhex:
      +
    • Rolando Pérez
    • +
    +
  • +
+
+
+

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.

+

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_order_property/tests/__init__.py b/fieldservice_order_property/tests/__init__.py new file mode 100644 index 0000000000..b27da9a119 --- /dev/null +++ b/fieldservice_order_property/tests/__init__.py @@ -0,0 +1 @@ +from . import test_fsm_order diff --git a/fieldservice_order_property/tests/test_fsm_order.py b/fieldservice_order_property/tests/test_fsm_order.py new file mode 100644 index 0000000000..e9dd3feb28 --- /dev/null +++ b/fieldservice_order_property/tests/test_fsm_order.py @@ -0,0 +1,40 @@ +# Copyright 2024 Tecnativa - Pilar Vargas +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.addons.base.tests.common import BaseCommon + + +class TestFSMOrder(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.team_a = cls.env.ref("fieldservice.fsm_team_default") + properties_def = [ + {"name": "date", "type": "date", "string": "Date", "default": "2026-01-01"}, + { + "name": "integer", + "type": "integer", + "string": "ID", + "default": 1, + }, + ] + cls.team_a.fsm_order_properties_definition = properties_def + cls.team_b = cls.env["fsm.team"].create({"name": "Team B"}) + cls.test_location = cls.env.ref("fieldservice.test_location") + cls.fsm_order_team_a = cls.env["fsm.order"].create( + { + "name": "Test Order Team A", + "team_id": cls.team_a.id, + "location_id": cls.test_location.id, + } + ) + + def test_fsm_order_properties_within_team(self): + self.fsm_order_team_a.fsm_order_properties = { + "date": "2026-01-03", + "integer": 5, + } + + properties = self.fsm_order_team_a.fsm_order_properties + self.assertEqual(len(properties), 2) + self.assertFalse(self.team_b.fsm_order_properties_definition) diff --git a/fieldservice_order_property/views/fsm_order_views.xml b/fieldservice_order_property/views/fsm_order_views.xml new file mode 100644 index 0000000000..2ff9181cca --- /dev/null +++ b/fieldservice_order_property/views/fsm_order_views.xml @@ -0,0 +1,41 @@ + + + + fsm.order + + + + + + + + + + + fsm.order + + + + + + +
+ +
+
+
+
+ + fsm.order + + + + + + + +
From a0990cf084b8ed4f7f99d13c9c58cca441fa0ca9 Mon Sep 17 00:00:00 2001 From: "r.perez" Date: Wed, 11 Feb 2026 15:37:34 -0500 Subject: [PATCH 2/2] [MIG] fieldservice_order_property: Migration to 18.0 --- fieldservice_order_property/README.rst | 10 +++++----- fieldservice_order_property/__manifest__.py | 2 +- .../static/description/index.html | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/fieldservice_order_property/README.rst b/fieldservice_order_property/README.rst index 75917e9eb0..84426874af 100644 --- a/fieldservice_order_property/README.rst +++ b/fieldservice_order_property/README.rst @@ -17,13 +17,13 @@ Field Service Order_Property :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_order_property + :target: https://github.com/OCA/field-service/tree/18.0/fieldservice_order_property :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_order_property + :target: https://translation.odoo-community.org/projects/field-service-18-0/field-service-18-0-fieldservice_order_property :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| @@ -60,7 +60,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. @@ -92,6 +92,6 @@ 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. -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_order_property/__manifest__.py b/fieldservice_order_property/__manifest__.py index 100e148904..9594ff2fa6 100644 --- a/fieldservice_order_property/__manifest__.py +++ b/fieldservice_order_property/__manifest__.py @@ -4,7 +4,7 @@ "author": "Binhex, Odoo Community Association (OCA)", "website": "https://github.com/OCA/field-service", "category": "Field Service", - "version": "17.0.1.0.0", + "version": "18.0.1.0.0", "depends": ["fieldservice"], "data": [ "views/fsm_order_views.xml", diff --git a/fieldservice_order_property/static/description/index.html b/fieldservice_order_property/static/description/index.html index ccd048d2b1..5d6f4528c1 100644 --- a/fieldservice_order_property/static/description/index.html +++ b/fieldservice_order_property/static/description/index.html @@ -369,7 +369,7 @@

Field Service Order_Property

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:4313d0f9c2af696a8028514e9abef93e599ee85dbbda8d999e06c7af67053942 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

This module enables property management in field service orders. Properties are shared across all field service orders within the same field service team.

@@ -408,7 +408,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.

@@ -437,7 +437,7 @@

Maintainers

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.

-

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.