!3612 添加功能

Merge pull request !3612 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2025-07-01 13:18:12 +00:00
committed by Gitee
3 changed files with 37 additions and 12 deletions
@@ -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)
])
+35 -10
View File
@@ -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([
@@ -65,7 +65,7 @@
</group>
<group col="3" string="乙方信息">
<group>
<field name="employee_name_id" required="1" domain="[('stage_id.name', '=', '待入职')"/>
<field name="employee_name_id" required="1" domain="[('stage_id.name', '=', '待入职')]"/>
<label for="probation_start_date"/>
<div class="d-inline-flex w-100">
<field name="probation_start_date" string="试用期时间:" class="me-2"