From 53f877bf38caa2c8fafcd35392c5e0e278ce5937 Mon Sep 17 00:00:00 2001 From: fw-bot Date: Tue, 1 Dec 2020 16:01:34 +0000 Subject: [PATCH] =?UTF-8?q?[FW][MERGE]=20l10n=5Fbe=5Fhr=5Fpayroll:=20Clean?= =?UTF-8?q?=20tests=20+=20Handle=20threshold=20for=20training=20time=20off?= =?UTF-8?q?=20+=20ATN=20for=200=E2=82=AC=20payslips?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes odoo/odoo#62697 Taskid: 2393750 Forward-port-of: #15020 Related: odoo/enterprise#15077 Signed-off-by: Yannick Tivisse (yti) --- addons/hr_contract/models/hr_employee.py | 2 +- addons/hr_work_entry/models/hr_work_entry.py | 2 +- addons/hr_work_entry/models/resource.py | 10 +++++ addons/resource/models/resource.py | 45 ++++++++++++-------- odoo/addons/base/views/res_partner_views.xml | 1 + 5 files changed, 40 insertions(+), 20 deletions(-) diff --git a/addons/hr_contract/models/hr_employee.py b/addons/hr_contract/models/hr_employee.py index 1be2ef685b7..b1cdf1b6dbb 100644 --- a/addons/hr_contract/models/hr_employee.py +++ b/addons/hr_contract/models/hr_employee.py @@ -17,7 +17,7 @@ class Employee(models.Model): contract_warning = fields.Boolean(string='Contract Warning', store=True, compute='_compute_contract_warning', groups="hr.group_hr_user") first_contract_date = fields.Date(compute='_compute_first_contract_date', groups="hr.group_hr_user", store=True) - @api.depends('contract_ids.state') + @api.depends('contract_ids.state', 'contract_ids.date_start') def _compute_first_contract_date(self): for employee in self: contracts = employee.sudo().contract_ids.filtered(lambda c: c.state != 'cancel') diff --git a/addons/hr_work_entry/models/hr_work_entry.py b/addons/hr_work_entry/models/hr_work_entry.py index 10f737315eb..e63774b750d 100644 --- a/addons/hr_work_entry/models/hr_work_entry.py +++ b/addons/hr_work_entry/models/hr_work_entry.py @@ -186,7 +186,7 @@ class HrWorkEntryType(models.Model): _name = 'hr.work.entry.type' _description = 'HR Work Entry Type' - name = fields.Char(required=True) + name = fields.Char(required=True, translate=True) code = fields.Char(required=True) color = fields.Integer(default=0) sequence = fields.Integer(default=25) diff --git a/addons/hr_work_entry/models/resource.py b/addons/hr_work_entry/models/resource.py index bf05682d221..ac7fa6c9660 100644 --- a/addons/hr_work_entry/models/resource.py +++ b/addons/hr_work_entry/models/resource.py @@ -12,8 +12,18 @@ class ResourceCalendarAttendance(models.Model): work_entry_type_id = fields.Many2one('hr.work.entry.type', 'Work Entry Type', default=_default_work_entry_type_id) + def _copy_attendance_vals(self): + res = super()._copy_attendance_vals() + res['work_entry_type_id'] = self.work_entry_type_id.id + return res + class ResourceCalendarLeave(models.Model): _inherit = 'resource.calendar.leaves' work_entry_type_id = fields.Many2one('hr.work.entry.type', 'Work Entry Type') + + def _copy_leave_vals(self): + res = super()._copy_leave_vals() + res['work_entry_type_id'] = self.work_entry_type_id.id + return res diff --git a/addons/resource/models/resource.py b/addons/resource/models/resource.py index c0ae3ae7d5d..ff69e5d141b 100644 --- a/addons/resource/models/resource.py +++ b/addons/resource/models/resource.py @@ -222,18 +222,7 @@ class ResourceCalendar(models.Model): 'hours_per_day': company_calendar.hours_per_day, 'tz': company_calendar.tz, 'attendance_ids': [(5, 0, 0)] + [ - (0, 0, { - 'name': attendance.name, - 'dayofweek': attendance.dayofweek, - 'date_from': attendance.date_from, - 'date_to': attendance.date_to, - 'hour_from': attendance.hour_from, - 'hour_to': attendance.hour_to, - 'day_period': attendance.day_period, - 'week_type': attendance.week_type, - 'display_type': attendance.display_type, - 'sequence': attendance.sequence, - }) for attendance in company_calendar.attendance_ids if not attendance.resource_id] + (0, 0, attendance._copy_attendance_vals()) for attendance in company_calendar.attendance_ids if not attendance.resource_id] }) @api.depends('company_id') @@ -241,12 +230,7 @@ class ResourceCalendar(models.Model): for calendar in self.filtered(lambda c: not c._origin or c._origin.company_id != c.company_id): calendar.write({ 'global_leave_ids': [(5, 0, 0)] + [ - (0, 0, { - 'name': leave.name, - 'date_from': leave.date_from, - 'date_to': leave.date_to, - 'time_type': leave.time_type, - }) for leave in calendar.company_id.resource_calendar_id.global_leave_ids] + (0, 0, leave._copy_leave_vals()) for leave in calendar.company_id.resource_calendar_id.global_leave_ids] }) @api.returns('self', lambda value: value.id) @@ -870,6 +854,22 @@ class ResourceCalendarAttendance(models.Model): section_name = "%s (%s)" % (section_names[record.week_type], section_info[this_week_type == record.week_type]) record.display_name = section_name + def _copy_attendance_vals(self): + self.ensure_one() + return { + 'name': self.name, + 'dayofweek': self.dayofweek, + 'date_from': self.date_from, + 'date_to': self.date_to, + 'hour_from': self.hour_from, + 'hour_to': self.hour_to, + 'day_period': self.day_period, + 'week_type': self.week_type, + 'display_type': self.display_type, + 'sequence': self.sequence, + } + + class ResourceResource(models.Model): _name = "resource.resource" _description = "Resources" @@ -1023,3 +1023,12 @@ class ResourceCalendarLeaves(models.Model): def onchange_resource(self): if self.resource_id: self.calendar_id = self.resource_id.calendar_id + + def _copy_leave_vals(self): + self.ensure_one() + return { + 'name': self.name, + 'date_from': self.date_from, + 'date_to': self.date_to, + 'time_type': self.time_type, + } diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml index 89aa73cc975..16e355de867 100644 --- a/odoo/addons/base/views/res_partner_views.xml +++ b/odoo/addons/base/views/res_partner_views.xml @@ -386,6 +386,7 @@ +