[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) <bedo@odoo.com>
This commit is contained in:
sofiagvaladze
2023-12-28 09:40:09 +00:00
parent f2516a2e73
commit 5faa73427f
2 changed files with 30 additions and 10 deletions
+7
View File
@@ -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
+23 -10
View File
@@ -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)