From faf90c4f5254cd85b90c1d28672a71363c4c50ee Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Wed, 7 Nov 2018 14:27:11 +0000 Subject: [PATCH 1/4] [IMP] hr_presence: Allow to force the presence of an employee --- addons/hr_presence/models/hr_employee.py | 5 +++++ addons/hr_presence/views/hr_employee_views.xml | 2 ++ 2 files changed, 7 insertions(+) diff --git a/addons/hr_presence/models/hr_employee.py b/addons/hr_presence/models/hr_employee.py index 4a5dd0b6292..5e915db0050 100644 --- a/addons/hr_presence/models/hr_employee.py +++ b/addons/hr_presence/models/hr_employee.py @@ -95,6 +95,11 @@ class ResCompany(models.Model): "context": {'search_default_group_hr_presence_state': 1}, } + def action_set_present(self): + if not self.env.user.has_group('hr.group_hr_manager'): + raise UserError(_("You don't have the right to do this. Please contact an Administrator.")) + self.write({'hr_presence_state': 'present'}) + def action_send_sms(self): if not self.env.user.has_group('hr.group_hr_manager'): raise UserError(_("You don't have the right to do this. Please contact an Administrator.")) diff --git a/addons/hr_presence/views/hr_employee_views.xml b/addons/hr_presence/views/hr_employee_views.xml index 3cf722f0841..55872c022e1 100644 --- a/addons/hr_presence/views/hr_employee_views.xml +++ b/addons/hr_presence/views/hr_employee_views.xml @@ -22,6 +22,8 @@
+ + From 32051efdc99172931cfffe7b621d01b6d8ec8b3d Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Wed, 7 Nov 2018 15:28:41 +0000 Subject: [PATCH 2/4] [IMP] hr_presence: Don't notify followers when sending a email --- addons/hr_presence/data/mail_data.xml | 2 +- addons/hr_presence/models/hr_employee.py | 14 ++++++++------ addons/hr_presence/views/hr_employee_views.xml | 4 ++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/addons/hr_presence/data/mail_data.xml b/addons/hr_presence/data/mail_data.xml index d6c1fb3539f..f2ab1ca0579 100644 --- a/addons/hr_presence/data/mail_data.xml +++ b/addons/hr_presence/data/mail_data.xml @@ -3,7 +3,7 @@ Presence: Contact Employee - + Unexpected Absence ${ctx['email_from'] or ''} ${ctx['email_to'] or ''} diff --git a/addons/hr_presence/models/hr_employee.py b/addons/hr_presence/models/hr_employee.py index 5e915db0050..79b9b9cbed5 100644 --- a/addons/hr_presence/models/hr_employee.py +++ b/addons/hr_presence/models/hr_employee.py @@ -101,6 +101,7 @@ class ResCompany(models.Model): self.write({'hr_presence_state': 'present'}) def action_send_sms(self): + self.ensure_one() if not self.env.user.has_group('hr.group_hr_manager'): raise UserError(_("You don't have the right to do this. Please contact an Administrator.")) if not self.mobile_phone: @@ -113,7 +114,7 @@ Do not hesitate to contact your manager or the human resource department.""") "res_model": "sms.send_sms", "view_mode": 'form', "context": { - 'active_id': self.env.context.get('active_id'), + 'active_id': self.id, 'default_message': body, 'default_recipients': self.mobile_phone, }, @@ -122,22 +123,23 @@ Do not hesitate to contact your manager or the human resource department.""") } def action_send_mail(self): + self.ensure_one() if not self.env.user.has_group('hr.group_hr_manager'): raise UserError(_("You don't have the right to do this. Please contact an Administrator.")) - employee = self.env['hr.employee'].sudo().browse(self.env.context.get('active_id')) - if not employee.work_email: + if not self.work_email: raise UserError(_("There is no professional email address for this employee.")) template = self.env.ref('hr_presence.mail_template_presence', False) compose_form = self.env.ref('mail.email_compose_message_wizard_form', False) ctx = dict( - default_model='hr.employee', - default_res_id=employee.id, + default_model="hr.employee", + default_res_id=self.id, default_use_template=bool(template), default_template_id=template.id, default_composition_mode='comment', + default_is_log=True, custom_layout='mail.mail_notification_light', email_from=self.env.user.email, - email_to=employee.work_email, + email_to=self.work_email, ) return { 'name': _('Compose Email'), diff --git a/addons/hr_presence/views/hr_employee_views.xml b/addons/hr_presence/views/hr_employee_views.xml index 55872c022e1..cedd1c780b4 100644 --- a/addons/hr_presence/views/hr_employee_views.xml +++ b/addons/hr_presence/views/hr_employee_views.xml @@ -25,8 +25,8 @@ - - + +
From 1c391c3dfbdf733304fc882b9045d25e20e6dd1f Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Wed, 7 Nov 2018 16:15:21 +0000 Subject: [PATCH 3/4] [FIX] hr_holidays: Correctly compute number_of_days on form loading On a hr.leave creation on the form view, the fields request_date_from and request_date_to are set on today. The fields date_from and date_to are set on now. We have 2 onchange methods: - _onchange_request_parameters: Set date_from and date_to according to the leave configuration. - _onchange_leave_dates: Set number_of_days according to date_from and date_to As _onchange_leave_dates is called before _onchange_request_parameters, the field number_of_day is always set to 0, even if the leave is taken for all the day (the default value). It means that if you don't modify the dates, the value stored in the database is incorrect. We have to call manually the method _onchange_leave_dates at the end of the method _onchange_request_parameters execution to ensure the validity of the value. --- addons/hr_holidays/models/hr_leave.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index 16b10a6c83b..b2f8197917f 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -293,6 +293,7 @@ class HolidaysRequest(models.Model): tz = self.env.user.tz if self.env.user.tz and not self.request_unit_custom else 'UTC' # custom -> already in UTC self.date_from = timezone(tz).localize(datetime.combine(self.request_date_from, hour_from)).astimezone(UTC).replace(tzinfo=None) self.date_to = timezone(tz).localize(datetime.combine(self.request_date_to, hour_to)).astimezone(UTC).replace(tzinfo=None) + self._onchange_leave_dates() @api.onchange('request_unit_half') def _onchange_request_unit_half(self): From 63f52941e095a755fb4d8b1d627468c92c897608 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Wed, 7 Nov 2018 16:21:03 +0000 Subject: [PATCH 4/4] [IMP] hr_presence: Open the leave request form instead of the leaves list --- addons/hr_presence/models/hr_employee.py | 10 ++++++++++ addons/hr_presence/views/hr_employee_views.xml | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/addons/hr_presence/models/hr_employee.py b/addons/hr_presence/models/hr_employee.py index 79b9b9cbed5..db3d5379843 100644 --- a/addons/hr_presence/models/hr_employee.py +++ b/addons/hr_presence/models/hr_employee.py @@ -100,6 +100,16 @@ class ResCompany(models.Model): raise UserError(_("You don't have the right to do this. Please contact an Administrator.")) self.write({'hr_presence_state': 'present'}) + def action_open_leave_request(self): + self.ensure_one() + return { + "type": "ir.actions.act_window", + "res_model": "hr.leave", + "views": [[False, "form"]], + "view_mode": 'form', + "context": {'default_employee_id': self.id}, + } + def action_send_sms(self): self.ensure_one() if not self.env.user.has_group('hr.group_hr_manager'): diff --git a/addons/hr_presence/views/hr_employee_views.xml b/addons/hr_presence/views/hr_employee_views.xml index cedd1c780b4..75d468ded22 100644 --- a/addons/hr_presence/views/hr_employee_views.xml +++ b/addons/hr_presence/views/hr_employee_views.xml @@ -24,7 +24,7 @@
- +