From 5a41b995e258bd1fcba1a6a59fd6b7e328a4fa7b 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: Sat, 11 Apr 2026 16:41:24 +0800 Subject: [PATCH 1/8] =?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 | 1 - 1 file changed, 1 deletion(-) diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index e19f0b52f..8e307dbd4 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -614,7 +614,6 @@ class SoongWorkflowCommentWizard(models.TransientModel): "workflow_id": self.node_btn_id.workflow_id.id, "done_by": employee_id.user_id.id if self.employee_ids else query_user_id, "node_btn_name": "3", - "lase_click_date": fields.Datetime.now(), "approval_state": "1", # 待审批 }) From 8d758ddf327a67a38a671b7d87285daba3aed8d1 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: Sat, 11 Apr 2026 16:46:17 +0800 Subject: [PATCH 2/8] =?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 | 2 -- 1 file changed, 2 deletions(-) diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index 8e307dbd4..82d24cf2d 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -498,7 +498,6 @@ class SoongWorkflowCommentWizard(models.TransientModel): "done_by": query_user_id, "node_btn_name": "0", "node_btn_id": self.node_btn_id.id, - "lase_click_date": fields.Datetime.now(), "approval_state": "2", # 已完成 "comment": self.comment, }) @@ -858,7 +857,6 @@ class SoongWorkflowCommentWizard(models.TransientModel): "model": self.res_model, "res_id": self.res_id, "workflow_id": self.node_btn_id.workflow_id.id, - "lase_click_date": fields.Datetime.now(), "done_by": record_id.log_ids[0].done_by.id, "approval_state": "0", "node_btn_id": self.node_btn_id.id, From b788ab6449c19078ce52b21af97ee61bbbb9f072 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: Sat, 11 Apr 2026 16:57:47 +0800 Subject: [PATCH 3/8] =?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/models/soong_workflow_mixin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index bff05a26d..4cd94f716 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -425,7 +425,7 @@ class SoongWorkflowMixin(models.AbstractModel): if apostille_log_obj: raise UserError("当前加签人员还有没有审批完成的!") # 继续正常流程 - if btn_rec.has_comment: + # if btn_rec.has_comment: return self.with_context(cx)._add_comment(log_obj, btn_rec) if btn_rec.name == '收回': return { From 5cbd1f4c507313599a1537a3068fde21790ebdc3 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: Sat, 11 Apr 2026 17:00:50 +0800 Subject: [PATCH 4/8] =?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/views/soong_workflow_node_views.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soong_workflow/views/soong_workflow_node_views.xml b/soong_workflow/views/soong_workflow_node_views.xml index 9f7102685..40439b58f 100644 --- a/soong_workflow/views/soong_workflow_node_views.xml +++ b/soong_workflow/views/soong_workflow_node_views.xml @@ -163,7 +163,7 @@ - + Date: Sat, 11 Apr 2026 17:08:10 +0800 Subject: [PATCH 5/8] =?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/models/soong_workflow_mixin.py | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 4cd94f716..1e9d6f5df 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -426,22 +426,22 @@ class SoongWorkflowMixin(models.AbstractModel): raise UserError("当前加签人员还有没有审批完成的!") # 继续正常流程 # if btn_rec.has_comment: - return self.with_context(cx)._add_comment(log_obj, btn_rec) - if btn_rec.name == '收回': - return { - 'name': '收回弹窗', - 'type': 'ir.actions.act_window', - 'view_mode': 'form', - 'res_model': 'soong.bounced.wizard', - "target": "new", - 'context': { - 'default_res_id': self.id, - "default_res_model": self._name, - } - } - else: - btn_rec.with_context(cx).log() - return btn_rec.with_context(cx).run() + return self.with_context(cx)._add_comment(log_obj, btn_rec) + # if btn_rec.name == '收回': + # return { + # 'name': '收回弹窗', + # 'type': 'ir.actions.act_window', + # 'view_mode': 'form', + # 'res_model': 'soong.bounced.wizard', + # "target": "new", + # 'context': { + # 'default_res_id': self.id, + # "default_res_model": self._name, + # } + # } + # else: + # btn_rec.with_context(cx).log() + # return btn_rec.with_context(cx).run() def _add_comment(self, logs, btn_rec): trans_link_ids = [] From 57d41f32b6e710078437ca71ce46c1c3ff1c9b6b 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: Sat, 11 Apr 2026 17:14:42 +0800 Subject: [PATCH 6/8] =?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 | 1 - 1 file changed, 1 deletion(-) diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index 82d24cf2d..266ee4540 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -1050,7 +1050,6 @@ class SoongWorkflowCommentWizard(models.TransientModel): record.write({'state': prev_log.name, 'work_end': False, }) - self.node_btn_id.with_context(cx).run() if self.node_btn_name == '归档': menu_id = self.env['ir.ui.menu'].search([('name', '=', '行政收文')], limit=1) action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0] From 7dd371e839b4d4681f55fef615fc843609362946 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: Mon, 13 Apr 2026 10:36:08 +0800 Subject: [PATCH 7/8] =?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 --- .../models/yuthon_shift_approval.py | 42 +++++++++++++------ .../views/yuthon_shift_approval_views.xml | 16 +++---- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/yuthon_hr_attendance/models/yuthon_shift_approval.py b/yuthon_hr_attendance/models/yuthon_shift_approval.py index 1f63a7fd5..75c0f5ad1 100644 --- a/yuthon_hr_attendance/models/yuthon_shift_approval.py +++ b/yuthon_hr_attendance/models/yuthon_shift_approval.py @@ -14,6 +14,10 @@ class YuthonShiftApproval(models.Model): resource_id = fields.Many2one('resource.resource', string="申请人", default=lambda self: self.env.user.employee_id.resource_id.id) company_id = fields.Many2one('res.company', string="公司", default=lambda self: self.env.user.company_id.id) transferees_id = fields.Many2one('resource.resource', string="换班对象", domain="[('id', 'in', resource_ids)]") + + resource_id1 = fields.Many2one('resource.resource', string="申请人", default=lambda self: self.env.user.employee_id.resource_id.id) + transferees_id1 = fields.Many2one('resource.resource', string="换班对象", domain="[('id', 'in', resource_ids)]") + alternate_id = fields.Many2one('resource.resource', string="顶班对象", domain="[('id', 'in', resource_ids)]") alternate_shifts = fields.Selection([('transferees', '换班'), ('alternate', '顶班')], string="申请类型" , default='transferees') shift_date = fields.Date(string="日期") @@ -56,7 +60,7 @@ class YuthonShiftApproval(models.Model): self_users_ids = fields.Many2many('res.users', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])]) @api.onchange('shift_date', 'resource_id', - 'shift_two_date', + 'shift_two_date', 'resource_id1', 'transferees_id1', 'return_id', 'return_date', 'transferees_id', 'alternate_id', 'alternate_shifts', 'return_two_date') def _onchange_shifts(self): @@ -72,8 +76,8 @@ class YuthonShiftApproval(models.Model): self.shift_id = False # 2. 校验并计算"我的第二班次" - if self.shift_two_date and self.resource_id: - slot = self._get_slot(self.resource_id.id, self.shift_two_date) + if self.shift_two_date and self.resource_id1: + slot = self._get_slot(self.resource_id1.id, self.shift_two_date) if not slot: self.shift_two_rest = '休息' else: @@ -97,8 +101,8 @@ class YuthonShiftApproval(models.Model): self.return_id = False # 5. 校验并计算"对方第二班次" - if self.return_two_date and other_resource: - slot = self._get_slot(other_resource.id, self.return_two_date) + if self.return_two_date and self.transferees_id1: + slot = self._get_slot(self.transferees_id1.id, self.return_two_date) if not slot: self.return_two_rest = '休息' else: @@ -202,7 +206,7 @@ class YuthonShiftApproval(models.Model): # 申请人休息(第二班次) if self_rest_two and return_two_id: self.env['planning.slot'].create({ - 'resource_id': record.resource_id.id, + 'resource_id': record.resource_id1.id, 'template_id': return_two_id.template_id.id, 'start_datetime': return_two_id.start_datetime, 'end_datetime': return_two_id.end_datetime, @@ -228,7 +232,7 @@ class YuthonShiftApproval(models.Model): # 对方休息(第二班次) if other_rest_two and shift_two_id: self.env['planning.slot'].create({ - 'resource_id': record.transferees_id.id, + 'resource_id': record.transferees_id1.id, 'template_id': shift_two_id.template_id.id, 'start_datetime': shift_two_id.start_datetime, 'end_datetime': shift_two_id.end_datetime, @@ -249,13 +253,27 @@ class YuthonShiftApproval(models.Model): shift_two_id.write({'template_id': return_template_two}) return_two_id.write({'template_id': shift_template_two}) - @api.onchange('resource_id', 'transferees_id', 'alternate_id') + @api.onchange('resource_id', 'transferees_id', 'alternate_id', 'resource_id1', 'transferees_id1') def onchange_name(self): for rec in self: - if rec.resource_id and rec.transferees_id and rec.alternate_shifts =='transferees': - rec.name = '调班:'+ rec.resource_id.name + '-' + rec.transferees_id.name - elif rec.resource_id and rec.alternate_id and rec.alternate_shifts =='alternate': - rec.name = '替班:'+ rec.resource_id.name + '-' + rec.alternate_id.name + rec.name = '' + res = rec.resource_id + trans = rec.transferees_id + res1 = rec.resource_id1 + trans1 = rec.transferees_id1 + if res and trans and res1 and trans1: + if (res.id == res1.id) and (trans.id == trans1.id): + rec.name = '调班:' + res.name + '-' + trans.name + continue + name_parts = [] + if rec.alternate_shifts == 'transferees': + if res and trans: + name_parts.append(f"{res.name}-{trans.name}") + if res1 and trans1: + name_parts.append(f"{res1.name}-{trans1.name}") + + if name_parts: + rec.name = '调班:' + ' | '.join(name_parts) @api.onchange('department_id') def _onchange_resource_ids(self): diff --git a/yuthon_hr_attendance/views/yuthon_shift_approval_views.xml b/yuthon_hr_attendance/views/yuthon_shift_approval_views.xml index c2493394e..ffd63298b 100644 --- a/yuthon_hr_attendance/views/yuthon_shift_approval_views.xml +++ b/yuthon_hr_attendance/views/yuthon_shift_approval_views.xml @@ -110,9 +110,9 @@ -