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/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index 2a1080399..a49e01257 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 + "传阅/抄送", 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_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 @@ | 审批详情 | ||||||