From 28d83ef237be45817bd69a340f2cae10abe4a2f0 Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Tue, 1 Jul 2025 21:17:27 +0800 Subject: [PATCH] =?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 --- .../wizard/soong_workflow_comment_wizard.py | 2 +- yuthon_contract/models/inherit_hr_contract.py | 45 ++++++++++++++----- .../views/yuthon_onboard_approval_views.xml | 2 +- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index 52d44be6f..b3d2acfb1 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -317,7 +317,7 @@ class SoongWorkflowCommentWizard(models.TransientModel): # 查找下一个节点 next_node_id = record_id.workflow_id.node_ids.search([ - ('name', 'ilike', self.trans_link_id.name), + ('name', '=', self.trans_link_id.name), ('workflow_id', '=', record_id.workflow_id.id) ]) diff --git a/yuthon_contract/models/inherit_hr_contract.py b/yuthon_contract/models/inherit_hr_contract.py index 432408276..7c31a1ffa 100644 --- a/yuthon_contract/models/inherit_hr_contract.py +++ b/yuthon_contract/models/inherit_hr_contract.py @@ -41,21 +41,46 @@ class HrContract(models.Model): def write(self, vals): """在写入时自动更新合同状态""" - # 先执行状态更新 today = fields.Date.today() + update_state = False + if 'date_start' in vals: + update_state = True if 'date_end' in vals: - new_end_date = fields.Date.to_date(vals['date_end']) - # 遍历所有要更新的合同 + update_state = True + if update_state: for contract in self: - end_date = new_end_date - if end_date > today: - vals['state'] = 'open' - elif end_date < today: - vals['state'] = 'close' - - # 调用原生写入逻辑 + start_date = fields.Date.to_date(vals.get('date_start', contract.date_start)) + # 获取新的结束日期(如果有更新),空值视为无限大 + end_date = vals.get('date_end', contract.date_end) + end_date = fields.Date.to_date(end_date) if end_date else None + if start_date > today: + new_state = 'draft' + elif end_date and end_date < today: + new_state = 'close' + else: + new_state = 'open' + # 更新当前合同的状态 + if 'state' not in vals: + vals['state'] = new_state return super(HrContract, self).write(vals) + @api.model + def create(self, vals): + """在创建时自动更新合同状态""" + today = fields.Date.today() + # 获取开始日期和结束日期 + start_date = fields.Date.to_date(vals.get('date_start')) + end_date = vals.get('date_end') + end_date = fields.Date.to_date(end_date) if end_date else None + # 根据日期判断状态 + if start_date > today: + vals['state'] = 'draft' + elif end_date and end_date < today: + vals['state'] = 'close' + else: + vals['state'] = 'open' + return super(HrContract, self).create(vals) + def update_contract_states(self): today = date.today() active_contracts = self.search([ diff --git a/yuthon_hr_employee_approval/views/yuthon_onboard_approval_views.xml b/yuthon_hr_employee_approval/views/yuthon_onboard_approval_views.xml index 529388301..4b10cae0a 100644 --- a/yuthon_hr_employee_approval/views/yuthon_onboard_approval_views.xml +++ b/yuthon_hr_employee_approval/views/yuthon_onboard_approval_views.xml @@ -65,7 +65,7 @@ - +