Skip to content

Commit

Permalink
[FIX] hr_employee_catch_partner: When the partner of a employee was c…
Browse files Browse the repository at this point in the history
…hanged the old one did not change the pointing to this employee, creating issues on contract assignations
  • Loading branch information
mikelarre committed Aug 8, 2017
1 parent 4713d55 commit 617fd1d
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 5 deletions.
2 changes: 1 addition & 1 deletion hr_employee_catch_partner/__openerp__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
{
"name": "Hr Employee Catch Partner",
'version': '8.0.1.1.0',
'version': '8.0.1.2.0',
'license': "AGPL-3",
'author': "AvanzOSC",
'website': "http://www.avanzosc.es",
Expand Down
30 changes: 30 additions & 0 deletions hr_employee_catch_partner/migrations/8.0.1.2.0/post-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# © Copyright 2017 Mikel Arregi Etxaniz - AvanzOSC
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html


def remove_duplicate_res_partner_employee_references(cr):
sql = ("update res_partner "
"set employee_id = null "
"where id in "
"(select r.id "
"from res_partner r inner join hr_employee h "
"on r.employee_id = h.id "
"where h.address_home_id != r.id)")
cr.execute(sql)
sql2 = ("update res_partner res "
"set employee_id = sub.id "
"from "
"(select h.id, h.address_home_id "
"from res_partner r inner join hr_employee h on "
"h.address_home_id = r.id "
"where r.employee_id is null) as sub "
"where res.id = sub.address_home_id")
cr.execute(sql2)


def migrate(cr, version):
if not version:
return
remove_duplicate_res_partner_employee_references(cr)

11 changes: 7 additions & 4 deletions hr_employee_catch_partner/models/hr_employee.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,11 @@ def create(self, vals):

@api.multi
def write(self, vals):
result = super(HrEmployee, self).write(vals)
if vals.get('address_home_id', False):
for employee in self:
employee.address_home_id.employee_id = employee.id
return result
other_employee = self.search(
[('address_home_id', '=', self.address_home_id.id),
('id', '!=', self.id)], limit=1)
self.address_home_id.employee_id = other_employee or False
self.env['res.partner'].browse(
vals['address_home_id']).employee_id = self.id
return super(HrEmployee, self).write(vals)

0 comments on commit 617fd1d

Please sign in to comment.