diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index f86b5fca0..8ab8e627c 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -217,34 +217,30 @@ class SoongWorkflowCommentWizard(models.TransientModel): if record.node_btn_id.employee_ids and record.node_btn_id.is_carbon_copy: record.circulated_employee_ids = record.node_btn_id.employee_ids - if not record_id or not record_id.workflow_id: - continue - # 排除规则:存在流程退回 直接放行不限制 - has_exclude_log = record_id.log_ids.filtered(lambda l: l.node_btn_name == '1') - if has_exclude_log: - continue - # 1. 拿到所有必经节点 - mandatory_nodes = record_id.workflow_id.node_ids.filtered(lambda n: n.is_mandatory_node) - if not mandatory_nodes: - return - # 取第一个必经节点 - first_mandatory_node = mandatory_nodes[0] - # 2. 只允许选择:顺序 <= 必经节点的链接 - allow_links = self.env['trans.link'] - for link in valid_links: - link_node = record_id.workflow_id.node_ids.search([ - ('name', '=', link.name), - ('workflow_id', '=', record_id.workflow_id.id) - ], limit=1) - if link_node and link_node.sequence <= first_mandatory_node.sequence: - allow_links |= link - - if record.trans_link_id and record.trans_link_id not in allow_links: - record.trans_link_id = False - raise UserError(f"节点【{first_mandatory_node.name}】是必经节点,不可选择必经节点之后的流程节点!") - if not record.trans_link_id: continue + + if record_id and record_id.workflow_id: + has_exclude_log = record_id.log_ids.filtered(lambda l: l.node_btn_name == '1') + if not has_exclude_log: + mandatory_nodes = record_id.workflow_id.node_ids.filtered(lambda n: n.is_mandatory_node) + if mandatory_nodes: + first_mandatory_node = mandatory_nodes[0] + allow_links = self.env['trans.link'] + for link in valid_links: + link_node = record_id.workflow_id.node_ids.search([ + ('name', '=', link.name), + ('workflow_id', '=', record_id.workflow_id.id) + ], limit=1) + if link_node and link_node.sequence <= first_mandatory_node.sequence: + allow_links |= link + + # 只做判断:选了非法的才报错 + if record.trans_link_id and record.trans_link_id not in allow_links: + record.trans_link_id = False + raise UserError( + f"节点【{first_mandatory_node.name}】是必经节点,不可选择必经节点之后的流程节点!") + for link in record.trans_link_id: employee_user_role_ids = self.env['hr.employee'] if link.name == '印章管理员':