diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index b09a9798c..ec7ac5d17 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -125,8 +125,16 @@ class SoongWorkflowMixin(models.AbstractModel): def create(self, vals_list): res = super().create(vals_list) for record in res: - button_ids = record.sudo().workflow_id.node_ids.button_ids.search([('workflow_id', '=', res.workflow_id.id)]) - current_user_role_id = record.env.user.employee_id.user_role_id.id + button_ids = record.sudo().workflow_id.node_ids.button_ids.search( + [('workflow_id', '=', record.workflow_id.id)]) + # 获取当前用户的主角色和辅助角色ID列表 + employee = record.env.user.employee_id + current_user_role_ids = [] + if employee.user_role_id: + current_user_role_ids.append(employee.user_role_id.id) + if employee.user_role_ids: + current_user_role_ids.extend(employee.user_role_ids.ids) + for button_id in button_ids: allowed_role_ids = [] if button_id.users_role_id: @@ -135,7 +143,8 @@ class SoongWorkflowMixin(models.AbstractModel): allowed_role_ids.extend(button_id.users_role_group_ids.user_role_ids.ids) else: continue - if current_user_role_id in allowed_role_ids: + + if current_user_role_ids and any(role_id in allowed_role_ids for role_id in current_user_role_ids): record.state = button_id.node_id.node_name return res diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index dda3c6b2f..5dce30e3d 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -17,7 +17,7 @@ class SoongWorkflowRecord(models.Model): '|', ('approve_state', '=', 'pending'), ('approve_state', '=', 'start'), - ('employee_ids', 'in', [self.env.user.employee_id.id]), + ('users_ids', 'in', self.env.user.id), ('reclaim_state', '=', False) ] return self.search_count(domain) diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index 6270080c5..ffeb64bb9 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -122,7 +122,7 @@ soong.workflow.record tree,kanban,search {'check_employee': 1, 'group_by': 'soong_state'} - [('employee_ids.user_id', '=', uid), ('reclaim_state', '=', False)] + [('users_ids', 'in', uid), ('reclaim_state', '=', False)] diff --git a/yuthon_salary/wizard/salary_compute_wizard.py b/yuthon_salary/wizard/salary_compute_wizard.py index 45646eb52..d06f8732d 100644 --- a/yuthon_salary/wizard/salary_compute_wizard.py +++ b/yuthon_salary/wizard/salary_compute_wizard.py @@ -91,8 +91,8 @@ class SalaryComputeWizard(models.Model): ]) employee.salary_date = start_date employee.salary_year_jin_ids = [(6, 0, self.employee_ids.ids)] - # if existing_payslip: - # raise UserError(f"员工 {employee.name} 在 {start_date} 到 {end_date} 日期范围内已有工资单记录,无法创建新的工资单。") + if existing_payslip: + raise UserError(f"员工 {employee.name} 在 {start_date} 到 {end_date} 日期范围内已有工资单记录,无法创建新的工资单。") self.env['hr.payslip'].create({ 'is_bold': is_bold, 'name': employee.name,