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,