From 9ba232e96cd757ce8eac003e02d0cd5a18a15def Mon Sep 17 00:00:00 2001 From: Alexander Bigga Date: Thu, 30 Jan 2025 10:21:15 +0100 Subject: [PATCH] Fix: add overlapping days on right holiday type (#120) * Fix: add overlapping days on right holiday type * Add translation for overlapping days --- hr_holidays_overlap/models/hr_leave_type.py | 10 +++++----- verdigado_attendance/i18n/de.po | 6 +++--- verdigado_attendance/models/hr_leave_type.py | 3 ++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/hr_holidays_overlap/models/hr_leave_type.py b/hr_holidays_overlap/models/hr_leave_type.py index cc8fb1b..f800bf8 100644 --- a/hr_holidays_overlap/models/hr_leave_type.py +++ b/hr_holidays_overlap/models/hr_leave_type.py @@ -1,10 +1,8 @@ # Copyright 2023 Hunki Enterprises BV # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0) - from odoo import fields, models - class HrLeaveType(models.Model): _inherit = "hr.leave.type" @@ -23,7 +21,8 @@ def _get_employees_days_per_allocation(self, employee_ids, date=None): for this in result[employee_id]: allocation_dict = result[employee_id][this] for possible_overlap, _overlap, number_of_days in self._get_overlap( - employee_id + employee_id, + this.id ): for allocation, allocation_days in allocation_dict.items(): if ( @@ -35,6 +34,7 @@ def _get_employees_days_per_allocation(self, employee_ids, date=None): ) ): continue + # found allocation which is right now valid allocation_days["virtual_remaining_leaves"] += number_of_days allocation_days["virtual_leaves_taken"] -= number_of_days if possible_overlap.state == "validate": @@ -53,7 +53,7 @@ def _get_employees_days_per_allocation(self, employee_ids, date=None): del allocation_dict[False] return result - def _get_overlap(self, employee_id): + def _get_overlap(self, employee_id, leave_type): """Return overlapping leaves and the working time of the overlap""" HrLeave = self.env["hr.leave"] @@ -75,7 +75,7 @@ def _get_overlap(self, employee_id): ("id", "not in", possible_overlap.ids), ("date_from", "<=", possible_overlap.date_to), ("date_to", ">=", possible_overlap.date_from), - ("holiday_status_id", "in", self.ids), + ("holiday_status_id", "=", leave_type), ] ): number_of_days = overlap.employee_id._get_work_days_data_batch( diff --git a/verdigado_attendance/i18n/de.po b/verdigado_attendance/i18n/de.po index f36e5f2..0ed0975 100644 --- a/verdigado_attendance/i18n/de.po +++ b/verdigado_attendance/i18n/de.po @@ -22,7 +22,7 @@ msgstr "" #: code:addons/verdigado_attendance/static/src/xml/hr_holidays.xml:0 #, python-format msgid "(incl." -msgstr "" +msgstr "(inkl." #. module: hr_attendance_break #: model:mail.template,body_html:hr_attendance_break.template_mandatory_break @@ -732,7 +732,7 @@ msgstr "" #: code:addons/verdigado_attendance/static/src/xml/hr_holidays.xml:0 #, python-format msgid "from" -msgstr "" +msgstr "aus" #. module: hr_attendance_break #. openerp-web @@ -746,7 +746,7 @@ msgstr "" #: code:addons/verdigado_attendance/static/src/xml/hr_holidays.xml:0 #, python-format msgid "overlaps" -msgstr "" +msgstr "Überlappungen" #. module: hr_attendance_break #. openerp-web diff --git a/verdigado_attendance/models/hr_leave_type.py b/verdigado_attendance/models/hr_leave_type.py index 558f8d5..b9964ec 100644 --- a/verdigado_attendance/models/hr_leave_type.py +++ b/verdigado_attendance/models/hr_leave_type.py @@ -37,7 +37,8 @@ def _get_days_request(self): overlap_ids = [] overlap_time = 0.0 for overlap1, overlap2, time in self._get_overlap( - self._get_contextual_employee_id() + self._get_contextual_employee_id(), + leave_type=self.id ): overlap_ids += overlap1.ids + overlap2.ids overlap_time += time