openerp-brazil-team team mailing list archive
-
openerp-brazil-team team
-
Mailing list archive
-
Message #01432
[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