@@ -91,8 +91,19 @@ class HrContract(models.Model):
|
||||
)
|
||||
change_ids = fields.One2many('hr.contract.change.line', 'contract_id', string="异动信息")
|
||||
|
||||
@api.constrains('party_id')
|
||||
def _constrains_party_company(self):
|
||||
@api.onchange('party_id')
|
||||
def _onchange_party_company(self):
|
||||
"""UI 交互:切换甲方时自动带出对应公司"""
|
||||
if self.party_id and self.party_id.work_address:
|
||||
company = self.env['res.company'].search(
|
||||
[('name', 'ilike', self.party_id.work_address)],
|
||||
limit=1
|
||||
)
|
||||
if company:
|
||||
self.company_id = company
|
||||
|
||||
def _sync_party_company(self):
|
||||
"""根据 party_id 同步合同、员工、用户的公司信息"""
|
||||
for rec in self:
|
||||
company = False
|
||||
if rec.party_id and rec.party_id.work_address:
|
||||
@@ -100,14 +111,16 @@ class HrContract(models.Model):
|
||||
[('name', 'ilike', rec.party_id.work_address)],
|
||||
limit=1
|
||||
)
|
||||
if not company:
|
||||
continue
|
||||
rec.company_id = company
|
||||
rec.employee_id.company_id = company
|
||||
if rec.employee_id and rec.employee_id.user_id and company:
|
||||
user = rec.employee_id.user_id
|
||||
user.write({
|
||||
'company_id': company.id,
|
||||
'company_ids': [(4, company.id)]
|
||||
})
|
||||
if rec.employee_id:
|
||||
rec.employee_id.company_id = company
|
||||
if rec.employee_id.user_id:
|
||||
rec.employee_id.user_id.write({
|
||||
'company_id': company.id,
|
||||
'company_ids': [(4, company.id)]
|
||||
})
|
||||
|
||||
@api.constrains('change_ids')
|
||||
def _onchange_change_ids(self):
|
||||
@@ -442,6 +455,7 @@ class HrContract(models.Model):
|
||||
'is_accum_salary': True,
|
||||
'is_membership': True,
|
||||
})
|
||||
contracts._sync_party_company()
|
||||
|
||||
return contracts
|
||||
|
||||
|
||||
Reference in New Issue
Block a user