添加功能
This commit is contained in:
@@ -57,38 +57,58 @@ class HrContract(models.Model):
|
||||
update_state = True
|
||||
if 'date_end' in vals:
|
||||
update_state = True
|
||||
if 'termination_date' in vals:
|
||||
update_state = True
|
||||
if update_state:
|
||||
for contract in self:
|
||||
# 获取最新的开始日期
|
||||
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:
|
||||
|
||||
# 获取最新的中止时间(空值视为未中止)
|
||||
termination_date = vals.get('termination_date', contract.termination_date)
|
||||
termination_date = fields.Date.to_date(termination_date) if termination_date else None
|
||||
|
||||
# 判断合同状态
|
||||
if termination_date and termination_date < today: # 新增:优先判断是否已中止
|
||||
new_state = 'cancel'
|
||||
elif 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
|
||||
termination_date = vals.get('termination_date')
|
||||
termination_date = fields.Date.to_date(termination_date) if termination_date else None
|
||||
|
||||
# 根据日期判断状态
|
||||
if start_date > today:
|
||||
if termination_date and termination_date < today:
|
||||
vals['state'] = 'cancel'
|
||||
elif 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):
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
<field name="is_company" string="是否本公司" optional="hide"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='date_end']" position="attributes">
|
||||
<attribute name="string">结束日期</attribute>
|
||||
<attribute name="string">结束日期</attribute>
|
||||
<attribute name="readonly">0</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='name']" position="attributes">
|
||||
<attribute name="column_invisible">1</attribute>
|
||||
|
||||
Reference in New Issue
Block a user