@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
<field name="res_model">soong.workflow.record</field>
|
||||
<field name="view_mode">tree,kanban,search</field>
|
||||
<field name="context">{'check_employee': 1, 'group_by': 'soong_state'}</field>
|
||||
<field name="domain">[('employee_ids.user_id', '=', uid), ('reclaim_state', '=', False)]</field>
|
||||
<field name="domain">[('users_ids', 'in', uid), ('reclaim_state', '=', False)]</field>
|
||||
<field name="search_view_id" ref="soong_workflow_record_search"/>
|
||||
</record>
|
||||
<record id="soong_workflow_hr_employee_action" model="ir.actions.act_window">
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user