From 2a39020176ac9a819142896a143bbdc27c261f26 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Tue, 22 Apr 2025 09:12:56 +0200 Subject: [PATCH 01/39] [ADD] fieldservice_route_availability: New module fieldservice_route_availability --- fieldservice_route_availability/README.rst | 97 ++++ fieldservice_route_availability/__init__.py | 3 + .../__manifest__.py | 21 + fieldservice_route_availability/i18n/ca.po | 42 ++ fieldservice_route_availability/i18n/es.po | 42 ++ .../models/__init__.py | 4 + .../models/fsm_order.py | 31 ++ .../models/fsm_route.py | 16 + .../pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 2 + .../readme/DESCRIPTION.md | 1 + .../readme/USAGE.md | 3 + .../static/description/icon.png | Bin 0 -> 17808 bytes .../static/description/index.html | 441 ++++++++++++++++++ .../tests/__init__.py | 3 + .../tests/test_route_availability.py | 53 +++ .../views/fsm_route.xml | 14 + 17 files changed, 776 insertions(+) create mode 100644 fieldservice_route_availability/README.rst create mode 100644 fieldservice_route_availability/__init__.py create mode 100644 fieldservice_route_availability/__manifest__.py create mode 100644 fieldservice_route_availability/i18n/ca.po create mode 100644 fieldservice_route_availability/i18n/es.po create mode 100644 fieldservice_route_availability/models/__init__.py create mode 100644 fieldservice_route_availability/models/fsm_order.py create mode 100644 fieldservice_route_availability/models/fsm_route.py create mode 100644 fieldservice_route_availability/pyproject.toml create mode 100644 fieldservice_route_availability/readme/CONTRIBUTORS.md create mode 100644 fieldservice_route_availability/readme/DESCRIPTION.md create mode 100644 fieldservice_route_availability/readme/USAGE.md create mode 100644 fieldservice_route_availability/static/description/icon.png create mode 100644 fieldservice_route_availability/static/description/index.html create mode 100644 fieldservice_route_availability/tests/__init__.py create mode 100644 fieldservice_route_availability/tests/test_route_availability.py create mode 100644 fieldservice_route_availability/views/fsm_route.xml diff --git a/fieldservice_route_availability/README.rst b/fieldservice_route_availability/README.rst new file mode 100644 index 0000000000..f09731ce48 --- /dev/null +++ b/fieldservice_route_availability/README.rst @@ -0,0 +1,97 @@ +================================ +Field Service Route Availability +================================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:34e48f821cbea0803846f31988a737b42f8173cbe7aeaa738177b46986d94b4d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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_route_availability + :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_route_availability + :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| + +Restricts blackout days for Scheduled Start (ETA) orders with the same +date + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +1. Set up Blackout Days on Configuration > Blackout Groups and create or + edit one with blackout days +2. Go to Field Service > Master Data > Routes > Create or edit route and + assign Blackout Group Days and a Person +3. Create a Field Service order and set up Scheduled Start (ETA) with + date that you put on blackout days and the Odoo will throw an error + +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 +------- + +* APSL-Nagarro + +Contributors +------------ + +- `APSL-Nagarro `__: + + - Antoni Marroig + +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-peluko00| image:: https://github.com/peluko00.png?size=40px + :target: https://github.com/peluko00 + :alt: peluko00 + +Current `maintainer `__: + +|maintainer-peluko00| + +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_route_availability/__init__.py b/fieldservice_route_availability/__init__.py new file mode 100644 index 0000000000..31660d6a96 --- /dev/null +++ b/fieldservice_route_availability/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/fieldservice_route_availability/__manifest__.py b/fieldservice_route_availability/__manifest__.py new file mode 100644 index 0000000000..88c0d92a5c --- /dev/null +++ b/fieldservice_route_availability/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2025 APSL-Nagarro Antoni Marroig +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Field Service Route Availability", + "summary": "Restricts blackout days for Scheduled Start (ETA) " + "orders with the same date.", + "version": "17.0.1.0.0", + "category": "Field Service", + "website": "https://github.com/OCA/field-service", + "author": "APSL-Nagarro, Odoo Community Association (OCA)", + "maintainers": ["peluko00"], + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": [ + "fieldservice_availability", + ], + "data": [ + "views/fsm_route.xml", + ], +} diff --git a/fieldservice_route_availability/i18n/ca.po b/fieldservice_route_availability/i18n/ca.po new file mode 100644 index 0000000000..2eddd43a9e --- /dev/null +++ b/fieldservice_route_availability/i18n/ca.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_route_availability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-04-23 06:22+0000\n" +"PO-Revision-Date: 2025-04-23 06:22+0000\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_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids +msgid "Blackout Group Days" +msgstr "Grup de bloqueig de dies" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_order +msgid "Field Service Order" +msgstr "Comanda del Servei de Camp" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_route +msgid "Field Service Route" +msgstr "Ruta del Servei de Camp" + +#. module: fieldservice_route_availability +#. odoo-python +#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 +#, python-format +msgid "" +"The date %(date)s is a blackout day for field service operations on this " +"route" +msgstr "" +"La data %(date)s és un dia d'interrupció per a les operacions del servei " +"de camp en aquest ruta" diff --git a/fieldservice_route_availability/i18n/es.po b/fieldservice_route_availability/i18n/es.po new file mode 100644 index 0000000000..f3aca5e49d --- /dev/null +++ b/fieldservice_route_availability/i18n/es.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_route_availability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-04-23 06:22+0000\n" +"PO-Revision-Date: 2025-04-23 06:22+0000\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_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids +msgid "Blackout Group Days" +msgstr "Grupo de bloqueo de días" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_order +msgid "Field Service Order" +msgstr "Pedido de Servicio de Campo" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_route +msgid "Field Service Route" +msgstr "Ubicación del Servicio de Campo" + +#. module: fieldservice_route_availability +#. odoo-python +#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 +#, python-format +msgid "" +"The date %(date)s is a blackout day for field service operations on this " +"route" +msgstr "" +"La fecha %(date)s es un día sin disponibilidad para las operaciones de " +"servicio de campo en esta ruta" diff --git a/fieldservice_route_availability/models/__init__.py b/fieldservice_route_availability/models/__init__.py new file mode 100644 index 0000000000..9e985fd8b8 --- /dev/null +++ b/fieldservice_route_availability/models/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import fsm_route +from . import fsm_order diff --git a/fieldservice_route_availability/models/fsm_order.py b/fieldservice_route_availability/models/fsm_order.py new file mode 100644 index 0000000000..c2c3fde7e8 --- /dev/null +++ b/fieldservice_route_availability/models/fsm_order.py @@ -0,0 +1,31 @@ +# Copyright 2025 APSL-Nagarro Antoni Marroig +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, models +from odoo.exceptions import ValidationError + + +class FSMRoute(models.Model): + _inherit = "fsm.order" + + @api.constrains("fsm_route_id", "scheduled_date_start") + def check_black_out_days(self): + for order in self: + if order.fsm_route_id and order.scheduled_date_start: + for group in order.fsm_route_id.fsm_blackout_group_ids: + match = group.fsm_blackout_day_ids.filtered( + lambda x, order=order: x.date + == order.scheduled_date_start.date() + ) + if match: + raise ValidationError( + _( + "The date %(date)s is a blackout day for field" + " service operations on this route" + ) + % { + "date": order.scheduled_date_start.date().strftime( + "%d/%m/%Y" + ) + } + ) diff --git a/fieldservice_route_availability/models/fsm_route.py b/fieldservice_route_availability/models/fsm_route.py new file mode 100644 index 0000000000..d2a870d1f6 --- /dev/null +++ b/fieldservice_route_availability/models/fsm_route.py @@ -0,0 +1,16 @@ +# Copyright 2025 APSL-Nagarro Antoni Marroig +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FSMRoute(models.Model): + _inherit = "fsm.route" + + fsm_blackout_group_ids = fields.Many2many( + "fsm.blackout.group", + "fsm_route_ids", + "fsm_route_id", + "fsm_blackout_group_id", + string="Blackout Group Days", + ) diff --git a/fieldservice_route_availability/pyproject.toml b/fieldservice_route_availability/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/fieldservice_route_availability/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/fieldservice_route_availability/readme/CONTRIBUTORS.md b/fieldservice_route_availability/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..3b1bd465e8 --- /dev/null +++ b/fieldservice_route_availability/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- [APSL-Nagarro](https://www.apsl.tech): + - Antoni Marroig \<\> \ No newline at end of file diff --git a/fieldservice_route_availability/readme/DESCRIPTION.md b/fieldservice_route_availability/readme/DESCRIPTION.md new file mode 100644 index 0000000000..abf06ed5db --- /dev/null +++ b/fieldservice_route_availability/readme/DESCRIPTION.md @@ -0,0 +1 @@ +Restricts blackout days for Scheduled Start (ETA) orders with the same date diff --git a/fieldservice_route_availability/readme/USAGE.md b/fieldservice_route_availability/readme/USAGE.md new file mode 100644 index 0000000000..0080021b4e --- /dev/null +++ b/fieldservice_route_availability/readme/USAGE.md @@ -0,0 +1,3 @@ +1. Set up Blackout Days on Configuration > Blackout Groups and create or edit one with blackout days +2. Go to Field Service > Master Data > Routes > Create or edit route and assign Blackout Group Days and a Person +3. Create a Field Service order and set up Scheduled Start (ETA) with date that you put on blackout days and the Odoo will throw an error \ No newline at end of file diff --git a/fieldservice_route_availability/static/description/icon.png b/fieldservice_route_availability/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..955674d8f0b8c47de3ffa9db25cb109fbe4a1091 GIT binary patch literal 17808 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 literal 0 HcmV?d00001 diff --git a/fieldservice_route_availability/static/description/index.html b/fieldservice_route_availability/static/description/index.html new file mode 100644 index 0000000000..f1bf9fca42 --- /dev/null +++ b/fieldservice_route_availability/static/description/index.html @@ -0,0 +1,441 @@ + + + + + +Field Service Route Availability + + + +
+

Field Service Route Availability

+ + +

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

+

Restricts blackout days for Scheduled Start (ETA) orders with the same +date

+

Table of contents

+ +
+

Usage

+
    +
  1. Set up Blackout Days on Configuration > Blackout Groups and create or +edit one with blackout days
  2. +
  3. Go to Field Service > Master Data > Routes > Create or edit route and +assign Blackout Group Days and a Person
  4. +
  5. Create a Field Service order and set up Scheduled Start (ETA) with +date that you put on blackout days and the Odoo will throw an error
  6. +
+
+
+

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

+
    +
  • APSL-Nagarro
  • +
+
+
+

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:

+

peluko00

+

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_route_availability/tests/__init__.py b/fieldservice_route_availability/tests/__init__.py new file mode 100644 index 0000000000..52899397e8 --- /dev/null +++ b/fieldservice_route_availability/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_route_availability diff --git a/fieldservice_route_availability/tests/test_route_availability.py b/fieldservice_route_availability/tests/test_route_availability.py new file mode 100644 index 0000000000..d8c9abdb7b --- /dev/null +++ b/fieldservice_route_availability/tests/test_route_availability.py @@ -0,0 +1,53 @@ +# Copyright 2025 APSL-Nagarro Antoni Marroig +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from datetime import timedelta + +from odoo import fields +from odoo.exceptions import ValidationError +from odoo.tests import Form, common + + +class TestRouteAvailability(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.test_person = cls.env.ref("fieldservice.test_person") + cls.test_location = cls.env.ref("fieldservice.test_location") + cls.blackout_group = cls.env["fsm.blackout.group"].create( + { + "name": "Test Blackout Group", + "fsm_blackout_day_ids": [ + (0, 0, {"name": "Test Blackout Day", "date": fields.Date.today()}) + ], + } + ) + + cls.days = [ + cls.env.ref("fieldservice_route.fsm_route_day_0").id, + cls.env.ref("fieldservice_route.fsm_route_day_1").id, + cls.env.ref("fieldservice_route.fsm_route_day_2").id, + cls.env.ref("fieldservice_route.fsm_route_day_3").id, + cls.env.ref("fieldservice_route.fsm_route_day_4").id, + cls.env.ref("fieldservice_route.fsm_route_day_5").id, + cls.env.ref("fieldservice_route.fsm_route_day_6").id, + ] + cls.fsm_route_id = cls.env["fsm.route"].create( + { + "name": "Demo Route", + "max_order": 10, + "fsm_person_id": cls.test_person.id, + "day_ids": [(6, 0, cls.days)], + } + ) + cls.test_location.fsm_route_id = cls.fsm_route_id.id + cls.fsm_route_id.fsm_blackout_group_ids = [cls.blackout_group.id] + + def test_validate_blackout_days(self): + order_form = Form(self.env["fsm.order"]) + order_form.location_id = self.test_location + order_form.scheduled_date_start = fields.Datetime.today() + with self.assertRaises(ValidationError): + order_form.save() + order_form.scheduled_date_start = fields.Datetime.today() + timedelta(days=1) + self.assertTrue(order_form.save()) diff --git a/fieldservice_route_availability/views/fsm_route.xml b/fieldservice_route_availability/views/fsm_route.xml new file mode 100644 index 0000000000..fb3c935469 --- /dev/null +++ b/fieldservice_route_availability/views/fsm_route.xml @@ -0,0 +1,14 @@ + + + + fsm.route.form.inherit + fsm.route + + + + + + + + From 6d8297502c1a1a526b24ec141e4847d9e860af45 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 28 Apr 2025 04:00:23 +0000 Subject: [PATCH 02/39] [UPD] Update fieldservice_route_availability.pot --- fieldservice_route_availability/i18n/ca.po | 5 ++- fieldservice_route_availability/i18n/es.po | 1 + .../i18n/fieldservice_route_availability.pot | 38 +++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 fieldservice_route_availability/i18n/fieldservice_route_availability.pot diff --git a/fieldservice_route_availability/i18n/ca.po b/fieldservice_route_availability/i18n/ca.po index 2eddd43a9e..25bce524ae 100644 --- a/fieldservice_route_availability/i18n/ca.po +++ b/fieldservice_route_availability/i18n/ca.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2025-04-23 06:22+0000\n" "Last-Translator: \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -38,5 +39,5 @@ msgid "" "The date %(date)s is a blackout day for field service operations on this " "route" msgstr "" -"La data %(date)s és un dia d'interrupció per a les operacions del servei " -"de camp en aquest ruta" +"La data %(date)s és un dia d'interrupció per a les operacions del servei de " +"camp en aquest ruta" diff --git a/fieldservice_route_availability/i18n/es.po b/fieldservice_route_availability/i18n/es.po index f3aca5e49d..5dc38ca74b 100644 --- a/fieldservice_route_availability/i18n/es.po +++ b/fieldservice_route_availability/i18n/es.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2025-04-23 06:22+0000\n" "Last-Translator: \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" diff --git a/fieldservice_route_availability/i18n/fieldservice_route_availability.pot b/fieldservice_route_availability/i18n/fieldservice_route_availability.pot new file mode 100644 index 0000000000..9375dbe54c --- /dev/null +++ b/fieldservice_route_availability/i18n/fieldservice_route_availability.pot @@ -0,0 +1,38 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_route_availability +# +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_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids +msgid "Blackout Group Days" +msgstr "" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_order +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_route +msgid "Field Service Route" +msgstr "" + +#. module: fieldservice_route_availability +#. odoo-python +#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 +#, python-format +msgid "" +"The date %(date)s is a blackout day for field service operations on this " +"route" +msgstr "" From a034bfc587d60a40646fdc80440ab54b88b9f693 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 28 Apr 2025 04:04:55 +0000 Subject: [PATCH 03/39] [BOT] post-merge updates --- fieldservice_route_availability/README.rst | 6 +++--- .../static/description/index.html | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fieldservice_route_availability/README.rst b/fieldservice_route_availability/README.rst index f09731ce48..746c312462 100644 --- a/fieldservice_route_availability/README.rst +++ b/fieldservice_route_availability/README.rst @@ -7,7 +7,7 @@ Field Service Route Availability !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:34e48f821cbea0803846f31988a737b42f8173cbe7aeaa738177b46986d94b4d + !! source digest: sha256:e0fda6cb62bb314f65fbc827b92ff2e3df05871d319b11462991363c6657e6b8 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -67,9 +67,9 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Antoni Marroig + - Antoni Marroig Maintainers ----------- diff --git a/fieldservice_route_availability/static/description/index.html b/fieldservice_route_availability/static/description/index.html index f1bf9fca42..fd33358e9d 100644 --- a/fieldservice_route_availability/static/description/index.html +++ b/fieldservice_route_availability/static/description/index.html @@ -367,7 +367,7 @@

Field Service Route Availability

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:34e48f821cbea0803846f31988a737b42f8173cbe7aeaa738177b46986d94b4d +!! source digest: sha256:e0fda6cb62bb314f65fbc827b92ff2e3df05871d319b11462991363c6657e6b8 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

Restricts blackout days for Scheduled Start (ETA) orders with the same From e4fcb669fb4d8721fc6a1c4eefa35105db0ecdac Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 29 Apr 2025 16:41:20 +0000 Subject: [PATCH 04/39] Added translation using Weblate (Italian) --- fieldservice_route_availability/i18n/it.po | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 fieldservice_route_availability/i18n/it.po diff --git a/fieldservice_route_availability/i18n/it.po b/fieldservice_route_availability/i18n/it.po new file mode 100644 index 0000000000..da4a113573 --- /dev/null +++ b/fieldservice_route_availability/i18n/it.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_route_availability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.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: fieldservice_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids +msgid "Blackout Group Days" +msgstr "" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_order +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_route +msgid "Field Service Route" +msgstr "" + +#. module: fieldservice_route_availability +#. odoo-python +#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 +#, python-format +msgid "" +"The date %(date)s is a blackout day for field service operations on this " +"route" +msgstr "" From e3c03a4a1fe5a0aaa52c471d294bbe1dc61e6da3 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 29 Apr 2025 16:41:46 +0000 Subject: [PATCH 05/39] Translated using Weblate (Italian) Currently translated at 100.0% (4 of 4 strings) Translation: field-service-17.0/field-service-17.0-fieldservice_route_availability Translate-URL: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_route_availability/it/ --- fieldservice_route_availability/i18n/it.po | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/fieldservice_route_availability/i18n/it.po b/fieldservice_route_availability/i18n/it.po index da4a113573..20eaaa158c 100644 --- a/fieldservice_route_availability/i18n/it.po +++ b/fieldservice_route_availability/i18n/it.po @@ -6,28 +6,30 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-04-29 19:24+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.10.4\n" #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids msgid "Blackout Group Days" -msgstr "" +msgstr "Gruppo giorni sospensione" #. module: fieldservice_route_availability #: model:ir.model,name:fieldservice_route_availability.model_fsm_order msgid "Field Service Order" -msgstr "" +msgstr "Ordine assistenza sul campo" #. module: fieldservice_route_availability #: model:ir.model,name:fieldservice_route_availability.model_fsm_route msgid "Field Service Route" -msgstr "" +msgstr "Percorso assistenza sul campo" #. module: fieldservice_route_availability #. odoo-python @@ -37,3 +39,5 @@ msgid "" "The date %(date)s is a blackout day for field service operations on this " "route" msgstr "" +"Il giorno %(date)s è una data di sospensione per le operazioni di assistenza " +"sul campo su questo percorso" From 2cda66ca0a6752f612024073ad999ebc684ed760 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Wed, 14 May 2025 00:14:16 +0000 Subject: [PATCH 06/39] Added translation using Weblate (Portuguese (Brazil)) --- fieldservice_route_availability/i18n/pt_BR.po | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 fieldservice_route_availability/i18n/pt_BR.po diff --git a/fieldservice_route_availability/i18n/pt_BR.po b/fieldservice_route_availability/i18n/pt_BR.po new file mode 100644 index 0000000000..7bfb98ea19 --- /dev/null +++ b/fieldservice_route_availability/i18n/pt_BR.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_route_availability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_BR\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: fieldservice_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids +msgid "Blackout Group Days" +msgstr "" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_order +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_route +msgid "Field Service Route" +msgstr "" + +#. module: fieldservice_route_availability +#. odoo-python +#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 +#, python-format +msgid "" +"The date %(date)s is a blackout day for field service operations on this " +"route" +msgstr "" From 38f2190d42e569224cf40481b685fd6bf314c980 Mon Sep 17 00:00:00 2001 From: bobrador Date: Mon, 23 Jun 2025 09:23:17 +0200 Subject: [PATCH 07/39] [IMP] fieldservice_route_availability: Consider ZIP code on blackout days for precise availability validation --- fieldservice_route_availability/README.rst | 4 +- .../__manifest__.py | 1 + .../models/__init__.py | 1 + .../models/fsm_blackout_day.py | 12 +++++ .../models/fsm_order.py | 14 ++++-- .../tests/test_route_availability.py | 16 +++++++ .../views/fsm_blackout_day_templates.xml | 47 +++++++++++++++++++ 7 files changed, 89 insertions(+), 6 deletions(-) create mode 100644 fieldservice_route_availability/models/fsm_blackout_day.py create mode 100644 fieldservice_route_availability/views/fsm_blackout_day_templates.xml diff --git a/fieldservice_route_availability/README.rst b/fieldservice_route_availability/README.rst index 746c312462..5ce0897cd6 100644 --- a/fieldservice_route_availability/README.rst +++ b/fieldservice_route_availability/README.rst @@ -67,9 +67,9 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Antoni Marroig + - Antoni Marroig Maintainers ----------- diff --git a/fieldservice_route_availability/__manifest__.py b/fieldservice_route_availability/__manifest__.py index 88c0d92a5c..57fd2e7080 100644 --- a/fieldservice_route_availability/__manifest__.py +++ b/fieldservice_route_availability/__manifest__.py @@ -17,5 +17,6 @@ ], "data": [ "views/fsm_route.xml", + "views/fsm_blackout_day_templates.xml", ], } diff --git a/fieldservice_route_availability/models/__init__.py b/fieldservice_route_availability/models/__init__.py index 9e985fd8b8..133fcb6dcf 100644 --- a/fieldservice_route_availability/models/__init__.py +++ b/fieldservice_route_availability/models/__init__.py @@ -2,3 +2,4 @@ from . import fsm_route from . import fsm_order +from . import fsm_blackout_day diff --git a/fieldservice_route_availability/models/fsm_blackout_day.py b/fieldservice_route_availability/models/fsm_blackout_day.py new file mode 100644 index 0000000000..42e1a672c7 --- /dev/null +++ b/fieldservice_route_availability/models/fsm_blackout_day.py @@ -0,0 +1,12 @@ +# Copyright 2025 APSL-Nagarro Bernat Obrador +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FieldServiceBlackoutDay(models.Model): + _inherit = "fsm.blackout.day" + + zip = fields.Char( + help="Postal code of the blackout day.", + ) diff --git a/fieldservice_route_availability/models/fsm_order.py b/fieldservice_route_availability/models/fsm_order.py index c2c3fde7e8..d2d81c9b2d 100644 --- a/fieldservice_route_availability/models/fsm_order.py +++ b/fieldservice_route_availability/models/fsm_order.py @@ -8,20 +8,26 @@ class FSMRoute(models.Model): _inherit = "fsm.order" - @api.constrains("fsm_route_id", "scheduled_date_start") + @api.constrains("fsm_route_id", "scheduled_date_start", "location_id") def check_black_out_days(self): for order in self: if order.fsm_route_id and order.scheduled_date_start: for group in order.fsm_route_id.fsm_blackout_group_ids: match = group.fsm_blackout_day_ids.filtered( - lambda x, order=order: x.date - == order.scheduled_date_start.date() + lambda x, order=order: ( + (not x.zip and x.date == order.scheduled_date_start.date()) + or ( + x.zip + and x.date == order.scheduled_date_start.date() + and x.zip == order.zip + ) + ) ) if match: raise ValidationError( _( "The date %(date)s is a blackout day for field" - " service operations on this route" + " service operations on this route." ) % { "date": order.scheduled_date_start.date().strftime( diff --git a/fieldservice_route_availability/tests/test_route_availability.py b/fieldservice_route_availability/tests/test_route_availability.py index d8c9abdb7b..990969a2ee 100644 --- a/fieldservice_route_availability/tests/test_route_availability.py +++ b/fieldservice_route_availability/tests/test_route_availability.py @@ -51,3 +51,19 @@ def test_validate_blackout_days(self): order_form.save() order_form.scheduled_date_start = fields.Datetime.today() + timedelta(days=1) self.assertTrue(order_form.save()) + + def test_validate_blackout_days_with_zip(self): + self.blackout_group.fsm_blackout_day_ids[0].zip = "12345" + + self.test_location.zip = "12345" + order_form = Form(self.env["fsm.order"]) + order_form.location_id = self.test_location + order_form.scheduled_date_start = fields.Datetime.today() + with self.assertRaises(ValidationError): + order_form.save() + + self.test_location.zip = "99999" + order_form = Form(self.env["fsm.order"]) + order_form.location_id = self.test_location + order_form.scheduled_date_start = fields.Datetime.today() + self.assertTrue(order_form.save()) diff --git a/fieldservice_route_availability/views/fsm_blackout_day_templates.xml b/fieldservice_route_availability/views/fsm_blackout_day_templates.xml new file mode 100644 index 0000000000..2d0ea8c8fb --- /dev/null +++ b/fieldservice_route_availability/views/fsm_blackout_day_templates.xml @@ -0,0 +1,47 @@ + + + + + fsm.blackout.day.tree.inhetir + fsm.blackout.day + + + + + + + + + + fsm.blackout.day.form.inhetir + fsm.blackout.day + + + + + + + + + + fsm.blackout.group.form.inhetir + fsm.blackout.group + + + + + + + + + + From 7c6ee0ba6c3976a4e74ca43f24ecd93a593505d2 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 25 Jun 2025 05:27:19 +0000 Subject: [PATCH 08/39] [UPD] Update fieldservice_route_availability.pot --- .../i18n/fieldservice_route_availability.pot | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/fieldservice_route_availability/i18n/fieldservice_route_availability.pot b/fieldservice_route_availability/i18n/fieldservice_route_availability.pot index 9375dbe54c..abf304dfe6 100644 --- a/fieldservice_route_availability/i18n/fieldservice_route_availability.pot +++ b/fieldservice_route_availability/i18n/fieldservice_route_availability.pot @@ -13,6 +13,11 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day +msgid "Blackout Days (No Service)" +msgstr "" + #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids msgid "Blackout Group Days" @@ -28,11 +33,21 @@ msgstr "" msgid "Field Service Route" msgstr "" +#. module: fieldservice_route_availability +#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Postal code of the blackout day." +msgstr "" + #. module: fieldservice_route_availability #. odoo-python #: code:addons/fieldservice_route_availability/models/fsm_order.py:0 #, python-format msgid "" "The date %(date)s is a blackout day for field service operations on this " -"route" +"route." +msgstr "" + +#. module: fieldservice_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Zip" msgstr "" From 126ca8cf076e7ea0fc043b4f1b233478a54ac181 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 25 Jun 2025 05:31:55 +0000 Subject: [PATCH 09/39] [BOT] post-merge updates --- fieldservice_route_availability/README.rst | 12 +++++--- .../__manifest__.py | 2 +- .../static/description/index.html | 28 +++++++++++-------- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/fieldservice_route_availability/README.rst b/fieldservice_route_availability/README.rst index 5ce0897cd6..4f300e6a7c 100644 --- a/fieldservice_route_availability/README.rst +++ b/fieldservice_route_availability/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 Route Availability ================================ @@ -7,13 +11,13 @@ Field Service Route Availability !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:e0fda6cb62bb314f65fbc827b92ff2e3df05871d319b11462991363c6657e6b8 + !! source digest: sha256:060c55c1c348cc9f3dffc29ccc7f31fe5763b98646fb14c38466d77b0b0bf7ed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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 @@ -67,9 +71,9 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Antoni Marroig + - Antoni Marroig Maintainers ----------- diff --git a/fieldservice_route_availability/__manifest__.py b/fieldservice_route_availability/__manifest__.py index 57fd2e7080..8637c76c9d 100644 --- a/fieldservice_route_availability/__manifest__.py +++ b/fieldservice_route_availability/__manifest__.py @@ -4,7 +4,7 @@ "name": "Field Service Route Availability", "summary": "Restricts blackout days for Scheduled Start (ETA) " "orders with the same date.", - "version": "17.0.1.0.0", + "version": "17.0.1.1.0", "category": "Field Service", "website": "https://github.com/OCA/field-service", "author": "APSL-Nagarro, Odoo Community Association (OCA)", diff --git a/fieldservice_route_availability/static/description/index.html b/fieldservice_route_availability/static/description/index.html index fd33358e9d..5f6b29038a 100644 --- a/fieldservice_route_availability/static/description/index.html +++ b/fieldservice_route_availability/static/description/index.html @@ -3,7 +3,7 @@ -Field Service Route Availability +README.rst -

-

Field Service Route Availability

+
+ + +Odoo Community Association + +
+

Field Service Route Availability

-

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

Restricts blackout days for Scheduled Start (ETA) orders with the same date

Table of contents

@@ -386,7 +391,7 @@

Field Service Route Availability

-

Usage

+

Usage

  1. Set up Blackout Days on Configuration > Blackout Groups and create or edit one with blackout days
  2. @@ -397,7 +402,7 @@

    Usage

-

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 @@ -405,15 +410,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL-Nagarro
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -437,5 +442,6 @@

Maintainers

+
From dbf58afa4257983186292bb60a465b89385cb700 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 25 Jun 2025 05:32:04 +0000 Subject: [PATCH 10/39] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: field-service-17.0/field-service-17.0-fieldservice_route_availability Translate-URL: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_route_availability/ --- fieldservice_route_availability/i18n/ca.po | 27 ++++++++++++++++--- fieldservice_route_availability/i18n/es.po | 27 ++++++++++++++++--- fieldservice_route_availability/i18n/it.po | 27 ++++++++++++++++--- fieldservice_route_availability/i18n/pt_BR.po | 17 +++++++++++- 4 files changed, 88 insertions(+), 10 deletions(-) diff --git a/fieldservice_route_availability/i18n/ca.po b/fieldservice_route_availability/i18n/ca.po index 25bce524ae..ccfe36e76f 100644 --- a/fieldservice_route_availability/i18n/ca.po +++ b/fieldservice_route_availability/i18n/ca.po @@ -16,6 +16,11 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day +msgid "Blackout Days (No Service)" +msgstr "" + #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids msgid "Blackout Group Days" @@ -31,13 +36,29 @@ msgstr "Comanda del Servei de Camp" msgid "Field Service Route" msgstr "Ruta del Servei de Camp" +#. module: fieldservice_route_availability +#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Postal code of the blackout day." +msgstr "" + #. module: fieldservice_route_availability #. odoo-python #: code:addons/fieldservice_route_availability/models/fsm_order.py:0 #, python-format msgid "" "The date %(date)s is a blackout day for field service operations on this " -"route" +"route." msgstr "" -"La data %(date)s és un dia d'interrupció per a les operacions del servei de " -"camp en aquest ruta" + +#. module: fieldservice_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Zip" +msgstr "" + +#, python-format +#~ msgid "" +#~ "The date %(date)s is a blackout day for field service operations on this " +#~ "route" +#~ msgstr "" +#~ "La data %(date)s és un dia d'interrupció per a les operacions del servei " +#~ "de camp en aquest ruta" diff --git a/fieldservice_route_availability/i18n/es.po b/fieldservice_route_availability/i18n/es.po index 5dc38ca74b..acaaaa3286 100644 --- a/fieldservice_route_availability/i18n/es.po +++ b/fieldservice_route_availability/i18n/es.po @@ -16,6 +16,11 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day +msgid "Blackout Days (No Service)" +msgstr "" + #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids msgid "Blackout Group Days" @@ -31,13 +36,29 @@ msgstr "Pedido de Servicio de Campo" msgid "Field Service Route" msgstr "Ubicación del Servicio de Campo" +#. module: fieldservice_route_availability +#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Postal code of the blackout day." +msgstr "" + #. module: fieldservice_route_availability #. odoo-python #: code:addons/fieldservice_route_availability/models/fsm_order.py:0 #, python-format msgid "" "The date %(date)s is a blackout day for field service operations on this " -"route" +"route." msgstr "" -"La fecha %(date)s es un día sin disponibilidad para las operaciones de " -"servicio de campo en esta ruta" + +#. module: fieldservice_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Zip" +msgstr "" + +#, python-format +#~ msgid "" +#~ "The date %(date)s is a blackout day for field service operations on this " +#~ "route" +#~ msgstr "" +#~ "La fecha %(date)s es un día sin disponibilidad para las operaciones de " +#~ "servicio de campo en esta ruta" diff --git a/fieldservice_route_availability/i18n/it.po b/fieldservice_route_availability/i18n/it.po index 20eaaa158c..0b1a4fde5f 100644 --- a/fieldservice_route_availability/i18n/it.po +++ b/fieldservice_route_availability/i18n/it.po @@ -16,6 +16,11 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.10.4\n" +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day +msgid "Blackout Days (No Service)" +msgstr "" + #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids msgid "Blackout Group Days" @@ -31,13 +36,29 @@ msgstr "Ordine assistenza sul campo" msgid "Field Service Route" msgstr "Percorso assistenza sul campo" +#. module: fieldservice_route_availability +#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Postal code of the blackout day." +msgstr "" + #. module: fieldservice_route_availability #. odoo-python #: code:addons/fieldservice_route_availability/models/fsm_order.py:0 #, python-format msgid "" "The date %(date)s is a blackout day for field service operations on this " -"route" +"route." msgstr "" -"Il giorno %(date)s è una data di sospensione per le operazioni di assistenza " -"sul campo su questo percorso" + +#. module: fieldservice_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Zip" +msgstr "" + +#, python-format +#~ msgid "" +#~ "The date %(date)s is a blackout day for field service operations on this " +#~ "route" +#~ msgstr "" +#~ "Il giorno %(date)s è una data di sospensione per le operazioni di " +#~ "assistenza sul campo su questo percorso" diff --git a/fieldservice_route_availability/i18n/pt_BR.po b/fieldservice_route_availability/i18n/pt_BR.po index 7bfb98ea19..935db5fe2e 100644 --- a/fieldservice_route_availability/i18n/pt_BR.po +++ b/fieldservice_route_availability/i18n/pt_BR.po @@ -14,6 +14,11 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +#. module: fieldservice_route_availability +#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day +msgid "Blackout Days (No Service)" +msgstr "" + #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids msgid "Blackout Group Days" @@ -29,11 +34,21 @@ msgstr "" msgid "Field Service Route" msgstr "" +#. module: fieldservice_route_availability +#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Postal code of the blackout day." +msgstr "" + #. module: fieldservice_route_availability #. odoo-python #: code:addons/fieldservice_route_availability/models/fsm_order.py:0 #, python-format msgid "" "The date %(date)s is a blackout day for field service operations on this " -"route" +"route." +msgstr "" + +#. module: fieldservice_route_availability +#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip +msgid "Zip" msgstr "" From f4ac560a1ec4345f9471e0e90b986275366e272c Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 25 Jun 2025 06:44:33 +0000 Subject: [PATCH 11/39] Translated using Weblate (Italian) Currently translated at 100.0% (7 of 7 strings) Translation: field-service-17.0/field-service-17.0-fieldservice_route_availability Translate-URL: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_route_availability/it/ --- fieldservice_route_availability/i18n/it.po | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fieldservice_route_availability/i18n/it.po b/fieldservice_route_availability/i18n/it.po index 0b1a4fde5f..015eaa180c 100644 --- a/fieldservice_route_availability/i18n/it.po +++ b/fieldservice_route_availability/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2025-04-29 19:24+0000\n" +"PO-Revision-Date: 2025-06-25 09:25+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -19,7 +19,7 @@ msgstr "" #. module: fieldservice_route_availability #: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day msgid "Blackout Days (No Service)" -msgstr "" +msgstr "Giorno di sospensione (nessun servizio)" #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids @@ -39,7 +39,7 @@ msgstr "Percorso assistenza sul campo" #. module: fieldservice_route_availability #: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip msgid "Postal code of the blackout day." -msgstr "" +msgstr "Codice postale del giorno di sospensione." #. module: fieldservice_route_availability #. odoo-python @@ -49,11 +49,13 @@ msgid "" "The date %(date)s is a blackout day for field service operations on this " "route." msgstr "" +"Il giorno %(date)s è una data di sospensione per le operazioni di assistenza " +"sul campo su questo percorso." #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip msgid "Zip" -msgstr "" +msgstr "CAP" #, python-format #~ msgid "" From db737d7905f951a4e737a35246887134a434dca6 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Thu, 26 Jun 2025 10:16:30 +0000 Subject: [PATCH 12/39] Translated using Weblate (Spanish) Currently translated at 100.0% (7 of 7 strings) Translation: field-service-17.0/field-service-17.0-fieldservice_route_availability Translate-URL: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_route_availability/es/ --- fieldservice_route_availability/i18n/es.po | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/fieldservice_route_availability/i18n/es.po b/fieldservice_route_availability/i18n/es.po index acaaaa3286..4d38910764 100644 --- a/fieldservice_route_availability/i18n/es.po +++ b/fieldservice_route_availability/i18n/es.po @@ -7,19 +7,20 @@ msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-04-23 06:22+0000\n" -"PO-Revision-Date: 2025-04-23 06:22+0000\n" -"Last-Translator: \n" +"PO-Revision-Date: 2025-06-26 12:25+0000\n" +"Last-Translator: Antoni Marroig Campomar \n" "Language-Team: \n" -"Language: \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.10.4\n" #. module: fieldservice_route_availability #: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day msgid "Blackout Days (No Service)" -msgstr "" +msgstr "Días sin servicio" #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids @@ -39,7 +40,7 @@ msgstr "Ubicación del Servicio de Campo" #. module: fieldservice_route_availability #: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip msgid "Postal code of the blackout day." -msgstr "" +msgstr "Código postal del día sin servicio." #. module: fieldservice_route_availability #. odoo-python @@ -49,11 +50,13 @@ msgid "" "The date %(date)s is a blackout day for field service operations on this " "route." msgstr "" +"La fecha %(date)s es un día sin disponibilidad para las operaciones de " +"servicio de campo en esta ruta." #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip msgid "Zip" -msgstr "" +msgstr "Código postal" #, python-format #~ msgid "" From 43bb2e992a7c9341ca06e7c9563c32bbfe734de2 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Thu, 26 Jun 2025 10:21:09 +0000 Subject: [PATCH 13/39] Translated using Weblate (Catalan) Currently translated at 100.0% (7 of 7 strings) Translation: field-service-17.0/field-service-17.0-fieldservice_route_availability Translate-URL: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_route_availability/ca/ --- fieldservice_route_availability/i18n/ca.po | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/fieldservice_route_availability/i18n/ca.po b/fieldservice_route_availability/i18n/ca.po index ccfe36e76f..17e084d53c 100644 --- a/fieldservice_route_availability/i18n/ca.po +++ b/fieldservice_route_availability/i18n/ca.po @@ -7,19 +7,20 @@ msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-04-23 06:22+0000\n" -"PO-Revision-Date: 2025-04-23 06:22+0000\n" -"Last-Translator: \n" +"PO-Revision-Date: 2025-06-26 12:25+0000\n" +"Last-Translator: Antoni Marroig Campomar \n" "Language-Team: \n" -"Language: \n" +"Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.10.4\n" #. module: fieldservice_route_availability #: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day msgid "Blackout Days (No Service)" -msgstr "" +msgstr "Dies sense servei" #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids @@ -39,7 +40,7 @@ msgstr "Ruta del Servei de Camp" #. module: fieldservice_route_availability #: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip msgid "Postal code of the blackout day." -msgstr "" +msgstr "Codi postal del dia sense servei." #. module: fieldservice_route_availability #. odoo-python @@ -49,11 +50,13 @@ msgid "" "The date %(date)s is a blackout day for field service operations on this " "route." msgstr "" +"La data %(date)s és un dia d'interrupció per a les operacions del servei de " +"camp en aquest ruta." #. module: fieldservice_route_availability #: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip msgid "Zip" -msgstr "" +msgstr "Codi postal" #, python-format #~ msgid "" From 17ca59ff8aeb94021e222a4c9208d3e5ba38019d Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Thu, 31 Jul 2025 13:09:02 +0200 Subject: [PATCH 14/39] [IMP] fieldservice_route_availability: pre-commit auto fixes --- .../views/fsm_blackout_day_templates.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/fieldservice_route_availability/views/fsm_blackout_day_templates.xml b/fieldservice_route_availability/views/fsm_blackout_day_templates.xml index 2d0ea8c8fb..2f9c6c2fa4 100644 --- a/fieldservice_route_availability/views/fsm_blackout_day_templates.xml +++ b/fieldservice_route_availability/views/fsm_blackout_day_templates.xml @@ -1,6 +1,5 @@ - fsm.blackout.day.tree.inhetir fsm.blackout.day @@ -9,7 +8,6 @@ ref="fieldservice_availability.view_fsm_blackout_day_tree" /> - @@ -23,7 +21,6 @@ ref="fieldservice_availability.view_fsm_blackout_day_form" /> - @@ -37,11 +34,9 @@ ref="fieldservice_availability.view_fsm_blackout_group_form" /> - - From 40be76c4070a3e1c7003abdb15351788ce7f4941 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Thu, 31 Jul 2025 14:38:05 +0200 Subject: [PATCH 15/39] [MIG] fieldservice_route_availability: Migration to 18.0 --- fieldservice_route_availability/README.rst | 20 +++---- .../__manifest__.py | 2 +- .../models/fsm_order.py | 16 ++---- .../static/description/index.html | 30 ++++------ .../tests/test_route_availability.py | 56 ++++++++++++------- .../views/fsm_blackout_day_templates.xml | 2 +- 6 files changed, 64 insertions(+), 62 deletions(-) diff --git a/fieldservice_route_availability/README.rst b/fieldservice_route_availability/README.rst index 4f300e6a7c..ce128ca826 100644 --- a/fieldservice_route_availability/README.rst +++ b/fieldservice_route_availability/README.rst @@ -1,7 +1,3 @@ -.. image:: https://odoo-community.org/readme-banner-image - :target: https://odoo-community.org/get-involved?utm_source=readme - :alt: Odoo Community Association - ================================ Field Service Route Availability ================================ @@ -17,17 +13,17 @@ Field Service Route Availability .. |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/license-AGPL--3-blue.png +.. |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_route_availability + :target: https://github.com/OCA/field-service/tree/18.0/fieldservice_route_availability :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_route_availability + :target: https://translation.odoo-community.org/projects/field-service-18-0/field-service-18-0-fieldservice_route_availability :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| @@ -56,7 +52,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. @@ -71,9 +67,9 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Antoni Marroig + - Antoni Marroig Maintainers ----------- @@ -96,6 +92,6 @@ Current `maintainer `__: |maintainer-peluko00| -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_route_availability/__manifest__.py b/fieldservice_route_availability/__manifest__.py index 8637c76c9d..44869f8206 100644 --- a/fieldservice_route_availability/__manifest__.py +++ b/fieldservice_route_availability/__manifest__.py @@ -4,7 +4,7 @@ "name": "Field Service Route Availability", "summary": "Restricts blackout days for Scheduled Start (ETA) " "orders with the same date.", - "version": "17.0.1.1.0", + "version": "18.0.1.0.0", "category": "Field Service", "website": "https://github.com/OCA/field-service", "author": "APSL-Nagarro, Odoo Community Association (OCA)", diff --git a/fieldservice_route_availability/models/fsm_order.py b/fieldservice_route_availability/models/fsm_order.py index d2d81c9b2d..216e38411e 100644 --- a/fieldservice_route_availability/models/fsm_order.py +++ b/fieldservice_route_availability/models/fsm_order.py @@ -1,14 +1,14 @@ # Copyright 2025 APSL-Nagarro Antoni Marroig # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import _, api, models +from odoo import api, models from odoo.exceptions import ValidationError +from odoo.tools.misc import format_date class FSMRoute(models.Model): _inherit = "fsm.order" - @api.constrains("fsm_route_id", "scheduled_date_start", "location_id") + @api.constrains("scheduled_date_start", "location_id") def check_black_out_days(self): for order in self: if order.fsm_route_id and order.scheduled_date_start: @@ -25,13 +25,9 @@ def check_black_out_days(self): ) if match: raise ValidationError( - _( + self.env._( "The date %(date)s is a blackout day for field" - " service operations on this route." + " service operations on this route.", + date=format_date(order.env, order.scheduled_date_start), ) - % { - "date": order.scheduled_date_start.date().strftime( - "%d/%m/%Y" - ) - } ) diff --git a/fieldservice_route_availability/static/description/index.html b/fieldservice_route_availability/static/description/index.html index 5f6b29038a..64a00c2699 100644 --- a/fieldservice_route_availability/static/description/index.html +++ b/fieldservice_route_availability/static/description/index.html @@ -3,7 +3,7 @@ -README.rst +Field Service Route Availability -
+
+

Field Service Route Availability

- - -Odoo Community Association - -
-

Field Service Route Availability

-

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

Restricts blackout days for Scheduled Start (ETA) orders with the same date

Table of contents

@@ -391,7 +386,7 @@

Field Service Route Availability

-

Usage

+

Usage

  1. Set up Blackout Days on Configuration > Blackout Groups and create or edit one with blackout days
  2. @@ -402,23 +397,23 @@

    Usage

-

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 -feedback.

+feedback.

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL-Nagarro
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -437,11 +432,10 @@

Maintainers

promote its widespread use.

Current maintainer:

peluko00

-

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_route_availability/tests/test_route_availability.py b/fieldservice_route_availability/tests/test_route_availability.py index 990969a2ee..bdfb668a59 100644 --- a/fieldservice_route_availability/tests/test_route_availability.py +++ b/fieldservice_route_availability/tests/test_route_availability.py @@ -5,13 +5,14 @@ from odoo import fields from odoo.exceptions import ValidationError -from odoo.tests import Form, common +from odoo.tests import common class TestRouteAvailability(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() + cls.Order = cls.env["fsm.order"] cls.test_person = cls.env.ref("fieldservice.test_person") cls.test_location = cls.env.ref("fieldservice.test_location") cls.blackout_group = cls.env["fsm.blackout.group"].create( @@ -43,27 +44,42 @@ def setUpClass(cls): cls.test_location.fsm_route_id = cls.fsm_route_id.id cls.fsm_route_id.fsm_blackout_group_ids = [cls.blackout_group.id] - def test_validate_blackout_days(self): - order_form = Form(self.env["fsm.order"]) - order_form.location_id = self.test_location - order_form.scheduled_date_start = fields.Datetime.today() - with self.assertRaises(ValidationError): - order_form.save() - order_form.scheduled_date_start = fields.Datetime.today() + timedelta(days=1) - self.assertTrue(order_form.save()) + def test_blackout_day_validation(self): + with self.assertRaisesRegex(ValidationError, r"The date .+ is a blackout day"): + self.Order.create( + { + "location_id": self.test_location.id, + "scheduled_date_start": fields.Datetime.now(), + } + ) - def test_validate_blackout_days_with_zip(self): - self.blackout_group.fsm_blackout_day_ids[0].zip = "12345" + self.assertTrue( + self.Order.create( + { + "location_id": self.test_location.id, + "scheduled_date_start": fields.Datetime.now() + timedelta(days=1), + } + ) + ) + def test_blackout_day_with_zip(self): + self.blackout_group.fsm_blackout_day_ids[0].zip = "12345" self.test_location.zip = "12345" - order_form = Form(self.env["fsm.order"]) - order_form.location_id = self.test_location - order_form.scheduled_date_start = fields.Datetime.today() - with self.assertRaises(ValidationError): - order_form.save() + + with self.assertRaisesRegex(ValidationError, r"The date .+ is a blackout day"): + self.Order.create( + { + "location_id": self.test_location.id, + "scheduled_date_start": fields.Datetime.now(), + } + ) self.test_location.zip = "99999" - order_form = Form(self.env["fsm.order"]) - order_form.location_id = self.test_location - order_form.scheduled_date_start = fields.Datetime.today() - self.assertTrue(order_form.save()) + self.assertTrue( + self.Order.create( + { + "location_id": self.test_location.id, + "scheduled_date_start": fields.Datetime.now(), + } + ) + ) diff --git a/fieldservice_route_availability/views/fsm_blackout_day_templates.xml b/fieldservice_route_availability/views/fsm_blackout_day_templates.xml index 2f9c6c2fa4..dd20b4b22d 100644 --- a/fieldservice_route_availability/views/fsm_blackout_day_templates.xml +++ b/fieldservice_route_availability/views/fsm_blackout_day_templates.xml @@ -34,7 +34,7 @@ ref="fieldservice_availability.view_fsm_blackout_group_form" /> - + From 6c2952c799756493660af5741309560c74110920 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 21 Aug 2025 13:01:00 +0000 Subject: [PATCH 16/39] [UPD] Update fieldservice_route_availability.pot --- .../i18n/fieldservice_route_availability.pot | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fieldservice_route_availability/i18n/fieldservice_route_availability.pot b/fieldservice_route_availability/i18n/fieldservice_route_availability.pot index abf304dfe6..72f64267cf 100644 --- a/fieldservice_route_availability/i18n/fieldservice_route_availability.pot +++ b/fieldservice_route_availability/i18n/fieldservice_route_availability.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" @@ -41,7 +41,6 @@ msgstr "" #. module: fieldservice_route_availability #. odoo-python #: code:addons/fieldservice_route_availability/models/fsm_order.py:0 -#, python-format msgid "" "The date %(date)s is a blackout day for field service operations on this " "route." From 510c13424c01d90380eb99aefbc4161bda160011 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 21 Aug 2025 13:04:46 +0000 Subject: [PATCH 17/39] [BOT] post-merge updates --- fieldservice_route_availability/README.rst | 12 +++++--- .../static/description/index.html | 28 +++++++++++-------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/fieldservice_route_availability/README.rst b/fieldservice_route_availability/README.rst index ce128ca826..d3d489a8e3 100644 --- a/fieldservice_route_availability/README.rst +++ b/fieldservice_route_availability/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 Route Availability ================================ @@ -7,13 +11,13 @@ Field Service Route Availability !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:060c55c1c348cc9f3dffc29ccc7f31fe5763b98646fb14c38466d77b0b0bf7ed + !! source digest: sha256:f97a0f9f48a2f234098d54456543256dfe5c5806034588eb2e0756823e13f3d2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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 @@ -67,9 +71,9 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Antoni Marroig + - Antoni Marroig Maintainers ----------- diff --git a/fieldservice_route_availability/static/description/index.html b/fieldservice_route_availability/static/description/index.html index 64a00c2699..1c0fba8049 100644 --- a/fieldservice_route_availability/static/description/index.html +++ b/fieldservice_route_availability/static/description/index.html @@ -3,7 +3,7 @@ -Field Service Route Availability +README.rst -
-

Field Service Route Availability

+
+ + +Odoo Community Association + +
+

Field Service Route Availability

-

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

Restricts blackout days for Scheduled Start (ETA) orders with the same date

Table of contents

@@ -386,7 +391,7 @@

Field Service Route Availability

-

Usage

+

Usage

  1. Set up Blackout Days on Configuration > Blackout Groups and create or edit one with blackout days
  2. @@ -397,7 +402,7 @@

    Usage

-

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 @@ -405,15 +410,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL-Nagarro
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -437,5 +442,6 @@

Maintainers

+
From 072ca5e5adedead8e2d57916bf55d3b26de99e0f Mon Sep 17 00:00:00 2001 From: linto-antony Date: Mon, 20 Jul 2026 13:53:09 +0530 Subject: [PATCH 18/39] [MIG] fieldservice_route_availability: Migration to 19.0 --- fieldservice_route_availability/README.rst | 10 +++--- .../__manifest__.py | 2 +- .../models/fsm_order.py | 36 +++++++++---------- .../static/description/index.html | 6 ++-- .../tests/test_route_availability.py | 8 ++--- 5 files changed, 30 insertions(+), 32 deletions(-) diff --git a/fieldservice_route_availability/README.rst b/fieldservice_route_availability/README.rst index d3d489a8e3..e5f48d26ca 100644 --- a/fieldservice_route_availability/README.rst +++ b/fieldservice_route_availability/README.rst @@ -21,13 +21,13 @@ Field Service Route Availability :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_route_availability + :target: https://github.com/OCA/field-service/tree/19.0/fieldservice_route_availability :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_route_availability + :target: https://translation.odoo-community.org/projects/field-service-19-0/field-service-19-0-fieldservice_route_availability :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| @@ -56,7 +56,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. @@ -96,6 +96,6 @@ Current `maintainer `__: |maintainer-peluko00| -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_route_availability/__manifest__.py b/fieldservice_route_availability/__manifest__.py index 44869f8206..0403204894 100644 --- a/fieldservice_route_availability/__manifest__.py +++ b/fieldservice_route_availability/__manifest__.py @@ -4,7 +4,7 @@ "name": "Field Service Route Availability", "summary": "Restricts blackout days for Scheduled Start (ETA) " "orders with the same date.", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "category": "Field Service", "website": "https://github.com/OCA/field-service", "author": "APSL-Nagarro, Odoo Community Association (OCA)", diff --git a/fieldservice_route_availability/models/fsm_order.py b/fieldservice_route_availability/models/fsm_order.py index 216e38411e..8ea0b2e0fe 100644 --- a/fieldservice_route_availability/models/fsm_order.py +++ b/fieldservice_route_availability/models/fsm_order.py @@ -11,23 +11,21 @@ class FSMRoute(models.Model): @api.constrains("scheduled_date_start", "location_id") def check_black_out_days(self): for order in self: - if order.fsm_route_id and order.scheduled_date_start: - for group in order.fsm_route_id.fsm_blackout_group_ids: - match = group.fsm_blackout_day_ids.filtered( - lambda x, order=order: ( - (not x.zip and x.date == order.scheduled_date_start.date()) - or ( - x.zip - and x.date == order.scheduled_date_start.date() - and x.zip == order.zip - ) - ) + if not (order.fsm_route_id and order.scheduled_date_start): + continue + order_date, order_zip = order.scheduled_date_start.date(), order.zip + blackout_days = ( + order.fsm_route_id.fsm_blackout_group_ids.fsm_blackout_day_ids + ) + match = blackout_days.filtered( + lambda x, d=order_date, z=order_zip: x.date == d + and (not x.zip or x.zip == z) + ) + if match: + raise ValidationError( + self.env._( + "The date %(date)s is a blackout day for field" + " service operations on this route.", + date=format_date(order.env, order.scheduled_date_start), ) - if match: - raise ValidationError( - self.env._( - "The date %(date)s is a blackout day for field" - " service operations on this route.", - date=format_date(order.env, order.scheduled_date_start), - ) - ) + ) diff --git a/fieldservice_route_availability/static/description/index.html b/fieldservice_route_availability/static/description/index.html index 1c0fba8049..2898c4b62b 100644 --- a/fieldservice_route_availability/static/description/index.html +++ b/fieldservice_route_availability/static/description/index.html @@ -374,7 +374,7 @@

Field Service Route Availability

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:f97a0f9f48a2f234098d54456543256dfe5c5806034588eb2e0756823e13f3d2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

Restricts blackout days for Scheduled Start (ETA) orders with the same date

Table of contents

@@ -406,7 +406,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

promote its widespread use.

Current maintainer:

peluko00

-

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_route_availability/tests/test_route_availability.py b/fieldservice_route_availability/tests/test_route_availability.py index bdfb668a59..e35e005bfd 100644 --- a/fieldservice_route_availability/tests/test_route_availability.py +++ b/fieldservice_route_availability/tests/test_route_availability.py @@ -5,16 +5,16 @@ from odoo import fields from odoo.exceptions import ValidationError -from odoo.tests import common +from odoo.addons.fieldservice.tests.test_fsm_common import FSMCommon -class TestRouteAvailability(common.TransactionCase): + +class TestRouteAvailability(FSMCommon): @classmethod def setUpClass(cls): super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) cls.Order = cls.env["fsm.order"] - cls.test_person = cls.env.ref("fieldservice.test_person") - cls.test_location = cls.env.ref("fieldservice.test_location") cls.blackout_group = cls.env["fsm.blackout.group"].create( { "name": "Test Blackout Group", From 0290aa15a01d46511df1178e6602c6454fc1fd23 Mon Sep 17 00:00:00 2001 From: Patryk Pyczko Date: Wed, 5 Feb 2025 14:48:59 +0100 Subject: [PATCH 19/39] [15.0][ADD] fieldservice_availability: New module fieldservice_availability --- fieldservice_availability/README.rst | 96 ++++ fieldservice_availability/__init__.py | 3 + fieldservice_availability/__manifest__.py | 24 + fieldservice_availability/i18n/ca.po | 193 ++++++++ fieldservice_availability/i18n/es.po | 193 ++++++++ .../i18n/fieldservice_availability.pot | 189 ++++++++ fieldservice_availability/models/__init__.py | 5 + .../models/fsm_blackout_day.py | 20 + .../models/fsm_delivery_time_range.py | 39 ++ .../models/fsm_stress_day.py | 20 + .../readme/CONTRIBUTORS.rst | 2 + .../readme/DESCRIPTION.rst | 7 + fieldservice_availability/readme/USAGE.rst | 1 + .../security/ir.model.access.csv | 13 + .../static/description/icon.png | Bin 0 -> 17808 bytes .../static/description/index.html | 437 ++++++++++++++++++ fieldservice_availability/tests/__init__.py | 3 + .../tests/test_fsm_delivery_time_range.py | 41 ++ .../views/fsm_blackout_day_templates.xml | 44 ++ .../fsm_delivery_time_range_templates.xml | 50 ++ .../views/fsm_stress_day_templates.xml | 44 ++ fieldservice_availability/views/menu.xml | 39 ++ 22 files changed, 1463 insertions(+) create mode 100644 fieldservice_availability/README.rst create mode 100644 fieldservice_availability/__init__.py create mode 100644 fieldservice_availability/__manifest__.py create mode 100644 fieldservice_availability/i18n/ca.po create mode 100644 fieldservice_availability/i18n/es.po create mode 100644 fieldservice_availability/i18n/fieldservice_availability.pot create mode 100644 fieldservice_availability/models/__init__.py create mode 100644 fieldservice_availability/models/fsm_blackout_day.py create mode 100644 fieldservice_availability/models/fsm_delivery_time_range.py create mode 100644 fieldservice_availability/models/fsm_stress_day.py create mode 100644 fieldservice_availability/readme/CONTRIBUTORS.rst create mode 100644 fieldservice_availability/readme/DESCRIPTION.rst create mode 100644 fieldservice_availability/readme/USAGE.rst create mode 100644 fieldservice_availability/security/ir.model.access.csv create mode 100644 fieldservice_availability/static/description/icon.png create mode 100644 fieldservice_availability/static/description/index.html create mode 100644 fieldservice_availability/tests/__init__.py create mode 100644 fieldservice_availability/tests/test_fsm_delivery_time_range.py create mode 100644 fieldservice_availability/views/fsm_blackout_day_templates.xml create mode 100644 fieldservice_availability/views/fsm_delivery_time_range_templates.xml create mode 100644 fieldservice_availability/views/fsm_stress_day_templates.xml create mode 100644 fieldservice_availability/views/menu.xml diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst new file mode 100644 index 0000000000..d878f0e0b7 --- /dev/null +++ b/fieldservice_availability/README.rst @@ -0,0 +1,96 @@ +========================= +Fieldservice Availability +========================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:2a9639ee2b8e8c0fbcb6afd0bd5ad682e64856a8fbdbe47f9da3d62e859321ce + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/15.0/fieldservice_availability + :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-15-0/field-service-15-0-fieldservice_availability + :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=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments. + +- **Blackout Days (`fsm.blackout.day`)**: Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures). +- **Stress Days (`fsm.stress.day`)**: Indicate dates with increased service demand (e.g., peak business periods requiring additional workforce). +- **Delivery Time Ranges (`fsm.delivery.time.range`)**: Define available time slots for scheduling field service operations. + +This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field service workflows. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Navigate to Field Service > Configuration > Scheduling. Once there, you can select `Delivery Time Ranges`, `Blackout Days` or `Festive Days` to create new records. + +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 +~~~~~~~ + +* APSL-Nagarro + +Contributors +~~~~~~~~~~~~ + +* `APSL-Nagarro `_: + * Patryk Pyczko + +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-ppyczko| image:: https://github.com/ppyczko.png?size=40px + :target: https://github.com/ppyczko + :alt: ppyczko + +Current `maintainer `__: + +|maintainer-ppyczko| + +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_availability/__init__.py b/fieldservice_availability/__init__.py new file mode 100644 index 0000000000..31660d6a96 --- /dev/null +++ b/fieldservice_availability/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/fieldservice_availability/__manifest__.py b/fieldservice_availability/__manifest__.py new file mode 100644 index 0000000000..0be5ca01f1 --- /dev/null +++ b/fieldservice_availability/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2025 Patryk Pyczko (APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Fieldservice Availability", + "version": "15.0.1.0.0", + "summary": "Provides models for defining blackout days, stress days, " + "and delivery time ranges for FSM availability management.", + "category": "Field Service", + "website": "https://github.com/OCA/field-service", + "author": "APSL-Nagarro, Odoo Community Association (OCA)", + "maintainers": ["ppyczko"], + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["fieldservice_route"], + "data": [ + "security/ir.model.access.csv", + "views/fsm_blackout_day_templates.xml", + "views/fsm_delivery_time_range_templates.xml", + "views/fsm_stress_day_templates.xml", + "views/menu.xml", + ], +} diff --git a/fieldservice_availability/i18n/ca.po b/fieldservice_availability/i18n/ca.po new file mode 100644 index 0000000000..37197b9e3e --- /dev/null +++ b/fieldservice_availability/i18n/ca.po @@ -0,0 +1,193 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_availability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-02-26 06:51+0000\n" +"PO-Revision-Date: 2025-02-26 06:51+0000\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_availability +#: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_blackout_day_unique_blackout_day +msgid "A blackout day with this date already exists!" +msgstr "Ja existeix un dia de bloqueig amb aquesta data!" + +#. module: fieldservice_availability +#: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_stress_day_unique_stress_day +msgid "A stress day with this date already exists!" +msgstr "Ja existeix un dia d'alta demanda amb aquesta data!" + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_days +msgid "Add a Field Service Blackout Day here." +msgstr "Afegeix un dia de bloqueig del servei de camp aquí." + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_delivery_time_range +msgid "Add a Field Service Delivery Time Range here." +msgstr "Afegeix un interval de temps de lliurament de serveis aquí." + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_stress_days +msgid "Add a Field Service Stress Day here." +msgstr "Afegeix un dia d'alta demanda del servei de camp aquí." + +#. module: fieldservice_availability +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_config_availability +msgid "Availability" +msgstr "Disponibilitat" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__date +msgid "Blackout Day" +msgstr "Dia de bloqueig" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_days +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_days_root +msgid "Blackout Days" +msgstr "Dies de bloqueig" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_blackout_day +msgid "Blackout Days (No Service)" +msgstr "Dies de bloqueig (Sense servei)" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_uid +msgid "Created by" +msgstr "Creat per" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_date +msgid "Created on" +msgstr "Creat el" + +#. module: fieldservice_availability +#: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__sequence +msgid "Customize the order of time ranges. Lower numbers are shown first." +msgstr "" +"Personalitza l'ordre dels intervals de temps. Els números més baixos es " +"mostren primer." + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_delivery_time_range +#: model_terms:ir.ui.view,arch_db:fieldservice_availability.view_fsm_delivery_time_range_form +msgid "Delivery Time Range" +msgstr "Interval de Temps de Lliurament" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_delivery_time_range +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_delivery_time_range +msgid "Delivery Time Ranges" +msgstr "Intervals de Temps de Lliurament" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__name +msgid "Description" +msgstr "Descripció" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__display_name +msgid "Display Name" +msgstr "Nom de Mostra" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__end_time +msgid "End Time" +msgstr "Hora de Finalització" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_stress_day +msgid "High-Demand Days" +msgstr "Dies d'alta demanda" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id +msgid "ID" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day____last_update +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range____last_update +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day____last_update +msgid "Last Modified on" +msgstr "Última Modificació el" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_uid +msgid "Last Updated by" +msgstr "Última Actualització per" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_date +msgid "Last Updated on" +msgstr "Última Actualització el" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__name +msgid "Name" +msgstr "Nom" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__route_id +msgid "Route" +msgstr "Ruta" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__sequence +msgid "Sequence" +msgstr "Seqüència" + +#. module: fieldservice_availability +#: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__route_id +msgid "" +"Specific route this time range applies to. Leave empty for global time " +"ranges." +msgstr "" +"Ruta específica a la qual s'aplica aquest interval de temps. Deixa buit per " +"a intervals de temps globals." + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__start_time +msgid "Start Time" +msgstr "Hora d'Inici" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__date +msgid "Stress Day" +msgstr "Dia d'alta demanda" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_stress_days +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_stress_days_root +msgid "Stress Days" +msgstr "Dies d'alta demanda" + +#. module: fieldservice_availability +#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 +#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 +#, python-format +msgid "The start time must be earlier than the end time." +msgstr "L'hora d'inici ha de ser anterior a l'hora de finalització." diff --git a/fieldservice_availability/i18n/es.po b/fieldservice_availability/i18n/es.po new file mode 100644 index 0000000000..b3b1e0fa2f --- /dev/null +++ b/fieldservice_availability/i18n/es.po @@ -0,0 +1,193 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_availability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-02-26 06:51+0000\n" +"PO-Revision-Date: 2025-02-26 06:51+0000\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_availability +#: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_blackout_day_unique_blackout_day +msgid "A blackout day with this date already exists!" +msgstr "¡Ya existe un día de bloqueo con esta fecha!" + +#. module: fieldservice_availability +#: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_stress_day_unique_stress_day +msgid "A stress day with this date already exists!" +msgstr "¡Ya existe un día de alta demanda con esta fecha!" + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_days +msgid "Add a Field Service Blackout Day here." +msgstr "Añade un día de bloqueo del servicio de campo aquí." + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_delivery_time_range +msgid "Add a Field Service Delivery Time Range here." +msgstr "Añade un rango de tiempo de entrega de servicio de campo aquí." + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_stress_days +msgid "Add a Field Service Stress Day here." +msgstr "Añade un día de alta demanda del servicio de campo aquí." + +#. module: fieldservice_availability +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_config_availability +msgid "Availability" +msgstr "Disponibilidad" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__date +msgid "Blackout Day" +msgstr "Día de bloqueo" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_days +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_days_root +msgid "Blackout Days" +msgstr "Días de bloqueo" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_blackout_day +msgid "Blackout Days (No Service)" +msgstr "Días de bloqueo (Sin Servicio)" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: fieldservice_availability +#: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__sequence +msgid "Customize the order of time ranges. Lower numbers are shown first." +msgstr "" +"Personaliza el orden de los rangos de tiempo. Los números más bajos se " +"muestran primero." + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_delivery_time_range +#: model_terms:ir.ui.view,arch_db:fieldservice_availability.view_fsm_delivery_time_range_form +msgid "Delivery Time Range" +msgstr "Rango de Tiempo de Entrega" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_delivery_time_range +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_delivery_time_range +msgid "Delivery Time Ranges" +msgstr "Rangos de Tiempo de Entrega" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__name +msgid "Description" +msgstr "Descripción" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__display_name +msgid "Display Name" +msgstr "Nombre para Mostrar" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__end_time +msgid "End Time" +msgstr "Hora de Fin" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_stress_day +msgid "High-Demand Days" +msgstr "Días de Alta Demanda" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id +msgid "ID" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day____last_update +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range____last_update +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_uid +msgid "Last Updated by" +msgstr "Última Actualización por" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_date +msgid "Last Updated on" +msgstr "Última Actualización el" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__name +msgid "Name" +msgstr "Nombre" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__route_id +msgid "Route" +msgstr "Ruta" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__sequence +msgid "Sequence" +msgstr "Secuencia" + +#. module: fieldservice_availability +#: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__route_id +msgid "" +"Specific route this time range applies to. Leave empty for global time " +"ranges." +msgstr "" +"Ruta específica a la que se aplica este rango de tiempo. Dejar vacío para " +"rangos de tiempo globales." + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__start_time +msgid "Start Time" +msgstr "Hora de Inicio" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__date +msgid "Stress Day" +msgstr "Día de alta demanda" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_stress_days +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_stress_days_root +msgid "Stress Days" +msgstr "Días de alta demanda" + +#. module: fieldservice_availability +#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 +#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 +#, python-format +msgid "The start time must be earlier than the end time." +msgstr "La hora de inicio debe ser anterior a la hora de fin." diff --git a/fieldservice_availability/i18n/fieldservice_availability.pot b/fieldservice_availability/i18n/fieldservice_availability.pot new file mode 100644 index 0000000000..e1f00d1b14 --- /dev/null +++ b/fieldservice_availability/i18n/fieldservice_availability.pot @@ -0,0 +1,189 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_availability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-02-26 06:52+0000\n" +"PO-Revision-Date: 2025-02-26 06:52+0000\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_availability +#: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_blackout_day_unique_blackout_day +msgid "A blackout day with this date already exists!" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_stress_day_unique_stress_day +msgid "A stress day with this date already exists!" +msgstr "" + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_days +msgid "Add a Field Service Blackout Day here." +msgstr "" + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_delivery_time_range +msgid "Add a Field Service Delivery Time Range here." +msgstr "" + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_stress_days +msgid "Add a Field Service Stress Day here." +msgstr "" + +#. module: fieldservice_availability +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_config_availability +msgid "Availability" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__date +msgid "Blackout Day" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_days +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_days_root +msgid "Blackout Days" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_blackout_day +msgid "Blackout Days (No Service)" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_uid +msgid "Created by" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_date +msgid "Created on" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__sequence +msgid "Customize the order of time ranges. Lower numbers are shown first." +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_delivery_time_range +#: model_terms:ir.ui.view,arch_db:fieldservice_availability.view_fsm_delivery_time_range_form +msgid "Delivery Time Range" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_delivery_time_range +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_delivery_time_range +msgid "Delivery Time Ranges" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__name +msgid "Description" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__display_name +msgid "Display Name" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__end_time +msgid "End Time" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_stress_day +msgid "High-Demand Days" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id +msgid "ID" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day____last_update +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range____last_update +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day____last_update +msgid "Last Modified on" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_date +msgid "Last Updated on" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__name +msgid "Name" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__route_id +msgid "Route" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__sequence +msgid "Sequence" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__route_id +msgid "" +"Specific route this time range applies to. Leave empty for global time " +"ranges." +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__start_time +msgid "Start Time" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__date +msgid "Stress Day" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_stress_days +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_stress_days_root +msgid "Stress Days" +msgstr "" + +#. module: fieldservice_availability +#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 +#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 +#, python-format +msgid "The start time must be earlier than the end time." +msgstr "" diff --git a/fieldservice_availability/models/__init__.py b/fieldservice_availability/models/__init__.py new file mode 100644 index 0000000000..34ea55b037 --- /dev/null +++ b/fieldservice_availability/models/__init__.py @@ -0,0 +1,5 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import fsm_blackout_day +from . import fsm_delivery_time_range +from . import fsm_stress_day diff --git a/fieldservice_availability/models/fsm_blackout_day.py b/fieldservice_availability/models/fsm_blackout_day.py new file mode 100644 index 0000000000..1bde49c21b --- /dev/null +++ b/fieldservice_availability/models/fsm_blackout_day.py @@ -0,0 +1,20 @@ +# Copyright 2025 Patryk Pyczko (APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FieldServiceBlackoutDay(models.Model): + _name = "fsm.blackout.day" + _description = "Blackout Days (No Service)" + + name = fields.Char(string="Description", required=True) + date = fields.Date(string="Blackout Day", required=True) + + _sql_constraints = [ + ( + "unique_blackout_day", + "unique(date)", + "A blackout day with this date already exists!", + ) + ] diff --git a/fieldservice_availability/models/fsm_delivery_time_range.py b/fieldservice_availability/models/fsm_delivery_time_range.py new file mode 100644 index 0000000000..e91d7ac79d --- /dev/null +++ b/fieldservice_availability/models/fsm_delivery_time_range.py @@ -0,0 +1,39 @@ +# Copyright 2025 Patryk Pyczko (APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class FSMDeliveryTimeRange(models.Model): + _name = "fsm.delivery.time.range" + _description = "Delivery Time Range" + _order = "sequence, start_time asc" + + name = fields.Char(compute="_compute_name", store=True) + start_time = fields.Float(required=True) + end_time = fields.Float(required=True) + route_id = fields.Many2one( + "fsm.route", + string="Route", + help="Specific route this time range applies to. Leave empty for global time ranges.", + ) + sequence = fields.Integer( + default=10, + help="Customize the order of time ranges. Lower numbers are shown first.", + ) + + @api.depends("start_time", "end_time") + def _compute_name(self): + for record in self: + start = "{:02d}:{:02d}".format(*divmod(int(record.start_time * 60), 60)) + end = "{:02d}:{:02d}".format(*divmod(int(record.end_time * 60), 60)) + record.name = f"{start} - {end}" + + @api.constrains("start_time", "end_time") + def _check_time_range(self): + for record in self: + if record.start_time >= record.end_time: + raise ValidationError( + _("The start time must be earlier than the end time.") + ) diff --git a/fieldservice_availability/models/fsm_stress_day.py b/fieldservice_availability/models/fsm_stress_day.py new file mode 100644 index 0000000000..bda2ddde1c --- /dev/null +++ b/fieldservice_availability/models/fsm_stress_day.py @@ -0,0 +1,20 @@ +# Copyright 2025 Patryk Pyczko (APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FieldServiceStressDay(models.Model): + _name = "fsm.stress.day" + _description = "High-Demand Days" + + name = fields.Char(string="Description", required=True) + date = fields.Date(string="Stress Day", required=True) + + _sql_constraints = [ + ( + "unique_stress_day", + "unique(date)", + "A stress day with this date already exists!", + ) + ] diff --git a/fieldservice_availability/readme/CONTRIBUTORS.rst b/fieldservice_availability/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..d9d047c2d6 --- /dev/null +++ b/fieldservice_availability/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* `APSL-Nagarro `_: + * Patryk Pyczko diff --git a/fieldservice_availability/readme/DESCRIPTION.rst b/fieldservice_availability/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..256831d63a --- /dev/null +++ b/fieldservice_availability/readme/DESCRIPTION.rst @@ -0,0 +1,7 @@ +This module defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments. + +- **Blackout Days (`fsm.blackout.day`)**: Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures). +- **Stress Days (`fsm.stress.day`)**: Indicate dates with increased service demand (e.g., peak business periods requiring additional workforce). +- **Delivery Time Ranges (`fsm.delivery.time.range`)**: Define available time slots for scheduling field service operations. + +This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field service workflows. diff --git a/fieldservice_availability/readme/USAGE.rst b/fieldservice_availability/readme/USAGE.rst new file mode 100644 index 0000000000..96f7901f4c --- /dev/null +++ b/fieldservice_availability/readme/USAGE.rst @@ -0,0 +1 @@ +Navigate to Field Service > Configuration > Scheduling. Once there, you can select `Delivery Time Ranges`, `Blackout Days` or `Festive Days` to create new records. diff --git a/fieldservice_availability/security/ir.model.access.csv b/fieldservice_availability/security/ir.model.access.csv new file mode 100644 index 0000000000..10f2dd1261 --- /dev/null +++ b/fieldservice_availability/security/ir.model.access.csv @@ -0,0 +1,13 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_fsm_blackout_days_manager,fsm.blackout.day.manager,model_fsm_blackout_day,fieldservice.group_fsm_manager,1,1,1,1 +access_fsm_blackout_days_dispatcher,fsm.blackout.day.dispatcher,model_fsm_blackout_day,fieldservice.group_fsm_dispatcher,1,1,0,0 +access_fsm_blackout_days_user,fsm.blackout.day.user,model_fsm_blackout_day,fieldservice.group_fsm_user,1,0,0,0 +access_fsm_blackout_days_user_own,fsm.blackout.day.user.own,model_fsm_blackout_day,fieldservice.group_fsm_user_own,1,0,0,0 +access_fsm_stress_days_manager,fsm.stress.day.manager,model_fsm_stress_day,fieldservice.group_fsm_manager,1,1,1,1 +access_fsm_stress_days_dispatcher,fsm.stress.day.dispatcher,model_fsm_stress_day,fieldservice.group_fsm_dispatcher,1,1,0,0 +access_fsm_stress_days_user,fsm.stress.day.user,model_fsm_stress_day,fieldservice.group_fsm_user,1,0,0,0 +access_fsm_stress_days_user_own,fsm.stress.day.user.own,model_fsm_stress_day,fieldservice.group_fsm_user_own,1,0,0,0 +access_fsm_delivery_time_range_manager,fsm.delivery.time.range.manager,model_fsm_delivery_time_range,fieldservice.group_fsm_manager,1,1,1,1 +access_fsm_delivery_time_range_dispatcher,fsm.delivery.time.range.dispatcher,model_fsm_delivery_time_range,fieldservice.group_fsm_dispatcher,1,1,0,0 +access_fsm_delivery_time_range_user,fsm.delivery.time.range.user,model_fsm_delivery_time_range,fieldservice.group_fsm_user,1,0,0,0 +access_fsm_delivery_time_range_user_own,fsm.delivery.time.range.user.own,model_fsm_delivery_time_range,fieldservice.group_fsm_user_own,1,0,0,0 diff --git a/fieldservice_availability/static/description/icon.png b/fieldservice_availability/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..955674d8f0b8c47de3ffa9db25cb109fbe4a1091 GIT binary patch literal 17808 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 literal 0 HcmV?d00001 diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html new file mode 100644 index 0000000000..41c833138a --- /dev/null +++ b/fieldservice_availability/static/description/index.html @@ -0,0 +1,437 @@ + + + + + +Fieldservice Availability + + + +
+

Fieldservice Availability

+ + +

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

+

This module defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments.

+
    +
  • Blackout Days (`fsm.blackout.day`): Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures).
  • +
  • Stress Days (`fsm.stress.day`): Indicate dates with increased service demand (e.g., peak business periods requiring additional workforce).
  • +
  • Delivery Time Ranges (`fsm.delivery.time.range`): Define available time slots for scheduling field service operations.
  • +
+

This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field service workflows.

+

Table of contents

+ +
+

Usage

+

Navigate to Field Service > Configuration > Scheduling. Once there, you can select Delivery Time Ranges, Blackout Days or Festive Days to create new records.

+
+
+

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

+
    +
  • APSL-Nagarro
  • +
+
+
+

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:

+

ppyczko

+

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_availability/tests/__init__.py b/fieldservice_availability/tests/__init__.py new file mode 100644 index 0000000000..b42221f8cd --- /dev/null +++ b/fieldservice_availability/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_fsm_delivery_time_range diff --git a/fieldservice_availability/tests/test_fsm_delivery_time_range.py b/fieldservice_availability/tests/test_fsm_delivery_time_range.py new file mode 100644 index 0000000000..53e7ff9f59 --- /dev/null +++ b/fieldservice_availability/tests/test_fsm_delivery_time_range.py @@ -0,0 +1,41 @@ +# Copyright 2025 Patryk Pyczko (APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.exceptions import ValidationError +from odoo.tests.common import TransactionCase + + +class TestFSMDeliveryTimeRange(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.time_range_model = cls.env["fsm.delivery.time.range"] + + def test_create_valid_time_range(self): + time_range = self.time_range_model.create( + { + "start_time": 8.0, + "end_time": 12.0, + } + ) + self.assertEqual(time_range.name, "08:00 - 12:00") + + def test_create_invalid_time_range(self): + with self.assertRaises(ValidationError): + self.time_range_model.create( + { + "start_time": 12.0, + "end_time": 8.0, + } + ) + + def test_sequence_ordering(self): + range1 = self.time_range_model.create( + {"start_time": 8.0, "end_time": 12.0, "sequence": 10} + ) + range2 = self.time_range_model.create( + {"start_time": 13.0, "end_time": 16.0, "sequence": 5} + ) + time_ranges = self.time_range_model.search([], order="sequence, start_time asc") + self.assertEqual(time_ranges[0], range2) + self.assertEqual(time_ranges[1], range1) diff --git a/fieldservice_availability/views/fsm_blackout_day_templates.xml b/fieldservice_availability/views/fsm_blackout_day_templates.xml new file mode 100644 index 0000000000..12363a5987 --- /dev/null +++ b/fieldservice_availability/views/fsm_blackout_day_templates.xml @@ -0,0 +1,44 @@ + + + + + + + fsm.blackout.day.tree + fsm.blackout.day + + + + + + + + + + fsm.blackout.day.form + fsm.blackout.day + +
+ + + + + + +
+
+
+ + + Blackout Days + fsm.blackout.day + tree,form + +

+ Add a Field Service Blackout Day here. +

+
+
+ +
diff --git a/fieldservice_availability/views/fsm_delivery_time_range_templates.xml b/fieldservice_availability/views/fsm_delivery_time_range_templates.xml new file mode 100644 index 0000000000..2fb70bc81a --- /dev/null +++ b/fieldservice_availability/views/fsm_delivery_time_range_templates.xml @@ -0,0 +1,50 @@ + + + + + + fsm.delivery.time.range.tree + fsm.delivery.time.range + + + + + + + + + + + + + fsm.delivery.time.range.form + fsm.delivery.time.range + +
+ + + + + + + + + +
+
+
+ + + Delivery Time Ranges + fsm.delivery.time.range + tree,form + +

+ Add a Field Service Delivery Time Range here. +

+
+
+ + +
diff --git a/fieldservice_availability/views/fsm_stress_day_templates.xml b/fieldservice_availability/views/fsm_stress_day_templates.xml new file mode 100644 index 0000000000..3029a2d9fc --- /dev/null +++ b/fieldservice_availability/views/fsm_stress_day_templates.xml @@ -0,0 +1,44 @@ + + + + + + + fsm.stress.day.tree + fsm.stress.day + + + + + + + + + + fsm.stress.day.form + fsm.stress.day + +
+ + + + + + +
+
+
+ + + Stress Days + fsm.stress.day + tree,form + +

+ Add a Field Service Stress Day here. +

+
+
+ +
diff --git a/fieldservice_availability/views/menu.xml b/fieldservice_availability/views/menu.xml new file mode 100644 index 0000000000..0db1ad68de --- /dev/null +++ b/fieldservice_availability/views/menu.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + From 7f2e5214cf50c459d9e501683add861226f15cf4 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 5 Mar 2025 15:45:22 +0000 Subject: [PATCH 20/39] [UPD] Update fieldservice_availability.pot --- fieldservice_availability/i18n/fieldservice_availability.pot | 3 --- 1 file changed, 3 deletions(-) diff --git a/fieldservice_availability/i18n/fieldservice_availability.pot b/fieldservice_availability/i18n/fieldservice_availability.pot index e1f00d1b14..9e97ecddbc 100644 --- a/fieldservice_availability/i18n/fieldservice_availability.pot +++ b/fieldservice_availability/i18n/fieldservice_availability.pot @@ -6,8 +6,6 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-26 06:52+0000\n" -"PO-Revision-Date: 2025-02-26 06:52+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -183,7 +181,6 @@ msgstr "" #. module: fieldservice_availability #: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 -#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 #, python-format msgid "The start time must be earlier than the end time." msgstr "" From 31948c825cdf77722d2b417dd56fce0b51b6dad9 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 5 Mar 2025 15:50:19 +0000 Subject: [PATCH 21/39] [BOT] post-merge updates --- fieldservice_availability/README.rst | 2 +- fieldservice_availability/static/description/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index d878f0e0b7..e3e0036d81 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/README.rst @@ -7,7 +7,7 @@ Fieldservice Availability !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:2a9639ee2b8e8c0fbcb6afd0bd5ad682e64856a8fbdbe47f9da3d62e859321ce + !! source digest: sha256:46af4bd04eb86f7c9eb84550f6ee7e27c14ebabbbf3e007746e3f79983760191 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index 41c833138a..4f4b4c920b 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -367,7 +367,7 @@

Fieldservice Availability

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:2a9639ee2b8e8c0fbcb6afd0bd5ad682e64856a8fbdbe47f9da3d62e859321ce +!! source digest: sha256:46af4bd04eb86f7c9eb84550f6ee7e27c14ebabbbf3e007746e3f79983760191 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments.

From 3f889023685465ff283ee97bc0254373b2d57a60 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Wed, 16 Apr 2025 09:33:03 +0200 Subject: [PATCH 22/39] [IMP] fieldservice_availability: pre-commit auto fixes --- fieldservice_availability/README.rst | 50 ++++++++++++------- .../models/fsm_delivery_time_range.py | 3 +- fieldservice_availability/pyproject.toml | 3 ++ .../readme/CONTRIBUTORS.md | 2 + .../readme/CONTRIBUTORS.rst | 2 - .../readme/DESCRIPTION.md | 18 +++++++ .../readme/DESCRIPTION.rst | 7 --- fieldservice_availability/readme/USAGE.md | 3 ++ fieldservice_availability/readme/USAGE.rst | 1 - .../static/description/index.html | 37 ++++++++++---- 10 files changed, 86 insertions(+), 40 deletions(-) create mode 100644 fieldservice_availability/pyproject.toml create mode 100644 fieldservice_availability/readme/CONTRIBUTORS.md delete mode 100644 fieldservice_availability/readme/CONTRIBUTORS.rst create mode 100644 fieldservice_availability/readme/DESCRIPTION.md delete mode 100644 fieldservice_availability/readme/DESCRIPTION.rst create mode 100644 fieldservice_availability/readme/USAGE.md delete mode 100644 fieldservice_availability/readme/USAGE.rst diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index e3e0036d81..dc7f0a7f8b 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/README.rst @@ -17,24 +17,35 @@ Fieldservice Availability :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/15.0/fieldservice_availability + :target: https://github.com/OCA/field-service/tree/17.0/fieldservice_availability :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-15-0/field-service-15-0-fieldservice_availability + :target: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_availability :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=15.0 + :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 defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments. - -- **Blackout Days (`fsm.blackout.day`)**: Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures). -- **Stress Days (`fsm.stress.day`)**: Indicate dates with increased service demand (e.g., peak business periods requiring additional workforce). -- **Delivery Time Ranges (`fsm.delivery.time.range`)**: Define available time slots for scheduling field service operations. - -This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field service workflows. +This module defines blackout days (non-operational days), stress days +(high-demand periods), and delivery time ranges for field service +operations. It provides the necessary models to store this information, +which can be used by other modules to manage scheduling, availability, +and workload adjustments. + +- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field + service operations are unavailable (e.g., holidays, company-wide + closures). +- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased + service demand (e.g., peak business periods requiring additional + workforce). +- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define + available time slots for scheduling field service operations. + +This is a technical module and does not provide functionality on its +own. Extend this module to integrate availability management into field +service workflows. **Table of contents** @@ -44,7 +55,9 @@ This is a technical module and does not provide functionality on its own. Extend Usage ===== -Navigate to Field Service > Configuration > Scheduling. Once there, you can select `Delivery Time Ranges`, `Blackout Days` or `Festive Days` to create new records. +Navigate to Field Service > Configuration > Scheduling. Once there, you +can select Delivery Time Ranges, Blackout Days or Festive Days to create +new records. Bug Tracker =========== @@ -52,7 +65,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. @@ -60,18 +73,19 @@ Credits ======= Authors -~~~~~~~ +------- * APSL-Nagarro Contributors -~~~~~~~~~~~~ +------------ + +- `APSL-Nagarro `__: -* `APSL-Nagarro `_: - * Patryk Pyczko + - Patryk Pyczko Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -91,6 +105,6 @@ Current `maintainer `__: |maintainer-ppyczko| -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_availability/models/fsm_delivery_time_range.py b/fieldservice_availability/models/fsm_delivery_time_range.py index e91d7ac79d..017baed107 100644 --- a/fieldservice_availability/models/fsm_delivery_time_range.py +++ b/fieldservice_availability/models/fsm_delivery_time_range.py @@ -16,7 +16,8 @@ class FSMDeliveryTimeRange(models.Model): route_id = fields.Many2one( "fsm.route", string="Route", - help="Specific route this time range applies to. Leave empty for global time ranges.", + help="Specific route this time range applies to. " + "Leave empty for global time ranges.", ) sequence = fields.Integer( default=10, diff --git a/fieldservice_availability/pyproject.toml b/fieldservice_availability/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/fieldservice_availability/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/fieldservice_availability/readme/CONTRIBUTORS.md b/fieldservice_availability/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..134de2bbe2 --- /dev/null +++ b/fieldservice_availability/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- [APSL-Nagarro](https://www.apsl.tech): + - Patryk Pyczko \<\> diff --git a/fieldservice_availability/readme/CONTRIBUTORS.rst b/fieldservice_availability/readme/CONTRIBUTORS.rst deleted file mode 100644 index d9d047c2d6..0000000000 --- a/fieldservice_availability/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,2 +0,0 @@ -* `APSL-Nagarro `_: - * Patryk Pyczko diff --git a/fieldservice_availability/readme/DESCRIPTION.md b/fieldservice_availability/readme/DESCRIPTION.md new file mode 100644 index 0000000000..21857d03ec --- /dev/null +++ b/fieldservice_availability/readme/DESCRIPTION.md @@ -0,0 +1,18 @@ +This module defines blackout days (non-operational days), stress days +(high-demand periods), and delivery time ranges for field service +operations. It provides the necessary models to store this information, +which can be used by other modules to manage scheduling, availability, +and workload adjustments. + +- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field + service operations are unavailable (e.g., holidays, company-wide + closures). +- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased + service demand (e.g., peak business periods requiring additional + workforce). +- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define + available time slots for scheduling field service operations. + +This is a technical module and does not provide functionality on its +own. Extend this module to integrate availability management into field +service workflows. diff --git a/fieldservice_availability/readme/DESCRIPTION.rst b/fieldservice_availability/readme/DESCRIPTION.rst deleted file mode 100644 index 256831d63a..0000000000 --- a/fieldservice_availability/readme/DESCRIPTION.rst +++ /dev/null @@ -1,7 +0,0 @@ -This module defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments. - -- **Blackout Days (`fsm.blackout.day`)**: Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures). -- **Stress Days (`fsm.stress.day`)**: Indicate dates with increased service demand (e.g., peak business periods requiring additional workforce). -- **Delivery Time Ranges (`fsm.delivery.time.range`)**: Define available time slots for scheduling field service operations. - -This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field service workflows. diff --git a/fieldservice_availability/readme/USAGE.md b/fieldservice_availability/readme/USAGE.md new file mode 100644 index 0000000000..b311e4bda4 --- /dev/null +++ b/fieldservice_availability/readme/USAGE.md @@ -0,0 +1,3 @@ +Navigate to Field Service \> Configuration \> Scheduling. Once there, +you can select Delivery Time Ranges, Blackout Days or Festive Days to +create new records. diff --git a/fieldservice_availability/readme/USAGE.rst b/fieldservice_availability/readme/USAGE.rst deleted file mode 100644 index 96f7901f4c..0000000000 --- a/fieldservice_availability/readme/USAGE.rst +++ /dev/null @@ -1 +0,0 @@ -Navigate to Field Service > Configuration > Scheduling. Once there, you can select `Delivery Time Ranges`, `Blackout Days` or `Festive Days` to create new records. diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index 4f4b4c920b..96d417b516 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -369,14 +369,25 @@

Fieldservice Availability

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:46af4bd04eb86f7c9eb84550f6ee7e27c14ebabbbf3e007746e3f79983760191 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

-

This module defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments.

+

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

+

This module defines blackout days (non-operational days), stress days +(high-demand periods), and delivery time ranges for field service +operations. It provides the necessary models to store this information, +which can be used by other modules to manage scheduling, availability, +and workload adjustments.

    -
  • Blackout Days (`fsm.blackout.day`): Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures).
  • -
  • Stress Days (`fsm.stress.day`): Indicate dates with increased service demand (e.g., peak business periods requiring additional workforce).
  • -
  • Delivery Time Ranges (`fsm.delivery.time.range`): Define available time slots for scheduling field service operations.
  • +
  • Blackout Days (`fsm.blackout.day`): Represent dates when field +service operations are unavailable (e.g., holidays, company-wide +closures).
  • +
  • Stress Days (`fsm.stress.day`): Indicate dates with increased +service demand (e.g., peak business periods requiring additional +workforce).
  • +
  • Delivery Time Ranges (`fsm.delivery.time.range`): Define +available time slots for scheduling field service operations.
-

This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field service workflows.

+

This is a technical module and does not provide functionality on its +own. Extend this module to integrate availability management into field +service workflows.

Table of contents

    @@ -392,14 +403,16 @@

    Fieldservice Availability

Usage

-

Navigate to Field Service > Configuration > Scheduling. Once there, you can select Delivery Time Ranges, Blackout Days or Festive Days to create new records.

+

Navigate to Field Service > Configuration > Scheduling. Once there, you +can select Delivery Time Ranges, Blackout Days or Festive Days to create +new records.

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.

@@ -413,8 +426,10 @@

Authors

Contributors

@@ -428,7 +443,7 @@

Maintainers

promote its widespread use.

Current maintainer:

ppyczko

-

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 d599c64214ad7154f304f8e3e6b8d44318b80e81 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Wed, 16 Apr 2025 09:58:43 +0200 Subject: [PATCH 23/39] [MIG] fieldservice_availability: Migration to 17.0 --- fieldservice_availability/README.rst | 1 + fieldservice_availability/__manifest__.py | 2 +- fieldservice_availability/readme/CONTRIBUTORS.md | 1 + fieldservice_availability/static/description/index.html | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index dc7f0a7f8b..35249992f8 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/README.rst @@ -83,6 +83,7 @@ Contributors - `APSL-Nagarro `__: - Patryk Pyczko + - Antoni Marroig Maintainers ----------- diff --git a/fieldservice_availability/__manifest__.py b/fieldservice_availability/__manifest__.py index 0be5ca01f1..44a024f99e 100644 --- a/fieldservice_availability/__manifest__.py +++ b/fieldservice_availability/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Fieldservice Availability", - "version": "15.0.1.0.0", + "version": "17.0.1.0.0", "summary": "Provides models for defining blackout days, stress days, " "and delivery time ranges for FSM availability management.", "category": "Field Service", diff --git a/fieldservice_availability/readme/CONTRIBUTORS.md b/fieldservice_availability/readme/CONTRIBUTORS.md index 134de2bbe2..bc743d1d2d 100644 --- a/fieldservice_availability/readme/CONTRIBUTORS.md +++ b/fieldservice_availability/readme/CONTRIBUTORS.md @@ -1,2 +1,3 @@ - [APSL-Nagarro](https://www.apsl.tech): - Patryk Pyczko \<\> + - Antoni Marroig \<\> diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index 96d417b516..43bde6def6 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -428,6 +428,7 @@

Contributors

From 44783768795d4083965151a299339559f4eb5248 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 16 Apr 2025 09:43:06 +0000 Subject: [PATCH 24/39] [UPD] Update fieldservice_availability.pot --- .../i18n/fieldservice_availability.pot | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/fieldservice_availability/i18n/fieldservice_availability.pot b/fieldservice_availability/i18n/fieldservice_availability.pot index 9e97ecddbc..51d10dc1e5 100644 --- a/fieldservice_availability/i18n/fieldservice_availability.pot +++ b/fieldservice_availability/i18n/fieldservice_availability.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -120,13 +120,6 @@ msgstr "" msgid "ID" msgstr "" -#. module: fieldservice_availability -#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day____last_update -#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range____last_update -#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day____last_update -msgid "Last Modified on" -msgstr "" - #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid @@ -180,6 +173,7 @@ msgid "Stress Days" msgstr "" #. module: fieldservice_availability +#. odoo-python #: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 #, python-format msgid "The start time must be earlier than the end time." From 6a5ad4de17625be50948a4880d8edec1a5faa366 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 16 Apr 2025 09:47:40 +0000 Subject: [PATCH 25/39] [BOT] post-merge updates --- fieldservice_availability/README.rst | 24 +++++++++---------- .../static/description/index.html | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index 35249992f8..b60707a889 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/README.rst @@ -7,7 +7,7 @@ Fieldservice Availability !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:46af4bd04eb86f7c9eb84550f6ee7e27c14ebabbbf3e007746e3f79983760191 + !! source digest: sha256:f5ee48d92b5671dacd637d5f1351f960c5765e98aa354e32c4ee628261b9911b !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -34,14 +34,14 @@ operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments. -- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field - service operations are unavailable (e.g., holidays, company-wide - closures). -- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased - service demand (e.g., peak business periods requiring additional - workforce). -- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define - available time slots for scheduling field service operations. +- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field + service operations are unavailable (e.g., holidays, company-wide + closures). +- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased + service demand (e.g., peak business periods requiring additional + workforce). +- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define + available time slots for scheduling field service operations. This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field @@ -80,10 +80,10 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Patryk Pyczko - - Antoni Marroig + - Patryk Pyczko + - Antoni Marroig Maintainers ----------- diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index 43bde6def6..582e0a339c 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -367,7 +367,7 @@

Fieldservice Availability

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:46af4bd04eb86f7c9eb84550f6ee7e27c14ebabbbf3e007746e3f79983760191 +!! source digest: sha256:f5ee48d92b5671dacd637d5f1351f960c5765e98aa354e32c4ee628261b9911b !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module defines blackout days (non-operational days), stress days From 7d86cbf885b110a48d852c3319ebe9b9e730e678 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Wed, 16 Apr 2025 14:03:26 +0200 Subject: [PATCH 26/39] [IMP] fieldservice_availability: Group black out days --- fieldservice_availability/README.rst | 29 +++++++------ fieldservice_availability/i18n/ca.po | 43 ++++++++++++++----- fieldservice_availability/i18n/es.po | 43 ++++++++++++++----- fieldservice_availability/models/__init__.py | 1 + .../models/fsm_blackout_group.py | 18 ++++++++ .../readme/DESCRIPTION.md | 3 ++ fieldservice_availability/readme/USAGE.md | 2 +- .../security/ir.model.access.csv | 4 ++ .../static/description/index.html | 7 ++- .../views/fsm_blackout_day_templates.xml | 41 ++++++++++++++++++ fieldservice_availability/views/menu.xml | 8 ++++ 11 files changed, 161 insertions(+), 38 deletions(-) create mode 100644 fieldservice_availability/models/fsm_blackout_group.py diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index b60707a889..8fa0d253e2 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/README.rst @@ -34,14 +34,17 @@ operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments. -- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field - service operations are unavailable (e.g., holidays, company-wide - closures). -- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased - service demand (e.g., peak business periods requiring additional - workforce). -- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define - available time slots for scheduling field service operations. +- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field + service operations are unavailable (e.g., holidays, company-wide + closures). +- **Blackout Groups (\`fsm.blackout.group\`)**: Represent groups of + days when field service operations are unavailable (e.g., holidays, + company-wide closures). +- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased + service demand (e.g., peak business periods requiring additional + workforce). +- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define + available time slots for scheduling field service operations. This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field @@ -56,8 +59,8 @@ Usage ===== Navigate to Field Service > Configuration > Scheduling. Once there, you -can select Delivery Time Ranges, Blackout Days or Festive Days to create -new records. +can select Delivery Time Ranges, Blackout Days, Blackout Groups or +Festive Days to create new records. Bug Tracker =========== @@ -80,10 +83,10 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Patryk Pyczko - - Antoni Marroig + - Patryk Pyczko + - Antoni Marroig Maintainers ----------- diff --git a/fieldservice_availability/i18n/ca.po b/fieldservice_availability/i18n/ca.po index 37197b9e3e..3f639bd722 100644 --- a/fieldservice_availability/i18n/ca.po +++ b/fieldservice_availability/i18n/ca.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-26 06:51+0000\n" -"PO-Revision-Date: 2025-02-26 06:51+0000\n" +"POT-Creation-Date: 2025-04-16 12:04+0000\n" +"PO-Revision-Date: 2025-04-16 12:04+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -30,6 +30,11 @@ msgstr "Ja existeix un dia d'alta demanda amb aquesta data!" msgid "Add a Field Service Blackout Day here." msgstr "Afegeix un dia de bloqueig del servei de camp aquí." +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_groups +msgid "Add a Field Service Blackout Group here." +msgstr "Afegeix un grup de bloqueig del servei de camp aquí." + #. module: fieldservice_availability #: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_delivery_time_range msgid "Add a Field Service Delivery Time Range here." @@ -61,8 +66,20 @@ msgstr "Dies de bloqueig" msgid "Blackout Days (No Service)" msgstr "Dies de bloqueig (Sense servei)" +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_blackout_group +msgid "Blackout Group" +msgstr "Grup de bloqueig" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_groups +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_group_root +msgid "Blackout Groups" +msgstr "Grups de bloqueig" + #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__create_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_uid msgid "Created by" @@ -70,6 +87,7 @@ msgstr "Creat per" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__create_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_date msgid "Created on" @@ -82,6 +100,11 @@ msgstr "" "Personalitza l'ordre dels intervals de temps. Els números més baixos es " "mostren primer." +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__fsm_blackout_day_ids +msgid "Days" +msgstr "Dies" + #. module: fieldservice_availability #: model:ir.model,name:fieldservice_availability.model_fsm_delivery_time_range #: model_terms:ir.ui.view,arch_db:fieldservice_availability.view_fsm_delivery_time_range_form @@ -102,6 +125,7 @@ msgstr "Descripció" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__display_name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__display_name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__display_name msgid "Display Name" @@ -119,20 +143,15 @@ msgstr "Dies d'alta demanda" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id msgid "ID" msgstr "" -#. module: fieldservice_availability -#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day____last_update -#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range____last_update -#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day____last_update -msgid "Last Modified on" -msgstr "Última Modificació el" - #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_uid msgid "Last Updated by" @@ -140,12 +159,14 @@ msgstr "Última Actualització per" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__write_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_date msgid "Last Updated on" msgstr "Última Actualització el" #. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__name msgid "Name" msgstr "Nom" @@ -186,7 +207,7 @@ msgid "Stress Days" msgstr "Dies d'alta demanda" #. module: fieldservice_availability -#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 +#. odoo-python #: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 #, python-format msgid "The start time must be earlier than the end time." diff --git a/fieldservice_availability/i18n/es.po b/fieldservice_availability/i18n/es.po index b3b1e0fa2f..d7f006c2dd 100644 --- a/fieldservice_availability/i18n/es.po +++ b/fieldservice_availability/i18n/es.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-26 06:51+0000\n" -"PO-Revision-Date: 2025-02-26 06:51+0000\n" +"POT-Creation-Date: 2025-04-16 12:05+0000\n" +"PO-Revision-Date: 2025-04-16 12:05+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -30,6 +30,11 @@ msgstr "¡Ya existe un día de alta demanda con esta fecha!" msgid "Add a Field Service Blackout Day here." msgstr "Añade un día de bloqueo del servicio de campo aquí." +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_groups +msgid "Add a Field Service Blackout Group here." +msgstr "Añade un grupo de bloqueo del servicio de campo aquí." + #. module: fieldservice_availability #: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_delivery_time_range msgid "Add a Field Service Delivery Time Range here." @@ -61,8 +66,20 @@ msgstr "Días de bloqueo" msgid "Blackout Days (No Service)" msgstr "Días de bloqueo (Sin Servicio)" +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_blackout_group +msgid "Blackout Group" +msgstr "Grupo de bloqueo" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_groups +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_group_root +msgid "Blackout Groups" +msgstr "Grupos de bloqueo" + #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__create_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_uid msgid "Created by" @@ -70,6 +87,7 @@ msgstr "Creado por" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__create_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_date msgid "Created on" @@ -82,6 +100,11 @@ msgstr "" "Personaliza el orden de los rangos de tiempo. Los números más bajos se " "muestran primero." +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__fsm_blackout_day_ids +msgid "Days" +msgstr "Días" + #. module: fieldservice_availability #: model:ir.model,name:fieldservice_availability.model_fsm_delivery_time_range #: model_terms:ir.ui.view,arch_db:fieldservice_availability.view_fsm_delivery_time_range_form @@ -102,6 +125,7 @@ msgstr "Descripción" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__display_name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__display_name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__display_name msgid "Display Name" @@ -119,20 +143,15 @@ msgstr "Días de Alta Demanda" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id msgid "ID" msgstr "" -#. module: fieldservice_availability -#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day____last_update -#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range____last_update -#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day____last_update -msgid "Last Modified on" -msgstr "Última Modificación el" - #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_uid msgid "Last Updated by" @@ -140,12 +159,14 @@ msgstr "Última Actualización por" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__write_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_date msgid "Last Updated on" msgstr "Última Actualización el" #. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__name msgid "Name" msgstr "Nombre" @@ -186,7 +207,7 @@ msgid "Stress Days" msgstr "Días de alta demanda" #. module: fieldservice_availability -#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 +#. odoo-python #: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 #, python-format msgid "The start time must be earlier than the end time." diff --git a/fieldservice_availability/models/__init__.py b/fieldservice_availability/models/__init__.py index 34ea55b037..b3927bdf20 100644 --- a/fieldservice_availability/models/__init__.py +++ b/fieldservice_availability/models/__init__.py @@ -1,5 +1,6 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import fsm_blackout_day +from . import fsm_blackout_group from . import fsm_delivery_time_range from . import fsm_stress_day diff --git a/fieldservice_availability/models/fsm_blackout_group.py b/fieldservice_availability/models/fsm_blackout_group.py new file mode 100644 index 0000000000..58506be76b --- /dev/null +++ b/fieldservice_availability/models/fsm_blackout_group.py @@ -0,0 +1,18 @@ +# Copyright 2025 APSL-Nagarro Antoni Marroig +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FieldServiceBlackoutGroup(models.Model): + _name = "fsm.blackout.group" + _description = "Blackout Group" + + name = fields.Char(required=True) + fsm_blackout_day_ids = fields.Many2many( + "fsm.blackout.day", + "fsm_blackout_group_ids", + "fsm_blackout_group_id", + "fsm_blackout_day_id", + string="Days", + ) diff --git a/fieldservice_availability/readme/DESCRIPTION.md b/fieldservice_availability/readme/DESCRIPTION.md index 21857d03ec..fa6e13ca0d 100644 --- a/fieldservice_availability/readme/DESCRIPTION.md +++ b/fieldservice_availability/readme/DESCRIPTION.md @@ -7,6 +7,9 @@ and workload adjustments. - **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures). +- **Blackout Groups (\`fsm.blackout.group\`)**: Represent groups of days when field + service operations are unavailable (e.g., holidays, company-wide + closures). - **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased service demand (e.g., peak business periods requiring additional workforce). diff --git a/fieldservice_availability/readme/USAGE.md b/fieldservice_availability/readme/USAGE.md index b311e4bda4..535e7d03f2 100644 --- a/fieldservice_availability/readme/USAGE.md +++ b/fieldservice_availability/readme/USAGE.md @@ -1,3 +1,3 @@ Navigate to Field Service \> Configuration \> Scheduling. Once there, -you can select Delivery Time Ranges, Blackout Days or Festive Days to +you can select Delivery Time Ranges, Blackout Days, Blackout Groups or Festive Days to create new records. diff --git a/fieldservice_availability/security/ir.model.access.csv b/fieldservice_availability/security/ir.model.access.csv index 10f2dd1261..93c074d2c9 100644 --- a/fieldservice_availability/security/ir.model.access.csv +++ b/fieldservice_availability/security/ir.model.access.csv @@ -3,6 +3,10 @@ access_fsm_blackout_days_manager,fsm.blackout.day.manager,model_fsm_blackout_day access_fsm_blackout_days_dispatcher,fsm.blackout.day.dispatcher,model_fsm_blackout_day,fieldservice.group_fsm_dispatcher,1,1,0,0 access_fsm_blackout_days_user,fsm.blackout.day.user,model_fsm_blackout_day,fieldservice.group_fsm_user,1,0,0,0 access_fsm_blackout_days_user_own,fsm.blackout.day.user.own,model_fsm_blackout_day,fieldservice.group_fsm_user_own,1,0,0,0 +access_fsm_blackout_groups_manager,fsm.blackout.group.manager,model_fsm_blackout_group,fieldservice.group_fsm_manager,1,1,1,1 +access_fsm_blackout_groups_dispatcher,fsm.blackout.group.dispatcher,model_fsm_blackout_group,fieldservice.group_fsm_dispatcher,1,1,0,0 +access_fsm_blackout_groups_user,fsm.blackout.group.user,model_fsm_blackout_group,fieldservice.group_fsm_user,1,0,0,0 +access_fsm_blackout_groups_user_own,fsm.blackout.group.user.own,model_fsm_blackout_group,fieldservice.group_fsm_user_own,1,0,0,0 access_fsm_stress_days_manager,fsm.stress.day.manager,model_fsm_stress_day,fieldservice.group_fsm_manager,1,1,1,1 access_fsm_stress_days_dispatcher,fsm.stress.day.dispatcher,model_fsm_stress_day,fieldservice.group_fsm_dispatcher,1,1,0,0 access_fsm_stress_days_user,fsm.stress.day.user,model_fsm_stress_day,fieldservice.group_fsm_user,1,0,0,0 diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index 582e0a339c..21895269bf 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -379,6 +379,9 @@

Fieldservice Availability

  • Blackout Days (`fsm.blackout.day`): Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures).
  • +
  • Blackout Groups (`fsm.blackout.group`): Represent groups of +days when field service operations are unavailable (e.g., holidays, +company-wide closures).
  • Stress Days (`fsm.stress.day`): Indicate dates with increased service demand (e.g., peak business periods requiring additional workforce).
  • @@ -404,8 +407,8 @@

    Fieldservice Availability

    Usage

    Navigate to Field Service > Configuration > Scheduling. Once there, you -can select Delivery Time Ranges, Blackout Days or Festive Days to create -new records.

    +can select Delivery Time Ranges, Blackout Days, Blackout Groups or +Festive Days to create new records.

    Bug Tracker

    diff --git a/fieldservice_availability/views/fsm_blackout_day_templates.xml b/fieldservice_availability/views/fsm_blackout_day_templates.xml index 12363a5987..3702fae0de 100644 --- a/fieldservice_availability/views/fsm_blackout_day_templates.xml +++ b/fieldservice_availability/views/fsm_blackout_day_templates.xml @@ -15,6 +15,16 @@ + + fsm.blackout.group.tree + fsm.blackout.group + + + + + + + fsm.blackout.day.form fsm.blackout.day @@ -30,6 +40,26 @@ + + fsm.blackout.group.form + fsm.blackout.group + +
    + + + + + + + + + + + +
    +
    +
    + Blackout Days fsm.blackout.day @@ -41,4 +71,15 @@ + + Blackout Groups + fsm.blackout.group + tree,form + +

    + Add a Field Service Blackout Group here. +

    +
    +
    + diff --git a/fieldservice_availability/views/menu.xml b/fieldservice_availability/views/menu.xml index 0db1ad68de..86bd293a29 100644 --- a/fieldservice_availability/views/menu.xml +++ b/fieldservice_availability/views/menu.xml @@ -28,6 +28,14 @@ sequence="999" /> + + Date: Wed, 16 Apr 2025 19:35:35 +0000 Subject: [PATCH 27/39] Added translation using Weblate (Italian) --- fieldservice_availability/i18n/it.po | 181 +++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 fieldservice_availability/i18n/it.po diff --git a/fieldservice_availability/i18n/it.po b/fieldservice_availability/i18n/it.po new file mode 100644 index 0000000000..d2731a667b --- /dev/null +++ b/fieldservice_availability/i18n/it.po @@ -0,0 +1,181 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_availability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.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: fieldservice_availability +#: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_blackout_day_unique_blackout_day +msgid "A blackout day with this date already exists!" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_stress_day_unique_stress_day +msgid "A stress day with this date already exists!" +msgstr "" + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_days +msgid "Add a Field Service Blackout Day here." +msgstr "" + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_delivery_time_range +msgid "Add a Field Service Delivery Time Range here." +msgstr "" + +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_stress_days +msgid "Add a Field Service Stress Day here." +msgstr "" + +#. module: fieldservice_availability +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_config_availability +msgid "Availability" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__date +msgid "Blackout Day" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_days +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_days_root +msgid "Blackout Days" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_blackout_day +msgid "Blackout Days (No Service)" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_uid +msgid "Created by" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_date +msgid "Created on" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__sequence +msgid "Customize the order of time ranges. Lower numbers are shown first." +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_delivery_time_range +#: model_terms:ir.ui.view,arch_db:fieldservice_availability.view_fsm_delivery_time_range_form +msgid "Delivery Time Range" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_delivery_time_range +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_delivery_time_range +msgid "Delivery Time Ranges" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__name +msgid "Description" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__display_name +msgid "Display Name" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__end_time +msgid "End Time" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_stress_day +msgid "High-Demand Days" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id +msgid "ID" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_date +msgid "Last Updated on" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__name +msgid "Name" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__route_id +msgid "Route" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__sequence +msgid "Sequence" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__route_id +msgid "" +"Specific route this time range applies to. Leave empty for global time " +"ranges." +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__start_time +msgid "Start Time" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__date +msgid "Stress Day" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_stress_days +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_stress_days_root +msgid "Stress Days" +msgstr "" + +#. module: fieldservice_availability +#. odoo-python +#: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 +#, python-format +msgid "The start time must be earlier than the end time." +msgstr "" From 8823990cfa0194880bd83629be77d5f7c254cccf Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 22 Apr 2025 09:34:51 +0000 Subject: [PATCH 28/39] [UPD] Update fieldservice_availability.pot --- .../i18n/fieldservice_availability.pot | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/fieldservice_availability/i18n/fieldservice_availability.pot b/fieldservice_availability/i18n/fieldservice_availability.pot index 51d10dc1e5..d8efd4017f 100644 --- a/fieldservice_availability/i18n/fieldservice_availability.pot +++ b/fieldservice_availability/i18n/fieldservice_availability.pot @@ -28,6 +28,11 @@ msgstr "" msgid "Add a Field Service Blackout Day here." msgstr "" +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_groups +msgid "Add a Field Service Blackout Group here." +msgstr "" + #. module: fieldservice_availability #: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_delivery_time_range msgid "Add a Field Service Delivery Time Range here." @@ -59,8 +64,20 @@ msgstr "" msgid "Blackout Days (No Service)" msgstr "" +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_blackout_group +msgid "Blackout Group" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_groups +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_group_root +msgid "Blackout Groups" +msgstr "" + #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__create_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_uid msgid "Created by" @@ -68,6 +85,7 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__create_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_date msgid "Created on" @@ -78,6 +96,11 @@ msgstr "" msgid "Customize the order of time ranges. Lower numbers are shown first." msgstr "" +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__fsm_blackout_day_ids +msgid "Days" +msgstr "" + #. module: fieldservice_availability #: model:ir.model,name:fieldservice_availability.model_fsm_delivery_time_range #: model_terms:ir.ui.view,arch_db:fieldservice_availability.view_fsm_delivery_time_range_form @@ -98,6 +121,7 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__display_name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__display_name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__display_name msgid "Display Name" @@ -115,6 +139,7 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id msgid "ID" @@ -122,6 +147,7 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_uid msgid "Last Updated by" @@ -129,12 +155,14 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__write_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_date msgid "Last Updated on" msgstr "" #. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__name msgid "Name" msgstr "" From bda8e1bfee1e5093dac225da8cab1da801c7872d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 22 Apr 2025 09:40:47 +0000 Subject: [PATCH 29/39] [BOT] post-merge updates --- fieldservice_availability/README.rst | 30 +++++++++---------- fieldservice_availability/__manifest__.py | 2 +- .../static/description/index.html | 6 ++-- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index 8fa0d253e2..1d8ac55b26 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/README.rst @@ -7,7 +7,7 @@ Fieldservice Availability !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:f5ee48d92b5671dacd637d5f1351f960c5765e98aa354e32c4ee628261b9911b + !! source digest: sha256:be5beaa150e47bb357aac875c2973c812848b3adcdd8f37c762116114dbee35b !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -34,17 +34,17 @@ operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments. -- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field - service operations are unavailable (e.g., holidays, company-wide - closures). -- **Blackout Groups (\`fsm.blackout.group\`)**: Represent groups of - days when field service operations are unavailable (e.g., holidays, - company-wide closures). -- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased - service demand (e.g., peak business periods requiring additional - workforce). -- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define - available time slots for scheduling field service operations. +- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field + service operations are unavailable (e.g., holidays, company-wide + closures). +- **Blackout Groups (\`fsm.blackout.group\`)**: Represent groups of days + when field service operations are unavailable (e.g., holidays, + company-wide closures). +- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased + service demand (e.g., peak business periods requiring additional + workforce). +- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define + available time slots for scheduling field service operations. This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field @@ -83,10 +83,10 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Patryk Pyczko - - Antoni Marroig + - Patryk Pyczko + - Antoni Marroig Maintainers ----------- diff --git a/fieldservice_availability/__manifest__.py b/fieldservice_availability/__manifest__.py index 44a024f99e..e195a862e9 100644 --- a/fieldservice_availability/__manifest__.py +++ b/fieldservice_availability/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Fieldservice Availability", - "version": "17.0.1.0.0", + "version": "17.0.1.0.1", "summary": "Provides models for defining blackout days, stress days, " "and delivery time ranges for FSM availability management.", "category": "Field Service", diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index 21895269bf..4e190674b4 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -367,7 +367,7 @@

    Fieldservice Availability

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:f5ee48d92b5671dacd637d5f1351f960c5765e98aa354e32c4ee628261b9911b +!! source digest: sha256:be5beaa150e47bb357aac875c2973c812848b3adcdd8f37c762116114dbee35b !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

    This module defines blackout days (non-operational days), stress days @@ -379,8 +379,8 @@

    Fieldservice Availability

  • Blackout Days (`fsm.blackout.day`): Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures).
  • -
  • Blackout Groups (`fsm.blackout.group`): Represent groups of -days when field service operations are unavailable (e.g., holidays, +
  • Blackout Groups (`fsm.blackout.group`): Represent groups of days +when field service operations are unavailable (e.g., holidays, company-wide closures).
  • Stress Days (`fsm.stress.day`): Indicate dates with increased service demand (e.g., peak business periods requiring additional From 0c239b4d33c6a31b8ede116ba33f459d146c4166 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 22 Apr 2025 09:40:56 +0000 Subject: [PATCH 30/39] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: field-service-17.0/field-service-17.0-fieldservice_availability Translate-URL: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_availability/ --- fieldservice_availability/i18n/it.po | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/fieldservice_availability/i18n/it.po b/fieldservice_availability/i18n/it.po index d2731a667b..036c075691 100644 --- a/fieldservice_availability/i18n/it.po +++ b/fieldservice_availability/i18n/it.po @@ -29,6 +29,11 @@ msgstr "" msgid "Add a Field Service Blackout Day here." msgstr "" +#. module: fieldservice_availability +#: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_groups +msgid "Add a Field Service Blackout Group here." +msgstr "" + #. module: fieldservice_availability #: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_delivery_time_range msgid "Add a Field Service Delivery Time Range here." @@ -60,8 +65,20 @@ msgstr "" msgid "Blackout Days (No Service)" msgstr "" +#. module: fieldservice_availability +#: model:ir.model,name:fieldservice_availability.model_fsm_blackout_group +msgid "Blackout Group" +msgstr "" + +#. module: fieldservice_availability +#: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_groups +#: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_group_root +msgid "Blackout Groups" +msgstr "" + #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__create_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_uid msgid "Created by" @@ -69,6 +86,7 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__create_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_date msgid "Created on" @@ -79,6 +97,11 @@ msgstr "" msgid "Customize the order of time ranges. Lower numbers are shown first." msgstr "" +#. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__fsm_blackout_day_ids +msgid "Days" +msgstr "" + #. module: fieldservice_availability #: model:ir.model,name:fieldservice_availability.model_fsm_delivery_time_range #: model_terms:ir.ui.view,arch_db:fieldservice_availability.view_fsm_delivery_time_range_form @@ -99,6 +122,7 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__display_name +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__display_name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__display_name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__display_name msgid "Display Name" @@ -116,6 +140,7 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__id +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id msgid "ID" @@ -123,6 +148,7 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_uid msgid "Last Updated by" @@ -130,12 +156,14 @@ msgstr "" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_date +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__write_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_date msgid "Last Updated on" msgstr "" #. module: fieldservice_availability +#: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__name msgid "Name" msgstr "" From 37553cb666a396e38a0c06fc4d25098ceaaee1c0 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 23 Apr 2025 13:02:46 +0000 Subject: [PATCH 31/39] Translated using Weblate (Italian) Currently translated at 100.0% (33 of 33 strings) Translation: field-service-17.0/field-service-17.0-fieldservice_availability Translate-URL: https://translation.odoo-community.org/projects/field-service-17-0/field-service-17-0-fieldservice_availability/it/ --- fieldservice_availability/i18n/it.po | 70 +++++++++++++++------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/fieldservice_availability/i18n/it.po b/fieldservice_availability/i18n/it.po index 036c075691..2a1e16e0e3 100644 --- a/fieldservice_availability/i18n/it.po +++ b/fieldservice_availability/i18n/it.po @@ -6,75 +6,77 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-04-23 15:23+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.10.4\n" #. module: fieldservice_availability #: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_blackout_day_unique_blackout_day msgid "A blackout day with this date already exists!" -msgstr "" +msgstr "Esiste già un giorno di sospensione con questa data!" #. module: fieldservice_availability #: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_stress_day_unique_stress_day msgid "A stress day with this date already exists!" -msgstr "" +msgstr "Esiste già un giorno impegnativo con questa data!" #. module: fieldservice_availability #: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_days msgid "Add a Field Service Blackout Day here." -msgstr "" +msgstr "Aggiungi qui un giorno di sospensione servizio sul campo." #. module: fieldservice_availability #: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_blackout_groups msgid "Add a Field Service Blackout Group here." -msgstr "" +msgstr "Aggiungi qui un gruppo sospensione servizio sul campo." #. module: fieldservice_availability #: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_delivery_time_range msgid "Add a Field Service Delivery Time Range here." -msgstr "" +msgstr "Aggiungi qui un intervallo orario consegna servizio sul campo." #. module: fieldservice_availability #: model_terms:ir.actions.act_window,help:fieldservice_availability.action_fsm_stress_days msgid "Add a Field Service Stress Day here." -msgstr "" +msgstr "Aggiungi qui un giorno impegnativo servizio sul campo." #. module: fieldservice_availability #: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_config_availability msgid "Availability" -msgstr "" +msgstr "Disponibilità" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__date msgid "Blackout Day" -msgstr "" +msgstr "Giorno di sospensione" #. module: fieldservice_availability #: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_days #: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_days_root msgid "Blackout Days" -msgstr "" +msgstr "Giorni di sospensione" #. module: fieldservice_availability #: model:ir.model,name:fieldservice_availability.model_fsm_blackout_day msgid "Blackout Days (No Service)" -msgstr "" +msgstr "Giorno di sospensione (nessun servizio)" #. module: fieldservice_availability #: model:ir.model,name:fieldservice_availability.model_fsm_blackout_group msgid "Blackout Group" -msgstr "" +msgstr "Gruppo sospensione" #. module: fieldservice_availability #: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_blackout_groups #: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_blackout_group_root msgid "Blackout Groups" -msgstr "" +msgstr "Gruppi sospensione" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_uid @@ -82,7 +84,7 @@ msgstr "" #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_uid msgid "Created by" -msgstr "" +msgstr "Creato da" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__create_date @@ -90,35 +92,37 @@ msgstr "" #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__create_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__create_date msgid "Created on" -msgstr "" +msgstr "Creato il" #. module: fieldservice_availability #: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__sequence msgid "Customize the order of time ranges. Lower numbers are shown first." msgstr "" +"Personalizza l'ordine degli intervalli orario. I numeri inferiori sono " +"mostrati per primi." #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__fsm_blackout_day_ids msgid "Days" -msgstr "" +msgstr "Giorni" #. module: fieldservice_availability #: model:ir.model,name:fieldservice_availability.model_fsm_delivery_time_range #: model_terms:ir.ui.view,arch_db:fieldservice_availability.view_fsm_delivery_time_range_form msgid "Delivery Time Range" -msgstr "" +msgstr "Intervallo orario consegna" #. module: fieldservice_availability #: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_delivery_time_range #: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_delivery_time_range msgid "Delivery Time Ranges" -msgstr "" +msgstr "Intervalli orario consegna" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__name msgid "Description" -msgstr "" +msgstr "Descrizione" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__display_name @@ -126,17 +130,17 @@ msgstr "" #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__display_name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__end_time msgid "End Time" -msgstr "" +msgstr "Ora termine" #. module: fieldservice_availability #: model:ir.model,name:fieldservice_availability.model_fsm_stress_day msgid "High-Demand Days" -msgstr "" +msgstr "Giorni ad alta richiesta" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__id @@ -144,7 +148,7 @@ msgstr "" #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id msgid "ID" -msgstr "" +msgstr "ID" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid @@ -152,7 +156,7 @@ msgstr "" #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_uid #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Ultimo aggiornamento di" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_date @@ -160,23 +164,23 @@ msgstr "" #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__write_date #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__write_date msgid "Last Updated on" -msgstr "" +msgstr "Ultimo aggiornamento il" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_group__name #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__name msgid "Name" -msgstr "" +msgstr "Nome" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__route_id msgid "Route" -msgstr "" +msgstr "Percorso" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__sequence msgid "Sequence" -msgstr "" +msgstr "Sequenza" #. module: fieldservice_availability #: model:ir.model.fields,help:fieldservice_availability.field_fsm_delivery_time_range__route_id @@ -184,26 +188,28 @@ msgid "" "Specific route this time range applies to. Leave empty for global time " "ranges." msgstr "" +"Percorso specifico a cui si applica questo intervallo orario. Lasciare vuoto " +"per intervalli orario globali." #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__start_time msgid "Start Time" -msgstr "" +msgstr "Ora inizio" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__date msgid "Stress Day" -msgstr "" +msgstr "Giorno impegnativo" #. module: fieldservice_availability #: model:ir.actions.act_window,name:fieldservice_availability.action_fsm_stress_days #: model:ir.ui.menu,name:fieldservice_availability.menu_fsm_stress_days_root msgid "Stress Days" -msgstr "" +msgstr "Giorni impegnativi" #. module: fieldservice_availability #. odoo-python #: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 #, python-format msgid "The start time must be earlier than the end time." -msgstr "" +msgstr "L'orario di inizio deve essere prima dell'orario di fine." From 4296bac8645d15b4620b4f479418dbd1bfcd7f3f Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Thu, 31 Jul 2025 08:28:36 +0200 Subject: [PATCH 32/39] [IMP] fieldservice_availability: pre-commit auto fixes --- .../views/fsm_blackout_day_templates.xml | 140 +++++++++--------- .../fsm_delivery_time_range_templates.xml | 81 +++++----- .../views/fsm_stress_day_templates.xml | 68 +++++---- fieldservice_availability/views/menu.xml | 16 +- 4 files changed, 148 insertions(+), 157 deletions(-) diff --git a/fieldservice_availability/views/fsm_blackout_day_templates.xml b/fieldservice_availability/views/fsm_blackout_day_templates.xml index 3702fae0de..9557fde0f1 100644 --- a/fieldservice_availability/views/fsm_blackout_day_templates.xml +++ b/fieldservice_availability/views/fsm_blackout_day_templates.xml @@ -1,85 +1,83 @@ - - - - fsm.blackout.day.tree - fsm.blackout.day - - - - - - - + + fsm.blackout.day.tree + fsm.blackout.day + + + + + + + - - fsm.blackout.group.tree - fsm.blackout.group - - - - - - + + fsm.blackout.group.tree + fsm.blackout.group + + + + + + - - fsm.blackout.day.form - fsm.blackout.day - -
    - - - - - - -
    -
    -
    + + fsm.blackout.day.form + fsm.blackout.day + +
    + + + + + + +
    +
    +
    - - fsm.blackout.group.form - fsm.blackout.group - -
    - - - - - - - - - - - -
    -
    -
    + + fsm.blackout.group.form + fsm.blackout.group + +
    + + + + + + + + + + + +
    +
    +
    - - Blackout Days - fsm.blackout.day - tree,form - -

    + + Blackout Days + fsm.blackout.day + tree,form + +

    Add a Field Service Blackout Day here.

    -
    -
    + + - - Blackout Groups - fsm.blackout.group - tree,form - -

    + + Blackout Groups + fsm.blackout.group + tree,form + +

    Add a Field Service Blackout Group here.

    -
    -
    - + +
    diff --git a/fieldservice_availability/views/fsm_delivery_time_range_templates.xml b/fieldservice_availability/views/fsm_delivery_time_range_templates.xml index 2fb70bc81a..0c42723082 100644 --- a/fieldservice_availability/views/fsm_delivery_time_range_templates.xml +++ b/fieldservice_availability/views/fsm_delivery_time_range_templates.xml @@ -1,50 +1,47 @@ - - - - fsm.delivery.time.range.tree - fsm.delivery.time.range - - - - - - - - - - + + fsm.delivery.time.range.tree + fsm.delivery.time.range + + + + + + + + + + - - fsm.delivery.time.range.form - fsm.delivery.time.range - -
    - - - - - - - - - -
    -
    -
    + + fsm.delivery.time.range.form + fsm.delivery.time.range + +
    + + + + + + + + + +
    +
    +
    - - Delivery Time Ranges - fsm.delivery.time.range - tree,form - -

    + + Delivery Time Ranges + fsm.delivery.time.range + tree,form + +

    Add a Field Service Delivery Time Range here.

    -
    -
    - - + +
    diff --git a/fieldservice_availability/views/fsm_stress_day_templates.xml b/fieldservice_availability/views/fsm_stress_day_templates.xml index 3029a2d9fc..202060c81e 100644 --- a/fieldservice_availability/views/fsm_stress_day_templates.xml +++ b/fieldservice_availability/views/fsm_stress_day_templates.xml @@ -1,44 +1,42 @@ - - - - fsm.stress.day.tree - fsm.stress.day - - - - - - - + + fsm.stress.day.tree + fsm.stress.day + + + + + + + - - fsm.stress.day.form - fsm.stress.day - -
    - - - - - - -
    -
    -
    + + fsm.stress.day.form + fsm.stress.day + +
    + + + + + + +
    +
    +
    - - Stress Days - fsm.stress.day - tree,form - -

    + + Stress Days + fsm.stress.day + tree,form + +

    Add a Field Service Stress Day here.

    -
    -
    - + +
    diff --git a/fieldservice_availability/views/menu.xml b/fieldservice_availability/views/menu.xml index 86bd293a29..b10a0c0f88 100644 --- a/fieldservice_availability/views/menu.xml +++ b/fieldservice_availability/views/menu.xml @@ -1,18 +1,17 @@ - - - - + - - - - - From e84216cf17d33591d706bc7429373e95a787b5c7 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Thu, 31 Jul 2025 09:42:13 +0200 Subject: [PATCH 33/39] [MIG] fieldservice_availability: Migration to 18.0 --- fieldservice_availability/README.rst | 38 +++++++++---------- fieldservice_availability/__manifest__.py | 2 +- .../static/description/index.html | 10 ++--- .../views/fsm_blackout_day_templates.xml | 16 ++++---- .../fsm_delivery_time_range_templates.xml | 6 +-- .../views/fsm_stress_day_templates.xml | 6 +-- 6 files changed, 39 insertions(+), 39 deletions(-) diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index 1d8ac55b26..f36506b9d2 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/README.rst @@ -17,13 +17,13 @@ Fieldservice Availability :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_availability + :target: https://github.com/OCA/field-service/tree/18.0/fieldservice_availability :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_availability + :target: https://translation.odoo-community.org/projects/field-service-18-0/field-service-18-0-fieldservice_availability :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| @@ -34,17 +34,17 @@ operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments. -- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field - service operations are unavailable (e.g., holidays, company-wide - closures). -- **Blackout Groups (\`fsm.blackout.group\`)**: Represent groups of days - when field service operations are unavailable (e.g., holidays, - company-wide closures). -- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased - service demand (e.g., peak business periods requiring additional - workforce). -- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define - available time slots for scheduling field service operations. +- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field + service operations are unavailable (e.g., holidays, company-wide + closures). +- **Blackout Groups (\`fsm.blackout.group\`)**: Represent groups of + days when field service operations are unavailable (e.g., holidays, + company-wide closures). +- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased + service demand (e.g., peak business periods requiring additional + workforce). +- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define + available time slots for scheduling field service operations. This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field @@ -68,7 +68,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. @@ -83,10 +83,10 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Patryk Pyczko - - Antoni Marroig + - Patryk Pyczko + - Antoni Marroig Maintainers ----------- @@ -109,6 +109,6 @@ Current `maintainer `__: |maintainer-ppyczko| -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_availability/__manifest__.py b/fieldservice_availability/__manifest__.py index e195a862e9..fc4eccf93c 100644 --- a/fieldservice_availability/__manifest__.py +++ b/fieldservice_availability/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Fieldservice Availability", - "version": "17.0.1.0.1", + "version": "18.0.1.0.0", "summary": "Provides models for defining blackout days, stress days, " "and delivery time ranges for FSM availability management.", "category": "Field Service", diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index 4e190674b4..fb1bfff601 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -369,7 +369,7 @@

    Fieldservice Availability

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:be5beaa150e47bb357aac875c2973c812848b3adcdd8f37c762116114dbee35b !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    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 defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, @@ -379,8 +379,8 @@

    Fieldservice Availability

  • Blackout Days (`fsm.blackout.day`): Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures).
  • -
  • Blackout Groups (`fsm.blackout.group`): Represent groups of days -when field service operations are unavailable (e.g., holidays, +
  • Blackout Groups (`fsm.blackout.group`): Represent groups of +days when field service operations are unavailable (e.g., holidays, company-wide closures).
  • Stress Days (`fsm.stress.day`): Indicate dates with increased service demand (e.g., peak business periods requiring additional @@ -415,7 +415,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.

  • @@ -447,7 +447,7 @@

    Maintainers

    promote its widespread use.

    Current maintainer:

    ppyczko

    -

    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_availability/views/fsm_blackout_day_templates.xml b/fieldservice_availability/views/fsm_blackout_day_templates.xml index 9557fde0f1..482b505239 100644 --- a/fieldservice_availability/views/fsm_blackout_day_templates.xml +++ b/fieldservice_availability/views/fsm_blackout_day_templates.xml @@ -7,10 +7,10 @@ fsm.blackout.day.tree fsm.blackout.day - + - + @@ -18,9 +18,9 @@ fsm.blackout.group.tree fsm.blackout.group - + - + @@ -48,10 +48,10 @@ - + - + @@ -62,7 +62,7 @@ Blackout Days fsm.blackout.day - tree,form + list,form

    Add a Field Service Blackout Day here. @@ -73,7 +73,7 @@ Blackout Groups fsm.blackout.group - tree,form + list,form

    Add a Field Service Blackout Group here. diff --git a/fieldservice_availability/views/fsm_delivery_time_range_templates.xml b/fieldservice_availability/views/fsm_delivery_time_range_templates.xml index 0c42723082..bc1ad3ea36 100644 --- a/fieldservice_availability/views/fsm_delivery_time_range_templates.xml +++ b/fieldservice_availability/views/fsm_delivery_time_range_templates.xml @@ -6,13 +6,13 @@ fsm.delivery.time.range.tree fsm.delivery.time.range - + - + @@ -37,7 +37,7 @@ Delivery Time Ranges fsm.delivery.time.range - tree,form + list,form

    Add a Field Service Delivery Time Range here. diff --git a/fieldservice_availability/views/fsm_stress_day_templates.xml b/fieldservice_availability/views/fsm_stress_day_templates.xml index 202060c81e..f61f8f2218 100644 --- a/fieldservice_availability/views/fsm_stress_day_templates.xml +++ b/fieldservice_availability/views/fsm_stress_day_templates.xml @@ -7,10 +7,10 @@ fsm.stress.day.tree fsm.stress.day - + - + @@ -32,7 +32,7 @@ Stress Days fsm.stress.day - tree,form + list,form

    Add a Field Service Stress Day here. From a71968b85e195bf7988e171b0d93512616f730e7 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 1 Aug 2025 06:10:25 +0000 Subject: [PATCH 34/39] [UPD] Update fieldservice_availability.pot --- fieldservice_availability/i18n/fieldservice_availability.pot | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fieldservice_availability/i18n/fieldservice_availability.pot b/fieldservice_availability/i18n/fieldservice_availability.pot index d8efd4017f..b702673352 100644 --- a/fieldservice_availability/i18n/fieldservice_availability.pot +++ b/fieldservice_availability/i18n/fieldservice_availability.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" @@ -203,6 +203,5 @@ msgstr "" #. module: fieldservice_availability #. odoo-python #: code:addons/fieldservice_availability/models/fsm_delivery_time_range.py:0 -#, python-format msgid "The start time must be earlier than the end time." msgstr "" From d68e028c2693086211c7bec0d4ec9cc9b18d82c5 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 1 Aug 2025 06:14:04 +0000 Subject: [PATCH 35/39] [BOT] post-merge updates --- fieldservice_availability/README.rst | 36 ++++++++++--------- .../static/description/index.html | 32 ++++++++++------- 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index f36506b9d2..7ccc6b5b7e 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/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 + ========================= Fieldservice Availability ========================= @@ -7,13 +11,13 @@ Fieldservice Availability !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:be5beaa150e47bb357aac875c2973c812848b3adcdd8f37c762116114dbee35b + !! source digest: sha256:45ba27349be2b7224c790187375371e4612a3a88e0cc36674212f8cd0ce50272 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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 @@ -34,17 +38,17 @@ operations. It provides the necessary models to store this information, which can be used by other modules to manage scheduling, availability, and workload adjustments. -- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field - service operations are unavailable (e.g., holidays, company-wide - closures). -- **Blackout Groups (\`fsm.blackout.group\`)**: Represent groups of - days when field service operations are unavailable (e.g., holidays, - company-wide closures). -- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased - service demand (e.g., peak business periods requiring additional - workforce). -- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define - available time slots for scheduling field service operations. +- **Blackout Days (\`fsm.blackout.day\`)**: Represent dates when field + service operations are unavailable (e.g., holidays, company-wide + closures). +- **Blackout Groups (\`fsm.blackout.group\`)**: Represent groups of days + when field service operations are unavailable (e.g., holidays, + company-wide closures). +- **Stress Days (\`fsm.stress.day\`)**: Indicate dates with increased + service demand (e.g., peak business periods requiring additional + workforce). +- **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define + available time slots for scheduling field service operations. This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field @@ -83,10 +87,10 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Patryk Pyczko - - Antoni Marroig + - Patryk Pyczko + - Antoni Marroig Maintainers ----------- diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index fb1bfff601..1c95f913b2 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -3,7 +3,7 @@ -Fieldservice Availability +README.rst -

    -

    Fieldservice Availability

    +
    + + +Odoo Community Association + +
    +

    Fieldservice Availability

    -

    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 defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, @@ -379,8 +384,8 @@

    Fieldservice Availability

  • Blackout Days (`fsm.blackout.day`): Represent dates when field service operations are unavailable (e.g., holidays, company-wide closures).
  • -
  • Blackout Groups (`fsm.blackout.group`): Represent groups of -days when field service operations are unavailable (e.g., holidays, +
  • Blackout Groups (`fsm.blackout.group`): Represent groups of days +when field service operations are unavailable (e.g., holidays, company-wide closures).
  • Stress Days (`fsm.stress.day`): Indicate dates with increased service demand (e.g., peak business periods requiring additional @@ -405,13 +410,13 @@

    Fieldservice Availability

  • -

    Usage

    +

    Usage

    Navigate to Field Service > Configuration > Scheduling. Once there, you can select Delivery Time Ranges, Blackout Days, Blackout Groups or Festive Days to create new records.

    -

    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 @@ -419,15 +424,15 @@

    Bug Tracker

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

    -

    Credits

    +

    Credits

    -

    Authors

    +

    Authors

    • APSL-Nagarro
    -

    Contributors

    +

    Contributors

    -

    Maintainers

    +

    Maintainers

    This module is maintained by the OCA.

    Odoo Community Association @@ -452,5 +457,6 @@

    Maintainers

    +
    From 5abe30e989fb27a2f71fe87ed0ca2fa479845fb5 Mon Sep 17 00:00:00 2001 From: Ed-Spain Date: Sun, 12 Apr 2026 11:08:15 +0000 Subject: [PATCH 36/39] Translated using Weblate (Spanish) Currently translated at 100.0% (33 of 33 strings) Translation: field-service-18.0/field-service-18.0-fieldservice_availability Translate-URL: https://translation.odoo-community.org/projects/field-service-18-0/field-service-18-0-fieldservice_availability/es/ --- fieldservice_availability/i18n/es.po | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fieldservice_availability/i18n/es.po b/fieldservice_availability/i18n/es.po index d7f006c2dd..e19787d4c7 100644 --- a/fieldservice_availability/i18n/es.po +++ b/fieldservice_availability/i18n/es.po @@ -7,13 +7,15 @@ msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-04-16 12:05+0000\n" -"PO-Revision-Date: 2025-04-16 12:05+0000\n" -"Last-Translator: \n" +"PO-Revision-Date: 2026-04-12 12:43+0000\n" +"Last-Translator: Ed-Spain \n" "Language-Team: \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.15.2\n" #. module: fieldservice_availability #: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_blackout_day_unique_blackout_day @@ -147,7 +149,7 @@ msgstr "Días de Alta Demanda" #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id msgid "ID" -msgstr "" +msgstr "ID" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid From fc9d6233b05317c63feba03737ec45aecc004e61 Mon Sep 17 00:00:00 2001 From: mtbochaca Date: Tue, 21 Apr 2026 15:21:34 +0000 Subject: [PATCH 37/39] Translated using Weblate (Catalan) Currently translated at 100.0% (33 of 33 strings) Translation: field-service-18.0/field-service-18.0-fieldservice_availability Translate-URL: https://translation.odoo-community.org/projects/field-service-18-0/field-service-18-0-fieldservice_availability/ca/ --- fieldservice_availability/i18n/ca.po | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fieldservice_availability/i18n/ca.po b/fieldservice_availability/i18n/ca.po index 3f639bd722..ec5fe2bed7 100644 --- a/fieldservice_availability/i18n/ca.po +++ b/fieldservice_availability/i18n/ca.po @@ -7,13 +7,15 @@ msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-04-16 12:04+0000\n" -"PO-Revision-Date: 2025-04-16 12:04+0000\n" -"Last-Translator: \n" +"PO-Revision-Date: 2026-04-21 15:24+0000\n" +"Last-Translator: mtbochaca \n" "Language-Team: \n" +"Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.15.2\n" #. module: fieldservice_availability #: model:ir.model.constraint,message:fieldservice_availability.constraint_fsm_blackout_day_unique_blackout_day @@ -147,7 +149,7 @@ msgstr "Dies d'alta demanda" #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_delivery_time_range__id #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_stress_day__id msgid "ID" -msgstr "" +msgstr "ID" #. module: fieldservice_availability #: model:ir.model.fields,field_description:fieldservice_availability.field_fsm_blackout_day__write_uid From 9023c98d9b6cd08ffad0c0add5f79605e96d9436 Mon Sep 17 00:00:00 2001 From: linto-antony Date: Mon, 20 Jul 2026 14:55:49 +0530 Subject: [PATCH 38/39] [MIG] fieldservice_availability: Migration to 19.0 --- fieldservice_availability/README.rst | 20 +++++++++++-------- fieldservice_availability/__manifest__.py | 8 +++++++- .../demo/fsm_blackout_day_demo.xml | 16 +++++++++++++++ .../demo/fsm_blackout_group_demo.xml | 9 +++++++++ .../demo/fsm_delivery_time_range_demo.xml | 8 ++++++++ .../demo/fsm_stress_day_demo.xml | 16 +++++++++++++++ .../i18n/fieldservice_availability.pot | 2 +- .../models/fsm_blackout_day.py | 11 ++++------ .../models/fsm_delivery_time_range.py | 4 ++-- .../models/fsm_stress_day.py | 11 ++++------ .../readme/CONTRIBUTORS.md | 2 ++ fieldservice_availability/readme/USAGE.md | 4 ++-- .../static/description/index.html | 16 +++++++++------ .../tests/test_fsm_delivery_time_range.py | 1 + .../fsm_delivery_time_range_templates.xml | 1 + 15 files changed, 95 insertions(+), 34 deletions(-) create mode 100644 fieldservice_availability/demo/fsm_blackout_day_demo.xml create mode 100644 fieldservice_availability/demo/fsm_blackout_group_demo.xml create mode 100644 fieldservice_availability/demo/fsm_delivery_time_range_demo.xml create mode 100644 fieldservice_availability/demo/fsm_stress_day_demo.xml diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index 7ccc6b5b7e..b68c3f32a0 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/README.rst @@ -21,13 +21,13 @@ Fieldservice Availability :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_availability + :target: https://github.com/OCA/field-service/tree/19.0/fieldservice_availability :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_availability + :target: https://translation.odoo-community.org/projects/field-service-19-0/field-service-19-0-fieldservice_availability :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| @@ -62,9 +62,9 @@ service workflows. Usage ===== -Navigate to Field Service > Configuration > Scheduling. Once there, you -can select Delivery Time Ranges, Blackout Days, Blackout Groups or -Festive Days to create new records. +Navigate to Field Service > Configuration > Availability. Once there, +you can select Delivery Time Ranges, Blackout Days, Blackout Groups or +Stress Days to create new records. Bug Tracker =========== @@ -72,7 +72,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,10 @@ Contributors - Patryk Pyczko - Antoni Marroig +- `CIT Services `__: + + - Linto Antony + Maintainers ----------- @@ -113,6 +117,6 @@ Current `maintainer `__: |maintainer-ppyczko| -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_availability/__manifest__.py b/fieldservice_availability/__manifest__.py index fc4eccf93c..c73e886d36 100644 --- a/fieldservice_availability/__manifest__.py +++ b/fieldservice_availability/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Fieldservice Availability", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "summary": "Provides models for defining blackout days, stress days, " "and delivery time ranges for FSM availability management.", "category": "Field Service", @@ -21,4 +21,10 @@ "views/fsm_stress_day_templates.xml", "views/menu.xml", ], + "demo": [ + "demo/fsm_blackout_day_demo.xml", + "demo/fsm_blackout_group_demo.xml", + "demo/fsm_delivery_time_range_demo.xml", + "demo/fsm_stress_day_demo.xml", + ], } diff --git a/fieldservice_availability/demo/fsm_blackout_day_demo.xml b/fieldservice_availability/demo/fsm_blackout_day_demo.xml new file mode 100644 index 0000000000..b0b32fa9fc --- /dev/null +++ b/fieldservice_availability/demo/fsm_blackout_day_demo.xml @@ -0,0 +1,16 @@ + + + BlackOut Day 01 + + + + + BlackOut Day 02 + + + + + BlackOut Day 03 + + + diff --git a/fieldservice_availability/demo/fsm_blackout_group_demo.xml b/fieldservice_availability/demo/fsm_blackout_group_demo.xml new file mode 100644 index 0000000000..91fb701b66 --- /dev/null +++ b/fieldservice_availability/demo/fsm_blackout_group_demo.xml @@ -0,0 +1,9 @@ + + + BlackOut Group 01 + + + diff --git a/fieldservice_availability/demo/fsm_delivery_time_range_demo.xml b/fieldservice_availability/demo/fsm_delivery_time_range_demo.xml new file mode 100644 index 0000000000..9629ead0ef --- /dev/null +++ b/fieldservice_availability/demo/fsm_delivery_time_range_demo.xml @@ -0,0 +1,8 @@ + + + Delivery Time Range 01 + 09.00 + 18.00 + + + diff --git a/fieldservice_availability/demo/fsm_stress_day_demo.xml b/fieldservice_availability/demo/fsm_stress_day_demo.xml new file mode 100644 index 0000000000..53de55f863 --- /dev/null +++ b/fieldservice_availability/demo/fsm_stress_day_demo.xml @@ -0,0 +1,16 @@ + + + Stress Day 01 + + + + + Stress Day 02 + + + + + Stress Day 03 + + + diff --git a/fieldservice_availability/i18n/fieldservice_availability.pot b/fieldservice_availability/i18n/fieldservice_availability.pot index b702673352..c177bc356f 100644 --- a/fieldservice_availability/i18n/fieldservice_availability.pot +++ b/fieldservice_availability/i18n/fieldservice_availability.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 18.0\n" +"Project-Id-Version: Odoo Server 19.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/fieldservice_availability/models/fsm_blackout_day.py b/fieldservice_availability/models/fsm_blackout_day.py index 1bde49c21b..95e5dd7c1d 100644 --- a/fieldservice_availability/models/fsm_blackout_day.py +++ b/fieldservice_availability/models/fsm_blackout_day.py @@ -11,10 +11,7 @@ class FieldServiceBlackoutDay(models.Model): name = fields.Char(string="Description", required=True) date = fields.Date(string="Blackout Day", required=True) - _sql_constraints = [ - ( - "unique_blackout_day", - "unique(date)", - "A blackout day with this date already exists!", - ) - ] + _unique_blackout_day = models.Constraint( + "unique(date)", + "A blackout day with this date already exists!", + ) diff --git a/fieldservice_availability/models/fsm_delivery_time_range.py b/fieldservice_availability/models/fsm_delivery_time_range.py index 017baed107..ddfec6efb1 100644 --- a/fieldservice_availability/models/fsm_delivery_time_range.py +++ b/fieldservice_availability/models/fsm_delivery_time_range.py @@ -1,7 +1,7 @@ # Copyright 2025 Patryk Pyczko (APSL-Nagarro) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import _, api, fields, models +from odoo import api, fields, models from odoo.exceptions import ValidationError @@ -36,5 +36,5 @@ def _check_time_range(self): for record in self: if record.start_time >= record.end_time: raise ValidationError( - _("The start time must be earlier than the end time.") + self.env._("The start time must be earlier than the end time.") ) diff --git a/fieldservice_availability/models/fsm_stress_day.py b/fieldservice_availability/models/fsm_stress_day.py index bda2ddde1c..20a54a071d 100644 --- a/fieldservice_availability/models/fsm_stress_day.py +++ b/fieldservice_availability/models/fsm_stress_day.py @@ -11,10 +11,7 @@ class FieldServiceStressDay(models.Model): name = fields.Char(string="Description", required=True) date = fields.Date(string="Stress Day", required=True) - _sql_constraints = [ - ( - "unique_stress_day", - "unique(date)", - "A stress day with this date already exists!", - ) - ] + _unique_stress_day = models.Constraint( + "unique(date)", + "A stress day with this date already exists!", + ) diff --git a/fieldservice_availability/readme/CONTRIBUTORS.md b/fieldservice_availability/readme/CONTRIBUTORS.md index bc743d1d2d..661317f2dc 100644 --- a/fieldservice_availability/readme/CONTRIBUTORS.md +++ b/fieldservice_availability/readme/CONTRIBUTORS.md @@ -1,3 +1,5 @@ - [APSL-Nagarro](https://www.apsl.tech): - Patryk Pyczko \<\> - Antoni Marroig \<\> +- [CIT Services](https://cit-services.in/): + - Linto Antony \<\> diff --git a/fieldservice_availability/readme/USAGE.md b/fieldservice_availability/readme/USAGE.md index 535e7d03f2..ef813044b4 100644 --- a/fieldservice_availability/readme/USAGE.md +++ b/fieldservice_availability/readme/USAGE.md @@ -1,3 +1,3 @@ -Navigate to Field Service \> Configuration \> Scheduling. Once there, -you can select Delivery Time Ranges, Blackout Days, Blackout Groups or Festive Days to +Navigate to Field Service \> Configuration \> Availability. Once there, +you can select Delivery Time Ranges, Blackout Days, Blackout Groups or Stress Days to create new records. diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index 1c95f913b2..0cd80137f1 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -374,7 +374,7 @@

    Fieldservice Availability

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:45ba27349be2b7224c790187375371e4612a3a88e0cc36674212f8cd0ce50272 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    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 defines blackout days (non-operational days), stress days (high-demand periods), and delivery time ranges for field service operations. It provides the necessary models to store this information, @@ -411,16 +411,16 @@

    Fieldservice Availability

    Usage

    -

    Navigate to Field Service > Configuration > Scheduling. Once there, you -can select Delivery Time Ranges, Blackout Days, Blackout Groups or -Festive Days to create new records.

    +

    Navigate to Field Service > Configuration > Availability. Once there, +you can select Delivery Time Ranges, Blackout Days, Blackout Groups or +Stress Days to create new records.

    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.

    @@ -439,6 +439,10 @@

    Contributors

  • Antoni Marroig <amarroig@apsl.net>
  • +
  • CIT Services: +
  • @@ -452,7 +456,7 @@

    Maintainers

    promote its widespread use.

    Current maintainer:

    ppyczko

    -

    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_availability/tests/test_fsm_delivery_time_range.py b/fieldservice_availability/tests/test_fsm_delivery_time_range.py index 53e7ff9f59..2c3f9cd238 100644 --- a/fieldservice_availability/tests/test_fsm_delivery_time_range.py +++ b/fieldservice_availability/tests/test_fsm_delivery_time_range.py @@ -9,6 +9,7 @@ class TestFSMDeliveryTimeRange(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) cls.time_range_model = cls.env["fsm.delivery.time.range"] def test_create_valid_time_range(self): diff --git a/fieldservice_availability/views/fsm_delivery_time_range_templates.xml b/fieldservice_availability/views/fsm_delivery_time_range_templates.xml index bc1ad3ea36..99e8873e10 100644 --- a/fieldservice_availability/views/fsm_delivery_time_range_templates.xml +++ b/fieldservice_availability/views/fsm_delivery_time_range_templates.xml @@ -1,3 +1,4 @@ + From 9062ae9e6a3631b7daa422878ca7478964c5767c Mon Sep 17 00:00:00 2001 From: linto-antony Date: Thu, 23 Jul 2026 19:42:39 +0530 Subject: [PATCH 39/39] [IMP] fieldservice_availability: merged features of fieldservice_route_availability --- fieldservice_availability/README.rst | 13 + fieldservice_availability/__manifest__.py | 1 + fieldservice_availability/models/__init__.py | 2 + .../models/fsm_blackout_day.py | 3 + .../models/fsm_order.py | 0 .../models/fsm_route.py | 0 .../readme/DESCRIPTION.md | 2 + fieldservice_availability/readme/USAGE.md | 6 + .../static/description/index.html | 12 + fieldservice_availability/tests/__init__.py | 1 + .../tests/test_route_availability.py | 0 .../views/fsm_blackout_day_templates.xml | 3 + .../views/fsm_route.xml | 0 fieldservice_route_availability/README.rst | 101 ---- fieldservice_route_availability/__init__.py | 3 - .../__manifest__.py | 22 - fieldservice_route_availability/i18n/ca.po | 67 --- fieldservice_route_availability/i18n/es.po | 67 --- .../i18n/fieldservice_route_availability.pot | 52 -- fieldservice_route_availability/i18n/it.po | 66 --- fieldservice_route_availability/i18n/pt_BR.po | 54 --- .../models/__init__.py | 5 - .../models/fsm_blackout_day.py | 12 - .../pyproject.toml | 3 - .../readme/CONTRIBUTORS.md | 2 - .../readme/DESCRIPTION.md | 1 - .../readme/USAGE.md | 3 - .../static/description/icon.png | Bin 17808 -> 0 bytes .../static/description/index.html | 447 ------------------ .../tests/__init__.py | 3 - .../views/fsm_blackout_day_templates.xml | 42 -- 31 files changed, 43 insertions(+), 950 deletions(-) rename {fieldservice_route_availability => fieldservice_availability}/models/fsm_order.py (100%) rename {fieldservice_route_availability => fieldservice_availability}/models/fsm_route.py (100%) rename {fieldservice_route_availability => fieldservice_availability}/tests/test_route_availability.py (100%) rename {fieldservice_route_availability => fieldservice_availability}/views/fsm_route.xml (100%) delete mode 100644 fieldservice_route_availability/README.rst delete mode 100644 fieldservice_route_availability/__init__.py delete mode 100644 fieldservice_route_availability/__manifest__.py delete mode 100644 fieldservice_route_availability/i18n/ca.po delete mode 100644 fieldservice_route_availability/i18n/es.po delete mode 100644 fieldservice_route_availability/i18n/fieldservice_route_availability.pot delete mode 100644 fieldservice_route_availability/i18n/it.po delete mode 100644 fieldservice_route_availability/i18n/pt_BR.po delete mode 100644 fieldservice_route_availability/models/__init__.py delete mode 100644 fieldservice_route_availability/models/fsm_blackout_day.py delete mode 100644 fieldservice_route_availability/pyproject.toml delete mode 100644 fieldservice_route_availability/readme/CONTRIBUTORS.md delete mode 100644 fieldservice_route_availability/readme/DESCRIPTION.md delete mode 100644 fieldservice_route_availability/readme/USAGE.md delete mode 100644 fieldservice_route_availability/static/description/icon.png delete mode 100644 fieldservice_route_availability/static/description/index.html delete mode 100644 fieldservice_route_availability/tests/__init__.py delete mode 100644 fieldservice_route_availability/views/fsm_blackout_day_templates.xml diff --git a/fieldservice_availability/README.rst b/fieldservice_availability/README.rst index b68c3f32a0..192e45f13a 100644 --- a/fieldservice_availability/README.rst +++ b/fieldservice_availability/README.rst @@ -50,6 +50,9 @@ and workload adjustments. - **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define available time slots for scheduling field service operations. +**Restricts blackout days for Scheduled Start (ETA) orders with the same +date** + This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field service workflows. @@ -66,6 +69,16 @@ Navigate to Field Service > Configuration > Availability. Once there, you can select Delivery Time Ranges, Blackout Days, Blackout Groups or Stress Days to create new records. +Steps to restrict blackout days for Scheduled Start (ETA) orders with +the same date + +1. Set up Blackout Days on Configuration > Blackout Groups and create or + edit one with blackout days +2. Go to Field Service > Master Data > Routes > Create or edit route and + assign Blackout Group Days and a Person +3. Create a Field Service order and set up Scheduled Start (ETA) with + date that you put on blackout days and the Odoo will throw an error + Bug Tracker =========== diff --git a/fieldservice_availability/__manifest__.py b/fieldservice_availability/__manifest__.py index c73e886d36..cf551a24b5 100644 --- a/fieldservice_availability/__manifest__.py +++ b/fieldservice_availability/__manifest__.py @@ -19,6 +19,7 @@ "views/fsm_blackout_day_templates.xml", "views/fsm_delivery_time_range_templates.xml", "views/fsm_stress_day_templates.xml", + "views/fsm_route.xml", "views/menu.xml", ], "demo": [ diff --git a/fieldservice_availability/models/__init__.py b/fieldservice_availability/models/__init__.py index b3927bdf20..494f74c80d 100644 --- a/fieldservice_availability/models/__init__.py +++ b/fieldservice_availability/models/__init__.py @@ -1,5 +1,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import fsm_order +from . import fsm_route from . import fsm_blackout_day from . import fsm_blackout_group from . import fsm_delivery_time_range diff --git a/fieldservice_availability/models/fsm_blackout_day.py b/fieldservice_availability/models/fsm_blackout_day.py index 95e5dd7c1d..110cc2395a 100644 --- a/fieldservice_availability/models/fsm_blackout_day.py +++ b/fieldservice_availability/models/fsm_blackout_day.py @@ -10,6 +10,9 @@ class FieldServiceBlackoutDay(models.Model): name = fields.Char(string="Description", required=True) date = fields.Date(string="Blackout Day", required=True) + zip = fields.Char( + help="Postal code of the blackout day.", + ) _unique_blackout_day = models.Constraint( "unique(date)", diff --git a/fieldservice_route_availability/models/fsm_order.py b/fieldservice_availability/models/fsm_order.py similarity index 100% rename from fieldservice_route_availability/models/fsm_order.py rename to fieldservice_availability/models/fsm_order.py diff --git a/fieldservice_route_availability/models/fsm_route.py b/fieldservice_availability/models/fsm_route.py similarity index 100% rename from fieldservice_route_availability/models/fsm_route.py rename to fieldservice_availability/models/fsm_route.py diff --git a/fieldservice_availability/readme/DESCRIPTION.md b/fieldservice_availability/readme/DESCRIPTION.md index fa6e13ca0d..75a7ab731e 100644 --- a/fieldservice_availability/readme/DESCRIPTION.md +++ b/fieldservice_availability/readme/DESCRIPTION.md @@ -16,6 +16,8 @@ and workload adjustments. - **Delivery Time Ranges (\`fsm.delivery.time.range\`)**: Define available time slots for scheduling field service operations. +**Restricts blackout days for Scheduled Start (ETA) orders with the same date** + This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field service workflows. diff --git a/fieldservice_availability/readme/USAGE.md b/fieldservice_availability/readme/USAGE.md index ef813044b4..bbe650fce3 100644 --- a/fieldservice_availability/readme/USAGE.md +++ b/fieldservice_availability/readme/USAGE.md @@ -1,3 +1,9 @@ Navigate to Field Service \> Configuration \> Availability. Once there, you can select Delivery Time Ranges, Blackout Days, Blackout Groups or Stress Days to create new records. + +Steps to restrict blackout days for Scheduled Start (ETA) orders with the same date + +1. Set up Blackout Days on Configuration > Blackout Groups and create or edit one with blackout days +2. Go to Field Service > Master Data > Routes > Create or edit route and assign Blackout Group Days and a Person +3. Create a Field Service order and set up Scheduled Start (ETA) with date that you put on blackout days and the Odoo will throw an error diff --git a/fieldservice_availability/static/description/index.html b/fieldservice_availability/static/description/index.html index 0cd80137f1..815a11eeb1 100644 --- a/fieldservice_availability/static/description/index.html +++ b/fieldservice_availability/static/description/index.html @@ -393,6 +393,8 @@

    Fieldservice Availability

  • Delivery Time Ranges (`fsm.delivery.time.range`): Define available time slots for scheduling field service operations.
  • +

    Restricts blackout days for Scheduled Start (ETA) orders with the same +date

    This is a technical module and does not provide functionality on its own. Extend this module to integrate availability management into field service workflows.

    @@ -414,6 +416,16 @@

    Usage

    Navigate to Field Service > Configuration > Availability. Once there, you can select Delivery Time Ranges, Blackout Days, Blackout Groups or Stress Days to create new records.

    +

    Steps to restrict blackout days for Scheduled Start (ETA) orders with +the same date

    +
      +
    1. Set up Blackout Days on Configuration > Blackout Groups and create or +edit one with blackout days
    2. +
    3. Go to Field Service > Master Data > Routes > Create or edit route and +assign Blackout Group Days and a Person
    4. +
    5. Create a Field Service order and set up Scheduled Start (ETA) with +date that you put on blackout days and the Odoo will throw an error
    6. +

    Bug Tracker

    diff --git a/fieldservice_availability/tests/__init__.py b/fieldservice_availability/tests/__init__.py index b42221f8cd..4ab5bcf03b 100644 --- a/fieldservice_availability/tests/__init__.py +++ b/fieldservice_availability/tests/__init__.py @@ -1,3 +1,4 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import test_fsm_delivery_time_range +from . import test_route_availability diff --git a/fieldservice_route_availability/tests/test_route_availability.py b/fieldservice_availability/tests/test_route_availability.py similarity index 100% rename from fieldservice_route_availability/tests/test_route_availability.py rename to fieldservice_availability/tests/test_route_availability.py diff --git a/fieldservice_availability/views/fsm_blackout_day_templates.xml b/fieldservice_availability/views/fsm_blackout_day_templates.xml index 482b505239..9c8a3f58b1 100644 --- a/fieldservice_availability/views/fsm_blackout_day_templates.xml +++ b/fieldservice_availability/views/fsm_blackout_day_templates.xml @@ -10,6 +10,7 @@ + @@ -33,6 +34,7 @@ + @@ -51,6 +53,7 @@ + diff --git a/fieldservice_route_availability/views/fsm_route.xml b/fieldservice_availability/views/fsm_route.xml similarity index 100% rename from fieldservice_route_availability/views/fsm_route.xml rename to fieldservice_availability/views/fsm_route.xml diff --git a/fieldservice_route_availability/README.rst b/fieldservice_route_availability/README.rst deleted file mode 100644 index e5f48d26ca..0000000000 --- a/fieldservice_route_availability/README.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. image:: https://odoo-community.org/readme-banner-image - :target: https://odoo-community.org/get-involved?utm_source=readme - :alt: Odoo Community Association - -================================ -Field Service Route Availability -================================ - -.. - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! This file is generated by oca-gen-addon-readme !! - !! changes will be overwritten. !! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:f97a0f9f48a2f234098d54456543256dfe5c5806034588eb2e0756823e13f3d2 - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -.. |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/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 - :target: https://github.com/OCA/field-service/tree/19.0/fieldservice_route_availability - :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-19-0/field-service-19-0-fieldservice_route_availability - :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=19.0 - :alt: Try me on Runboat - -|badge1| |badge2| |badge3| |badge4| |badge5| - -Restricts blackout days for Scheduled Start (ETA) orders with the same -date - -**Table of contents** - -.. contents:: - :local: - -Usage -===== - -1. Set up Blackout Days on Configuration > Blackout Groups and create or - edit one with blackout days -2. Go to Field Service > Master Data > Routes > Create or edit route and - assign Blackout Group Days and a Person -3. Create a Field Service order and set up Scheduled Start (ETA) with - date that you put on blackout days and the Odoo will throw an error - -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 -------- - -* APSL-Nagarro - -Contributors ------------- - -- `APSL-Nagarro `__: - - - Antoni Marroig - -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-peluko00| image:: https://github.com/peluko00.png?size=40px - :target: https://github.com/peluko00 - :alt: peluko00 - -Current `maintainer `__: - -|maintainer-peluko00| - -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_route_availability/__init__.py b/fieldservice_route_availability/__init__.py deleted file mode 100644 index 31660d6a96..0000000000 --- a/fieldservice_route_availability/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from . import models diff --git a/fieldservice_route_availability/__manifest__.py b/fieldservice_route_availability/__manifest__.py deleted file mode 100644 index 0403204894..0000000000 --- a/fieldservice_route_availability/__manifest__.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2025 APSL-Nagarro Antoni Marroig -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -{ - "name": "Field Service Route Availability", - "summary": "Restricts blackout days for Scheduled Start (ETA) " - "orders with the same date.", - "version": "19.0.1.0.0", - "category": "Field Service", - "website": "https://github.com/OCA/field-service", - "author": "APSL-Nagarro, Odoo Community Association (OCA)", - "maintainers": ["peluko00"], - "license": "AGPL-3", - "application": False, - "installable": True, - "depends": [ - "fieldservice_availability", - ], - "data": [ - "views/fsm_route.xml", - "views/fsm_blackout_day_templates.xml", - ], -} diff --git a/fieldservice_route_availability/i18n/ca.po b/fieldservice_route_availability/i18n/ca.po deleted file mode 100644 index 17e084d53c..0000000000 --- a/fieldservice_route_availability/i18n/ca.po +++ /dev/null @@ -1,67 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * fieldservice_route_availability -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-23 06:22+0000\n" -"PO-Revision-Date: 2025-06-26 12:25+0000\n" -"Last-Translator: Antoni Marroig Campomar \n" -"Language-Team: \n" -"Language: ca\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.10.4\n" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day -msgid "Blackout Days (No Service)" -msgstr "Dies sense servei" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids -msgid "Blackout Group Days" -msgstr "Grup de bloqueig de dies" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_order -msgid "Field Service Order" -msgstr "Comanda del Servei de Camp" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_route -msgid "Field Service Route" -msgstr "Ruta del Servei de Camp" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Postal code of the blackout day." -msgstr "Codi postal del dia sense servei." - -#. module: fieldservice_route_availability -#. odoo-python -#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 -#, python-format -msgid "" -"The date %(date)s is a blackout day for field service operations on this " -"route." -msgstr "" -"La data %(date)s és un dia d'interrupció per a les operacions del servei de " -"camp en aquest ruta." - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Zip" -msgstr "Codi postal" - -#, python-format -#~ msgid "" -#~ "The date %(date)s is a blackout day for field service operations on this " -#~ "route" -#~ msgstr "" -#~ "La data %(date)s és un dia d'interrupció per a les operacions del servei " -#~ "de camp en aquest ruta" diff --git a/fieldservice_route_availability/i18n/es.po b/fieldservice_route_availability/i18n/es.po deleted file mode 100644 index 4d38910764..0000000000 --- a/fieldservice_route_availability/i18n/es.po +++ /dev/null @@ -1,67 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * fieldservice_route_availability -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-23 06:22+0000\n" -"PO-Revision-Date: 2025-06-26 12:25+0000\n" -"Last-Translator: Antoni Marroig Campomar \n" -"Language-Team: \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 5.10.4\n" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day -msgid "Blackout Days (No Service)" -msgstr "Días sin servicio" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids -msgid "Blackout Group Days" -msgstr "Grupo de bloqueo de días" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_order -msgid "Field Service Order" -msgstr "Pedido de Servicio de Campo" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_route -msgid "Field Service Route" -msgstr "Ubicación del Servicio de Campo" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Postal code of the blackout day." -msgstr "Código postal del día sin servicio." - -#. module: fieldservice_route_availability -#. odoo-python -#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 -#, python-format -msgid "" -"The date %(date)s is a blackout day for field service operations on this " -"route." -msgstr "" -"La fecha %(date)s es un día sin disponibilidad para las operaciones de " -"servicio de campo en esta ruta." - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Zip" -msgstr "Código postal" - -#, python-format -#~ msgid "" -#~ "The date %(date)s is a blackout day for field service operations on this " -#~ "route" -#~ msgstr "" -#~ "La fecha %(date)s es un día sin disponibilidad para las operaciones de " -#~ "servicio de campo en esta ruta" diff --git a/fieldservice_route_availability/i18n/fieldservice_route_availability.pot b/fieldservice_route_availability/i18n/fieldservice_route_availability.pot deleted file mode 100644 index 72f64267cf..0000000000 --- a/fieldservice_route_availability/i18n/fieldservice_route_availability.pot +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * fieldservice_route_availability -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.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_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day -msgid "Blackout Days (No Service)" -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids -msgid "Blackout Group Days" -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_order -msgid "Field Service Order" -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_route -msgid "Field Service Route" -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Postal code of the blackout day." -msgstr "" - -#. module: fieldservice_route_availability -#. odoo-python -#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 -msgid "" -"The date %(date)s is a blackout day for field service operations on this " -"route." -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Zip" -msgstr "" diff --git a/fieldservice_route_availability/i18n/it.po b/fieldservice_route_availability/i18n/it.po deleted file mode 100644 index 015eaa180c..0000000000 --- a/fieldservice_route_availability/i18n/it.po +++ /dev/null @@ -1,66 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * fieldservice_route_availability -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2025-06-25 09:25+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.10.4\n" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day -msgid "Blackout Days (No Service)" -msgstr "Giorno di sospensione (nessun servizio)" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids -msgid "Blackout Group Days" -msgstr "Gruppo giorni sospensione" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_order -msgid "Field Service Order" -msgstr "Ordine assistenza sul campo" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_route -msgid "Field Service Route" -msgstr "Percorso assistenza sul campo" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Postal code of the blackout day." -msgstr "Codice postale del giorno di sospensione." - -#. module: fieldservice_route_availability -#. odoo-python -#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 -#, python-format -msgid "" -"The date %(date)s is a blackout day for field service operations on this " -"route." -msgstr "" -"Il giorno %(date)s è una data di sospensione per le operazioni di assistenza " -"sul campo su questo percorso." - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Zip" -msgstr "CAP" - -#, python-format -#~ msgid "" -#~ "The date %(date)s is a blackout day for field service operations on this " -#~ "route" -#~ msgstr "" -#~ "Il giorno %(date)s è una data di sospensione per le operazioni di " -#~ "assistenza sul campo su questo percorso" diff --git a/fieldservice_route_availability/i18n/pt_BR.po b/fieldservice_route_availability/i18n/pt_BR.po deleted file mode 100644 index 935db5fe2e..0000000000 --- a/fieldservice_route_availability/i18n/pt_BR.po +++ /dev/null @@ -1,54 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * fieldservice_route_availability -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" -"Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: pt_BR\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: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_blackout_day -msgid "Blackout Days (No Service)" -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_route__fsm_blackout_group_ids -msgid "Blackout Group Days" -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_order -msgid "Field Service Order" -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model,name:fieldservice_route_availability.model_fsm_route -msgid "Field Service Route" -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,help:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Postal code of the blackout day." -msgstr "" - -#. module: fieldservice_route_availability -#. odoo-python -#: code:addons/fieldservice_route_availability/models/fsm_order.py:0 -#, python-format -msgid "" -"The date %(date)s is a blackout day for field service operations on this " -"route." -msgstr "" - -#. module: fieldservice_route_availability -#: model:ir.model.fields,field_description:fieldservice_route_availability.field_fsm_blackout_day__zip -msgid "Zip" -msgstr "" diff --git a/fieldservice_route_availability/models/__init__.py b/fieldservice_route_availability/models/__init__.py deleted file mode 100644 index 133fcb6dcf..0000000000 --- a/fieldservice_route_availability/models/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from . import fsm_route -from . import fsm_order -from . import fsm_blackout_day diff --git a/fieldservice_route_availability/models/fsm_blackout_day.py b/fieldservice_route_availability/models/fsm_blackout_day.py deleted file mode 100644 index 42e1a672c7..0000000000 --- a/fieldservice_route_availability/models/fsm_blackout_day.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2025 APSL-Nagarro Bernat Obrador -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import fields, models - - -class FieldServiceBlackoutDay(models.Model): - _inherit = "fsm.blackout.day" - - zip = fields.Char( - help="Postal code of the blackout day.", - ) diff --git a/fieldservice_route_availability/pyproject.toml b/fieldservice_route_availability/pyproject.toml deleted file mode 100644 index 4231d0cccb..0000000000 --- a/fieldservice_route_availability/pyproject.toml +++ /dev/null @@ -1,3 +0,0 @@ -[build-system] -requires = ["whool"] -build-backend = "whool.buildapi" diff --git a/fieldservice_route_availability/readme/CONTRIBUTORS.md b/fieldservice_route_availability/readme/CONTRIBUTORS.md deleted file mode 100644 index 3b1bd465e8..0000000000 --- a/fieldservice_route_availability/readme/CONTRIBUTORS.md +++ /dev/null @@ -1,2 +0,0 @@ -- [APSL-Nagarro](https://www.apsl.tech): - - Antoni Marroig \<\> \ No newline at end of file diff --git a/fieldservice_route_availability/readme/DESCRIPTION.md b/fieldservice_route_availability/readme/DESCRIPTION.md deleted file mode 100644 index abf06ed5db..0000000000 --- a/fieldservice_route_availability/readme/DESCRIPTION.md +++ /dev/null @@ -1 +0,0 @@ -Restricts blackout days for Scheduled Start (ETA) orders with the same date diff --git a/fieldservice_route_availability/readme/USAGE.md b/fieldservice_route_availability/readme/USAGE.md deleted file mode 100644 index 0080021b4e..0000000000 --- a/fieldservice_route_availability/readme/USAGE.md +++ /dev/null @@ -1,3 +0,0 @@ -1. Set up Blackout Days on Configuration > Blackout Groups and create or edit one with blackout days -2. Go to Field Service > Master Data > Routes > Create or edit route and assign Blackout Group Days and a Person -3. Create a Field Service order and set up Scheduled Start (ETA) with date that you put on blackout days and the Odoo will throw an error \ No newline at end of file diff --git a/fieldservice_route_availability/static/description/icon.png b/fieldservice_route_availability/static/description/icon.png deleted file mode 100644 index 955674d8f0b8c47de3ffa9db25cb109fbe4a1091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17808 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 diff --git a/fieldservice_route_availability/static/description/index.html b/fieldservice_route_availability/static/description/index.html deleted file mode 100644 index 2898c4b62b..0000000000 --- a/fieldservice_route_availability/static/description/index.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - -README.rst - - - -
    - - - -Odoo Community Association - -
    -

    Field Service Route Availability

    - -

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

    -

    Restricts blackout days for Scheduled Start (ETA) orders with the same -date

    -

    Table of contents

    - -
    -

    Usage

    -
      -
    1. Set up Blackout Days on Configuration > Blackout Groups and create or -edit one with blackout days
    2. -
    3. Go to Field Service > Master Data > Routes > Create or edit route and -assign Blackout Group Days and a Person
    4. -
    5. Create a Field Service order and set up Scheduled Start (ETA) with -date that you put on blackout days and the Odoo will throw an error
    6. -
    -
    -
    -

    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

    -
      -
    • APSL-Nagarro
    • -
    -
    -
    -

    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:

    -

    peluko00

    -

    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_route_availability/tests/__init__.py b/fieldservice_route_availability/tests/__init__.py deleted file mode 100644 index 52899397e8..0000000000 --- a/fieldservice_route_availability/tests/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from . import test_route_availability diff --git a/fieldservice_route_availability/views/fsm_blackout_day_templates.xml b/fieldservice_route_availability/views/fsm_blackout_day_templates.xml deleted file mode 100644 index dd20b4b22d..0000000000 --- a/fieldservice_route_availability/views/fsm_blackout_day_templates.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - fsm.blackout.day.tree.inhetir - fsm.blackout.day - - - - - - - - - fsm.blackout.day.form.inhetir - fsm.blackout.day - - - - - - - - - fsm.blackout.group.form.inhetir - fsm.blackout.group - - - - - - - -