From 61317c17be6223b72421e4b2028831970e751aba Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" Date: Tue, 28 Feb 2012 13:54:56 +0530 Subject: [PATCH] [Fix]base/res: company address and person contact should be sychronize bzr revid: sbh@tinyerp.com-20120228082456-b5s9iw4wnjuflbk8 --- openerp/addons/base/res/res_partner.py | 34 +++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 8f79e653453..aa63b78195d 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -232,7 +232,39 @@ class res_partner(osv.osv): if math.ceil(sum/10.0)*10-sum!=int(thisean[12]): return False return True - + + + def write(self, cr, uid, ids, vals, context=None): + # Update the all child and parent_id record ,Need to fixit + update_ids=False + if ids and isinstance(ids, (tuple, list)): + ids=ids[0] + is_company=ids and self.browse(cr,uid,ids).is_company + if is_company == 'contact': + parent_id=self.browse(cr,uid,ids[0]).parent_id.id + if parent_id: + update_ids= self.search(cr, uid, [('parent_id', '=', parent_id),('use_parent_address','=',True)], context=context) + if parent_id and parent_id not in update_ids: + update_ids.append(parent_id) + elif is_company == 'partner': + update_ids= self.search(cr, uid, [('parent_id', 'in', ids),('use_parent_address','=',True)], context=context) + if update_ids: + self.udpate_address(cr,uid,update_ids,vals,context) + return super(res_partner,self).write(cr, uid, ids, vals, context=context) + + + def udpate_address(self,cr,uid,update_ids,vals, context=None): + for id in update_ids: + for key, data in vals.iteritems(): + if data: + sql = "update res_partner set %(field)s = %%(value)s where id = %%(id)s" % { + 'field': key, + } + cr.execute(sql, { + 'value': data, + 'id':id + }) + return True # _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])] def name_get(self, cr, uid, ids, context=None):