添加功能

This commit is contained in:
李鹏宇
2025-11-27 11:28:55 +08:00
parent 22effb7c45
commit 359583c3c6
2 changed files with 63 additions and 60 deletions
+58 -53
View File
@@ -301,71 +301,76 @@ class SoongWorkflowMixin(models.AbstractModel):
index = 20 # 防止死循环
break
current_department = self.department_id
if len(current_node.out_link_ids) > 1:
# 筛选与当前节点部门匹配的后续节点
valid_nodes = []
for link in current_node.out_link_ids:
target_node = link.node_to
# 如果目标节点有部门限制,且与当前节点部门匹配
if target_node.department_id and any(
dept in current_department or
current_department in self.get_all_sub_departments(dept)
for dept in target_node.department_id
):
valid_nodes.append((target_node, link))
# 尝试父部门匹配
if not valid_nodes and current_department and current_department.parent_id:
parent_department = current_department.parent_id
if btn_rec.link_id:
matched_link = btn_rec.link_id
next_node = matched_link.node_to
matched_key = next_node.name
else:
if len(current_node.out_link_ids) > 1:
# 筛选与当前节点部门匹配的后续节点
valid_nodes = []
for link in current_node.out_link_ids:
target_node = link.node_to
# 如果目标节点有部门限制,且与当前节点部门匹配
if target_node.department_id and any(
dept in parent_department or
parent_department in self.get_all_sub_departments(dept)
dept in current_department or
current_department in self.get_all_sub_departments(dept)
for dept in target_node.department_id
):
valid_nodes.append((target_node, link))
# 如果两种匹配都失败,将所有节点加入有效列表
if not valid_nodes:
for link in current_node.out_link_ids:
valid_nodes.append((link.node_to, link))
# 尝试父部门匹配
if not valid_nodes and current_department and current_department.parent_id:
parent_department = current_department.parent_id
for link in current_node.out_link_ids:
target_node = link.node_to
if target_node.department_id and any(
dept in parent_department or
parent_department in self.get_all_sub_departments(dept)
for dept in target_node.department_id
):
valid_nodes.append((target_node, link))
# 选择第一个匹配的节点
next_node, matched_link = valid_nodes[0]
matched_key = next_node.name
else:
matched_link = current_node.out_link_ids[0]
next_node = matched_link.node_to
matched_key = next_node.name
transfer_buttons = [
btn for btn in next_node.button_ids
if btn.name == '转交'
]
end_buttons = [
btn for btn in next_node.button_ids
if btn.name == '结束'
]
has_visible_transfer_btn = True
for btn in transfer_buttons:
if btn.is_review_invisible:
domain = eval(btn.invisible_expression)
expression_result = self.search(domain)
has_self_in_result = self.id in expression_result.ids
if not end_buttons:
if has_self_in_result:
has_visible_transfer_btn = True
break
# 如果两种匹配都失败,将所有节点加入有效列表
if not valid_nodes:
for link in current_node.out_link_ids:
valid_nodes.append((link.node_to, link))
# 选择第一个匹配的节点
next_node, matched_link = valid_nodes[0]
matched_key = next_node.name
else:
matched_link = current_node.out_link_ids[0]
next_node = matched_link.node_to
matched_key = next_node.name
transfer_buttons = [
btn for btn in next_node.button_ids
if btn.name == '转交'
]
end_buttons = [
btn for btn in next_node.button_ids
if btn.name == '结束'
]
has_visible_transfer_btn = True
for btn in transfer_buttons:
if btn.is_review_invisible:
domain = eval(btn.invisible_expression)
expression_result = self.search(domain)
has_self_in_result = self.id in expression_result.ids
if not end_buttons:
if has_self_in_result:
has_visible_transfer_btn = True
break
else:
has_visible_transfer_btn = False
else:
has_visible_transfer_btn = False
has_visible_transfer_btn = True
else:
has_visible_transfer_btn = True
else:
has_visible_transfer_btn = True
if not has_visible_transfer_btn:
skipped_node_names.append(next_node.name)
_logger.info(f"跳过节点: {next_node.name},无可见的转交按钮")
if not has_visible_transfer_btn:
skipped_node_names.append(next_node.name)
_logger.info(f"跳过节点: {next_node.name},无可见的转交按钮")
# 更新索引
index = state_list.index(matched_key)
@@ -85,13 +85,11 @@ class PropertyReconciliationWizard(models.Model):
to_delete.append((2, line.id, 0))
rec.reconciliation_line_ids = to_delete
new_contract_ids = list(set(current_contract_ids) - set(bank_contract_ids))
if new_contract_ids:
new_contracts = self.env['property.lease.contract'].browse(new_contract_ids)
new_vals, _, _ = rec.bank_id._get_reconciliation_vals(rec.bank_id, new_contracts, is_equity=True)
current_line_vals = [(4, line.id) for line in rec.reconciliation_line_ids]
rec.reconciliation_line_ids = current_line_vals + new_vals
rec.compute_reconciliation_line_ids()
new_contracts = self.env['property.lease.contract'].browse(current_contract_ids)
new_vals, _, _ = rec.bank_id._get_reconciliation_vals(rec.bank_id, new_contracts, is_equity=True)
rec.reconciliation_line_ids = [(5, 0, 0)]
rec.reconciliation_line_ids = new_vals
rec.compute_reconciliation_line_ids()
@api.onchange('receivables_type_ids')
def onchange_receivables_type_ids(self):