This commit is contained in:
李鹏宇
2026-05-08 16:39:15 +08:00
2 changed files with 57 additions and 52 deletions
@@ -585,6 +585,60 @@ class SoongWorkflowCommentWizard(models.TransientModel):
current_user = self.env.user
current_datetime = fields.Datetime.now()
is_admin = current_user.has_group('base.group_system')
# 归档判断
last_log = record_id.log_ids[-1] if record_id.log_ids else None
if last_log:
same_name_logs = record_id.log_ids.filtered(
lambda log: log.name == last_log.name and log.node_btn_name == '4' and log.id != last_log.id
)
all_approved = all(log.approval_state in ['2', '3'] for log in same_name_logs) or not same_name_logs
if all_approved:
workflow_record = self.env['soong.workflow.record'].search([('code', '=', record_id.code)],
limit=1)
has_archive_btn = any(btn_name.name == '归档' for btn_name in self.node_btn_id.node_id.button_ids)
if has_archive_btn:
log_id = record_id.log_ids.filtered(lambda l: l.name == '归档')
employee_id = self.env['hr.employee'].sudo().search(
[('user_id', '=', record_id.log_ids[0].done_by.id)], limit=1)
if workflow_record:
workflow_record.write({
'approve_state': 'end',
'employee_ids': [(6, 0, [employee_id.id])],
'soong_state': 'to_active',
'node_id': False,
})
if not log_id:
self.env["soong.workflow.log"].create({
'name': '归档',
"code": self.code,
"model": self.res_model,
"res_id": self.res_id,
"workflow_id": self.node_btn_id.workflow_id.id,
"done_by": record_id.log_ids[0].done_by.id,
"approval_state": "0",
"node_btn_id": self.node_btn_id.id,
})
is_work_remind = True
else:
log_id.write({
'document_ids': [(6, 0, self.document_ids.ids)],
"approval_state": "2",
'lase_click_date': fields.Datetime.now(),
})
workflow_record.write({
'soong_state': 'active',
'employee_ids': False,
})
else:
if workflow_record:
workflow_record.sudo().write({
'approve_state': 'end',
'employee_ids': False,
'node_id': False,
'soong_state': 'done',
})
record_id.work_end = True
if is_admin:
user_log = record_id.log_ids.filtered(
lambda log: log.done_by == current_user and log.node_btn_name != '1' and log.approval_state == '0'
@@ -679,58 +733,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
title=record_id._description + "传阅/抄送",
description=description, url=url,
btntxt="查看详情")
# if not record_id.log_ids2.search([('approval_state', '=', '0')]) or record_id.log_ids2:
last_log = record_id.log_ids[-1] if record_id.log_ids else None
if last_log:
same_name_logs = record_id.log_ids.filtered(
lambda log: log.name == last_log.name and log.node_btn_name == '4' and log.id != last_log.id
)
all_approved = all(log.approval_state in ['2', '3'] for log in same_name_logs) or not same_name_logs
if all_approved:
workflow_record = self.env['soong.workflow.record'].search([('code', '=', record_id.code)],
limit=1)
has_archive_btn = any(btn_name.name == '归档' for btn_name in self.node_btn_id.node_id.button_ids)
if has_archive_btn:
log_id = record_id.log_ids.filtered(lambda l: l.name == '归档')
employee_id = self.env['hr.employee'].sudo().search([('user_id', '=', record_id.log_ids[0].done_by.id)], limit=1)
if workflow_record:
workflow_record.write({
'approve_state': 'end',
'employee_ids': [(6, 0, [employee_id.id])],
'soong_state': 'to_active',
'node_id': False,
})
if not log_id:
self.env["soong.workflow.log"].create({
'name': '归档',
"code": self.code,
"model": self.res_model,
"res_id": self.res_id,
"workflow_id": self.node_btn_id.workflow_id.id,
"done_by": record_id.log_ids[0].done_by.id,
"approval_state": "0",
"node_btn_id": self.node_btn_id.id,
})
is_work_remind = True
else:
log_id.write({
'document_ids': [(6, 0, self.document_ids.ids)],
"approval_state": "2",
'lase_click_date': fields.Datetime.now(),
})
workflow_record.write({
'soong_state': 'active',
'employee_ids': False,
})
else:
if workflow_record:
workflow_record.sudo().write({
'approve_state': 'end',
'employee_ids': False,
'node_id': False,
'soong_state': 'done',
})
record_id.work_end = True
# 给申请人发消息
if is_work_remind:
biz_record = self.env[self.res_model].browse(self.res_id)
@@ -79,6 +79,8 @@ class CustomerPortal(portal.CustomerPortal):
num = float(value or 0) * multiply
if num == 0:
return "0"
if unit == "小时":
return f"{round(num, 1)}{unit}"
return f"{num}{unit}"
data = {