From c0aa0cf31bce73854ad1a5bc977317b530af141c Mon Sep 17 00:00:00 2001 From: Simone Rubino Date: Mon, 5 May 2025 12:24:15 +0200 Subject: [PATCH 1/3] [ADD] hr_leave_date_to_custom_hour --- hr_leave_date_to_custom_hour/README.rst | 80 ++++ hr_leave_date_to_custom_hour/__init__.py | 3 + hr_leave_date_to_custom_hour/__manifest__.py | 17 + hr_leave_date_to_custom_hour/i18n/it.po | 26 ++ .../models/__init__.py | 3 + .../models/hr_leave.py | 25 + .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 3 + .../static/description/index.html | 427 ++++++++++++++++++ .../tests/__init__.py | 3 + .../tests/test_hr_leave.py | 66 +++ .../views/hr_leave_views.xml | 33 ++ .../odoo/addons/hr_leave_date_to_custom_hour | 1 + setup/hr_leave_date_to_custom_hour/setup.py | 6 + 14 files changed, 696 insertions(+) create mode 100644 hr_leave_date_to_custom_hour/README.rst create mode 100644 hr_leave_date_to_custom_hour/__init__.py create mode 100644 hr_leave_date_to_custom_hour/__manifest__.py create mode 100644 hr_leave_date_to_custom_hour/i18n/it.po create mode 100644 hr_leave_date_to_custom_hour/models/__init__.py create mode 100644 hr_leave_date_to_custom_hour/models/hr_leave.py create mode 100644 hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.rst create mode 100644 hr_leave_date_to_custom_hour/readme/DESCRIPTION.rst create mode 100644 hr_leave_date_to_custom_hour/static/description/index.html create mode 100644 hr_leave_date_to_custom_hour/tests/__init__.py create mode 100644 hr_leave_date_to_custom_hour/tests/test_hr_leave.py create mode 100644 hr_leave_date_to_custom_hour/views/hr_leave_views.xml create mode 120000 setup/hr_leave_date_to_custom_hour/odoo/addons/hr_leave_date_to_custom_hour create mode 100644 setup/hr_leave_date_to_custom_hour/setup.py diff --git a/hr_leave_date_to_custom_hour/README.rst b/hr_leave_date_to_custom_hour/README.rst new file mode 100644 index 000000000..970be19f8 --- /dev/null +++ b/hr_leave_date_to_custom_hour/README.rst @@ -0,0 +1,80 @@ +======================== +Date to for custom hours +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:00e668430c75e1e621fb5d6e405c70976c13bc899dc031358f0c6883319c75b3 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fhr--holidays-lightgray.png?logo=github + :target: https://github.com/OCA/hr-holidays/tree/16.0/hr_leave_date_to_custom_hour + :alt: OCA/hr-holidays +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/hr-holidays-16-0/hr-holidays-16-0-hr_leave_date_to_custom_hour + :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/hr-holidays&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to specify an end date when creating a leave with custom hours. + +This is useful when the user wants to take a leave from 10 AM of Monday to 3 PM on Tuesday, or when night shifts are involved. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* PyTech + +Contributors +~~~~~~~~~~~~ + +* `PyTech `_: + + * Simone Rubino + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/hr-holidays `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_leave_date_to_custom_hour/__init__.py b/hr_leave_date_to_custom_hour/__init__.py new file mode 100644 index 000000000..31660d6a9 --- /dev/null +++ b/hr_leave_date_to_custom_hour/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/hr_leave_date_to_custom_hour/__manifest__.py b/hr_leave_date_to_custom_hour/__manifest__.py new file mode 100644 index 000000000..473726780 --- /dev/null +++ b/hr_leave_date_to_custom_hour/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2025 Simone Rubino - PyTech +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Date to for custom hours", + "summary": "Display Date to when custom hours is selected.", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "PyTech, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/hr-holidays", + "depends": [ + "hr_holidays", + ], + "data": [ + "views/hr_leave_views.xml", + ], +} diff --git a/hr_leave_date_to_custom_hour/i18n/it.po b/hr_leave_date_to_custom_hour/i18n/it.po new file mode 100644 index 000000000..f51a223d4 --- /dev/null +++ b/hr_leave_date_to_custom_hour/i18n/it.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_leave_date_to_custom_hour +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-06 10:01+0000\n" +"PO-Revision-Date: 2025-05-06 10:01+0000\n" +"Last-Translator: Simone Rubino\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: hr_leave_date_to_custom_hour +#: model:ir.model.fields,field_description:hr_leave_date_to_custom_hour.field_hr_leave__custom_hours_request_date_to +msgid "Request End Date for custom hours" +msgstr "Data fine richiesta per ore personalizzate" + +#. module: hr_leave_date_to_custom_hour +#: model:ir.model,name:hr_leave_date_to_custom_hour.model_hr_leave +msgid "Time Off" +msgstr "Ferie" diff --git a/hr_leave_date_to_custom_hour/models/__init__.py b/hr_leave_date_to_custom_hour/models/__init__.py new file mode 100644 index 000000000..5498b9fe0 --- /dev/null +++ b/hr_leave_date_to_custom_hour/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import hr_leave diff --git a/hr_leave_date_to_custom_hour/models/hr_leave.py b/hr_leave_date_to_custom_hour/models/hr_leave.py new file mode 100644 index 000000000..641f647ef --- /dev/null +++ b/hr_leave_date_to_custom_hour/models/hr_leave.py @@ -0,0 +1,25 @@ +# Copyright 2025 Simone Rubino - PyTech +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class HRLeave(models.Model): + _inherit = "hr.leave" + + custom_hours_request_date_to = fields.Date( + string="Request End Date for custom hours", + ) + + @api.depends( + "custom_hours_request_date_to", + ) + def _compute_date_from_to(self): + return super()._compute_date_from_to() + + def _get_attendances(self, employee, request_date_from, request_date_to): + if len(self) == 1 and self.request_unit_hours: + self.request_date_to = request_date_to = ( + self.custom_hours_request_date_to or self.request_date_to + ) + return super()._get_attendances(employee, request_date_from, request_date_to) diff --git a/hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.rst b/hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..3e2b10402 --- /dev/null +++ b/hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `PyTech `_: + + * Simone Rubino diff --git a/hr_leave_date_to_custom_hour/readme/DESCRIPTION.rst b/hr_leave_date_to_custom_hour/readme/DESCRIPTION.rst new file mode 100644 index 000000000..a4e65a888 --- /dev/null +++ b/hr_leave_date_to_custom_hour/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module allows to specify an end date when creating a leave with custom hours. + +This is useful when the user wants to take a leave from 10 AM of Monday to 3 PM on Tuesday, or when night shifts are involved. diff --git a/hr_leave_date_to_custom_hour/static/description/index.html b/hr_leave_date_to_custom_hour/static/description/index.html new file mode 100644 index 000000000..975b2f8eb --- /dev/null +++ b/hr_leave_date_to_custom_hour/static/description/index.html @@ -0,0 +1,427 @@ + + + + + +Date to for custom hours + + + +
+

Date to for custom hours

+ + +

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

+

This module allows to specify an end date when creating a leave with custom hours.

+

This is useful when the user wants to take a leave from 10 AM of Monday to 3 PM on Tuesday, or when night shifts are involved.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • PyTech
  • +
+
+
+

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.

+

This module is part of the OCA/hr-holidays project on GitHub.

+

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

+
+
+
+ + diff --git a/hr_leave_date_to_custom_hour/tests/__init__.py b/hr_leave_date_to_custom_hour/tests/__init__.py new file mode 100644 index 000000000..6c60d749d --- /dev/null +++ b/hr_leave_date_to_custom_hour/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_hr_leave diff --git a/hr_leave_date_to_custom_hour/tests/test_hr_leave.py b/hr_leave_date_to_custom_hour/tests/test_hr_leave.py new file mode 100644 index 000000000..8c70e56f2 --- /dev/null +++ b/hr_leave_date_to_custom_hour/tests/test_hr_leave.py @@ -0,0 +1,66 @@ +# Copyright 2025 Simone Rubino - PyTech +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from datetime import datetime, timedelta + +from odoo.tests.common import Form + +from odoo.addons.hr_holidays.tests.common import TestHrHolidaysCommon + + +class TestHRLeave(TestHrHolidaysCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.leave_type_hour_unlimited = cls.env["hr.leave.type"].create( + { + "name": "Test unlimited leave type", + "request_unit": "hour", + "requires_allocation": "no", + } + ) + + def _create_user_leave(self, user, from_datetime, to_datetime): + """Request a leave for `user` from `from_datetime` to `to_datetime`.""" + leave_form = Form(self.env["hr.leave"].with_user(user)) + leave_form.name = "Test leave" + leave_form.holiday_status_id = self.leave_type_hour_unlimited + leave_form.request_unit_hours = True + leave_form.request_date_from = from_datetime.date() + leave_form.custom_hours_request_date_to = to_datetime.date() + + # Module `hr_leave_custom_hour_interval` makes hours fields readonly + from_hour = from_datetime.hour + if "request_time_hour_from" in leave_form._view["fields"]: + leave_form.request_time_hour_from = from_hour + else: + leave_form.request_hour_from = str(from_hour) + + to_hour = to_datetime.hour + if "request_time_hour_to" in leave_form._view["fields"]: + leave_form.request_time_hour_to = to_hour + else: + leave_form.request_hour_to = str(to_hour) + return leave_form.save() + + def test_custom_hours_date_to(self): + """Request a leave from 10 AM to 10 AM of following week. + The leave counts all the working hours in a week. + """ + # Arrange + user = self.user_employee + leave_from = datetime(2019, 5, 6, 10) + leave_to = leave_from + timedelta(weeks=1) + working_hours = user.employee_resource_calendar_id + leave_duration_hours = working_hours.get_work_duration_data( + leave_from, leave_to + )["hours"] + # pre-condition + self.assertEqual(leave_duration_hours, 40) + + # Act + leave = self._create_user_leave(user, leave_from, leave_to) + + # Assert + self.assertEqual(leave.number_of_hours_display, leave_duration_hours) diff --git a/hr_leave_date_to_custom_hour/views/hr_leave_views.xml b/hr_leave_date_to_custom_hour/views/hr_leave_views.xml new file mode 100644 index 000000000..5cbae87cd --- /dev/null +++ b/hr_leave_date_to_custom_hour/views/hr_leave_views.xml @@ -0,0 +1,33 @@ + + + + + Add end date to custom hours mode + hr.leave + + + + From + + + To + + + + daterange + { + 'related_end_date': 'custom_hours_request_date_to', + } + + + + diff --git a/setup/hr_leave_date_to_custom_hour/odoo/addons/hr_leave_date_to_custom_hour b/setup/hr_leave_date_to_custom_hour/odoo/addons/hr_leave_date_to_custom_hour new file mode 120000 index 000000000..7a1845d45 --- /dev/null +++ b/setup/hr_leave_date_to_custom_hour/odoo/addons/hr_leave_date_to_custom_hour @@ -0,0 +1 @@ +../../../../hr_leave_date_to_custom_hour \ No newline at end of file diff --git a/setup/hr_leave_date_to_custom_hour/setup.py b/setup/hr_leave_date_to_custom_hour/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/hr_leave_date_to_custom_hour/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 8be98d364c322c72eb7d435d0ec711639d94fb6f Mon Sep 17 00:00:00 2001 From: Quirino Leone Date: Mon, 29 Dec 2025 15:15:18 +0100 Subject: [PATCH 2/3] [IMP] hr_leave_date_to_custom_hour: pre-commit auto fixes --- hr_leave_date_to_custom_hour/README.rst | 26 ++++++++++--------- hr_leave_date_to_custom_hour/pyproject.toml | 3 +++ .../readme/CONTRIBUTORS.md | 2 ++ .../readme/CONTRIBUTORS.rst | 3 --- .../{DESCRIPTION.rst => DESCRIPTION.md} | 6 +++-- .../static/description/index.html | 12 +++++---- 6 files changed, 30 insertions(+), 22 deletions(-) create mode 100644 hr_leave_date_to_custom_hour/pyproject.toml create mode 100644 hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.md delete mode 100644 hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.rst rename hr_leave_date_to_custom_hour/readme/{DESCRIPTION.rst => DESCRIPTION.md} (61%) diff --git a/hr_leave_date_to_custom_hour/README.rst b/hr_leave_date_to_custom_hour/README.rst index 970be19f8..d92fdedef 100644 --- a/hr_leave_date_to_custom_hour/README.rst +++ b/hr_leave_date_to_custom_hour/README.rst @@ -17,20 +17,22 @@ Date to for custom hours :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr--holidays-lightgray.png?logo=github - :target: https://github.com/OCA/hr-holidays/tree/16.0/hr_leave_date_to_custom_hour + :target: https://github.com/OCA/hr-holidays/tree/18.0/hr_leave_date_to_custom_hour :alt: OCA/hr-holidays .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/hr-holidays-16-0/hr-holidays-16-0-hr_leave_date_to_custom_hour + :target: https://translation.odoo-community.org/projects/hr-holidays-18-0/hr-holidays-18-0-hr_leave_date_to_custom_hour :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/hr-holidays&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/hr-holidays&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -This module allows to specify an end date when creating a leave with custom hours. +This module allows to specify an end date when creating a leave with +custom hours. -This is useful when the user wants to take a leave from 10 AM of Monday to 3 PM on Tuesday, or when night shifts are involved. +This is useful when the user wants to take a leave from 10 AM of Monday +to 3 PM on Tuesday, or when night shifts are involved. **Table of contents** @@ -43,7 +45,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. @@ -51,19 +53,19 @@ Credits ======= Authors -~~~~~~~ +------- * PyTech Contributors -~~~~~~~~~~~~ +------------ -* `PyTech `_: +- `PyTech `__: - * Simone Rubino + - Simone Rubino Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -75,6 +77,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/hr-holidays `_ project on GitHub. +This module is part of the `OCA/hr-holidays `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_leave_date_to_custom_hour/pyproject.toml b/hr_leave_date_to_custom_hour/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/hr_leave_date_to_custom_hour/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.md b/hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..f5175108f --- /dev/null +++ b/hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- [PyTech](https://www.pytech.it): + - Simone Rubino \ diff --git a/hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.rst b/hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.rst deleted file mode 100644 index 3e2b10402..000000000 --- a/hr_leave_date_to_custom_hour/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,3 +0,0 @@ -* `PyTech `_: - - * Simone Rubino diff --git a/hr_leave_date_to_custom_hour/readme/DESCRIPTION.rst b/hr_leave_date_to_custom_hour/readme/DESCRIPTION.md similarity index 61% rename from hr_leave_date_to_custom_hour/readme/DESCRIPTION.rst rename to hr_leave_date_to_custom_hour/readme/DESCRIPTION.md index a4e65a888..d2428bf96 100644 --- a/hr_leave_date_to_custom_hour/readme/DESCRIPTION.rst +++ b/hr_leave_date_to_custom_hour/readme/DESCRIPTION.md @@ -1,3 +1,5 @@ -This module allows to specify an end date when creating a leave with custom hours. +This module allows to specify an end date when creating a leave with +custom hours. -This is useful when the user wants to take a leave from 10 AM of Monday to 3 PM on Tuesday, or when night shifts are involved. +This is useful when the user wants to take a leave from 10 AM of Monday +to 3 PM on Tuesday, or when night shifts are involved. diff --git a/hr_leave_date_to_custom_hour/static/description/index.html b/hr_leave_date_to_custom_hour/static/description/index.html index 975b2f8eb..5c996ff8c 100644 --- a/hr_leave_date_to_custom_hour/static/description/index.html +++ b/hr_leave_date_to_custom_hour/static/description/index.html @@ -369,9 +369,11 @@

Date to for custom hours

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:00e668430c75e1e621fb5d6e405c70976c13bc899dc031358f0c6883319c75b3 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

-

This module allows to specify an end date when creating a leave with custom hours.

-

This is useful when the user wants to take a leave from 10 AM of Monday to 3 PM on Tuesday, or when night shifts are involved.

+

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

+

This module allows to specify an end date when creating a leave with +custom hours.

+

This is useful when the user wants to take a leave from 10 AM of Monday +to 3 PM on Tuesday, or when night shifts are involved.

Table of contents

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

@@ -418,7 +420,7 @@

Maintainers

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

-

This module is part of the OCA/hr-holidays project on GitHub.

+

This module is part of the OCA/hr-holidays project on GitHub.

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

From 7e408f9730d5d00a518e1276361c5cfc00e82ae1 Mon Sep 17 00:00:00 2001 From: Quirino Leone Date: Mon, 29 Dec 2025 15:22:36 +0100 Subject: [PATCH 3/3] [MIG] hr_leave_date_to_custom_hour: migration to 18.0 --- hr_leave_date_to_custom_hour/__manifest__.py | 2 +- .../models/hr_leave.py | 17 +++++------ .../tests/test_hr_leave.py | 19 +++---------- .../views/hr_leave_views.xml | 28 ++++++++----------- 4 files changed, 26 insertions(+), 40 deletions(-) diff --git a/hr_leave_date_to_custom_hour/__manifest__.py b/hr_leave_date_to_custom_hour/__manifest__.py index 473726780..f3b416b49 100644 --- a/hr_leave_date_to_custom_hour/__manifest__.py +++ b/hr_leave_date_to_custom_hour/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Date to for custom hours", "summary": "Display Date to when custom hours is selected.", - "version": "16.0.1.0.0", + "version": "18.0.1.0.0", "license": "AGPL-3", "author": "PyTech, Odoo Community Association (OCA)", "website": "https://github.com/OCA/hr-holidays", diff --git a/hr_leave_date_to_custom_hour/models/hr_leave.py b/hr_leave_date_to_custom_hour/models/hr_leave.py index 641f647ef..d8f7dcc76 100644 --- a/hr_leave_date_to_custom_hour/models/hr_leave.py +++ b/hr_leave_date_to_custom_hour/models/hr_leave.py @@ -15,11 +15,12 @@ class HRLeave(models.Model): "custom_hours_request_date_to", ) def _compute_date_from_to(self): - return super()._compute_date_from_to() - - def _get_attendances(self, employee, request_date_from, request_date_to): - if len(self) == 1 and self.request_unit_hours: - self.request_date_to = request_date_to = ( - self.custom_hours_request_date_to or self.request_date_to - ) - return super()._get_attendances(employee, request_date_from, request_date_to) + res = super()._compute_date_from_to() + for holiday in self: + if holiday.request_unit_hours and holiday.custom_hours_request_date_to: + holiday.date_to = holiday._to_utc( + holiday.custom_hours_request_date_to, + holiday.request_hour_to, + holiday.employee_id or holiday, + ) + return res diff --git a/hr_leave_date_to_custom_hour/tests/test_hr_leave.py b/hr_leave_date_to_custom_hour/tests/test_hr_leave.py index 8c70e56f2..dd391a1e2 100644 --- a/hr_leave_date_to_custom_hour/tests/test_hr_leave.py +++ b/hr_leave_date_to_custom_hour/tests/test_hr_leave.py @@ -3,7 +3,7 @@ from datetime import datetime, timedelta -from odoo.tests.common import Form +from odoo.tests import Form from odoo.addons.hr_holidays.tests.common import TestHrHolidaysCommon @@ -29,19 +29,8 @@ def _create_user_leave(self, user, from_datetime, to_datetime): leave_form.request_unit_hours = True leave_form.request_date_from = from_datetime.date() leave_form.custom_hours_request_date_to = to_datetime.date() - - # Module `hr_leave_custom_hour_interval` makes hours fields readonly - from_hour = from_datetime.hour - if "request_time_hour_from" in leave_form._view["fields"]: - leave_form.request_time_hour_from = from_hour - else: - leave_form.request_hour_from = str(from_hour) - - to_hour = to_datetime.hour - if "request_time_hour_to" in leave_form._view["fields"]: - leave_form.request_time_hour_to = to_hour - else: - leave_form.request_hour_to = str(to_hour) + leave_form.request_hour_from = str(from_datetime.hour) + leave_form.request_hour_to = str(to_datetime.hour) return leave_form.save() def test_custom_hours_date_to(self): @@ -63,4 +52,4 @@ def test_custom_hours_date_to(self): leave = self._create_user_leave(user, leave_from, leave_to) # Assert - self.assertEqual(leave.number_of_hours_display, leave_duration_hours) + self.assertEqual(leave.number_of_hours, leave_duration_hours) diff --git a/hr_leave_date_to_custom_hour/views/hr_leave_views.xml b/hr_leave_date_to_custom_hour/views/hr_leave_views.xml index 5cbae87cd..a7901940d 100644 --- a/hr_leave_date_to_custom_hour/views/hr_leave_views.xml +++ b/hr_leave_date_to_custom_hour/views/hr_leave_views.xml @@ -9,25 +9,21 @@ hr.leave - - From - - - To - - - + + + + daterange { - 'related_end_date': 'custom_hours_request_date_to', + 'end_date_field': 'custom_hours_request_date_to', } - +