From 6027957c6b3cacc8495787bc71754f1d5fef7a70 Mon Sep 17 00:00:00 2001 From: manar Date: Tue, 21 Jan 2025 14:35:00 +0200 Subject: [PATCH] UPDATE hr_holidays_public --- .../hr_holidays_public/models/hr_holidays.py | 2 +- .../models/leave_cancellation.py | 28 +++++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/odex25_hr/hr_holidays_public/models/hr_holidays.py b/odex25_hr/hr_holidays_public/models/hr_holidays.py index e74a19576..18cfb5adc 100644 --- a/odex25_hr/hr_holidays_public/models/hr_holidays.py +++ b/odex25_hr/hr_holidays_public/models/hr_holidays.py @@ -1616,7 +1616,7 @@ class HRHolidays(models.Model): for item in self: item._remove_followers_holiday() have_cancel_request = self.env['leave.cancellation'].search( - [('leave_request_id', '=', item.id), ('state', 'not in', ('draft', 'refuse'))]) + [('leave_request_id', '=', item.id), ('cancellation_type', '!=', 'cancel'), ('state', 'not in', ('draft', 'refuse'))]) have_return_from_leave = self.env['return.from.leave'].search( [('leave_request_id', '=', item.id), ('state', 'not in', ('draft', 'refuse'))]) if have_cancel_request: diff --git a/odex25_hr/hr_holidays_public/models/leave_cancellation.py b/odex25_hr/hr_holidays_public/models/leave_cancellation.py index 25dcdfe26..bda8f785b 100644 --- a/odex25_hr/hr_holidays_public/models/leave_cancellation.py +++ b/odex25_hr/hr_holidays_public/models/leave_cancellation.py @@ -36,7 +36,7 @@ class LeaveCancellation(models.Model): cancellation_type = fields.Selection([ ('cut', 'Cut'), ('cancel', 'Cancel') - ], string="Cancellation Type", default='cut', tracking=True) + ], string="Cancellation Type", default='cut', tracking=True, required=True) def get_user_id(self): employee_id = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1) @@ -156,18 +156,22 @@ class LeaveCancellation(models.Model): self.state = 'review' def confirm(self): - #self.state = 'confirm' - #The Approval For The Direct Manager only + # self.state = 'confirm' + # The Approval For The Direct Manager only for rec in self: - manager = rec.sudo().employee_id.parent_id - hr_manager = rec.sudo().employee_id.company_id.hr_manager_id - if manager: - if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid: - rec.write({'state': 'confirm'}) - else: - raise exceptions.Warning(_("Sorry, The Approval For The Direct Manager '%s' Only OR HR Manager!")%(rec.employee_id.parent_id.name)) - else: - rec.write({'state': 'confirm'}) + manager = rec.sudo().employee_id.parent_id + hr_manager = rec.sudo().employee_id.company_id.hr_manager_id + if manager: + if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid: + rec.write({'state': 'confirm'}) + else: + raise exceptions.Warning( + _("Sorry, The Approval For The Direct Manager '%s' Only OR HR Manager!") % ( + rec.employee_id.parent_id.name)) + else: + rec.write({'state': 'confirm'}) + if rec.cancellation_type == 'cancel': + rec.leave_request_id.refuse() def get_pure_holiday_days(self): for item in self: