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 @@
+