← Back to team overview

openerp-brazil-team team mailing list archive

[Merge] lp:~fnegrini/openerp.pt-br-localiz/l10n_br-7.0 into lp:~openerp-brazil-team/openerp.pt-br-localiz/migr-l10n-br-sale

 

Fabio Negrini has proposed merging lp:~fnegrini/openerp.pt-br-localiz/l10n_br-7.0 into lp:~openerp-brazil-team/openerp.pt-br-localiz/migr-l10n-br-sale.

Requested reviews:
  Renato Lima - http://www.akretion.com (renatonlima)

For more details, see:
https://code.launchpad.net/~fnegrini/openerp.pt-br-localiz/l10n_br-7.0/+merge/151048

Melhorias na pesquia por CEP. Mais detalhes no blueprint data-zip-enhancement
-- 
https://code.launchpad.net/~fnegrini/openerp.pt-br-localiz/l10n_br-7.0/+merge/151048
Your team OpenERP Brazil Team is subscribed to branch lp:~openerp-brazil-team/openerp.pt-br-localiz/migr-l10n-br-sale.
=== modified file 'l10n_br_data_zip/__openerp__.py'
--- l10n_br_data_zip/__openerp__.py	2013-02-19 21:03:19 +0000
+++ l10n_br_data_zip/__openerp__.py	2013-02-28 16:35:25 +0000
@@ -19,7 +19,7 @@
 
 {
     'name': 'Brazilian Localisation Data Extension for zip codes',
-    'description': 'Brazilian Localisation Data Extension for zip codes',
+    'description': 'Brazilian Localization Data Extension for zip codes',
     'license': 'AGPL-3',
     'author': 'Akretion, OpenERP Brasil',
     'version': '0.1',
@@ -27,14 +27,18 @@
         'l10n_br_base',
     ],
     'data': [
+<<<<<<< TREE
         'zip.sql',
+=======
+        #'zip.sql',
+>>>>>>> MERGE-SOURCE
         'l10n_br_data_zip_view.xml',
         'res_partner_view.xml',
         'wizard/l10n_br_data_zip_search_view.xml',
         'security/ir.model.access.csv',
     ],
     'demo': [],
-    'category': 'Localisation',
+    'category': 'Localization',
     'active': False,
     'installable': True
 }

=== modified file 'l10n_br_data_zip/l10n_br_data_zip.py'
--- l10n_br_data_zip/l10n_br_data_zip.py	2013-01-19 00:22:49 +0000
+++ l10n_br_data_zip/l10n_br_data_zip.py	2013-02-28 16:35:25 +0000
@@ -16,7 +16,7 @@
 #You should have received a copy of the GNU Affero General Public License     #
 #along with this program.  If not, see <http://www.gnu.org/licenses/>.        #
 ###############################################################################
-
+import re
 from osv import osv, fields
 
 
@@ -37,5 +37,123 @@
                                     domain="[('country_id','=',country_id)]"),
         'l10n_br_city_id': fields.many2one(
             'l10n_br_base.city', 'Cidade',
-            required=True, domain="[('state_id','=',state_id)]")
+            required=True, domain="[('state_id','=',state_id)]"),
     }
+
+    def set_domain(self, country_id=False, state_id=False, l10n_br_city_id=False, district=False, street=False, zip=False):
+        
+        domain = []
+        
+        if zip:
+            new_zip = re.sub('[^0-9]', '', zip or '')
+            domain.append(('code', '=', new_zip))
+        else:
+            
+            if country_id:
+               domain.append(('country_id', '=', country_id))
+            
+            if state_id:
+                domain.append(('state_id', '=', state_id))
+            
+            if l10n_br_city_id:
+                domain.append(('l10n_br_city_id', '=', l10n_br_city_id))
+
+            if district:
+                domain.append(('district', 'like', district))
+
+            if street:
+                domain.append(('street', 'like', street))
+        
+        return domain
+    
+    def set_result(self, cr, uid, ids, context, zip_id=None):
+
+        result = {
+            'country_id': False,
+            'state_id': False,
+            'l10n_br_city_id': False,
+            'district': False,
+            'street': False,
+            'zip': False
+        }
+        
+        if zip_id != None:        
+        
+            zip_read = self.read(cr, uid, zip_id, [
+                                                      'street_type',
+                                                      'street', 
+                                                      'district',
+                                                      'code',
+                                                      'l10n_br_city_id',
+                                                      'state_id',
+                                                      'country_id'
+                                                      ],
+                                    context=context)[0]
+
+            zip = zip_read['code']
+            
+            if len(zip) == 8:
+                zip = '%s-%s' % (zip[0:5], zip[5:8])
+            
+            result = {
+                'country_id': zip_read['country_id'] and zip_read['country_id'][0] or False,
+                'state_id': zip_read['state_id'] and zip_read['state_id'][0] or False,
+                'l10n_br_city_id': zip_read['l10n_br_city_id'] and zip_read['l10n_br_city_id'][0] or False,
+                'district': (zip_read['district'] or ''),
+                'street': ((zip_read['street_type'] or '') + ' ' + (zip_read['street'] or '')),
+                'zip': zip,
+            }
+        
+        return result
+            
+                
+    def zip_search(self, cr, uid, ids, context, country_id=False, state_id=False, l10n_br_city_id=False, district=False, street=False, zip=False):
+        
+        result = self.set_result(cr, uid, ids, context)
+         
+        domain = self.set_domain(country_id = country_id, 
+                                 state_id = state_id, 
+                                 l10n_br_city_id = l10n_br_city_id,
+                                 district = district,
+                                 street = street,
+                                 zip = zip)
+        
+        zip_id = self.search(cr, uid, domain)
+        
+        if len(zip_id) == 1:
+            
+            result = self.set_result(cr, uid, ids, context, zip_id)
+            
+            return result
+                    
+        else:
+            
+            return False
+    
+    def create_wizard(self, cr, uid, ids, context, object_name, country_id=False, state_id=False, l10n_br_city_id=False, district=False, street=False, zip=False):
+
+        context.update({'zip': zip,
+                        'street': street,
+                        'district': district,
+                        'country_id': country_id,
+                        'state_id': state_id,
+                        'l10n_br_city_id': l10n_br_city_id,
+                        'address_id': ids[0],
+                        'object_name': object_name})
+
+        result = {
+                    'name': 'Zip Search',
+                    'view_type': 'form',
+                    'view_mode': 'form',
+                    'res_model': 'l10n_br_data.zip.search',
+                    'view_id': False,
+                    'context': context,
+                    'type': 'ir.actions.act_window',
+                    'target': 'new',
+                    'nodestroy': True,
+                    }
+             
+        return result
+
+l10n_br_data_zip()
+

=== modified file 'l10n_br_data_zip/l10n_br_data_zip_view.xml'
--- l10n_br_data_zip/l10n_br_data_zip_view.xml	2012-12-11 04:31:17 +0000
+++ l10n_br_data_zip/l10n_br_data_zip_view.xml	2013-02-28 16:35:25 +0000
@@ -8,6 +8,7 @@
 			<field name="arch" type="xml">
 				<tree string="CEPs">
 					<field name="code" select="1"/>
+					<field name="district" select="1"/>
 					<field name="street_type" select="1"/>
 					<field name="street" select="1"/>
 				</tree>
@@ -29,7 +30,8 @@
 				</form>
 			</field>
 		</record>
-		
+
+
 		<record model="ir.actions.act_window" id="action_l10n_br_data_zip">
 			<field name="name">CEPs</field>
 			<field name="type">ir.actions.act_window</field>

=== modified file 'l10n_br_data_zip/res_partner.py'
--- l10n_br_data_zip/res_partner.py	2013-01-20 23:42:40 +0000
+++ l10n_br_data_zip/res_partner.py	2013-02-28 16:35:25 +0000
@@ -27,88 +27,48 @@
     #TODO migrate
     def zip_search(self, cr, uid, ids, context=None):
 
-        result = {
-            'street': False,
-            'l10n_br_city_id': False,
-            'city': False,
-            'state_id': False,
-            'country_id': False,
-            'zip': False
-        }
-
         obj_zip = self.pool.get('l10n_br_data.zip')
 
         for res_partner in self.browse(cr, uid, ids):
-
-            domain = []
-            if res_partner.zip:
-                zip = re.sub('[^0-9]', '', res_partner.zip or '')
-                domain.append(('code', '=', zip))
+           
+            zip_read = obj_zip.zip_search(cr, uid, ids, context,
+                                        country_id = res_partner.country_id.id, \
+                                        state_id = res_partner.state_id.id, \
+                                        l10n_br_city_id = res_partner.l10n_br_city_id.id, \
+                                        district = res_partner.district, \
+                                        street = res_partner.street, \
+                                        zip = res_partner.zip,
+                                        )
+
+            if zip_read != False:
+
+                result = {
+                    'country_id': zip_read['country_id'],
+                    'state_id': zip_read['state_id'],
+                    'l10n_br_city_id': zip_read['l10n_br_city_id'],
+                    'district': zip_read['district'],
+                    'street': zip_read['street'],
+                    'zip': zip_read['zip'],
+                }                
+               
+                self.write(cr, uid, res_partner.id, result)
+                
+                return False
+            
             else:
-                domain.append(('street', '=', res_partner.street))
-                domain.append(('district', '=', res_partner.district))
-                domain.append(('country_id', '=', \
-                               res_partner.country_id.id))
-                domain.append(('state_id', '=', \
-                               res_partner.state_id.id))
-                domain.append(('l10n_br_city_id', '=', \
-                               res_partner.l10n_br_city_id.id))
-
-            zip_id = obj_zip.search(cr, uid, domain)
-
-            if not len(zip_id) == 1:
-
-                context.update({
-                                'zip': res_partner.zip,
-                                'street': res_partner.street,
-                                'district': res_partner.district,
-                                'country_id': \
-                                res_partner.country_id.id,
-                                'state_id': res_partner.state_id.id,
-                                'l10n_br_city_id': \
-                                res_partner.l10n_br_city_id.id,
-                                'address_id': ids,
-                                'object_name': self._name,
-                                })
-
-                result = {
-                        'name': 'Zip Search',
-                        'view_type': 'form',
-                        'view_mode': 'form',
-                        'res_model': 'l10n_br_data.zip.search',
-                        'view_id': False,
-                        'context': context,
-                        'type': 'ir.actions.act_window',
-                        'target': 'new',
-                        'nodestroy': True,
-                        }
-                return result
-
-            zip_read = obj_zip.read(cr, uid, zip_id, [
-                                                      'street_type',
-                                                      'street', 'district',
-                                                      'code',
-                                                      'l10n_br_city_id',
-                                                      'city', 'state_id',
-                                                      'country_id'
-                                                      ],
-                                    context=context)[0]
-
-            zip = re.sub('[^0-9]', '', zip_read['code'] or '')
-            if len(zip) == 8:
-                zip = '%s-%s' % (zip[0:5], zip[5:8])
-
-            result['street'] = ((zip_read['street_type'] or '') + ' ' \
-                                + (zip_read['street'] or ''))
-            result['district'] = zip_read['district']
-            result['zip'] = zip
-            result['l10n_br_city_id'] = zip_read['l10n_br_city_id'] \
-            and zip_read['l10n_br_city_id'][0] or False
-            result['city'] = zip_read['l10n_br_city_id'] \
-            and zip_read['l10n_br_city_id'][1] or ''
-            result['state_id'] = zip_read['state_id'] \
-            and zip_read['state_id'][0] or False
-            result['country_id'] = zip_read['country_id'] \
-            and zip_read['country_id'][0] or False
-            self.write(cr, uid, res_partner.id, result)
-            return False
+                
+                return obj_zip.create_wizard(cr, uid, ids, context, self._name,
+                                        country_id = res_partner.country_id.id, \
+                                        state_id = res_partner.state_id.id, \
+                                        l10n_br_city_id = res_partner.l10n_br_city_id.id, \
+                                        district = res_partner.district, \
+                                        street = res_partner.street, \
+                                        zip = res_partner.zip,
+                                        )
+
+                
+
+
+                
+                
+            

=== modified file 'l10n_br_data_zip/wizard/l10n_br_data_zip_search.py'
--- l10n_br_data_zip/wizard/l10n_br_data_zip_search.py	2013-01-03 04:21:33 +0000
+++ l10n_br_data_zip/wizard/l10n_br_data_zip_search.py	2013-02-28 16:35:25 +0000
@@ -23,6 +23,7 @@
 from osv import osv, fields
 
 
+    
 class l10n_br_data_zip_search(osv.osv_memory):
     _name = 'l10n_br_data.zip.search'
     _description = 'Zipcode Search'
@@ -38,11 +39,16 @@
         'l10n_br_city_id': fields.many2one(
             'l10n_br_base.city', 'Cidade',
             domain="[('state_id','=',state_id)]"),
-        'zip_ids': fields.many2many('l10n_br_data.zip','zip_search',
+
+        'zip_ids': fields.many2many('l10n_br_data.zip.result','zip_search',
                                     'zip_id', 'zip_search_id', 'CEP',
-                                    readonly=True),
+                                    readonly=False),
+        
         'state':fields.selection([('init','init'),
-                                  ('done','done')], 'state', readonly=True)}
+                                  ('done','done')], 'state', readonly=True),
+        'address_id': fields.integer('Id do objeto', invisible=True),
+        'object_name': fields.char('Nome do bjeto', size=100, invisible=True),
+    }
     
     _defaults = {
         'state': 'init'}
@@ -61,38 +67,132 @@
         data['country_id'] = context.get('country_id', False)
         data['state_id'] = context.get('state_id', False)
         data['l10n_br_city_id'] = context.get('l10n_br_city_id', False)
-        
+        data['address_id'] = context.get('address_id', False)
+        data['object_name'] = context.get('object_name', False)
         return data
+    
+
+            
 
     def zip_search(self, cr, uid, ids, context=None):
 
         data = self.read(cr, uid, ids, [], context=context)[0]
 
-        domain = [
-                   ('country_id','=',data['country_id'][0]),
-                   ('state_id','=',data['state_id'][0]),
-                   ('l10n_br_city_id','=',data['l10n_br_city_id'][0]),]
-        
-        if data['code']:
-            zip = re.sub('[^0-9]', '', data['code'] or '')
-            domain.append(('code','=',zip))
-        
-        if data['street']:
-            domain.append(('street','=',data['street']))
-            
-        if data['district']:
-            domain.append(('district','=',data['district']))
-
         obj_zip = self.pool.get('l10n_br_data.zip')
+        
+        obj_zip_result = self.pool.get('l10n_br_data.zip.result')
+
+        domain = obj_zip.set_domain(country_id = data['country_id'][0], \
+                                    state_id = data['state_id'][0], \
+                                    l10n_br_city_id = data['l10n_br_city_id'][0],\
+                                    district = data['district'], \
+                                    street = data['street'], \
+                                    zip = data['code'])
+        
+        
+        # Search zip_ids
         zip_ids = obj_zip.search(cr, uid, domain)
         
+        #TODO: MAP zip to zip.search.result
+        zip_result_ids = obj_zip_result.map_to_zip_result(cr, uid, ids, context, data['id'], zip_ids)
+        
         self.write(cr, uid, ids, 
                    {'state': 'done',
-                    'zip_ids': [[6, 0, zip_ids]]}, context=context)
-        return False
-    
-    def zip_search_end(self, cr, uid, ids, context=None):
-
+                    'zip_ids': [[6, 0, zip_result_ids]]}, context=context)
+        
+        return {
+            'type': 'ir.actions.act_window',
+            'res_model': 'l10n_br_data.zip.search',
+            'view_mode': 'form',
+            'view_type': 'form',
+            'res_id': data['id'],
+            'views': [(False, 'form')],
+            'target': 'new',
+        } 
+    
+    def zip_new_search(self, cr, uid, ids, context=None):
+        
+        data = self.read(cr, uid, ids, [], context=context)[0]
+        
+        self.write(cr, uid, ids, 
+                   {'state': 'init',
+                    'zip_ids': [[6, 0, []]]}, context=context)
+        
+        return {
+            'type': 'ir.actions.act_window',
+            'res_model': 'l10n_br_data.zip.search',
+            'view_mode': 'form',
+            'view_type': 'form',
+            'res_id': data['id'],
+            'views': [(False, 'form')],
+            'target': 'new',
+        } 
+           
+l10n_br_data_zip_search()
+
+class l10n_br_data_zip_result(osv.osv_memory):
+    _name = 'l10n_br_data.zip.result'
+    _description = 'Zipcode result'
+    
+    _columns = {
+        'zip_id': fields.many2one('l10n_br_data.zip', 'Zipcode', readonly=True, invisible=True),
+        'search_id': fields.many2one('l10n_br_data.zip.search', 'Search', readonly=True, invisible=True),
+        #ZIPCODE data to be shown
+        'code': fields.char('CEP', size=8, readonly=True),
+        'street': fields.char('Logradouro', size=72, readonly=True),
+        'district': fields.char('Bairro', size=72, readonly=True),
+        'country_id': fields.many2one('res.country', 'Country', readonly=True),
+        'state_id': fields.many2one('res.country.state', 'Estado',
+                                    domain="[('country_id','=',country_id)]", readonly=True),
+        'l10n_br_city_id': fields.many2one(
+            'l10n_br_base.city', 'Cidade',
+            required=True, domain="[('state_id','=',state_id)]", readonly=True),        
+        }
+
+
+    def map_to_zip_result(self, cr, uid, ids, context, search_id, zip_ids):
+        
+        obj_zip = self.pool.get('l10n_br_data.zip')
+      
+        result = []
+        
+        for zip_id in zip_ids:
+            
+            zip_data = obj_zip.set_result(cr, uid, ids, context, [zip_id])
+            
+            zip_result_data = {
+                'selected': False,
+                'zip_id': False,
+                'code': False,
+                'street': False,
+                'district': False,
+                'country_id': False,
+                'state_id': False,
+                'l10n_br_city_id': False,
+                }
+                    
+            zip_result_data['zip_id'] = zip_id
+            zip_result_data['search_id'] = search_id
+            zip_result_data['code'] = zip_data['zip']
+            zip_result_data['street'] = zip_data['street']
+            zip_result_data['district'] = zip_data['district']
+            zip_result_data['country_id'] = zip_data['country_id']
+            zip_result_data['state_id'] = zip_data['state_id']
+            zip_result_data['l10n_br_city_id'] = zip_data['l10n_br_city_id']
+            
+            
+            zip_result_id = self.create(cr, uid, zip_result_data, context=context)
+            
+            result.append(zip_result_id)
+        
+        return result
+    
+    def zip_select(self, cr, uid, ids, context=None):
+        
+        data = self.read(cr, uid, ids, [], context=context)[0]
+        
+        obj_search = self.pool.get('l10n_br_data.zip.search')
+        
         result = {
                   'street': False, 
                   'l10n_br_city_id': False, 
@@ -101,38 +201,30 @@
                   'country_id': False, 
                   'zip': False
                   }
-
-        data = self.read(cr, uid, ids, [], context=context)[0]
-
-        if data['zip_ids']:
-            address_id = context.get('address_id', False)
-            object_name = context.get('object_name', False)
-            if address_id and object_name:
-                obj_zip = self.pool.get('l10n_br_data.zip')
-                zip_read = obj_zip.read(
-                    cr, uid, data['zip_ids'], ['street_type', 
-                                               'street',
-                                               'district', 
-                                               'code',
-                                               'l10n_br_city_id', 
-                                               'city', 'state_id', 
-                                               'country_id'], context=context)[0]
-
-                zip = re.sub('[^0-9]', '', zip_read['code'] or '')
-                if len(zip) == 8:
-                    zip = '%s-%s' % (zip[0:5], zip[5:8])
-
-                result['street'] = ((zip_read['street_type'] or '') + ' ' + (zip_read['street'] or ''))
-                result['district'] = zip_read['district']
-                result['zip'] = zip
-                result['l10n_br_city_id'] = zip_read['l10n_br_city_id'] and zip_read['l10n_br_city_id'][0] or False
-                result['city'] = zip_read['l10n_br_city_id'] and zip_read['l10n_br_city_id'][1] or ''
-                result['state_id'] = zip_read['state_id'] and zip_read['state_id'][0] or False
-                result['country_id'] = zip_read['country_id'] and zip_read['country_id'][0] or False
-
-                obj_partner = self.pool.get(object_name)
-                obj_partner.write(cr, uid, address_id, result, context=context)
-
-        return {'type': 'ir.actions.act_window_close'}
-
-l10n_br_data_zip_search()
+        
+        search_values = obj_search.read(cr, uid,[data['search_id'][0]],
+                                        ['address_id',
+                                         'object_name'],
+                                        context=context)[0] 
+                                        
+        address_id = search_values['address_id']
+            
+        object_name = search_values['object_name']
+                
+        obj_zip = self.pool.get('l10n_br_data.zip')
+                
+        result = obj_zip.set_result(cr, uid, ids, context, [data['zip_id'][0]])
+    
+        if address_id and object_name:
+                    
+            obj = self.pool.get(object_name)
+                
+            obj.write(cr, uid, address_id, result, context=context)
+                    
+   
+        return {
+            'type': 'ir.actions.act_window_close',
+            'value': result,
+        }
+        
+l10n_br_data_zip_result()

=== modified file 'l10n_br_data_zip/wizard/l10n_br_data_zip_search_view.xml'
--- l10n_br_data_zip/wizard/l10n_br_data_zip_search_view.xml	2013-01-03 04:21:33 +0000
+++ l10n_br_data_zip/wizard/l10n_br_data_zip_search_view.xml	2013-02-28 16:35:25 +0000
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
 	<data noupdate="0">
-		
+
         <record id="view_l10n_br_data_zip_search" model="ir.ui.view">
             <field name="name">Pesquisar CEP</field>
             <field name="model">l10n_br_data.zip.search</field>
@@ -19,20 +19,49 @@
 	                </group>
 					<group colspan="8" col="8" states="done">
 						<!-- <separator colspan="8" string="Resuldado da Pesquisa"/>  -->
-						<field colspan="8" height="130" nolabel="1" name="zip_ids" />
+						<field colspan="8" height="130" nolabel="1" name="zip_ids" wizard="one2many_list" readonly="1"/>
 					</group>
                     <footer states="init">
 						<button name="zip_search" string="Pesquisar" type="object" class="oe_highlight"/>
-						or
 						<button special="cancel" string="Cancelar" class="oe_link"/>
 					</footer>
                     <footer states="done">
-                    	<button name="zip_search_end" type="object" string="Fechar" class="oe_highlight"/>
+						<button name="zip_new_search" string="Nova Pesquisa" type="object" class="oe_highlight"/>
+						<button special="cancel" string="Cancelar" class="oe_link"/>
                     </footer>
                 </form>
             </field>
         </record>
-         
+
+		<record model="ir.ui.view" id="view_l10n_br_data_zip_result_tree">
+			<field name="name">l10n_br_data.zip.result</field>
+			<field name="model">l10n_br_data.zip.result</field>
+			<field name="arch" type="xml">
+				<tree string="CEPs">
+					<!-- <field name="selected" colspan="2" select="1"/> -->
+					<button name="zip_select" string="Selecionar" type="object" icon="gtk-apply"/>
+					<field name="code" select="1"/>
+					<field name="district" select="1"/>
+					<field name="street" select="1"/>
+				</tree>
+			</field>
+		</record>
+				
+		<record model="ir.ui.view" id="view_l10n_br_data_zip_result_form">
+			<field name="name">l10n_br_data.zip.result</field>
+			<field name="model">l10n_br_data.zip.result</field>
+			<field name="arch" type="xml">
+				<form string="CEPs">
+					<field name="code" select="1"/>
+					<field name="street" select="1"/>
+					<field name="district" select="2"/>
+					<field name="country_id" select="2"/>
+					<field name="state_id" select="2"/>
+					<field name="l10n_br_city_id" select="2"/>
+				</form>
+			</field>
+		</record>
+		         
         <record id="action_l10n_br_data_zip_search" model="ir.actions.act_window">
             <field name="name">Pesquisar CEP</field>
             <field name="type">ir.actions.act_window</field>
@@ -41,6 +70,6 @@
             <field name="view_mode">form</field>
             <field name="target">new</field>
         </record>
-		
+			
 	</data>
 </openerp>
\ No newline at end of file


Follow ups