From 594ad82b4a4787c4d3e0f29163f22a5ca627441c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= <9664676+pengyuthon@user.noreply.gitee.com> Date: Sun, 18 Jan 2026 19:59:23 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/wizard/soong_workflow_comment_wizard.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index 148ed5ae7..6a5c5a0b4 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -695,7 +695,7 @@ class SoongWorkflowCommentWizard(models.TransientModel): recipients = [emp for emp in employees] for employee in recipients: target_url = f'https://oa.thtzjt.com/web#id={record_id.id}&cids=2&active_id={action_id.id}&model={record_id._name}&view_type=form' - url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url) + url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, employee.user_id.id) if self.res_model == 'purchase.order': self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=employee.wecom_userid, @@ -716,7 +716,6 @@ class SoongWorkflowCommentWizard(models.TransientModel): workflow_record_id = self.env['soong.workflow.record'].search([('code', '=', record_id.code)]) action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0] target_url = f'https://oa.thtzjt.com/web#id={record_id.id}&cids=2&menu_id={menu_id.id}&active_id={action_id.id}&model={record_id._name}&view_type=form' - url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url) description = "标题: {}\n".format(record_id.name) + self.env.user.name + ' ' + str(fields.Datetime.now() + timedelta(hours=8)) if self.employee_ids: workflow_record_id.users_ids = [(4, employee.user_id.id) for employee in self.employee_ids if employee.user_id] @@ -731,6 +730,7 @@ class SoongWorkflowCommentWizard(models.TransientModel): "done_by": self.employee_ids.user_id.id, "node_btn_name": "0", }) + url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, self.employee_ids.user_id.id) result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=self.employee_ids.wecom_userid, title=record_id._description, description=description, url=url, btntxt="查看详情") if result_data and 'msgid' in result_data[-1]: msg_id = result_data[-1]['msgid'] @@ -747,6 +747,7 @@ class SoongWorkflowCommentWizard(models.TransientModel): "done_by": emp.user_id.id, "node_btn_name": "4", }) + url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, emp.user_id.id) result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=emp.wecom_userid, title=record_id._description + "承办", description=description, url=url, btntxt="查看详情") if result_data and 'msgid' in result_data[-1]: msg_id = result_data[-1]['msgid'] @@ -781,6 +782,7 @@ class SoongWorkflowCommentWizard(models.TransientModel): "node_btn_id": self.node_btn_id.id, "approval_state": "0", }) + url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, employee.user_id.id) result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=employee.wecom_userid, title=record_id._description + "传阅/抄送",description=description, url=url, btntxt="查看详情") if result_data and 'msgid' in result_data[-1]: msg_id = result_data[-1]['msgid'] @@ -839,7 +841,6 @@ class SoongWorkflowCommentWizard(models.TransientModel): menu_id = self.env['ir.ui.menu'].search([('name', '=', '行政收文')]) action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0] target_url = f'https://oa.thtzjt.com/web#id={record_id.id}&cids=2&menu_id={menu_id.id}&active_id={action_id.id}&model={record_id._name}&view_type=form' - url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url) description = "标题: {}\n".format(record_id.name) + self.env.user.name + ' ' + str(fields.Datetime.now() + timedelta(hours=8)) record = self.env[self.res_model].search([('id', '=', self.res_id)]) record.log_ids[-1].write({'is_active_operate': True, @@ -875,6 +876,7 @@ class SoongWorkflowCommentWizard(models.TransientModel): "node_btn_id": self.node_btn_id.id, "approval_state": "0", }) + url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, employee.user_id.id) result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=employee.wecom_userid, title=record_id._description + "传阅/抄送", From d287b0c841900de2593546a0542c11d97338d82c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sun, 18 Jan 2026 20:24:10 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=8E=BB=E9=87=8D=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/models/soong_workflow_mixin.py | 25 +++++++++++++++++++ .../report/hr_leave_batch_report_template.xml | 3 ++- .../report/overtime_approval_templates.xml | 3 ++- .../views/inherit_hr_job_views.xml | 2 +- .../contract_review_report_templates.xml | 3 ++- ...roperty_lease_contract_print_templates.xml | 3 ++- .../report/purchase_order_print_templates.xml | 3 ++- .../business_approval_print_templates.xml | 24 +----------------- .../report/seal_approval_templates.xml | 3 ++- 9 files changed, 39 insertions(+), 30 deletions(-) diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 74e9c88ef..92cedca45 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -209,6 +209,31 @@ class SoongWorkflowMixin(models.AbstractModel): soong_record_ids = fields.One2many(comodel_name="soong.workflow.line", inverse_name="res_id", string=" ",) project_ids = fields.One2many(comodel_name="project.project.line", inverse_name="res_id", string=" ",) + def get_logs_for_print(self, applicant_first=False): + """ + 返回用于打印的审批日志列表: + - 按与界面相同的顺序(sequence 升序) + - 同名节点只保留最新一条 + - 可选:申请人置顶 + """ + self.ensure_one() + logs = self.log_ids.sorted('sequence') + seen = set() + ordered = [] + # 逆序去重,保留最新 + for log in reversed(logs): + key = log.name or '' + if key in seen: + continue + seen.add(key) + ordered.append(log) + ordered.reverse() # 恢复原有顺序(去重后) + if applicant_first: + applicants = [l for l in ordered if (l.name or '') == '申请人'] + others = [l for l in ordered if (l.name or '') != '申请人'] + ordered = applicants + others + return ordered + # @api.model_create_multi # def create(self, vals_list): # res = super().create(vals_list) diff --git a/yuthon_holiday/report/hr_leave_batch_report_template.xml b/yuthon_holiday/report/hr_leave_batch_report_template.xml index 7b9b69755..89263f669 100644 --- a/yuthon_holiday/report/hr_leave_batch_report_template.xml +++ b/yuthon_holiday/report/hr_leave_batch_report_template.xml @@ -131,7 +131,8 @@ 审批详情 - + + diff --git a/yuthon_hr_attendance/report/overtime_approval_templates.xml b/yuthon_hr_attendance/report/overtime_approval_templates.xml index 7e664ad00..92331e36b 100644 --- a/yuthon_hr_attendance/report/overtime_approval_templates.xml +++ b/yuthon_hr_attendance/report/overtime_approval_templates.xml @@ -67,7 +67,8 @@ 审批详情 - + + diff --git a/yuthon_hr_employee/views/inherit_hr_job_views.xml b/yuthon_hr_employee/views/inherit_hr_job_views.xml index 845d9b0d1..312856978 100644 --- a/yuthon_hr_employee/views/inherit_hr_job_views.xml +++ b/yuthon_hr_employee/views/inherit_hr_job_views.xml @@ -82,7 +82,7 @@ 1 - + diff --git a/yuthon_hr_employee_approval/report/contract_review_report_templates.xml b/yuthon_hr_employee_approval/report/contract_review_report_templates.xml index a0d1ca290..10c9b39d9 100644 --- a/yuthon_hr_employee_approval/report/contract_review_report_templates.xml +++ b/yuthon_hr_employee_approval/report/contract_review_report_templates.xml @@ -92,7 +92,8 @@ 审批详情 - + + diff --git a/yuthon_property_approval/report/property_lease_contract_print_templates.xml b/yuthon_property_approval/report/property_lease_contract_print_templates.xml index 6a58ddb41..650aac119 100644 --- a/yuthon_property_approval/report/property_lease_contract_print_templates.xml +++ b/yuthon_property_approval/report/property_lease_contract_print_templates.xml @@ -119,7 +119,8 @@ 审批详情 - + + diff --git a/yuthon_purchase/report/purchase_order_print_templates.xml b/yuthon_purchase/report/purchase_order_print_templates.xml index fcf991556..6185332b2 100644 --- a/yuthon_purchase/report/purchase_order_print_templates.xml +++ b/yuthon_purchase/report/purchase_order_print_templates.xml @@ -116,7 +116,8 @@
审批详情
- + + diff --git a/yuthon_trade/report/business_approval_print_templates.xml b/yuthon_trade/report/business_approval_print_templates.xml index 38f1f135a..8ba805a53 100644 --- a/yuthon_trade/report/business_approval_print_templates.xml +++ b/yuthon_trade/report/business_approval_print_templates.xml @@ -42,29 +42,7 @@ - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/yuthon_trade/report/seal_approval_templates.xml b/yuthon_trade/report/seal_approval_templates.xml index 879b37326..86d05edc8 100644 --- a/yuthon_trade/report/seal_approval_templates.xml +++ b/yuthon_trade/report/seal_approval_templates.xml @@ -104,7 +104,8 @@ - + + From 842d4e6aad5040a2abc9b874d699c351d6ebfa8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sun, 18 Jan 2026 20:25:02 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=8E=BB=E9=87=8D=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_hr_employee/views/inherit_hr_job_views.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yuthon_hr_employee/views/inherit_hr_job_views.xml b/yuthon_hr_employee/views/inherit_hr_job_views.xml index 312856978..845d9b0d1 100644 --- a/yuthon_hr_employee/views/inherit_hr_job_views.xml +++ b/yuthon_hr_employee/views/inherit_hr_job_views.xml @@ -82,7 +82,7 @@ 1 - +
用章范围、
附件清单
审批详情
审批详情