添加功能
This commit is contained in:
@@ -203,56 +203,120 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
self.ensure_one()
|
||||
cx = self.env.context.copy() or {}
|
||||
record_id = self.env[self.res_model].search([('id', '=', self.res_id)])
|
||||
for employee in self.employee_ids:
|
||||
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
|
||||
url = f'https://oa.thtzjt.com/web?login={employee.user_id.login}&oauth_uid={employee.wecom_userid}#id={record_id.id}&cids=2&action={action_id.id}&model={record_id._name}&view_type=form'
|
||||
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
|
||||
user_id=employee.wecom_userid,
|
||||
title=record_id._description,
|
||||
description="标题: {}\n".format(
|
||||
record_id.name) + self.env.user.name + ' ' + str(
|
||||
fields.Datetime.now() + timedelta(hours=8)),
|
||||
url=url, btntxt="查看详情")
|
||||
if self.node_btn_name == '转交':
|
||||
self_node_id = record_id.workflow_id.node_ids.search(
|
||||
[('name', '=', record_id.state), ('workflow_id', '=', record_id.workflow_id.id)])
|
||||
now_record_obj = self.sudo().env["soong.workflow.log"].search(
|
||||
[("model", "=", self.res_model), ("res_id", "=", self.res_id), ("node_id", "=", self.node_btn_id.node_id.id)])
|
||||
first_node = self.sudo().env["soong.workflow.log"].search([("model", "=", self.res_model), ("res_id", "=", self.res_id)])
|
||||
if not now_record_obj:
|
||||
# 查找当前节点的登录人审批记录
|
||||
current_node_log = self.sudo().env["soong.workflow.log"].search(
|
||||
[("model", "=", self.res_model),
|
||||
("res_id", "=", self.res_id),
|
||||
("node_id", "=", self.node_btn_id.node_id.id),
|
||||
("done_by", "=", self.env.user.id)]
|
||||
)
|
||||
# 创建或更新当前用户的审批记录
|
||||
if not current_node_log:
|
||||
self.sudo().env["soong.workflow.log"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": self.node_btn_id.node_id.id if first_node else record_id.workflow_id.node_ids[0].id,
|
||||
"node_id": self.node_btn_id.node_id.id,
|
||||
"workflow_id": self.node_btn_id.workflow_id.id,
|
||||
"done_by": self.env.user.id,
|
||||
"node_btn_name": "0",
|
||||
"node_btn_id": self.node_btn_id.id,
|
||||
"lase_click_date": fields.Datetime.now(),
|
||||
"approval_state": "2",
|
||||
"approval_state": "2", # 已完成
|
||||
"document_ids": self.document_ids,
|
||||
"comment": self.comment,
|
||||
})
|
||||
else:
|
||||
now_record_obj.write({"comment": self.comment,
|
||||
"approval_state": "2",
|
||||
"lase_click_date": fields.Datetime.now()})
|
||||
next_node_id = record_id.workflow_id.node_ids.search([('name', 'ilike', self.trans_link_id.name),
|
||||
('workflow_id', '=', record_id.workflow_id.id)])
|
||||
self.sudo().env["soong.workflow.log"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": next_node_id.id,
|
||||
"workflow_id": self.node_btn_id.workflow_id.id,
|
||||
"done_by": self.employee_ids.user_id.id,
|
||||
"node_btn_name": "0",
|
||||
})
|
||||
workflow_record_id = self.env['soong.workflow.record'].search([('code', '=', record_id.code)])
|
||||
workflow_record_id.users_ids = [(4, self.employee_ids.user_id.id)]
|
||||
workflow_record_id.employee_ids = self.employee_ids
|
||||
record_id.write({'state': self.trans_link_id.name})
|
||||
current_node_log.write({
|
||||
"comment": self.comment,
|
||||
"approval_state": "2", # 已完成
|
||||
"lase_click_date": fields.Datetime.now()
|
||||
})
|
||||
|
||||
# 检查是否为并审模式
|
||||
if self.approval_concatenation == 'bing': # 并审模式
|
||||
# 获取当前节点应该审批的所有员工
|
||||
expected_employees = self.employee_ids
|
||||
|
||||
# 查找下一个节点
|
||||
next_node_id = record_id.workflow_id.node_ids.search([
|
||||
('name', 'ilike', self.trans_link_id.name),
|
||||
('workflow_id', '=', record_id.workflow_id.id)
|
||||
])
|
||||
|
||||
completed_logs = self.sudo().env["soong.workflow.log"].search([
|
||||
("model", "=", self.res_model),
|
||||
("res_id", "=", self.res_id),
|
||||
("node_id", "=", self.node_btn_id.node_id.id),
|
||||
("node_btn_name", "=", "4"),
|
||||
("approval_state", "!=", "2")
|
||||
])
|
||||
all_completed = len(completed_logs) == 0
|
||||
if all_completed or record_id.state=='申请人' or record_id.state=='拟办':
|
||||
for employee in expected_employees:
|
||||
# 检查该员工在下一节点是否已有记录
|
||||
next_node_employee_log = self.sudo().env["soong.workflow.log"].search([
|
||||
("model", "=", self.res_model),
|
||||
("res_id", "=", self.res_id),
|
||||
("node_id", "=", next_node_id.id),
|
||||
("done_by", "=", employee.user_id.id)
|
||||
])
|
||||
|
||||
if not next_node_employee_log:
|
||||
# 创建初步记录,状态为"待审批"
|
||||
self.sudo().env["soong.workflow.log"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": next_node_id.id,
|
||||
"workflow_id": self.node_btn_id.workflow_id.id,
|
||||
"done_by": employee.user_id.id,
|
||||
"node_btn_name": "4",
|
||||
"approval_state": "0", # 待审批
|
||||
})
|
||||
workflow_record_id = self.env['soong.workflow.record'].search([('code', '=', record_id.code)])
|
||||
if self.employee_ids:
|
||||
workflow_record_id.users_ids = [(4, employee.user_id.id) for employee in self.employee_ids if employee.user_id]
|
||||
workflow_record_id.employee_ids = self.employee_ids
|
||||
record_id.write({'state': self.trans_link_id.name})
|
||||
|
||||
for employee in self.employee_ids:
|
||||
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
|
||||
url = f'https://oa.thtzjt.com/web?login={employee.user_id.login}&oauth_uid={employee.wecom_userid}#id={record_id.id}&cids=2&action={action_id.id}&model={record_id._name}&view_type=form'
|
||||
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
|
||||
user_id=employee.wecom_userid,
|
||||
title=record_id._description,
|
||||
description="标题: {}\n".format(
|
||||
record_id.name) + self.env.user.name + ' ' + str(
|
||||
fields.Datetime.now() + timedelta(
|
||||
hours=8)),
|
||||
url=url, btntxt="查看详情")
|
||||
else: # 串审模式 (沿用原有逻辑)
|
||||
# 查找下一个节点
|
||||
next_node_id = record_id.workflow_id.node_ids.search([
|
||||
('name', 'ilike', self.trans_link_id.name),
|
||||
('workflow_id', '=', record_id.workflow_id.id)
|
||||
])
|
||||
|
||||
# 创建下一节点的审批记录
|
||||
self.sudo().env["soong.workflow.log"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": next_node_id.id,
|
||||
"workflow_id": self.node_btn_id.workflow_id.id,
|
||||
"done_by": self.employee_ids.user_id.id if self.employee_ids else self.env.user.id,
|
||||
"node_btn_name": "0",
|
||||
"lase_click_date": fields.Datetime.now(),
|
||||
"approval_state": "1", # 待审批
|
||||
})
|
||||
|
||||
# 更新业务记录状态
|
||||
record_id.write({'state': self.trans_link_id.name})
|
||||
|
||||
# 抄送传阅日志
|
||||
if self_node_id.is_carbon_copy:
|
||||
for employee in self_node_id.employee_ids:
|
||||
|
||||
@@ -152,6 +152,9 @@
|
||||
<group>
|
||||
<field name="create_date1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="start_date"/>
|
||||
</group>
|
||||
</group>
|
||||
<div class="col-12 text-center">
|
||||
<h1>
|
||||
|
||||
Reference in New Issue
Block a user