Merge pull request !11151 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2026-04-23 11:24:52 +00:00
committed by Gitee
4 changed files with 35 additions and 2 deletions
@@ -107,6 +107,7 @@ class SoongWorkflowNode(models.Model):
('next', '跳过下一个相同人员节点'),
('prev', '跳过上一个相同人员节点'),
], string='相同人员节点处理', default='none')
is_mandatory_node = fields.Boolean(string="必经节点", default=False)
@api.onchange("is_apostille")
def onchange_is_apostille(self):
@@ -17,6 +17,7 @@
<field name="return_comment_id"/>
<field name="confirm_comment_id"/>
<field name="end_comment_id"/>
<field name="is_mandatory_node"/>
<field name="same_user_skip_type"/>
<field name="illustrate"/>
</group>
@@ -206,13 +206,45 @@ class SoongWorkflowCommentWizard(models.TransientModel):
@api.onchange('trans_link_id')
def onchange_trans_employee_ids(self):
for record in self:
record_id = self.env[record.res_model].browse(record.res_id) if record.res_model and record.res_id else None
ctx_links = self.env.context.get('all_workflow_links', [])
all_links = self.env['trans.link'].browse(ctx_links) if isinstance(ctx_links, (list, tuple)) else ctx_links
valid_links = all_links - record.invalid_link_ids
record.is_selection = False
record.is_this_company = True
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
# 排除规则:存在 node_btn_name == '1' 直接放行不限制
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
record_id = self.env[record.res_model].browse(record.res_id) if record.res_model and record.res_id else None
for link in record.trans_link_id:
employee_user_role_ids = self.env['hr.employee']
if link.name == '印章管理员':
-1
View File
@@ -237,7 +237,6 @@ class YuthonNotice(models.Model):
('notice_code', '=', self.code),
('employee_id', '=', emp_id)
], limit=1)
if not is_exist:
self.env['yuthon.confirm.users'].sudo().create({
'notice_id': self.id,