From 5faa73427f6923f4d4d46d4b833c99405da9dfa2 Mon Sep 17 00:00:00 2001 From: sofiagvaladze Date: Thu, 16 Nov 2023 14:38:13 +0100 Subject: [PATCH] [FIX] hr_holidays: fix activity creation for second approval Prior, if the time off type needed second approval, there was no activity generated for the responsible. This commit fixes that. Moreover we also organize the code by taking references out of the loop. task - 3584190 closes odoo/odoo#142327 Signed-off-by: Bertrand Dossogne (bedo) --- addons/hr_holidays/i18n/hr_holidays.pot | 7 ++++++ addons/hr_holidays/models/hr_leave.py | 33 +++++++++++++++++-------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/addons/hr_holidays/i18n/hr_holidays.pot b/addons/hr_holidays/i18n/hr_holidays.pot index e80504c0de2..54ce4e9abbb 100644 --- a/addons/hr_holidays/i18n/hr_holidays.pot +++ b/addons/hr_holidays/i18n/hr_holidays.pot @@ -3322,6 +3322,13 @@ msgstr "" msgid "Second Month Day Display" msgstr "" +#. module: hr_holidays +#. odoo-python +#: code:addons/hr_holidays/models/hr_leave.py:0 +#, python-format +msgid "Second approval request for %(leave_type)s" +msgstr "" + #. module: hr_holidays #. odoo-javascript #: code:addons/hr_holidays/static/src/tours/hr_holidays_tour.js:0 diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index 48c17ca7c49..77dc577baf4 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -1493,21 +1493,32 @@ Attempting to double-book your time off won't magically make your vacation 2x be return responsible def activity_update(self): - to_clean, to_do = self.env['hr.leave'], self.env['hr.leave'] + to_clean, to_do, to_do_confirm_activity = self.env['hr.leave'], self.env['hr.leave'], self.env['hr.leave'] activity_vals = [] + today = fields.Date.today() + model_id = self.env.ref('hr_holidays.model_hr_leave').id + confirm_activity = self.env.ref('hr_holidays.mail_act_leave_approval') + approval_activity = self.env.ref('hr_holidays.mail_act_leave_second_approval') for holiday in self: - note = _( - 'New %(leave_type)s Request created by %(user)s', - leave_type=holiday.holiday_status_id.name, - user=holiday.create_uid.name, - ) if holiday.state == 'draft': to_clean |= holiday - elif holiday.state == 'confirm': + elif holiday.state in ['confirm', 'validate1']: if holiday.holiday_status_id.leave_validation_type != 'no_validation': + if holiday.state == 'confirm': + activity_type = confirm_activity + note = _( + 'New %(leave_type)s Request created by %(user)s', + leave_type=holiday.holiday_status_id.name, + user=holiday.create_uid.name, + ) + else: + activity_type = approval_activity + note = _( + 'Second approval request for %(leave_type)s', + leave_type=holiday.holiday_status_id.name, + ) + to_do_confirm_activity |= holiday user_ids = holiday.sudo()._get_responsible_for_approval().ids or self.env.user.ids - today = fields.Date.today() - activity_type = self.env.ref('hr_holidays.mail_act_leave_approval') for user_id in user_ids: date_deadline = ( (holiday.date_from - @@ -1522,7 +1533,7 @@ Attempting to double-book your time off won't magically make your vacation 2x be 'note': note, 'user_id': user_id, 'res_id': holiday.id, - 'res_model_id': self.env.ref('hr_holidays.model_hr_leave').id, + 'res_model_id': model_id, }) elif holiday.state == 'validate': to_do |= holiday @@ -1530,6 +1541,8 @@ Attempting to double-book your time off won't magically make your vacation 2x be to_clean |= holiday if to_clean: to_clean.activity_unlink(['hr_holidays.mail_act_leave_approval', 'hr_holidays.mail_act_leave_second_approval']) + if to_do_confirm_activity: + to_do_confirm_activity.activity_feedback(['hr_holidays.mail_act_leave_approval']) if to_do: to_do.activity_feedback(['hr_holidays.mail_act_leave_approval', 'hr_holidays.mail_act_leave_second_approval']) self.env['mail.activity'].create(activity_vals)