diff --git a/soong_workflow/models/soong_user_role.py b/soong_workflow/models/soong_user_role.py index c4b73c0c1..e67153b01 100644 --- a/soong_workflow/models/soong_user_role.py +++ b/soong_workflow/models/soong_user_role.py @@ -17,10 +17,10 @@ class YuthonUserRole(models.Model): create_time = fields.Date(string="创建时间", default=fields.Datetime.today()) end_time = fields.Date(string="结束时间") parent_id = fields.Many2one('soong.user.role', string='上级角色', index=True) - personnel_ids = fields.Many2many('hr.employee', string='在岗人员', compute='_compute_employee_ids') - personnel = fields.Text(string="在岗人员", compute='_compute_personnel') + personnel_ids = fields.Many2many('hr.employee', string='在岗人员', compute='_compute_employee_ids', store=True) + personnel = fields.Text(string="在岗人员", compute='_compute_personnel', store=True) employee_ids = fields.One2many('hr.employee', 'user_role_id') - number_people = fields.Integer(string="在岗人数", compute='_compute_number_people') + number_people = fields.Integer(string="在岗人数", compute='_compute_number_people', store=True) child_ids = fields.One2many('soong.user.role', 'parent_id', string='下级角色', index=True) yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), ('thlc', '天河粮储'), ('thtjbb', '天河投资本部')], string="所属公司", compute='compute_company') @@ -91,3 +91,15 @@ class YuthonUserRole(models.Model): department_id = self.env['hr.department'].search([('name', '=', job.department_id.name)]) if department_id: job.sudo().write({'department_id': department_id.id if len(department_id) == 1 else department_id[0].id}) + + def sync_new(self): + job_ids = self.env["soong.user.role"].browse(self._context.get('active_ids', self._context.get('active_id'))) + for job in job_ids: + employee_ids = self.env['hr.employee'].search([('id', 'in', job.personnel_ids.ids)]) + for employee_id in employee_ids: + if employee_id.user_role_ids: + current_role_ids = employee_id.user_role_ids.ids + missing_role_ids = [child.id for child in job.child_ids if child.id not in current_role_ids] + if missing_role_ids: + employee_id.user_role_ids = [(4, role_id) for role_id in missing_role_ids] + diff --git a/soong_workflow/views/soong_user_role_views.xml b/soong_workflow/views/soong_user_role_views.xml index cc760d191..620affce4 100644 --- a/soong_workflow/views/soong_user_role_views.xml +++ b/soong_workflow/views/soong_user_role_views.xml @@ -7,6 +7,13 @@ code action = model.f5_new() + + 同步花名册 + + + code + action = model.sync_new() + soong.user.role.tree