[FIX] base_contact: fix issue 6051: when choosing a partner, the wrong address is...
authorolt@tinyerp.com <>
Wed, 1 Jun 2011 12:52:28 +0000 (14:52 +0200)
committerolt@tinyerp.com <>
Wed, 1 Jun 2011 12:52:28 +0000 (14:52 +0200)
bzr revid: olt@tinyerp.com-20110601125228-jh4ugrqp88zmq2ut

addons/base_contact/base_contact.py
addons/base_contact/base_contact_view.xml

index 4d1a81b..63cba9c 100644 (file)
@@ -213,10 +213,18 @@ class res_partner_job(osv.osv):
         'sequence_contact' : lambda *a: 0,
         'state': lambda *a: 'current',
     }
-    
-    def onchange_name(self, cr, uid, ids, address_id='', name='', context=None):    
-        return {'value': {'address_id': address_id}, 'domain':{'partner_id':'name'}}     
-    
+
+    def onchange_name(self, cr, uid, ids, partner_id='', address_id='', context=None):
+        address_id = False
+        if partner_id:
+            partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
+            addresses = [a.id for a in partner.address if a.type == 'contact'] or [a.id for a in partner.address]
+            address_id = addresses and addresses[0] or False
+
+        domain = partner_id and [('partner_id', '=', partner_id)] or []
+
+        return {'value': {'address_id': address_id}, 'domain': {'address_id': domain}}
+
     def onchange_partner(self, cr, uid, _, partner_id, context=None):
         """
             @param self: The object pointer
@@ -228,7 +236,7 @@ class res_partner_job(osv.osv):
         """
         return {'value': {'address_id': False}}
 
-    def onchange_address(self, cr, uid, _, address_id, context=None):
+    def onchange_address(self, cr, uid, _, name, address_id, context=None):
         """
             @@param self: The object pointer
             @param cr: the current row, from the database cursor,
@@ -239,11 +247,13 @@ class res_partner_job(osv.osv):
         """
         partner_id = False
         if address_id:
-            address = self.pool.get('res.partner.address')\
-                        .browse(cr, uid, address_id, context=context)
+            address = self.pool.get('res.partner.address').browse(cr, uid, address_id, context=context)
             partner_id = address.partner_id.id
-        return {'value': {'name': partner_id}}
-    
+
+        domain = name and [('partner_id', '=', name)] or []
+
+        return {'value': {'name': partner_id}, 'domain': {'address_id': domain}}
+
 res_partner_job()
 
 
index 59894ab..4e1b68a 100644 (file)
@@ -53,8 +53,8 @@
                                <group colspan="4" col="4">
                                    <field name="sequence_contact" />
                                    <field name="function"/>
-                                   <field name="name" on_change="onchange_name(name,address_id)"/> 
-                                   <field name="address_id"/>                                   
+                                   <field name="name" on_change="onchange_name(name, address_id)"/> 
+                                   <field name="address_id" on_change="onchange_address(name, address_id)" />
                                    <field name="date_start" />
                                    <field name="date_stop" />
                                    <field name="state" />
@@ -73,7 +73,7 @@
                                 <field name="sequence_contact" string="Seq."/>
                                 <field name="function"/>
                                 <field name="name" on_change="onchange_partner(name)"/> 
-                                                               <field name="address_id" attrs="{'required': [('name', '!=', False)]}" on_change="onchange_address(address_id)"/>
+                                                               <field name="address_id" attrs="{'required': [('name', '!=', False)]}" on_change="onchange_address(name, address_id)"/>
                                 <field name="phone"/>
                                 <field name="fax"/>
                                 <field name="extension"/>
         <field name="arch" type="xml">
             <form string="Contact Functions">
                     <field name="name" select="1" on_change="onchange_partner(name)"/>
-                    <field name="address_id" select="1" attrs="{'required': [('name', '!=', False)]}" on_change="onchange_address(address_id)"/>
+                    <field name="address_id" select="1" attrs="{'required': [('name', '!=', False)]}" on_change="onchange_address(name, address_id)"/>
                     <field name="contact_id" select="1"/>
                     <field name="function" select="1"/>
                     <field name="email" widget="email"/>