Skip to content

Commit 617fd1d

Browse files
committed
[FIX] hr_employee_catch_partner: When the partner of a employee was changed the old one did not change the pointing to this employee, creating issues on contract assignations
1 parent 4713d55 commit 617fd1d

3 files changed

Lines changed: 38 additions & 5 deletions

File tree

hr_employee_catch_partner/__openerp__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
44
{
55
"name": "Hr Employee Catch Partner",
6-
'version': '8.0.1.1.0',
6+
'version': '8.0.1.2.0',
77
'license': "AGPL-3",
88
'author': "AvanzOSC",
99
'website': "http://www.avanzosc.es",
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# -*- coding: utf-8 -*-
2+
# © Copyright 2017 Mikel Arregi Etxaniz - AvanzOSC
3+
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
4+
5+
6+
def remove_duplicate_res_partner_employee_references(cr):
7+
sql = ("update res_partner "
8+
"set employee_id = null "
9+
"where id in "
10+
"(select r.id "
11+
"from res_partner r inner join hr_employee h "
12+
"on r.employee_id = h.id "
13+
"where h.address_home_id != r.id)")
14+
cr.execute(sql)
15+
sql2 = ("update res_partner res "
16+
"set employee_id = sub.id "
17+
"from "
18+
"(select h.id, h.address_home_id "
19+
"from res_partner r inner join hr_employee h on "
20+
"h.address_home_id = r.id "
21+
"where r.employee_id is null) as sub "
22+
"where res.id = sub.address_home_id")
23+
cr.execute(sql2)
24+
25+
26+
def migrate(cr, version):
27+
if not version:
28+
return
29+
remove_duplicate_res_partner_employee_references(cr)
30+

hr_employee_catch_partner/models/hr_employee.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ def create(self, vals):
2727

2828
@api.multi
2929
def write(self, vals):
30-
result = super(HrEmployee, self).write(vals)
3130
if vals.get('address_home_id', False):
32-
for employee in self:
33-
employee.address_home_id.employee_id = employee.id
34-
return result
31+
other_employee = self.search(
32+
[('address_home_id', '=', self.address_home_id.id),
33+
('id', '!=', self.id)], limit=1)
34+
self.address_home_id.employee_id = other_employee or False
35+
self.env['res.partner'].browse(
36+
vals['address_home_id']).employee_id = self.id
37+
return super(HrEmployee, self).write(vals)

0 commit comments

Comments
 (0)