diff --git a/odex25_hr/hr_base/data/ir_sequence.xml b/odex25_hr/hr_base/data/ir_sequence.xml index e03a3f2d5..2d8d7f74d 100644 --- a/odex25_hr/hr_base/data/ir_sequence.xml +++ b/odex25_hr/hr_base/data/ir_sequence.xml @@ -13,7 +13,7 @@ employee_sequence_emp_no hr.employee - 5 + 1 diff --git a/odex25_hr/hr_base/models/hr_base.py b/odex25_hr/hr_base/models/hr_base.py index 92be6a316..c768d96e1 100644 --- a/odex25_hr/hr_base/models/hr_base.py +++ b/odex25_hr/hr_base/models/hr_base.py @@ -84,7 +84,7 @@ class HrEmployee(models.Model): r_name = fields.Char("Name") # fields of page work information in employees view - emp_no = fields.Char(string="Employee number", tracking=True) + emp_no = fields.Char(string="Employee number", tracking=True, default=lambda self: self._default_emp_code()) english_name = fields.Char(string="English Name") home_no = fields.Char() present_address = fields.Char() @@ -249,6 +249,26 @@ class HrEmployee(models.Model): help='New participants who have no prior periods of contribution under the GOSI.') gosi_years = fields.Integer(string="GOSI Years", compute='_compute_gosi_years', store=True, help='GOSI Years According To The New activation Date Until Today') + + + @api.model + def _default_emp_code(self): + seq = self.env['ir.sequence'].next_by_code('hr.employee') or '/' + emp_seq = self.env['hr.employee'].search([('active', 'in', [False, True])]) + + # Get the maximum current employee number + max_number = 0 + if emp_seq: + max_number = max(int(emp.emp_no) for emp in emp_seq if emp.emp_no and emp.emp_no.isdigit()) + + # Ensure the sequence matches the max number + 1 + if int(seq) != (max_number + 1): + currnt_sequence = self.env['ir.sequence'].search([('code', '=', 'hr.employee')], limit=1) + currnt_sequence.write({'number_next_actual': max_number + 1}) + seq = self.env['ir.sequence'].next_by_code('hr.employee') or '/' + + return str(seq) + @api.depends('new_gosi') def _compute_gosi_years(self): for emp in self: