1
我试图修改hr.contract模型,以便'end_date
'字段获取'effective_date
'的值,该值位于另一个模型'resignation_application
'中。 这个概念是当员工填写辞职申请表时更新合同结束日期。Odoo - 如何更新预先定义的日期字段值
这里是我的代码:
class resignation_application(osv.osv):
_name = 'resignation.application'
_columns = {
'employee_id': fields.many2one('hr.employee', "Employee", select=True, invisible=False, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'effective_date': fields.date('Effective Date', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, select=True, copy=False),
class hr_contract(osv.osv):
_inherit = 'hr.contract'
_columns = {
'end_date': fields.date('End Date', compute= '_compute_effective_date', store=True),
}
@api.model
def create(self, values):
if 'end_date' in values and not values['end_date']:
del(values['end_date'])
return super(hr_contract, self).create(values)
@api.one
@api.depends('end_date','employee_id')
def _compute_effective_date(self):
recs = self.env['resignation.application'] # retrieve an instance of MODEL
recs = recs.search([('state', '=', 'validate')]) # search returns a recordset
for rec in recs: # iterate over the records
if self.employee_id == rec.employee_id:
self.end_date = rec.effective_date
return recs.write({'end_date': rec.effective_date})
但它并没有返回的最后一天。我知道有什么毛病我return语句,但我不知道如何解决它..另外我想为end_date
字段添加反方法,以便人事主管可以将结束日期添加到员工合同。任何帮助将不胜感激。
我在没有返回声明的情况下尝试了它,但它需要我填写辞职表单并在制定员工合同之前获得批准,这在实际情况下不会发生。我的意思是'end_date'字段不是在生效日期得到验证的同一时刻更新 – youta