From 3007eda31362fd2a2059e1dee65297e15379af63 Mon Sep 17 00:00:00 2001 From: amgom-odoo Date: Mon, 10 Aug 2026 14:19:51 +0200 Subject: [PATCH] [IMP] hr: Support versioning of work permit no Support versioning of work permit no by adding the field in the hr_version table Add upgrade script for the module update and corresponding upgrade test case Task: 6452365 --- addons/hr/__manifest__.py | 2 +- addons/hr/models/hr_employee.py | 13 +++---------- addons/hr/models/hr_version.py | 10 ++++++++++ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/addons/hr/__manifest__.py b/addons/hr/__manifest__.py index b7c7757cdedc79..fee70376819db0 100644 --- a/addons/hr/__manifest__.py +++ b/addons/hr/__manifest__.py @@ -2,7 +2,7 @@ { 'name': 'Employees', - 'version': '1.1', + 'version': '1.2', 'category': 'Human Resources/Employees', 'sequence': 95, 'summary': 'Centralize employee information', diff --git a/addons/hr/models/hr_employee.py b/addons/hr/models/hr_employee.py index 72a5d8c9e29eda..633c9e7254740c 100644 --- a/addons/hr/models/hr_employee.py +++ b/addons/hr/models/hr_employee.py @@ -222,13 +222,13 @@ def _lang_get(self): } """ - permit_no = fields.Char('Work Permit No', groups="hr.group_hr_user", tracking=True) + permit_no = fields.Char('Work Permit No', related="version_id.permit_no", readonly=False, groups="hr.group_hr_user", tracking=True) visa_no = fields.Char('Visa No', groups="hr.group_hr_user", tracking=True) visa_expire = fields.Date('Visa Expiration Date', groups="hr.group_hr_user", tracking=True) - work_permit_expiration_date = fields.Date('Work Permit Expiration Date', groups="hr.group_hr_user", tracking=True) + work_permit_expiration_date = fields.Date('Work Permit Expiration Date', related="version_id.work_permit_expiration_date", readonly=False, groups="hr.group_hr_user", tracking=True) has_work_permit = fields.Binary(string="Work Permit", groups="hr.group_hr_user") work_permit_scheduled_activity = fields.Boolean(default=False, groups="hr.group_hr_user") - work_permit_name = fields.Char('work_permit_name', compute='_compute_work_permit_name', groups="hr.group_hr_user") + work_permit_name = fields.Char('work_permit_name', related="version_id.work_permit_name", groups="hr.group_hr_user") certificate = fields.Selection(selection='_get_certificate_selection', string='Certificate Level', groups="hr.group_hr_user", tracking=True) study_field = fields.Char("Field of Study", groups="hr.group_hr_user", tracking=True) emergency_contact = fields.Char(groups="hr.group_hr_user", tracking=True) @@ -1196,13 +1196,6 @@ def _compute_birthday_public_display_string(self): else: employee.birthday_public_display_string = "hidden" - @api.depends('name', 'permit_no') - def _compute_work_permit_name(self): - for employee in self: - name = employee.name.replace(' ', '_') + '_' if employee.name else '' - permit_no = '_' + employee.permit_no if employee.permit_no else '' - employee.work_permit_name = "%swork_permit%s" % (name, permit_no) - def _get_partner_count_depends(self): return ['user_id'] diff --git a/addons/hr/models/hr_version.py b/addons/hr/models/hr_version.py index 9e2b824741da36..8aff4447ebb5cd 100644 --- a/addons/hr/models/hr_version.py +++ b/addons/hr/models/hr_version.py @@ -82,6 +82,9 @@ def _get_hr_responsible_domain(self): tracking=1) passport_id = fields.Char('Passport No', groups="hr.group_hr_user", tracking=1) passport_expiration_date = fields.Date('Passport Expiration Date', groups="hr.group_hr_user", tracking=1) + permit_no = fields.Char('Work Permit No', groups="hr.group_hr_user", tracking=1) + work_permit_expiration_date = fields.Date('Work Permit Expiration Date', groups="hr.group_hr_user", tracking=1) + work_permit_name = fields.Char('work_permit_name', compute='_compute_work_permit_name', groups="hr.group_hr_user") sex = fields.Selection([ ('male', 'Male'), ('female', 'Female'), @@ -211,6 +214,13 @@ def _get_hr_responsible_domain(self): 'The wage must be a positive value.', ) + @api.depends('employee_id.name', 'permit_no') + def _compute_work_permit_name(self): + for version in self: + name = version.employee_id.name.replace(' ', '_') + '_' if version.employee_id.name else '' + permit_no = '_' + version.permit_no if version.permit_no else '' + version.work_permit_name = "%swork_permit%s" % (name, permit_no) + @api.depends('employee_id.company_id') def _compute_company_id(self): for version in self: