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)