← Back to team overview

openerp-brazil-team team mailing list archive

lp:~openerp-brazil-team/openerp.pt-br-localiz/l10n_br_modularized into lp:openerp.pt-br-localiz

 

Raphaël Valyi - http://www.akretion.com has proposed merging lp:~openerp-brazil-team/openerp.pt-br-localiz/l10n_br_modularized into lp:openerp.pt-br-localiz.

Requested reviews:
  OpenERP Brazil Team (openerp-brazil-team)


[REF] extracted l10n_br_base, l10n_sale and l10n_stock from l10n_br; renamed l10n_br into 10n_br_account. BE CAREFFUL WITH MIGRATIONS, HACK YOUR ir.model.data, XML files and module dependencies first!!

This avoids that installing the Brazilian localization installs all modules including sale, stock, purchase. We have to keep in mind some organization might want only CRM, only accounting but no stock or no purchase.

Again, warning with migration, we will post about it in the mailing list, we have one customer to migrate!!
-- 
https://code.launchpad.net/~openerp-brazil-team/openerp.pt-br-localiz/l10n_br_modularized/+merge/39330
Your team OpenERP Brazil Team is requested to review the proposed merge of lp:~openerp-brazil-team/openerp.pt-br-localiz/l10n_br_modularized into lp:openerp.pt-br-localiz.
=== removed file 'l10n_br/country.py'
--- l10n_br/country.py	2010-04-15 15:15:31 +0000
+++ l10n_br/country.py	1970-01-01 00:00:00 +0000
@@ -1,42 +0,0 @@
-# -*- encoding: utf-8 -*-
-#################################################################################
-#                                                                               #
-# Copyright (C) 2009  Renato Lima - Akretion                                    #
-#                                                                               #
-#This program is free software: you can redistribute it and/or modify           #
-#it under the terms of the GNU General Public License as published by           #
-#the Free Software Foundation, either version 3 of the License, or              #
-#(at your option) any later version.                                            #
-#                                                                               #
-#This program is distributed in the hope that it will be useful,                #
-#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
-#GNU General Public License for more details.                                   #
-#                                                                               #
-#You should have received a copy of the GNU General Public License              #
-#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
-#################################################################################
-
-from osv import osv, fields
-
-##############################################################################
-# País Personalizado
-##############################################################################
-class res_country(osv.osv):
-    _inherit = 'res.country'
-    _columns = {
-        'bc_code': fields.char('Cód. BC', size=5),
-    }
-res_country()
-
-##############################################################################
-# Estado Personalizado
-##############################################################################
-class res_country_state(osv.osv):
-    _inherit = 'res.country.state'
-    _columns = {
-        'ibge_code': fields.char('Cód. IBGE', size=2),
-    }
-res_country_state()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== removed file 'l10n_br/country_view.xml'
--- l10n_br/country_view.xml	2009-09-06 03:07:39 +0000
+++ l10n_br/country_view.xml	1970-01-01 00:00:00 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-	<data>
-
-		<!-- País Personallizado -->
-		<record model="ir.ui.view" id="view_l10n_br_country_form">
-			<field name="name">res.country</field>
-			<field name="model">res.country</field>
-			<field name="inherit_id" ref="base.view_country_form"/>
-			<field name="arch" type="xml">
-				<form>
-					<field name="bc_code" select="2"/>
-				</form>
-			</field>
-		</record>
-
-		<!-- Estado Personallizado -->
-		<record model="ir.ui.view" id="view_l10n_br_country_state_form">
-			<field name="name">res.country.state</field>
-			<field name="model">res.country.state</field>
-			<field name="inherit_id" ref="base.view_country_state_form"/>
-			<field name="arch" type="xml">
-				<form>
-					<field name="ibge_code" select="2"/>
-				</form>
-			</field>
-		</record>
-	
-	</data>
-</openerp>
\ No newline at end of file

=== removed file 'l10n_br/data/l10n_br_data.xml'
--- l10n_br/data/l10n_br_data.xml	2010-03-08 18:45:33 +0000
+++ l10n_br/data/l10n_br_data.xml	1970-01-01 00:00:00 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<openerp>
-<data noupdate="1">
-
-</data>
-</openerp>

=== removed file 'l10n_br/sale.py'
--- l10n_br/sale.py	2010-10-14 05:00:07 +0000
+++ l10n_br/sale.py	1970-01-01 00:00:00 +0000
@@ -1,264 +0,0 @@
-# -*- encoding: utf-8 -*-
-#################################################################################
-#                                                                               #
-# Copyright (C) 2009  Renato Lima - Akretion                                    #
-#                                                                               #
-#This program is free software: you can redistribute it and/or modify           #
-#it under the terms of the GNU General Public License as published by           #
-#the Free Software Foundation, either version 3 of the License, or              #
-#(at your option) any later version.                                            #
-#                                                                               #
-#This program is distributed in the hope that it will be useful,                #
-#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
-#GNU General Public License for more details.                                   #
-#                                                                               #
-#You should have received a copy of the GNU General Public License              #
-#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
-#################################################################################
-
-import time 
-import netsvc
-import decimal_precision as dp
-from osv import fields, osv
-import pooler
-from tools import config
-from tools.translate import _
-
-##############################################################################
-# Pedido de venda customizado
-##############################################################################
-class sale_order(osv.osv):
-    
-    _inherit = 'sale.order'
-    
-    def onchange_partner_id(self, cr, uid, ids, part, shop_id, fiscal_operation_category_id):
-
-        result = super(sale_order, self).onchange_partner_id(cr, uid, ids, part)
-        result['value']['fiscal_position'] = False
-
-        if not part or not shop_id:
-            return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'partner_order_id': False, 'payment_term': False, 'fiscal_position': False, 'fiscal_operation_id': False}}
-        
-        obj_partner = self.pool.get('res.partner').browse(cr, uid, part)
-        fiscal_position = obj_partner.property_account_position.id
-        partner_fiscal_type = obj_partner.partner_fiscal_type_id.id
-        
-        if fiscal_position:
-            result['value']['fiscal_position'] = fiscal_position
-            result['value']['fiscal_operation_id'] = obj_partner.property_account_position.fiscal_operation_id.id
-            return result
-
-        obj_shop = self.pool.get('sale.shop').browse(cr, uid, shop_id)
-
-        company_addr = self.pool.get('res.partner').address_get(cr, uid, [obj_shop.company_id.partner_id.id], ['default'])
-        company_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [company_addr['default']])[0]
-        
-        from_country = company_addr_default.country_id.id
-        from_state = company_addr_default.state_id.id        
-
-        partner_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [result['value']['partner_invoice_id']])[0]
-
-        to_country = partner_addr_default.country_id.id
-        to_state = partner_addr_default.state_id.id
-        
-        fsc_pos_id = self.pool.get('account.fiscal.position.rule').search(cr, uid, [('company_id','=', obj_shop.company_id.id),('from_country','=',from_country),('from_state','=',from_state),('to_country','=',to_country),('to_state','=',to_state),('use_sale','=',True),('fiscal_operation_category_id','=',fiscal_operation_category_id),('partner_fiscal_type_id','=',partner_fiscal_type)])
-        if fsc_pos_id:
-            obj_fpo_rule = self.pool.get('account.fiscal.position.rule').browse(cr, uid, fsc_pos_id)[0]
-            result['value']['fiscal_position'] = obj_fpo_rule.fiscal_position_id.id
-            result['value']['fiscal_operation_id'] = obj_fpo_rule.fiscal_position_id.fiscal_operation_id.id
-        
-        return result
-    
-    def onchange_partner_invoice_id(self, cr, uid, ids, ptn_invoice_id, ptn_id, shop_id, fiscal_operation_category_id):
-        
-        result = super(sale_order, self).onchange_partner_invoice_id(cr, uid, ids, ptn_invoice_id, ptn_id, shop_id)
-        result['value']['fiscal_position'] = False
-
-        if not shop_id or not ptn_invoice_id or not ptn_id or not fiscal_operation_category_id:
-            return result
-  
-        partner = self.pool.get('res.partner').browse(cr, uid, ptn_id)
-        fiscal_position = partner.property_account_position.id or False
-        partner_fiscal_type = partner.partner_fiscal_type_id.id
-
-        if fiscal_position:
-            result['value']['fiscal_position'] = fiscal_position
-            result['value']['fiscal_operation_id'] = obj_partner.property_account_position.fiscal_operation_id.id
-            return result
-
-        obj_shop = self.pool.get('sale.shop').browse(cr, uid, shop_id)
-
-        company_addr = self.pool.get('res.partner').address_get(cr, uid, [obj_shop.company_id.partner_id.id], ['default'])
-        company_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [company_addr['default']])[0]
-
-        from_country = company_addr_default.country_id.id
-        from_state = company_addr_default.state_id.id
-        
-        partner_addr_invoice = self.pool.get('res.partner.address').browse(cr, uid, [ptn_invoice_id])[0]
-        
-        to_country = partner_addr_invoice.country_id.id
-        to_state = partner_addr_invoice.state_id.id
-        
-        fsc_pos_id = self.pool.get('account.fiscal.position.rule').search(cr, uid, [('company_id','=',obj_shop.company_id.id), ('from_country','=',from_country),('from_state','=',from_state),('to_country','=',to_country),('to_state','=',to_state),('use_sale','=',True),('fiscal_operation_category_id','=',fiscal_operation_category_id),('partner_fiscal_type_id','=',partner_fiscal_type)])
-        
-        if fsc_pos_id:
-            obj_fpo_rule = self.pool.get('account.fiscal.position.rule').browse(cr, uid, fsc_pos_id)[0]
-            result['value']['fiscal_position'] = obj_fpo_rule.fiscal_position_id.id
-            result['value']['fiscal_operation_id'] = obj_fpo_rule.fiscal_position_id.fiscal_operation_id.id
-
-        return result
-
-    def onchange_shop_id(self, cr, uid, ids, shop_id, ptn_id=False, ptn_invoice_id=False):
-        
-        result = super(sale_order, self).onchange_shop_id(cr, uid, ids, shop_id, ptn_id)
-        result['value']['fiscal_position'] = False
-        result['value']['fiscal_operation_id'] = False
-        
-        if not shop_id:
-            result['value']['fiscal_operation_category_id'] = False
-            return result
-        
-        obj_shop = self.pool.get('sale.shop').browse(cr, uid, shop_id)        
-        fiscal_operation_category_id = obj_shop.default_fo_category_id.id        
-        result['value']['fiscal_operation_category_id'] = fiscal_operation_category_id
-        
-        if not ptn_id or not ptn_invoice_id:
-            return result
-        
-        obj_partner = self.pool.get('res.partner').browse(cr, uid, ptn_id)
-        fiscal_position = obj_partner.property_account_position.id
-        partner_fiscal_type = obj_partner.partner_fiscal_type_id.id
-        
-        if fiscal_position:
-            result['value']['fiscal_position'] = fiscal_position
-            result['value']['fiscal_operation_id'] = obj_partner.property_account_position.fiscal_operation_id.id
-            return result
-
-        obj_shop = self.pool.get('sale.shop').browse(cr, uid, shop_id)
-
-        company_addr = self.pool.get('res.partner').address_get(cr, uid, [obj_shop.company_id.partner_id.id], ['default'])
-        company_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [company_addr['default']])[0]
-        
-        from_country = company_addr_default.country_id.id
-        from_state = company_addr_default.state_id.id        
-
-        partner_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [ptn_invoice_id])[0]
-
-        to_country = partner_addr_default.country_id.id
-        to_state = partner_addr_default.state_id.id
-        
-        fsc_pos_id = self.pool.get('account.fiscal.position.rule').search(cr, uid, [('company_id','=', obj_shop.company_id.id),('from_country','=',from_country),('from_state','=',from_state),('to_country','=',to_country),('to_state','=',to_state),('use_sale','=',True),('fiscal_operation_category_id','=',fiscal_operation_category_id),('partner_fiscal_type_id','=',partner_fiscal_type)])
-        if fsc_pos_id:
-            obj_fpo_rule = self.pool.get('account.fiscal.position.rule').browse(cr, uid, fsc_pos_id)[0]
-            result['value']['fiscal_position'] = obj_fpo_rule.fiscal_position_id.id
-            result['value']['fiscal_operation_id'] = obj_fpo_rule.fiscal_position_id.fiscal_operation_id.id
-        
-        return result
-    
-    def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception'], date_inv = False, context=None):
-        
-        result = super(sale_order, self).action_invoice_create(cr, uid, ids, grouped, states, date_inv, context)
-
-        if not result: 
-            return result
-
-        for order in self.browse(cr, uid, ids):
-            for invoice in order.invoice_ids:
-                if invoice.state in ('draft') and order.fiscal_operation_id:
-                    doc_serie_id = self.pool.get('l10n_br.document.serie').search(cr, uid,[('fiscal_document_id','=', order.fiscal_operation_id.fiscal_document_id.id),('active','=',True),('company_id','=',order.company_id.id)])
-                    if not doc_serie_id:
-                        raise osv.except_osv(_('Nenhuma série de documento fiscal !'),_("Não existe nenhuma série de documento fiscal cadastrada para empresa:  '%s'") % (order.company_id.name,))
-                    self.pool.get('account.invoice').write(cr, uid, invoice.id, {'fiscal_operation_category_id': order.fiscal_operation_category_id.id, 'fiscal_operation_id': order.fiscal_operation_id.id, 'cfop_id': order.fiscal_operation_id.cfop_id.id, 'fiscal_document_id': order.fiscal_operation_id.fiscal_document_id.id, 'document_serie_id': doc_serie_id[0]})
-                    for inv_line in invoice.invoice_line:
-                        self.pool.get('account.invoice.line').write(cr, uid, inv_line.id, {'cfop_id': order.fiscal_operation_id.cfop_id.id})
-
-        return result
-    
-    def action_ship_create(self, cr, uid, ids, *args):
-   
-        result = super(sale_order, self).action_ship_create(cr, uid, ids, *args)
-        
-        for order in self.browse(cr, uid, ids, context={}):
-            for picking in order.picking_ids:
-                self.pool.get('stock.picking').write(cr, uid, picking.id, {'fiscal_operation_category_id': order.fiscal_operation_category_id.id, 'fiscal_operation_id': order.fiscal_operation_id.id, 'fiscal_position': order.fiscal_position.id})
-        
-        return result
-            
-    def _amount_all(self, cr, uid, ids, field_name, arg, context):
-        res = super(sale_order, self)._amount_all(cr, uid, ids, field_name, arg, context)
-        
-        #Não é mostrado valores de impostos na ordem de venda
-        for order in self.browse(cr, uid, ids):
-            res[order.id]['amount_tax'] = 0
-            res[order.id]['amount_total'] = res[order.id]['amount_untaxed'] + res[order.id]['amount_tax']
-            
-        return res
-
-    def _get_order(self, cr, uid, ids, context={}):
-        result = super(sale_order, self)._get_order(cr, uid, ids, context)
-        return result.keys()
-
-    _columns = {
-                'fiscal_operation_category_id': fields.many2one('l10n_br.fiscal.operation.category', 'Categoria'),
-                'fiscal_operation_id': fields.many2one('l10n_br.fiscal.operation', 'Operação Fiscal', domain="[('fiscal_operation_category_id','=',fiscal_operation_category_id)]" ),
-                'amount_untaxed': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Untaxed Amount',
-                store = {
-                         'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
-                         'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
-                         },
-                multi='sums'),
-                'amount_tax': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Taxes',
-                store = {
-                         'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
-                         'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
-                         },
-                multi='sums'),
-                'amount_total': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Total',
-                store = {
-                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
-                         'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
-                         },
-                multi='sums'),
-               }
-    
-sale_order()
-
-##############################################################################
-# Linha da Ordem de Venda Customizada
-##############################################################################
-class sale_order_line(osv.osv):
-    _inherit = 'sale.order.line'
-    
-    def create_sale_order_line_invoice(self, cr, uid, ids, context=None):
-        result = super(sale_order_line, self).create_sale_order_line_invoice(cr, uid, ids, context)
-        inv_ids = []
-        if result:
-
-            for so_line in self.browse(cr, uid, ids):
-                for inv_line in so_line.invoice_lines:
-                    if inv_line.invoice_id.state in ('draft'):
-                        if inv_line.invoice_id.id not in inv_ids: 
-                            inv_ids.append(inv_line.id)
-                            self.pool.get('account.invoice').write(cr, uid, inv_line.invoice_id.id, {'fiscal_operation_category_id': so_line.order_id.fiscal_operation_category_id.id, 'fiscal_operation_id': so_line.order_id.fiscal_operation_id.id, 'cfop_id': so_line.order_id.fiscal_operation_id.cfop_id.id, 'fiscal_document_id': so_line.order_id.fiscal_operation_id.fiscal_document_id.id})
-                        self.pool.get('account.invoice.line').write(cr, uid, inv_line.id, {'cfop_id': so_line.order_id.fiscal_operation_id.cfop_id.id})
-            
-            
-            
-        return result
-
-sale_order_line()
-    
-##############################################################################
-# Estabelecimento Customizado
-##############################################################################
-class sale_shop(osv.osv):
-    
-    _inherit = 'sale.shop'
-    _columns = {
-                'default_fo_category_id': fields.many2one('l10n_br.fiscal.operation.category', 'Categoria Fiscal Padrão'),
-    }
-
-sale_shop()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== removed file 'l10n_br/sale_view.xml'
--- l10n_br/sale_view.xml	2010-08-31 20:48:16 +0000
+++ l10n_br/sale_view.xml	1970-01-01 00:00:00 +0000
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-
-	<data>
-
-		<record id="view_l10n_br_order_form1" model="ir.ui.view">
-			<field name="name">l10n_br.order.form1</field>
-	   		<field name="model">sale.order</field>
-	   		<field name="inherit_id" ref="sale.view_order_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-	        	<field name="fiscal_position" position="replace">
-	        		<field name="fiscal_operation_category_id" required="1"/>
-					<field name="fiscal_operation_id" required="1"/>
-					<field domain="[('fiscal_operation_id','=',fiscal_operation_id)]" name="fiscal_position" />
-	        	</field>
-	        </field>
-		</record>
-		
-		<record id="view_l10n_br_order_form2" model="ir.ui.view">
-			<field name="name">l10n_br.order.form2</field>
-	   		<field name="model">sale.order</field>
-	   		<field name="inherit_id" ref="sale.view_order_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-	        	<field name="partner_id" position="replace">
-	        		<field name="partner_id" 
-	        		context="{'partner_id':partner_id, 'fiscal_operation_category_id': fiscal_operation_category_id, 'pricelist_id':pricelist_id, 'default_name':name}"  
-	        		on_change="onchange_partner_id(partner_id, shop_id, fiscal_operation_category_id)" required="1"/>
-	        	</field>
-	        </field>
-		</record>
-		
-		<record id="view_l10n_br_order_form3" model="ir.ui.view">
-			<field name="name">l10n_br.order.form3</field>
-	   		<field name="model">sale.order</field>
-	   		<field name="inherit_id" ref="sale.view_order_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-	        	<field name="shop_id" position="replace">
-					<field name="shop_id"  on_change="onchange_shop_id(shop_id, partner_id, partner_invoice_id)"  widget="selection" />
-	        	</field>
-	        </field>
-		</record>
-
-		<record id="view_l10n_br_order_form4" model="ir.ui.view">
-			<field name="name">l10n_br.order.form4</field>
-	   		<field name="model">sale.order</field>
-	   		<field name="inherit_id" ref="account_fiscal_position_rule.view_order_form2"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-	        	<field name="partner_invoice_id" position="replace">
-	        	<field domain="[('partner_id','=',partner_id)]" name="partner_invoice_id" on_change="onchange_partner_invoice_id(partner_invoice_id, partner_id, shop_id, fiscal_operation_category_id)"/>
-	        	</field>
-	        </field>
-		</record>
-		
-		
-		<record id="l10n_br_view_shop_form" model="ir.ui.view">
-			<field name="name">l10n_br.sale.shop</field>
-	   		<field name="model">sale.shop</field>
-	   		<field name="inherit_id" ref="sale.view_shop_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-	        	<field name="project_id" position="after">
-					<field name="default_fo_category_id" required="1"/>
-	        	</field>
-	        </field>
-		</record>
- 
-    </data>
-
-</openerp>
\ No newline at end of file

=== removed file 'l10n_br/security/l10n_br_security.xml'
--- l10n_br/security/l10n_br_security.xml	2010-08-02 17:57:32 +0000
+++ l10n_br/security/l10n_br_security.xml	1970-01-01 00:00:00 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-
-	<data>
-		<!--
-		<record id="group_account_invoice" model="res.groups">
-			<field name="name">l10n_br / Fiscal</field>
-		</record>
-		-->
-
-		<record id="menu_l10n_br_fiscal" model="ir.ui.menu">
-			<field eval="[(6,0,[ref('account.group_account_manager')])]" name="groups_id"/>
-		</record>
-
-	</data>
-
-</openerp>

=== removed file 'l10n_br/stock.py'
--- l10n_br/stock.py	2010-09-08 18:46:28 +0000
+++ l10n_br/stock.py	1970-01-01 00:00:00 +0000
@@ -1,86 +0,0 @@
-# -*- encoding: utf-8 -*-
-#################################################################################
-#                                                                               #
-# Copyright (C) 2009  Renato Lima - Akretion                                    #
-#                                                                               #
-#This program is free software: you can redistribute it and/or modify           #
-#it under the terms of the GNU General Public License as published by           #
-#the Free Software Foundation, either version 3 of the License, or              #
-#(at your option) any later version.                                            #
-#                                                                               #
-#This program is distributed in the hope that it will be useful,                #
-#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
-#GNU General Public License for more details.                                   #
-#                                                                               #
-#You should have received a copy of the GNU General Public License              #
-#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
-#################################################################################
-
-from osv import osv, fields
-
-class stock_picking(osv.osv):
-    _inherit = "stock.picking"
-    _description = "Picking List"
-
-    _columns = {
-                'fiscal_operation_category_id': fields.many2one('l10n_br.fiscal.operation.category', 'Categoria'),
-                'fiscal_operation_id': fields.many2one('l10n_br.fiscal.operation', 'Operação Fiscal', domain="[('fiscal_operation_category_id','=',fiscal_operation_category_id)]"),
-                'fiscal_position': fields.many2one('account.fiscal.position', 'Posição Fiscal', domain="[('fiscal_operation_id','=',fiscal_operation_id)]"),
-                }
-    
-    #TODO Fazer a dedução da operação e posição fiscal ao mudar o parceiro
-    def onchange_partner_in(self, cr, uid, context=None, partner_id=None,fiscal_operation_category_id=False,company_id=False):
-
-        result = super(stock_picking, self).onchange_partner_in(cr, uid, context, partner_id)
-        
-        result = {'value':{}}
-        
-        if not fiscal_operation_category_id or not company_id or not partner_id:
-            return result
-        
-        partner_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [partner_id])[0]
-        
-        to_country = partner_addr_default.country_id.id
-        to_state = partner_addr_default.state_id.id
-        
-        obj_partner = self.pool.get('res.partner').browse(cr, uid, [partner_addr_default.partner_id.id])[0]
-        fiscal_position = obj_partner.property_account_position
-        partner_fiscal_type = obj_partner.partner_fiscal_type_id.id
-
-        if fiscal_position:
-            result['value']['fiscal_position'] = fiscal_position
-            result['value']['fiscal_operation_id'] = obj_partner.property_account_position.fiscal_operation_id.id
-            return result
-
-        obj_company = self.pool.get('res.company').browse(cr, uid, [company_id])[0]
-
-        company_addr = self.pool.get('res.partner').address_get(cr, uid, [obj_company.partner_id.id], ['default'])
-        company_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [company_addr['default']])[0]
-        
-        from_country = company_addr_default.country_id.id
-        from_state = company_addr_default.state_id.id
-        
-        fsc_pos_id = self.pool.get('account.fiscal.position.rule').search(cr, uid, [('company_id','=', company_id),('from_country','=',from_country),('from_state','=',from_state),('to_country','=',to_country),('to_state','=',to_state),('use_sale','=',True),('fiscal_operation_category_id','=',fiscal_operation_category_id),('partner_fiscal_type_id','=',partner_fiscal_type),('use_picking','=',True)])
-        if fsc_pos_id:
-            obj_fpo_rule = self.pool.get('account.fiscal.position.rule').browse(cr, uid, fsc_pos_id)[0]
-            result['value']['fiscal_position'] = obj_fpo_rule.fiscal_position_id.id
-            result['value']['fiscal_operation_id'] = obj_fpo_rule.fiscal_position_id.fiscal_operation_id.id
-
-        return result
-
-    def _invoice_line_hook(self, cr, uid, move_line, invoice_line_id):
-        '''Call after the creation of the invoice line'''
-
-        self.pool.get('account.invoice.line').write(cr, uid, invoice_line_id, {'cfop_id': move_line.picking_id.fiscal_operation_id.cfop_id.id})
-
-        return super(stock_picking, self)._invoice_line_hook(cr, uid, move_line, invoice_line_id)
-
-    def _invoice_hook(self, cr, uid, picking, invoice_id):
-        '''Call after the creation of the invoice'''
-
-        self.pool.get('account.invoice').write(cr, uid, invoice_id, {'fiscal_operation_category_id': picking.fiscal_operation_category_id.id, 'fiscal_operation_id': picking.fiscal_operation_id.id, 'cfop_id': picking.fiscal_operation_id.cfop_id.id, 'fiscal_document_id': picking.fiscal_operation_id.fiscal_document_id.id, 'fiscal_position': picking.fiscal_position.id})
-
-        return super(stock_picking, self)._invoice_hook(cr, uid, picking, invoice_id)
-
-stock_picking()
\ No newline at end of file

=== removed file 'l10n_br/stock_view.xml'
--- l10n_br/stock_view.xml	2010-10-14 05:00:07 +0000
+++ l10n_br/stock_view.xml	1970-01-01 00:00:00 +0000
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-		<record id="l10n_br_view_picking_form" model="ir.ui.view">
-			<field name="name">l10n_br.picking.form</field>
-	   		<field name="model">stock.picking</field>
-	   		<field name="inherit_id" ref="stock.view_picking_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-  				<field name="move_type" position="after">
-  					<group colspan="2" col="2" attrs="{'invisible':[('invoice_state','!=','2binvoiced')]}">
-			           <field name="fiscal_operation_category_id"/>
-		                <newline/>
-			            <field name="fiscal_operation_id" />
-			            <newline/>
-			            <field name="fiscal_position" domain="[('fiscal_operation_id','=',fiscal_operation_id)]" />
-					</group>
-	            </field>
-	        </field>
-		</record>
-		<!-- 
-		<record id="l10n_br_view_picking_form1" model="ir.ui.view">
-			<field name="name">l10n_br.picking.form1</field>
-	   		<field name="model">stock.picking</field>
-	   		<field name="inherit_id" ref="stock.view_picking_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-  				<field name="address_id" position="replace">
-			           <field name="address_id" string="Partner" context="{'contact_display':'partner'}" on_change="onchange_partner_in(address_id, fiscal_operation_category_id, company_id)" />
-	            </field>
-	        </field>
-		</record>
- 		-->
-		<record id="l10n_br_view_picking_out_form1" model="ir.ui.view">
-			<field name="name">l10n_br.picking.out.form1</field>
-	   		<field name="model">stock.picking</field>
-	   		<field name="inherit_id" ref="stock.view_picking_out_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-				<field name="move_type" position="after">
-					<group colspan="2" attrs="{'invisible':[('invoice_state','!=','2binvoiced')]}">
-			            <field name="fiscal_operation_category_id" />
-		                <newline/>
-			            <field name="fiscal_operation_id" />
-			            <newline/>
-			            <field name="fiscal_position" domain="[('fiscal_operation_id','=',fiscal_operation_id)]" />
-					</group>
-				</field>
-			</field>
-		</record>
-
-		<record id="l10n_br_view_picking_out_form2" model="ir.ui.view">
-			<field name="name">l10n_br.picking.out.form2</field>
-	   		<field name="model">stock.picking</field>
-	   		<field name="inherit_id" ref="stock.view_picking_out_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-				<field name="address_id" position="replace">
-			           <field name="address_id" required="1" on_change="onchange_partner_in(address_id, fiscal_operation_category_id, company_id)" />
-	            </field>
-			</field>
-		</record>		
-
-		<record id="l10n_br_view_picking_in_form1" model="ir.ui.view">
-			<field name="name">l10n_br.picking.in.form1</field>
-	   		<field name="model">stock.picking</field>
-	   		<field name="inherit_id" ref="stock.view_picking_in_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-	   			<notebook>
-			   		<page string="Other Info" position="inside">
-		          		<group colspan="2" attrs="{'invisible':[('invoice_state','!=','2binvoiced')]}">
-		          		<separator colspan="2" string="l10n_br"/>
-		          		<newline/>
-			            <field name="fiscal_operation_category_id" />
-		                <newline/>
-			            <field name="fiscal_operation_id" />
-			            <newline/>
-			            <field name="fiscal_position" domain="[('fiscal_operation_id','=',fiscal_operation_id)]"/>
-					</group>
-		        	</page>
-	        	</notebook>
-	        </field>	
-		</record>
-		
-		<record id="l10n_br_view_picking_in_form2" model="ir.ui.view">
-			<field name="name">l10n_br.picking.in.form2</field>
-	   		<field name="model">stock.picking</field>
-	   		<field name="inherit_id" ref="stock.view_picking_in_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-	   			<field name="address_id" position="replace">
-			           <field name="address_id" string="Supplier" context="{'contact_display':'partner'}" on_change="onchange_partner_in(address_id, fiscal_operation_category_id, company_id)" />
-	            </field>
-	        </field>	
-		</record>
-		<!-- 
-		<record id="l10n_br_view_picking_delivery_form" model="ir.ui.view">
-			<field name="name">l10n_br.picking.delivery.form</field>
-	   		<field name="model">stock.picking</field>
-	   		<field name="inherit_id" ref="stock.view_picking_delivery_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-  				<field name="move_type" position="after">
-			            <group colspan="2" attrs="{'invisible':[('invoice_state','!=','2binvoiced')]}">
-			            <field name="fiscal_operation_category_id" />
-		                <newline/>
-			            <field name="fiscal_operation_id" />
-			            <newline/>
-			            <field name="fiscal_position" domain="[('fiscal_operation_id','=',fiscal_operation_id)]"/>
-					</group>
-	            </field>
-	        </field>
-		</record>
-		
-		<record id="l10n_br_view_picking_delivery_form1" model="ir.ui.view">
-			<field name="name">l10n_br.picking.delivery.form1</field>
-	   		<field name="model">stock.picking</field>
-	   		<field name="inherit_id" ref="stock.view_picking_delivery_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-  				<field name="address_id" position="replace">
-			           <field name="address_id" required="1" on_change="onchange_partner_in(address_id, fiscal_operation_category_id, company_id)" />
-	            </field>
-	        </field>
-		</record>
-		 -->
-	</data>
-
-</openerp>
\ No newline at end of file

=== renamed directory 'l10n_br' => 'l10n_br_account'
=== modified file 'l10n_br_account/__init__.py'
--- l10n_br/__init__.py	2010-08-26 00:14:01 +0000
+++ l10n_br_account/__init__.py	2010-10-25 23:14:40 +0000
@@ -18,13 +18,10 @@
 #################################################################################
 
 import l10n_br
-import country
 import partner
 import account
 import invoice
-import sale
 import account_fiscal_position_rule
-import stock
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
 

=== modified file 'l10n_br_account/__openerp__.py'
--- l10n_br/__openerp__.py	2010-09-28 22:51:17 +0000
+++ l10n_br_account/__openerp__.py	2010-10-25 23:14:40 +0000
@@ -28,13 +28,10 @@
 		'base', 
 		'account', 
 		'account_chart', 
-		'product', 
-		'sale', 
 		'account_fiscal_position_rule', 
 		'account_product_fiscal_classification'
 		],
     'init_xml': [
-		'data/l10n_br_data.xml',
 		'data/account.account.type.csv',
         'data/account.tax.code.template.csv',
 	    'data/account.account.template.csv',
@@ -44,15 +41,11 @@
 		],
     'update_xml' : [
 		'l10n_br_view.xml',
-		'country_view.xml',
 		'partner_view.xml',
-        'sale_view.xml',
-        'stock_view.xml',
 		'account_invoice_view.xml',
         'account_view.xml',
 		'account_fiscal_position_rule_view.xml',
         'security/ir.model.access.csv',
-        'security/l10n_br_security.xml',
     ],
     'installable': True
 }

=== modified file 'l10n_br_account/l10n_br.py'
--- l10n_br/l10n_br.py	2010-08-31 20:48:16 +0000
+++ l10n_br_account/l10n_br.py	2010-10-25 23:14:40 +0000
@@ -20,35 +20,6 @@
 from osv import osv, fields
 
 #################################################################################
-# Municipios e Códigos do IBGE
-#################################################################################
-class l10n_br_city(osv.osv):
-    _name = 'l10n_br.city'
-    _description = 'Municipios e Códigos do IBGE'
-    _columns = {
-        'name': fields.char('Nome', size=64, required=True),
-        'state_id': fields.many2one('res.country.state', 'Estado', required=True),
-        'ibge_code': fields.char('Codigo IBGE', size=7),
-    }
-l10n_br_city()
-
-#################################################################################
-# CEP - Código de endereçamento Postal
-#################################################################################
-class l10n_br_cep(osv.osv):
-    _name = 'l10n_br.cep'
-    _rec_name = 'code'
-    _columns = {
-        'code': fields.char('CEP', size=8, required=True),
-        'street_type': fields.char('Tipo', size=26),
-        'street': fields.char('Logradouro', size=72),
-        'district': fields.char('Bairro', size=72),
-        'state_id': fields.many2one('res.country.state', 'Estado', required=True),
-        'city_id': fields.many2one('l10n_br.city', 'Cidade', required=True, domain="[('state_id','=',state_id)]"),
-    }
-l10n_br_cep()
-
-#################################################################################
 # CFOP - Código Fiscal de Operações e Prestações
 #################################################################################
 class l10n_br_cfop(osv.osv):
@@ -153,22 +124,6 @@
 l10n_br_fiscal_operation_line()
 
 #################################################################################
-# Tipo Fiscal de Parceiros
-#################################################################################
-class l10n_br_partner_fiscal_type(osv.osv):
-    _name = 'l10n_br.partner.fiscal.type'
-    _description = 'Tipo Fiscal de Parceiros'
-    _columns = {
-                'code': fields.char('Código', size=16, required=True),
-                'name': fields.char('Descrição', size=64),
-                'tipo_pessoa': fields.selection([('F', 'Física'), ('J', 'Jurídica')], 'Tipo de pessoa', required=True),
-                'icms': fields.boolean('Recupera ICMS'),
-                'ipi':fields.boolean('Recupera IPI'), 
-                }
-
-l10n_br_partner_fiscal_type()
-
-#################################################################################
 # Serie de Documentos Fiscais
 #################################################################################
 class l10n_br_document_serie(osv.osv):

=== modified file 'l10n_br_account/l10n_br_view.xml'
--- l10n_br/l10n_br_view.xml	2010-08-31 20:48:16 +0000
+++ l10n_br_account/l10n_br_view.xml	2010-10-25 23:14:40 +0000
@@ -2,64 +2,6 @@
 <openerp>
 	<data>
 
-		<menuitem icon="terp-crm" id="menu_l10n_br" name="Localização Brasil"/>
-		<menuitem id="menu_l10n_br_configuration" name="Configuração" parent="menu_l10n_br" sequence="0"/>
-
-		<record model="ir.ui.view" id="view_l10n_br_city_tree">
-			<field name="name">l10n_br.city</field>
-			<field name="model">l10n_br.city</field>
-			<field name="type">tree</field>
-			<field name="arch" type="xml">
-				<tree string="Municípios">
-					<field name="name" select="1"/>
-					<field name="state_id" select="1"/>
-					<field name="ibge_code"/>
-				</tree>
-			</field>
- 		</record>
-
-		<record model="ir.ui.view" id="view_l10n_br_city_form">
-			<field name="name">l10n_br.city</field>
-			<field name="model">l10n_br.city</field>
-			<field name="type">form</field>
-			<field name="arch" type="xml">
-				<form string="Municípios">
-					<field name="name" select="1"/>
-					<field name="state_id" select="1"/>
-					<field name="ibge_code" select="2"/>
-				</form>
-			</field>
-		</record>
-
-		<record model="ir.ui.view" id="view_l10n_br_cep_tree">
-			<field name="name">l10n_br.cep</field>
-			<field name="model">l10n_br.cep</field>
-			<field name="type">tree</field>
-			<field name="arch" type="xml">
-				<tree string="CEPs">
-					<field name="code" select="1"/>
-					<field name="street_type" select="1"/>
-					<field name="street" select="1"/>
-				</tree>
-			</field>
- 		</record>
-
-		<record model="ir.ui.view" id="view_l10n_br_cep_form">
-			<field name="name">l10n_br.cep</field>
-			<field name="model">l10n_br.cep</field>
-			<field name="type">form</field>
-			<field name="arch" type="xml">
-				<form string="CEPs">
-					<field name="code" select="1"/>
-					<field name="street_type" select="1"/>
-					<field name="street" select="1"/>
-					<field name="district" select="2"/>
-					<field name="state_id" select="2"/>
-					<field name="city_id" select="2"/>
-				</form>
-			</field>
-		</record>
-
 		<record model="ir.ui.view" id="view_l10n_br_cfop_form">
 			<field name="name">l10n_br.cfop.name</field>
 			<field name="model">l10n_br.cfop</field>
@@ -300,24 +242,6 @@
 				</field>
 			</record>
 	
-			<record model="ir.actions.act_window" id="action_l10n_br_city_form">
-				<field name="name">Município</field>
-				<field name="type">ir.actions.act_window</field>
-				<field name="res_model">l10n_br.city</field>
-				<field name="view_mode">tree,form</field>
-				<field name="view_type">form</field>
-				<field name="view_id" ref="view_l10n_br_city_tree"/>
-			</record>
-	
-			<record model="ir.actions.act_window" id="action_l10n_br_cep_form">
-				<field name="name">CEPs</field>
-				<field name="type">ir.actions.act_window</field>
-				<field name="res_model">l10n_br.cep</field>
-				<field name="view_mode">tree,form</field>
-				<field name="view_type">form</field>
-				<field name="view_id" ref="view_l10n_br_cep_tree"/>
-			</record>
-	
 			<record model="ir.actions.act_window" id="action_l10n_br_cfop_form">
 				<field name="name">CFOP</field>
 				<field name="type">ir.actions.act_window</field>
@@ -363,17 +287,8 @@
 				<field name="view_id" ref="view_l10n_br_fiscal_operation_category_tree"/>
 			</record>
 			
-			<record model="ir.actions.act_window" id="action_l10n_br_partner_fiscal_type_form">
-				<field name="name">Tipo Fiscal de Parceiro</field>
-				<field name="type">ir.actions.act_window</field>
-				<field name="res_model">l10n_br.partner.fiscal.type</field>
-				<field name="view_mode">tree,form</field>
-				<field name="view_type">form</field>
-				<field name="view_id" ref="view_l10n_br_partner_fiscal_type_tree"/>
-			</record>
-			
 			<record model="ir.actions.act_window" id="action_l10n_br_document_serie_form">
-				<field name="name">Tipo Fiscal de Parceiro</field>
+				<field name="name">Document Serie</field>
 				<field name="type">ir.actions.act_window</field>
 				<field name="res_model">l10n_br.document.serie</field>
 				<field name="view_mode">tree,form</field>
@@ -381,25 +296,19 @@
 				<field name="view_id" ref="view_l10n_br_document_serie_tree"/>
 			</record>
 		
-	       	<menuitem id="menu_l10n_br_fiscal" name="Fiscal" parent="menu_l10n_br_configuration" sequence="0"/>
-	
-			<menuitem name="CFOP" id="menu_action_l10n_br_cfop_form" parent="menu_l10n_br_fiscal" action="action_l10n_br_cfop_form"/>
-			
-			<menuitem name="Categoria de Operação Fiscal" id="menu_action_l10n_br_fiscal_operation_category_form" parent="menu_l10n_br_fiscal" action="action_l10n_br_fiscal_operation_category_form"/>
-			
-			<menuitem name="Operação Fiscal" id="menu_action_l10n_br_fiscal_operation_form" parent="menu_l10n_br_fiscal" action="action_l10n_br_fiscal_operation_form"/>
-			
-			<menuitem name="Tipo Fiscal de Parceiro" id="menu_action_l10n_br_partner_fiscal_type_form" parent="menu_l10n_br_fiscal" action="action_l10n_br_partner_fiscal_type_form"/>
-	
-			<menuitem name="Documento Fiscal" id="menu_action_l10n_br_fiscal_document_form" parent="menu_l10n_br_fiscal" action="action_l10n_br_fiscal_document_form"/>
-	
-			<menuitem name="Código de Situação Tributária" id="menu_action_l10n_br_cst_form" parent="menu_l10n_br_fiscal" action="action_l10n_br_cst_form"/>
-			
-			<menuitem name="Serie de Documento Fiscal" id="menu_action_document_serie_form" parent="menu_l10n_br_fiscal" action="action_l10n_br_document_serie_form"/>
-	
-			<menuitem name="CEPs" id="menu_action_l10n_br_cep_form" parent="base.menu_localisation" action="action_l10n_br_cep_form"/>
-	
-			<menuitem name="Municípios" id="menu_action_l10n_br_city_form" parent="base.menu_localisation" action="action_l10n_br_city_form"/>
+	       	<menuitem id="menu_l10n_br_fiscal" name="Fiscal" parent="l10n_br_base.menu_l10n_br_configuration" sequence="0"/>
+	
+			<menuitem name="CFOP" id="menu_action_l10n_br_cfop_form" parent="l10n_br_base.menu_l10n_br_fiscal" action="action_l10n_br_cfop_form"/>
+			
+			<menuitem name="Categoria de Operação Fiscal" id="menu_action_l10n_br_fiscal_operation_category_form" parent="l10n_br_base.menu_l10n_br_fiscal" action="action_l10n_br_fiscal_operation_category_form"/>
+			
+			<menuitem name="Operação Fiscal" id="menu_action_l10n_br_fiscal_operation_form" parent="l10n_br_base.menu_l10n_br_fiscal" action="action_l10n_br_fiscal_operation_form"/>
+	
+			<menuitem name="Documento Fiscal" id="menu_action_l10n_br_fiscal_document_form" parent="l10n_br_base.menu_l10n_br_fiscal" action="action_l10n_br_fiscal_document_form"/>
+	
+			<menuitem name="Código de Situação Tributária" id="menu_action_l10n_br_cst_form" parent="l10n_br_base.menu_l10n_br_fiscal" action="action_l10n_br_cst_form"/>
+			
+			<menuitem name="Serie de Documento Fiscal" id="menu_action_document_serie_form" parent="l10n_br_base.menu_l10n_br_fiscal" action="action_l10n_br_document_serie_form"/>
 
 	</data>
 

=== modified file 'l10n_br_account/partner.py'
--- l10n_br/partner.py	2010-07-19 16:30:48 +0000
+++ l10n_br_account/partner.py	2010-10-25 23:14:40 +0000
@@ -20,161 +20,6 @@
 from osv import osv, fields
 
 ##############################################################################
-# Parceiro Personalizado
-##############################################################################
-class res_partner(osv.osv):
-    _inherit = 'res.partner'
-    _columns = {
-        'tipo_pessoa': fields.selection([('F', 'Física'), ('J', 'Jurídica')], 'Tipo de pessoa', required=True),
-        'cnpj_cpf': fields.char('CNPJ/CPF', size=18),
-        'inscr_est': fields.char('Inscr. Estadual', size=16),
-        'inscr_mun': fields.char('Inscr. Municipal', size=18),
-        'suframa': fields.char('Suframa', size=18),
-        'legal_name' : fields.char('Razão Social', size=128, help="nome utilizado em documentos fiscais"),
-        'partner_fiscal_type_id': fields.many2one('l10n_br.partner.fiscal.type', 'Tipo Fiscal do Parceiro'),
-    }
-
-    _defaults = {
-        'tipo_pessoa': lambda *a: 'J',
-    }
-
-    def _check_cnpj_cpf(self, cr, uid, ids):
-        partner = self.browse(cr, uid, ids)[0]
-        if not partner.cnpj_cpf:
-            return True
-
-        if partner.tipo_pessoa == 'J':
-            return self.validate_cnpj(partner.cnpj_cpf)
-        elif partner.tipo_pessoa == 'F':
-            return self.validate_cpf(partner.cnpj_cpf)
-
-        return False
-
-    def validate_cnpj(self, cnpj):
-        # Limpando o cnpj
-        if not cnpj.isdigit():
-            import re
-            cnpj = re.sub('[^0-9]', '', cnpj)
-           
-        # verificando o tamano do  cnpj
-        if len(cnpj) != 14:
-            return False
-            
-        # Pega apenas os 12 primeiros dígitos do CNPJ e gera os 2 dígitos que faltam
-        cnpj= map(int, cnpj)
-        novo = cnpj[:12]
-
-        prod = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
-        while len(novo) < 14:
-            r = sum([x*y for (x, y) in zip(novo, prod)]) % 11
-            if r > 1:
-                f = 11 - r
-            else:
-                f = 0
-            novo.append(f)
-            prod.insert(0, 6)
-
-        # Se o número gerado coincidir com o número original, é válido
-        if novo == cnpj:
-            return True
-            
-        return False
-    
-    def validate_cpf(self, cpf):           
-        if not cpf.isdigit():
-            import re
-            cpf = re.sub('[^0-9]', '', cpf)
-
-        if len(cpf) != 11:
-            return False
-
-        # Pega apenas os 9 primeiros dígitos do CPF e gera os 2 dígitos que faltam
-        cpf = map(int, cpf)
-        novo = cpf[:9]
-
-        while len(novo) < 11:
-            r = sum([(len(novo)+1-i)*v for i,v in enumerate(novo)]) % 11
-
-            if r > 1:
-                f = 11 - r
-            else:
-                f = 0
-            novo.append(f)
-
-        # Se o número gerado coincidir com o número original, é válido
-        if novo == cpf:
-            return True
-            
-        return False
-
-    _constraints = [(_check_cnpj_cpf, 'CNPJ/CPF invalido!', ['cnpj_cpf'])]
-
-    def on_change_mask_cnpj_cpf(self, cr, uid, ids, tipo_pessoa, cnpj_cpf):
-        if not cnpj_cpf or not tipo_pessoa:
-            return {}
-
-        import re
-        val = re.sub('[^0-9]', '', cnpj_cpf)
-
-        if tipo_pessoa == 'J' and len(val) == 14:            
-            cnpj_cpf = "%s.%s.%s/%s-%s" % (val[0:2], val[2:5], val[5:8], val[8:12], val[12:14])
-        
-        elif tipo_pessoa == 'F' and len(val) == 11:
-            cnpj_cpf = "%s.%s.%s-%s" % (val[0:3], val[3:6], val[6:9], val[9:11])
-        
-        return {'value': {'tipo_pessoa': tipo_pessoa, 'cnpj_cpf': cnpj_cpf}}
-    
-    def zip_search(self, cr, uid, ids, context={}):
-        return True    
-    
-res_partner()
-
-##############################################################################
-# Contato do Parceiro Personalizado
-##############################################################################
-class res_partner_address(osv.osv):
-    _inherit = 'res.partner.address'
-    _columns = {
-	'city_id': fields.many2one('l10n_br.city', 'Municipio', domain="[('state_id','=',state_id)]"),
-    'number': fields.char('Número', size=10),
-    }
-
-    def on_change_city_id(self, cr, uid, ids, city_id):
-        
-        result = {'value': {'city': None}}
-
-        if not city_id:
-            return result
-
-        obj_city = self.pool.get('l10n_br.city').read(cr, uid, city_id, ['name'])
-        
-        if obj_city:
-            result['value'] = {'city': obj_city['name']}
-        
-        return result
-
-    def on_change_zip(self, cr, uid, ids, zip):
-        
-        result = {'value': {'street': None, 'city_id': None, 'city': None, 'state_id': None, 'country_id': None, 'zip': None }}
-
-        if not zip:
-            return result
-        
-        obj_cep = self.pool.get('l10n_br.cep').browse(cr, uid, zip)
-        
-        print obj_cep
-        result['value']['street'] = obj_cep.street_type + ' ' + obj_cep.street
-        result['value']['city_id'] = obj_cep.city_id.id
-        result['value']['city'] = obj_cep.city_id.name
-        result['value']['state_id'] = obj_cep.state_id.id
-        result['value']['country_id'] = obj_cep.state_id.country_id.id
-        result['value']['zip'] = obj_cep.code
-        
-        return result
-
-res_partner_address()
-
-##############################################################################
 # Posição Fiscal Personalizada
 ##############################################################################
 class account_fiscal_position(osv.osv):

=== modified file 'l10n_br_account/partner_view.xml'
--- l10n_br/partner_view.xml	2010-08-26 00:14:01 +0000
+++ l10n_br_account/partner_view.xml	2010-10-25 23:14:40 +0000
@@ -1,175 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
 	<data>
-
-		<!-- Parceiro Personalizado -->
-		<record model="ir.ui.view" id="view_l10n_br_partner_form">
-			<field name="name">l10n_br.partner.form</field>
-			<field name="model">res.partner</field>
-			<field name="inherit_id" ref="base.view_partner_form"/>
-			<field name="arch" type="xml">
-				<field name="lang" position="replace">
-					<field colspan="4" name="legal_name"/>
-					<field name="tipo_pessoa" on_change="on_change_mask_cnpj_cpf(tipo_pessoa,cnpj_cpf)"/>
-					<field name="cnpj_cpf" colspan="4" on_change="on_change_mask_cnpj_cpf(tipo_pessoa,cnpj_cpf)"/> 
-					<field name="lang"/>					
-				</field>
-			</field>
-		</record>
-		
-		<record model="ir.ui.view" id="l10n_br_view_partner_form1" >
-	   		<field name="name">l10n_br.partner.form1</field>
-            		<field name="model">res.partner</field>
-	   		<field name="inherit_id" ref="base.view_partner_form"/>
-	   		<field name="priority">32</field>
-	   		<field name="arch" type="xml">
-	   			<xpath expr="/form/notebook/page/field/form/group/field[@name='street']" position="replace">
-						<field name="street" />
-						<field name="number" />
-	        		</xpath>
-        		</field>
-   		</record>
-		
-		<record model="ir.ui.view" id="l10n_br_view_partner_form2">
-	   		<field name="name">l10n_br.partner.form2</field>
-            		<field name="model">res.partner</field>
-	   		<field name="inherit_id" ref="base.view_partner_form"/>
-	   		<field name="priority">33</field>
-	   		<field name="arch" type="xml">
-	   			<xpath expr="/form/notebook/page/field/form/group/field[@name='zip']" position="replace">
-						<field name="zip" />
-        			</xpath>
-        		</field>
-   		</record>
-		
-		<record model="ir.ui.view" id="l10n_br_view_partner_form3">
-	   		<field name="name">l10n_br.partner.form3</field>
-		        <field name="model">res.partner</field>
-	   		<field name="inherit_id" ref="base.view_partner_form"/>
-	   		<field name="priority">34</field>
-	   		<field name="arch" type="xml">
-	   			<xpath expr="/form/notebook/page/field/form/group/field[@name='state_id']" position="after">
-						<field name="city_id" on_change="on_change_city_id(city_id)" />
-        			</xpath>
-        		</field>
-   		</record>
-
-		<record model="ir.ui.view" id="l10n_br_view_partner_form4">
-	   		<field name="name">l10n_br.partner.form4</field>
-		        <field name="model">res.partner</field>
-	   		<field name="inherit_id" ref="base.view_partner_form"/>
-	   		<field name="priority">34</field>
-	   		<field name="arch" type="xml">
-	   			<xpath expr="/form/notebook/page/field/form/group/field[@name='city']" position="replace">
-						<field name="city" invisible="1" />
-        			</xpath>
-        		</field>
-   		</record>
-		
-
-		<record model="ir.ui.view" id="l10n_br_view_partner_form5">
-			<field name="name">l10n_br.partner.form5</field>
-			<field name="model">res.partner</field>
-			<field name="inherit_id" ref="base.view_partner_form"/>
-			<field name="arch" type="xml">
-				 <notebook>
-					<page position="inside" string="l10n br - NF">
-						<separator colspan="4" string="Dados Adicionais do Parceiro"/>						
-						<newline/>
-						<field name="inscr_est"/>
-						<field name="inscr_mun"/>
-						<field name="suframa"/>				
-						<field name="partner_fiscal_type_id"/>
-		        	</page>
-				</notebook>
-			</field>
-		</record>
-		
-		<!-- Contato do Parceiro Personalizado -->
-		<record model="ir.ui.view" id="view_l10n_br_partner_address_form1">
-			<field name="name">l10n_br.partner.address</field>
-			<field name="model">res.partner.address</field>
-			<field name="inherit_id" ref="base.view_partner_address_form1"/>
-			<field name="arch" type="xml">
-				<field name="zip" position="replace">
-					<field name="zip" />
-					<!-- <field name="zip" on_change="on_change_zip(zip)" />
-					<button name="search_cep" string="Open Margins" type="object" default_focus="1"/> -->
-				</field>
-
-			</field>
-		</record>
-		
-		<record model="ir.ui.view" id="view_l10n_br_partner_address_form2">
-			<field name="name">l10n_br.partner.address</field>
-			<field name="model">res.partner.address</field>
-			<field name="inherit_id" ref="base.view_partner_address_form1"/>
-			<field name="arch" type="xml">
-				<field name="city" position="replace">
-					 <field name="city" invisible="1" />
-				</field>
-			</field>
-		</record>
-		
-		<record model="ir.ui.view" id="view_l10n_br_partner_address_form4">
-			<field name="name">l10n_br.partner.address</field>
-			<field name="model">res.partner.address</field>
-			<field name="inherit_id" ref="base.view_partner_address_form1"/>
-			<field name="arch" type="xml">
-				<field name="state_id" position="after">
-					<field name="city_id" on_change="on_change_city_id(city_id)" />
-				</field>
-			</field>
-		</record> 
-		 			
-		<record model="ir.ui.view" id="view_l10n_br_partner_address_form5">
-			<field name="name">l10n_br.partner.address</field>
-			<field name="model">res.partner.address</field>
-			<field name="inherit_id" ref="base.view_partner_address_form1"/>
-			<field name="arch" type="xml">
-				<field name="street" position="replace">
-					<field name="street"/>
-					<field name="number"/>
-				</field>
-			</field>
-		</record>
-				
-		<!-- Contato do Parceiro Personalizado usado no form partner -->
-		
-		<!-- Contato do Parceiro Personalizado -->
-		<record model="ir.ui.view" id="view_l10n_br_partner_address_form6">
-			<field name="name">l10n_br.partner.address</field>
-			<field name="model">res.partner.address</field>
-			<field name="inherit_id" ref="base.view_partner_address_form2"/>
-			<field name="arch" type="xml">
-				<field name="city" position="replace">
-					 <field name="city" invisible="1" />
-				</field>
-			</field>
-		</record>
-		
-		<record model="ir.ui.view" id="view_l10n_br_partner_address_form7">
-			<field name="name">l10n_br.partner.address</field>
-			<field name="model">res.partner.address</field>
-			<field name="inherit_id" ref="base.view_partner_address_form2"/>
-			<field name="arch" type="xml">
-				<field name="state_id" position="after">
-					 <field name="city_id" on_change="on_change_city_id(city_id)" />
-				</field>
-			</field>
-		</record>
-		
-		<record model="ir.ui.view" id="view_l10n_br_partner_address_form8">
-			<field name="name">l10n_br.partner.address</field>
-			<field name="model">res.partner.address</field>
-			<field name="inherit_id" ref="base.view_partner_address_form2"/>
-			<field name="arch" type="xml">
-				<field name="street" position="replace">
-					<field name="street"/>
-					<field name="number"/>
-				</field>
-			</field>
-		</record>
 		
 		<record id="view_l10n_br_position_form" model="ir.ui.view">
             <field name="name">l10n_br.fiscal.position.form</field>

=== modified file 'l10n_br_account/security/ir.model.access.csv'
--- l10n_br/security/ir.model.access.csv	2010-09-28 22:51:17 +0000
+++ l10n_br_account/security/ir.model.access.csv	2010-10-25 23:14:40 +0000
@@ -1,7 +1,4 @@
 "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"l10n_br_city","l10n_br.city","model_l10n_br_city","base.group_partner_manager",1,1,1,1
-"l10n_br_cep","l10n_br.cep","model_l10n_br_cep","base.group_partner_manager",1,1,1,1
-"l10n_br_partner_fiscal_type","l10n_br.partner.fiscal.type","model_l10n_br_partner_fiscal_type","base.group_partner_manager",1,1,1,1
 "l10n_br_cfop","l10n_br.cfop","model_l10n_br_cfop","account.group_account_invoice",1,1,1,1
 "l10n_br_fiscal_document","l10n_br.fiscal.document","model_l10n_br_fiscal_document","account.group_account_invoice",1,1,1,1
 "l10n_br_cst","l10n_br.cst","model_l10n_br_cst","account.group_account_invoice",1,1,1,1

=== added directory 'l10n_br_base'
=== added file 'l10n_br_base/__init__.py'
--- l10n_br_base/__init__.py	1970-01-01 00:00:00 +0000
+++ l10n_br_base/__init__.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+import l10n_br
+import country
+import partner
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+

=== added file 'l10n_br_base/__openerp__.py'
--- l10n_br_base/__openerp__.py	1970-01-01 00:00:00 +0000
+++ l10n_br_base/__openerp__.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,39 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+{
+    'name' : 'Brazilian Localization Base',
+    'description' : 'Brazilian Localization Base',
+    'category' : 'Localisation/Account Charts',
+    'author' : 'OpenERP Brasil',
+    'website' : 'http://openerpbrasil.org',
+    'version' : '0.6',
+    'depends' : ['base'],
+    'init_xml': [],
+    'update_xml' : [
+		'l10n_br_view.xml',
+		'country_view.xml',
+		'partner_view.xml',
+        'security/ir.model.access.csv',
+        'security/l10n_br_security.xml',
+    ],
+    'installable': True
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_br_base/country.py'
--- l10n_br_base/country.py	1970-01-01 00:00:00 +0000
+++ l10n_br_base/country.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,42 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+from osv import osv, fields
+
+##############################################################################
+# País Personalizado
+##############################################################################
+class res_country(osv.osv):
+    _inherit = 'res.country'
+    _columns = {
+        'bc_code': fields.char('Cód. BC', size=5),
+    }
+res_country()
+
+##############################################################################
+# Estado Personalizado
+##############################################################################
+class res_country_state(osv.osv):
+    _inherit = 'res.country.state'
+    _columns = {
+        'ibge_code': fields.char('Cód. IBGE', size=2),
+    }
+res_country_state()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_br_base/country_view.xml'
--- l10n_br_base/country_view.xml	1970-01-01 00:00:00 +0000
+++ l10n_br_base/country_view.xml	2010-10-25 23:14:40 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+	<data>
+
+		<!-- País Personallizado -->
+		<record model="ir.ui.view" id="view_l10n_br_country_form">
+			<field name="name">res.country</field>
+			<field name="model">res.country</field>
+			<field name="inherit_id" ref="base.view_country_form"/>
+			<field name="arch" type="xml">
+				<form>
+					<field name="bc_code" select="2"/>
+				</form>
+			</field>
+		</record>
+
+		<!-- Estado Personallizado -->
+		<record model="ir.ui.view" id="view_l10n_br_country_state_form">
+			<field name="name">res.country.state</field>
+			<field name="model">res.country.state</field>
+			<field name="inherit_id" ref="base.view_country_state_form"/>
+			<field name="arch" type="xml">
+				<form>
+					<field name="ibge_code" select="2"/>
+				</form>
+			</field>
+		</record>
+	
+	</data>
+</openerp>
\ No newline at end of file

=== added directory 'l10n_br_base/i18n'
=== added file 'l10n_br_base/l10n_br.py'
--- l10n_br_base/l10n_br.py	1970-01-01 00:00:00 +0000
+++ l10n_br_base/l10n_br.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,68 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+from osv import osv, fields
+
+#################################################################################
+# Municipios e Códigos do IBGE
+#################################################################################
+class l10n_br_city(osv.osv):
+    _name = 'l10n_br.city'
+    _description = 'Municipios e Códigos do IBGE'
+    _columns = {
+        'name': fields.char('Nome', size=64, required=True),
+        'state_id': fields.many2one('res.country.state', 'Estado', required=True),
+        'ibge_code': fields.char('Codigo IBGE', size=7),
+    }
+l10n_br_city()
+
+#################################################################################
+# CEP - Código de endereçamento Postal
+#################################################################################
+class l10n_br_cep(osv.osv):
+    _name = 'l10n_br.cep'
+    _rec_name = 'code'
+    _columns = {
+        'code': fields.char('CEP', size=8, required=True),
+        'street_type': fields.char('Tipo', size=26),
+        'street': fields.char('Logradouro', size=72),
+        'district': fields.char('Bairro', size=72),
+        'state_id': fields.many2one('res.country.state', 'Estado', required=True),
+        'city_id': fields.many2one('l10n_br.city', 'Cidade', required=True, domain="[('state_id','=',state_id)]"),
+    }
+l10n_br_cep()
+
+
+################################################################################
+# Tipo Fiscal de Parceiros
+#################################################################################
+class l10n_br_partner_fiscal_type(osv.osv):
+    _name = 'l10n_br.partner.fiscal.type'
+    _description = 'Tipo Fiscal de Parceiros'
+    _columns = {
+                'code': fields.char('Código', size=16, required=True),
+                'name': fields.char('Descrição', size=64),
+                'tipo_pessoa': fields.selection([('F', 'Física'), ('J', 'Jurídica')], 'Tipo de pessoa', required=True),
+                'icms': fields.boolean('Recupera ICMS'),
+                'ipi':fields.boolean('Recupera IPI'), 
+                }
+
+l10n_br_partner_fiscal_type()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_br_base/l10n_br_view.xml'
--- l10n_br_base/l10n_br_view.xml	1970-01-01 00:00:00 +0000
+++ l10n_br_base/l10n_br_view.xml	2010-10-25 23:14:40 +0000
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+	<data>
+
+		<menuitem icon="terp-crm" id="menu_l10n_br" name="Localização Brasil"/>
+		<menuitem id="menu_l10n_br_configuration" name="Configuração" parent="menu_l10n_br" sequence="0"/>
+
+		<record model="ir.ui.view" id="view_l10n_br_city_tree">
+			<field name="name">l10n_br.city</field>
+			<field name="model">l10n_br.city</field>
+			<field name="type">tree</field>
+			<field name="arch" type="xml">
+				<tree string="Municípios">
+					<field name="name" select="1"/>
+					<field name="state_id" select="1"/>
+					<field name="ibge_code"/>
+				</tree>
+			</field>
+ 		</record>
+
+		<record model="ir.ui.view" id="view_l10n_br_city_form">
+			<field name="name">l10n_br.city</field>
+			<field name="model">l10n_br.city</field>
+			<field name="type">form</field>
+			<field name="arch" type="xml">
+				<form string="Municípios">
+					<field name="name" select="1"/>
+					<field name="state_id" select="1"/>
+					<field name="ibge_code" select="2"/>
+				</form>
+			</field>
+		</record>
+
+		<record model="ir.ui.view" id="view_l10n_br_cep_tree">
+			<field name="name">l10n_br.cep</field>
+			<field name="model">l10n_br.cep</field>
+			<field name="type">tree</field>
+			<field name="arch" type="xml">
+				<tree string="CEPs">
+					<field name="code" select="1"/>
+					<field name="street_type" select="1"/>
+					<field name="street" select="1"/>
+				</tree>
+			</field>
+ 		</record>
+
+		<record model="ir.ui.view" id="view_l10n_br_cep_form">
+			<field name="name">l10n_br.cep</field>
+			<field name="model">l10n_br.cep</field>
+			<field name="type">form</field>
+			<field name="arch" type="xml">
+				<form string="CEPs">
+					<field name="code" select="1"/>
+					<field name="street_type" select="1"/>
+					<field name="street" select="1"/>
+					<field name="district" select="2"/>
+					<field name="state_id" select="2"/>
+					<field name="city_id" select="2"/>
+				</form>
+			</field>
+		</record>
+		
+			<record model="ir.ui.view" id="view_l10n_br_partner_fiscal_type_form">
+				<field name="name">l10n_br.partner.fiscal.type</field>
+				<field name="model">l10n_br.partner.fiscal.type</field>
+				<field name="type">form</field>
+				<field name="arch" type="xml">
+					<form string="Tipo Fiscal de Parceiro">
+						<field name="code" select="1"/>
+						<field name="name" select="1"/>
+						<field name="tipo_pessoa" select="1"/>
+						<separator string="Recupera Impostos" colspan="4"/>
+						<field name="icms"/>
+						<field name="ipi"/>
+					</form>
+				</field>
+			</record>
+	
+			<record model="ir.ui.view" id="view_l10n_br_partner_fiscal_type_tree">
+				<field name="name">l10n_br.partner.fiscal.type</field>
+				<field name="model">l10n_br.partner.fiscal.type</field>
+				<field name="type">tree</field>
+				<field name="arch" type="xml">
+					<tree string="Tipo Fiscal de Parceiro">
+						<field name="code" select="1"/>
+						<field name="name" select="1"/>
+						<field name="tipo_pessoa" select="1"/>
+					</tree>
+				</field>
+			</record>
+	
+			<record model="ir.actions.act_window" id="action_l10n_br_city_form">
+				<field name="name">Município</field>
+				<field name="type">ir.actions.act_window</field>
+				<field name="res_model">l10n_br.city</field>
+				<field name="view_mode">tree,form</field>
+				<field name="view_type">form</field>
+				<field name="view_id" ref="view_l10n_br_city_tree"/>
+			</record>
+	
+			<record model="ir.actions.act_window" id="action_l10n_br_cep_form">
+				<field name="name">CEPs</field>
+				<field name="type">ir.actions.act_window</field>
+				<field name="res_model">l10n_br.cep</field>
+				<field name="view_mode">tree,form</field>
+				<field name="view_type">form</field>
+				<field name="view_id" ref="view_l10n_br_cep_tree"/>
+			</record>
+			
+			<record model="ir.actions.act_window" id="action_l10n_br_partner_fiscal_type_form">
+				<field name="name">Tipo Fiscal de Parceiro</field>
+				<field name="type">ir.actions.act_window</field>
+				<field name="res_model">l10n_br.partner.fiscal.type</field>
+				<field name="view_mode">tree,form</field>
+				<field name="view_type">form</field>
+				<field name="view_id" ref="view_l10n_br_partner_fiscal_type_tree"/>
+			</record>
+		
+	       	<menuitem id="menu_l10n_br_fiscal" name="Fiscal" parent="menu_l10n_br_configuration" sequence="0"/>
+			
+			<menuitem name="Tipo Fiscal de Parceiro" id="menu_action_l10n_br_partner_fiscal_type_form" parent="menu_l10n_br_fiscal" action="action_l10n_br_partner_fiscal_type_form"/>
+	
+			<menuitem name="CEPs" id="menu_action_l10n_br_cep_form" parent="base.menu_localisation" action="action_l10n_br_cep_form"/>
+	
+			<menuitem name="Municípios" id="menu_action_l10n_br_city_form" parent="base.menu_localisation" action="action_l10n_br_city_form"/>
+
+	</data>
+
+</openerp>
+

=== added file 'l10n_br_base/partner.py'
--- l10n_br_base/partner.py	1970-01-01 00:00:00 +0000
+++ l10n_br_base/partner.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,176 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion, Gabriel C. Stabel                 #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+from osv import osv, fields
+
+##############################################################################
+# Parceiro Personalizado
+##############################################################################
+class res_partner(osv.osv):
+    _inherit = 'res.partner'
+    _columns = {
+        'tipo_pessoa': fields.selection([('F', 'Física'), ('J', 'Jurídica')], 'Tipo de pessoa', required=True),
+        'cnpj_cpf': fields.char('CNPJ/CPF', size=18),
+        'inscr_est': fields.char('Inscr. Estadual', size=16),
+        'inscr_mun': fields.char('Inscr. Municipal', size=18),
+        'suframa': fields.char('Suframa', size=18),
+        'legal_name' : fields.char('Razão Social', size=128, help="nome utilizado em documentos fiscais"),
+        'partner_fiscal_type_id': fields.many2one('l10n_br.partner.fiscal.type', 'Tipo Fiscal do Parceiro'),
+    }
+
+    _defaults = {
+        'tipo_pessoa': lambda *a: 'J',
+    }
+
+    def _check_cnpj_cpf(self, cr, uid, ids):
+        partner = self.browse(cr, uid, ids)[0]
+        if not partner.cnpj_cpf:
+            return True
+
+        if partner.tipo_pessoa == 'J':
+            return self.validate_cnpj(partner.cnpj_cpf)
+        elif partner.tipo_pessoa == 'F':
+            return self.validate_cpf(partner.cnpj_cpf)
+
+        return False
+
+    def validate_cnpj(self, cnpj):
+        # Limpando o cnpj
+        if not cnpj.isdigit():
+            import re
+            cnpj = re.sub('[^0-9]', '', cnpj)
+           
+        # verificando o tamano do  cnpj
+        if len(cnpj) != 14:
+            return False
+            
+        # Pega apenas os 12 primeiros dígitos do CNPJ e gera os 2 dígitos que faltam
+        cnpj= map(int, cnpj)
+        novo = cnpj[:12]
+
+        prod = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
+        while len(novo) < 14:
+            r = sum([x*y for (x, y) in zip(novo, prod)]) % 11
+            if r > 1:
+                f = 11 - r
+            else:
+                f = 0
+            novo.append(f)
+            prod.insert(0, 6)
+
+        # Se o número gerado coincidir com o número original, é válido
+        if novo == cnpj:
+            return True
+            
+        return False
+    
+    def validate_cpf(self, cpf):           
+        if not cpf.isdigit():
+            import re
+            cpf = re.sub('[^0-9]', '', cpf)
+
+        if len(cpf) != 11:
+            return False
+
+        # Pega apenas os 9 primeiros dígitos do CPF e gera os 2 dígitos que faltam
+        cpf = map(int, cpf)
+        novo = cpf[:9]
+
+        while len(novo) < 11:
+            r = sum([(len(novo)+1-i)*v for i,v in enumerate(novo)]) % 11
+
+            if r > 1:
+                f = 11 - r
+            else:
+                f = 0
+            novo.append(f)
+
+        # Se o número gerado coincidir com o número original, é válido
+        if novo == cpf:
+            return True
+            
+        return False
+
+    _constraints = [(_check_cnpj_cpf, 'CNPJ/CPF invalido!', ['cnpj_cpf'])]
+
+    def on_change_mask_cnpj_cpf(self, cr, uid, ids, tipo_pessoa, cnpj_cpf):
+        if not cnpj_cpf or not tipo_pessoa:
+            return {}
+
+        import re
+        val = re.sub('[^0-9]', '', cnpj_cpf)
+
+        if tipo_pessoa == 'J' and len(val) == 14:            
+            cnpj_cpf = "%s.%s.%s/%s-%s" % (val[0:2], val[2:5], val[5:8], val[8:12], val[12:14])
+        
+        elif tipo_pessoa == 'F' and len(val) == 11:
+            cnpj_cpf = "%s.%s.%s-%s" % (val[0:3], val[3:6], val[6:9], val[9:11])
+        
+        return {'value': {'tipo_pessoa': tipo_pessoa, 'cnpj_cpf': cnpj_cpf}}
+    
+    def zip_search(self, cr, uid, ids, context={}):
+        return True    
+    
+res_partner()
+
+##############################################################################
+# Contato do Parceiro Personalizado
+##############################################################################
+class res_partner_address(osv.osv):
+    _inherit = 'res.partner.address'
+    _columns = {
+	'city_id': fields.many2one('l10n_br.city', 'Municipio', domain="[('state_id','=',state_id)]"),
+    'number': fields.char('Número', size=10),
+    }
+
+    def on_change_city_id(self, cr, uid, ids, city_id):
+        
+        result = {'value': {'city': None}}
+
+        if not city_id:
+            return result
+
+        obj_city = self.pool.get('l10n_br.city').read(cr, uid, city_id, ['name'])
+        
+        if obj_city:
+            result['value'] = {'city': obj_city['name']}
+        
+        return result
+
+    def on_change_zip(self, cr, uid, ids, zip):
+        
+        result = {'value': {'street': None, 'city_id': None, 'city': None, 'state_id': None, 'country_id': None, 'zip': None }}
+
+        if not zip:
+            return result
+        
+        obj_cep = self.pool.get('l10n_br.cep').browse(cr, uid, zip)
+        
+        result['value']['street'] = obj_cep.street_type + ' ' + obj_cep.street
+        result['value']['city_id'] = obj_cep.city_id.id
+        result['value']['city'] = obj_cep.city_id.name
+        result['value']['state_id'] = obj_cep.state_id.id
+        result['value']['country_id'] = obj_cep.state_id.country_id.id
+        result['value']['zip'] = obj_cep.code
+        
+        return result
+
+res_partner_address()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_br_base/partner_view.xml'
--- l10n_br_base/partner_view.xml	1970-01-01 00:00:00 +0000
+++ l10n_br_base/partner_view.xml	2010-10-25 23:14:40 +0000
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+	<data>
+
+		<!-- Parceiro Personalizado -->
+		<record model="ir.ui.view" id="view_l10n_br_partner_form">
+			<field name="name">l10n_br.partner.form</field>
+			<field name="model">res.partner</field>
+			<field name="inherit_id" ref="base.view_partner_form"/>
+			<field name="arch" type="xml">
+				<field name="lang" position="replace">
+					<field colspan="4" name="legal_name"/>
+					<field name="tipo_pessoa" on_change="on_change_mask_cnpj_cpf(tipo_pessoa,cnpj_cpf)"/>
+					<field name="cnpj_cpf" colspan="4" on_change="on_change_mask_cnpj_cpf(tipo_pessoa,cnpj_cpf)"/> 
+					<field name="lang"/>	
+				</field>
+			</field>
+		</record>
+		
+		<record model="ir.ui.view" id="l10n_br_view_partner_form1" >
+	   		<field name="name">l10n_br.partner.form1</field>
+            		<field name="model">res.partner</field>
+	   		<field name="inherit_id" ref="base.view_partner_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+	   			<xpath expr="/form/notebook/page/field/form/group/field[@name='street']" position="replace">
+						<field name="street" />
+						<field name="number" />
+	        		</xpath>
+        		</field>
+   		</record>
+		
+		<record model="ir.ui.view" id="l10n_br_view_partner_form2">
+	   		<field name="name">l10n_br.partner.form2</field>
+            		<field name="model">res.partner</field>
+	   		<field name="inherit_id" ref="base.view_partner_form"/>
+	   		<field name="priority">33</field>
+	   		<field name="arch" type="xml">
+	   			<xpath expr="/form/notebook/page/field/form/group/field[@name='zip']" position="replace">
+						<field name="zip" />
+        			</xpath>
+        		</field>
+   		</record>
+		
+		<record model="ir.ui.view" id="l10n_br_view_partner_form3">
+	   		<field name="name">l10n_br.partner.form3</field>
+		        <field name="model">res.partner</field>
+	   		<field name="inherit_id" ref="base.view_partner_form"/>
+	   		<field name="priority">34</field>
+	   		<field name="arch" type="xml">
+	   			<xpath expr="/form/notebook/page/field/form/group/field[@name='state_id']" position="after">
+						<field name="city_id" on_change="on_change_city_id(city_id)" />
+        			</xpath>
+        		</field>
+   		</record>
+
+		<record model="ir.ui.view" id="l10n_br_view_partner_form4">
+	   		<field name="name">l10n_br.partner.form4</field>
+		        <field name="model">res.partner</field>
+	   		<field name="inherit_id" ref="base.view_partner_form"/>
+	   		<field name="priority">34</field>
+	   		<field name="arch" type="xml">
+	   			<xpath expr="/form/notebook/page/field/form/group/field[@name='city']" position="replace">
+						<field name="city" invisible="1" />
+        			</xpath>
+        		</field>
+   		</record>
+		
+
+		<record model="ir.ui.view" id="l10n_br_view_partner_form5">
+			<field name="name">l10n_br.partner.form5</field>
+			<field name="model">res.partner</field>
+			<field name="inherit_id" ref="base.view_partner_form"/>
+			<field name="arch" type="xml">
+				 <notebook>
+					<page position="inside" string="l10n br - NF">
+						<separator colspan="4" string="Dados Adicionais do Parceiro"/>						
+						<newline/>
+						<field name="inscr_est"/>
+						<field name="inscr_mun"/>
+						<field name="suframa"/>				
+						<field name="partner_fiscal_type_id"/>
+		        	</page>
+				</notebook>
+			</field>
+		</record>
+		
+		<!-- Contato do Parceiro Personalizado -->
+		<record model="ir.ui.view" id="view_l10n_br_partner_address_form1">
+			<field name="name">l10n_br.partner.address</field>
+			<field name="model">res.partner.address</field>
+			<field name="inherit_id" ref="base.view_partner_address_form1"/>
+			<field name="arch" type="xml">
+				<field name="zip" position="replace">
+					<field name="zip" />
+					<!-- <field name="zip" on_change="on_change_zip(zip)" />
+					<button name="search_cep" string="Open Margins" type="object" default_focus="1"/> -->
+				</field>
+
+			</field>
+		</record>
+		
+		<record model="ir.ui.view" id="view_l10n_br_partner_address_form2">
+			<field name="name">l10n_br.partner.address</field>
+			<field name="model">res.partner.address</field>
+			<field name="inherit_id" ref="base.view_partner_address_form1"/>
+			<field name="arch" type="xml">
+				<field name="city" position="replace">
+					 <field name="city" invisible="1" />
+				</field>
+			</field>
+		</record>
+		
+		<record model="ir.ui.view" id="view_l10n_br_partner_address_form4">
+			<field name="name">l10n_br.partner.address</field>
+			<field name="model">res.partner.address</field>
+			<field name="inherit_id" ref="base.view_partner_address_form1"/>
+			<field name="arch" type="xml">
+				<field name="state_id" position="after">
+					<field name="city_id" on_change="on_change_city_id(city_id)" />
+				</field>
+			</field>
+		</record> 
+		 			
+		<record model="ir.ui.view" id="view_l10n_br_partner_address_form5">
+			<field name="name">l10n_br.partner.address</field>
+			<field name="model">res.partner.address</field>
+			<field name="inherit_id" ref="base.view_partner_address_form1"/>
+			<field name="arch" type="xml">
+				<field name="street" position="replace">
+					<field name="street"/>
+					<field name="number"/>
+				</field>
+			</field>
+		</record>
+				
+		<!-- Contato do Parceiro Personalizado usado no form partner -->
+		
+		<!-- Contato do Parceiro Personalizado -->
+		<record model="ir.ui.view" id="view_l10n_br_partner_address_form6">
+			<field name="name">l10n_br.partner.address</field>
+			<field name="model">res.partner.address</field>
+			<field name="inherit_id" ref="base.view_partner_address_form2"/>
+			<field name="arch" type="xml">
+				<field name="city" position="replace">
+					 <field name="city" invisible="1" />
+				</field>
+			</field>
+		</record>
+		
+		<record model="ir.ui.view" id="view_l10n_br_partner_address_form7">
+			<field name="name">l10n_br.partner.address</field>
+			<field name="model">res.partner.address</field>
+			<field name="inherit_id" ref="base.view_partner_address_form2"/>
+			<field name="arch" type="xml">
+				<field name="state_id" position="after">
+					 <field name="city_id" on_change="on_change_city_id(city_id)" />
+				</field>
+			</field>
+		</record>
+		
+		<record model="ir.ui.view" id="view_l10n_br_partner_address_form8">
+			<field name="name">l10n_br.partner.address</field>
+			<field name="model">res.partner.address</field>
+			<field name="inherit_id" ref="base.view_partner_address_form2"/>
+			<field name="arch" type="xml">
+				<field name="street" position="replace">
+					<field name="street"/>
+					<field name="number"/>
+				</field>
+			</field>
+		</record>
+		
+	</data>
+</openerp>

=== added directory 'l10n_br_base/security'
=== added file 'l10n_br_base/security/ir.model.access.csv'
--- l10n_br_base/security/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ l10n_br_base/security/ir.model.access.csv	2010-10-25 23:14:40 +0000
@@ -0,0 +1,4 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"l10n_br_city","l10n_br.city","model_l10n_br_city","base.group_partner_manager",1,1,1,1
+"l10n_br_cep","l10n_br.cep","model_l10n_br_cep","base.group_partner_manager",1,1,1,1
+"l10n_br_partner_fiscal_type","l10n_br.partner.fiscal.type","model_l10n_br_partner_fiscal_type","base.group_partner_manager",1,1,1,1

=== added file 'l10n_br_base/security/l10n_br_security.xml'
--- l10n_br_base/security/l10n_br_security.xml	1970-01-01 00:00:00 +0000
+++ l10n_br_base/security/l10n_br_security.xml	2010-10-25 23:14:40 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+
+	<data>
+
+		<record id="menu_l10n_br_fiscal" model="ir.ui.menu">
+			<field eval="[(6,0,[ref('account.group_account_manager')])]" name="groups_id"/>
+		</record>
+
+	</data>
+
+</openerp>

=== added directory 'l10n_br_base/wizard'
=== modified file 'l10n_br_delivery/__openerp__.py'
--- l10n_br_delivery/__openerp__.py	2010-09-08 18:46:28 +0000
+++ l10n_br_delivery/__openerp__.py	2010-10-25 23:14:40 +0000
@@ -24,16 +24,11 @@
     'website' : 'http://openerpbrasil.org',
     'version' : '0.6',
     'depends' : [
-		'base', 
-		'account', 
-		'sale', 
-		'stock', 
-		'delivery',
-        'l10n_br'
+		'delivery', 
+		'l10n_br_sale', 
+		'l10n_br_stock', 
 		],
-    'init_xml': [
-
-				],
+    'init_xml': [],
     'update_xml' :  [
             		'account_invoice_view.xml',
             		'delivery_view.xml',

=== modified file 'l10n_br_delivery/account_invoice_view.xml'
--- l10n_br_delivery/account_invoice_view.xml	2010-09-28 22:51:17 +0000
+++ l10n_br_delivery/account_invoice_view.xml	2010-10-25 23:14:40 +0000
@@ -5,7 +5,7 @@
 		<record model="ir.ui.view" id="view_l10n_br_delivery_invoice_form">
 			<field name="name">l10n_br_delivery.invoice.form</field>
 			<field name="model">account.invoice</field>
-			<field name="inherit_id" ref="l10n_br.view_l10n_br_invoice_form"/>
+			<field name="inherit_id" ref="l10n_br_account.view_l10n_br_invoice_form"/>
 			<field name="arch" type="xml">
 				 <field name="document_serie_id" position="after">
 				 	<group colspan="4">
@@ -24,7 +24,7 @@
 		<record model="ir.ui.view" id="view_l10n_br_delivery_invoice_form1">
 			<field name="name">l10n_br_delivery.invoice.form1</field>
 			<field name="model">account.invoice</field>
-			<field name="inherit_id" ref="l10n_br.view_l10n_br_invoice_supplier_form"/>
+			<field name="inherit_id" ref="l10n_br_account.view_l10n_br_invoice_supplier_form"/>
 			<field name="arch" type="xml">
 				 <field name="fiscal_document_id" position="after">
 				 	<group colspan="4">

=== added directory 'l10n_br_sale'
=== added file 'l10n_br_sale/__init__.py'
--- l10n_br_sale/__init__.py	1970-01-01 00:00:00 +0000
+++ l10n_br_sale/__init__.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+import sale
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+

=== added file 'l10n_br_sale/__openerp__.py'
--- l10n_br_sale/__openerp__.py	1970-01-01 00:00:00 +0000
+++ l10n_br_sale/__openerp__.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,40 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+{
+    'name' : 'Brazilian Localization',
+    'description' : 'Brazilian Localization',
+    'category' : 'Localisation/Account Charts',
+    'author' : 'OpenERP Brasil',
+    'website' : 'http://openerpbrasil.org',
+    'version' : '0.6',
+    'depends' : [
+		'l10n_br_account', 
+        'sale',
+        'sale_fiscal_position_rule',
+		'l10n_br_stock'
+		],
+    'init_xml': [],
+    'update_xml' : [
+		'sale_view.xml',
+    ],
+    'installable': True
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_br_sale/sale.py'
--- l10n_br_sale/sale.py	1970-01-01 00:00:00 +0000
+++ l10n_br_sale/sale.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,264 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+import time 
+import netsvc
+import decimal_precision as dp
+from osv import fields, osv
+import pooler
+from tools import config
+from tools.translate import _
+
+##############################################################################
+# Pedido de venda customizado
+##############################################################################
+class sale_order(osv.osv):
+    
+    _inherit = 'sale.order'
+    
+    def onchange_partner_id(self, cr, uid, ids, part, shop_id, fiscal_operation_category_id):
+
+        result = super(sale_order, self).onchange_partner_id(cr, uid, ids, part)
+        result['value']['fiscal_position'] = False
+
+        if not part or not shop_id:
+            return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'partner_order_id': False, 'payment_term': False, 'fiscal_position': False, 'fiscal_operation_id': False}}
+        
+        obj_partner = self.pool.get('res.partner').browse(cr, uid, part)
+        fiscal_position = obj_partner.property_account_position.id
+        partner_fiscal_type = obj_partner.partner_fiscal_type_id.id
+        
+        if fiscal_position:
+            result['value']['fiscal_position'] = fiscal_position
+            result['value']['fiscal_operation_id'] = obj_partner.property_account_position.fiscal_operation_id.id
+            return result
+
+        obj_shop = self.pool.get('sale.shop').browse(cr, uid, shop_id)
+
+        company_addr = self.pool.get('res.partner').address_get(cr, uid, [obj_shop.company_id.partner_id.id], ['default'])
+        company_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [company_addr['default']])[0]
+        
+        from_country = company_addr_default.country_id.id
+        from_state = company_addr_default.state_id.id        
+
+        partner_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [result['value']['partner_invoice_id']])[0]
+
+        to_country = partner_addr_default.country_id.id
+        to_state = partner_addr_default.state_id.id
+        
+        fsc_pos_id = self.pool.get('account.fiscal.position.rule').search(cr, uid, [('company_id','=', obj_shop.company_id.id),('from_country','=',from_country),('from_state','=',from_state),('to_country','=',to_country),('to_state','=',to_state),('use_sale','=',True),('fiscal_operation_category_id','=',fiscal_operation_category_id),('partner_fiscal_type_id','=',partner_fiscal_type)])
+        if fsc_pos_id:
+            obj_fpo_rule = self.pool.get('account.fiscal.position.rule').browse(cr, uid, fsc_pos_id)[0]
+            result['value']['fiscal_position'] = obj_fpo_rule.fiscal_position_id.id
+            result['value']['fiscal_operation_id'] = obj_fpo_rule.fiscal_position_id.fiscal_operation_id.id
+        
+        return result
+    
+    def onchange_partner_invoice_id(self, cr, uid, ids, ptn_invoice_id, ptn_id, shop_id, fiscal_operation_category_id):
+        
+        result = super(sale_order, self).onchange_partner_invoice_id(cr, uid, ids, ptn_invoice_id, ptn_id, shop_id)
+        result['value']['fiscal_position'] = False
+
+        if not shop_id or not ptn_invoice_id or not ptn_id or not fiscal_operation_category_id:
+            return result
+  
+        partner = self.pool.get('res.partner').browse(cr, uid, ptn_id)
+        fiscal_position = partner.property_account_position.id or False
+        partner_fiscal_type = partner.partner_fiscal_type_id.id
+
+        if fiscal_position:
+            result['value']['fiscal_position'] = fiscal_position
+            result['value']['fiscal_operation_id'] = obj_partner.property_account_position.fiscal_operation_id.id
+            return result
+
+        obj_shop = self.pool.get('sale.shop').browse(cr, uid, shop_id)
+
+        company_addr = self.pool.get('res.partner').address_get(cr, uid, [obj_shop.company_id.partner_id.id], ['default'])
+        company_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [company_addr['default']])[0]
+
+        from_country = company_addr_default.country_id.id
+        from_state = company_addr_default.state_id.id
+        
+        partner_addr_invoice = self.pool.get('res.partner.address').browse(cr, uid, [ptn_invoice_id])[0]
+        
+        to_country = partner_addr_invoice.country_id.id
+        to_state = partner_addr_invoice.state_id.id
+        
+        fsc_pos_id = self.pool.get('account.fiscal.position.rule').search(cr, uid, [('company_id','=',obj_shop.company_id.id), ('from_country','=',from_country),('from_state','=',from_state),('to_country','=',to_country),('to_state','=',to_state),('use_sale','=',True),('fiscal_operation_category_id','=',fiscal_operation_category_id),('partner_fiscal_type_id','=',partner_fiscal_type)])
+        
+        if fsc_pos_id:
+            obj_fpo_rule = self.pool.get('account.fiscal.position.rule').browse(cr, uid, fsc_pos_id)[0]
+            result['value']['fiscal_position'] = obj_fpo_rule.fiscal_position_id.id
+            result['value']['fiscal_operation_id'] = obj_fpo_rule.fiscal_position_id.fiscal_operation_id.id
+
+        return result
+
+    def onchange_shop_id(self, cr, uid, ids, shop_id, ptn_id=False, ptn_invoice_id=False):
+        
+        result = super(sale_order, self).onchange_shop_id(cr, uid, ids, shop_id, ptn_id)
+        result['value']['fiscal_position'] = False
+        result['value']['fiscal_operation_id'] = False
+        
+        if not shop_id:
+            result['value']['fiscal_operation_category_id'] = False
+            return result
+        
+        obj_shop = self.pool.get('sale.shop').browse(cr, uid, shop_id)        
+        fiscal_operation_category_id = obj_shop.default_fo_category_id.id        
+        result['value']['fiscal_operation_category_id'] = fiscal_operation_category_id
+        
+        if not ptn_id or not ptn_invoice_id:
+            return result
+        
+        obj_partner = self.pool.get('res.partner').browse(cr, uid, ptn_id)
+        fiscal_position = obj_partner.property_account_position.id
+        partner_fiscal_type = obj_partner.partner_fiscal_type_id.id
+        
+        if fiscal_position:
+            result['value']['fiscal_position'] = fiscal_position
+            result['value']['fiscal_operation_id'] = obj_partner.property_account_position.fiscal_operation_id.id
+            return result
+
+        obj_shop = self.pool.get('sale.shop').browse(cr, uid, shop_id)
+
+        company_addr = self.pool.get('res.partner').address_get(cr, uid, [obj_shop.company_id.partner_id.id], ['default'])
+        company_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [company_addr['default']])[0]
+        
+        from_country = company_addr_default.country_id.id
+        from_state = company_addr_default.state_id.id        
+
+        partner_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [ptn_invoice_id])[0]
+
+        to_country = partner_addr_default.country_id.id
+        to_state = partner_addr_default.state_id.id
+        
+        fsc_pos_id = self.pool.get('account.fiscal.position.rule').search(cr, uid, [('company_id','=', obj_shop.company_id.id),('from_country','=',from_country),('from_state','=',from_state),('to_country','=',to_country),('to_state','=',to_state),('use_sale','=',True),('fiscal_operation_category_id','=',fiscal_operation_category_id),('partner_fiscal_type_id','=',partner_fiscal_type)])
+        if fsc_pos_id:
+            obj_fpo_rule = self.pool.get('account.fiscal.position.rule').browse(cr, uid, fsc_pos_id)[0]
+            result['value']['fiscal_position'] = obj_fpo_rule.fiscal_position_id.id
+            result['value']['fiscal_operation_id'] = obj_fpo_rule.fiscal_position_id.fiscal_operation_id.id
+        
+        return result
+    
+    def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception'], date_inv = False, context=None):
+        
+        result = super(sale_order, self).action_invoice_create(cr, uid, ids, grouped, states, date_inv, context)
+
+        if not result: 
+            return result
+
+        for order in self.browse(cr, uid, ids):
+            for invoice in order.invoice_ids:
+                if invoice.state in ('draft') and order.fiscal_operation_id:
+                    doc_serie_id = self.pool.get('l10n_br.document.serie').search(cr, uid,[('fiscal_document_id','=', order.fiscal_operation_id.fiscal_document_id.id),('active','=',True),('company_id','=',order.company_id.id)])
+                    if not doc_serie_id:
+                        raise osv.except_osv(_('Nenhuma série de documento fiscal !'),_("Não existe nenhuma série de documento fiscal cadastrada para empresa:  '%s'") % (order.company_id.name,))
+                    self.pool.get('account.invoice').write(cr, uid, invoice.id, {'fiscal_operation_category_id': order.fiscal_operation_category_id.id, 'fiscal_operation_id': order.fiscal_operation_id.id, 'cfop_id': order.fiscal_operation_id.cfop_id.id, 'fiscal_document_id': order.fiscal_operation_id.fiscal_document_id.id, 'document_serie_id': doc_serie_id[0]})
+                    for inv_line in invoice.invoice_line:
+                        self.pool.get('account.invoice.line').write(cr, uid, inv_line.id, {'cfop_id': order.fiscal_operation_id.cfop_id.id})
+
+        return result
+    
+    def action_ship_create(self, cr, uid, ids, *args):
+   
+        result = super(sale_order, self).action_ship_create(cr, uid, ids, *args)
+        
+        for order in self.browse(cr, uid, ids, context={}):
+            for picking in order.picking_ids:
+                self.pool.get('stock.picking').write(cr, uid, picking.id, {'fiscal_operation_category_id': order.fiscal_operation_category_id.id, 'fiscal_operation_id': order.fiscal_operation_id.id, 'fiscal_position': order.fiscal_position.id})
+        
+        return result
+            
+    def _amount_all(self, cr, uid, ids, field_name, arg, context):
+        res = super(sale_order, self)._amount_all(cr, uid, ids, field_name, arg, context)
+        
+        #Não é mostrado valores de impostos na ordem de venda
+        for order in self.browse(cr, uid, ids):
+            res[order.id]['amount_tax'] = 0
+            res[order.id]['amount_total'] = res[order.id]['amount_untaxed'] + res[order.id]['amount_tax']
+            
+        return res
+
+    def _get_order(self, cr, uid, ids, context={}):
+        result = super(sale_order, self)._get_order(cr, uid, ids, context)
+        return result.keys()
+
+    _columns = {
+                'fiscal_operation_category_id': fields.many2one('l10n_br.fiscal.operation.category', 'Categoria'),
+                'fiscal_operation_id': fields.many2one('l10n_br.fiscal.operation', 'Operação Fiscal', domain="[('fiscal_operation_category_id','=',fiscal_operation_category_id)]" ),
+                'amount_untaxed': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Untaxed Amount',
+                store = {
+                         'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
+                         'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
+                         },
+                multi='sums'),
+                'amount_tax': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Taxes',
+                store = {
+                         'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
+                         'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
+                         },
+                multi='sums'),
+                'amount_total': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Total',
+                store = {
+                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
+                         'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
+                         },
+                multi='sums'),
+               }
+    
+sale_order()
+
+##############################################################################
+# Linha da Ordem de Venda Customizada
+##############################################################################
+class sale_order_line(osv.osv):
+    _inherit = 'sale.order.line'
+    
+    def create_sale_order_line_invoice(self, cr, uid, ids, context=None):
+        result = super(sale_order_line, self).create_sale_order_line_invoice(cr, uid, ids, context)
+        inv_ids = []
+        if result:
+
+            for so_line in self.browse(cr, uid, ids):
+                for inv_line in so_line.invoice_lines:
+                    if inv_line.invoice_id.state in ('draft'):
+                        if inv_line.invoice_id.id not in inv_ids: 
+                            inv_ids.append(inv_line.id)
+                            self.pool.get('account.invoice').write(cr, uid, inv_line.invoice_id.id, {'fiscal_operation_category_id': so_line.order_id.fiscal_operation_category_id.id, 'fiscal_operation_id': so_line.order_id.fiscal_operation_id.id, 'cfop_id': so_line.order_id.fiscal_operation_id.cfop_id.id, 'fiscal_document_id': so_line.order_id.fiscal_operation_id.fiscal_document_id.id})
+                        self.pool.get('account.invoice.line').write(cr, uid, inv_line.id, {'cfop_id': so_line.order_id.fiscal_operation_id.cfop_id.id})
+            
+            
+            
+        return result
+
+sale_order_line()
+    
+##############################################################################
+# Estabelecimento Customizado
+##############################################################################
+class sale_shop(osv.osv):
+    
+    _inherit = 'sale.shop'
+    _columns = {
+                'default_fo_category_id': fields.many2one('l10n_br.fiscal.operation.category', 'Categoria Fiscal Padrão'),
+    }
+
+sale_shop()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_br_sale/sale_view.xml'
--- l10n_br_sale/sale_view.xml	1970-01-01 00:00:00 +0000
+++ l10n_br_sale/sale_view.xml	2010-10-25 23:14:40 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+
+	<data>
+
+		<record id="view_l10n_br_order_form1" model="ir.ui.view">
+			<field name="name">l10n_br_sale.order.form1</field>
+	   		<field name="model">sale.order</field>
+	   		<field name="inherit_id" ref="sale.view_order_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+	        	<field name="fiscal_position" position="replace">
+	        		<field name="fiscal_operation_category_id" required="1"/>
+					<field name="fiscal_operation_id" required="1"/>
+					<field domain="[('fiscal_operation_id','=',fiscal_operation_id)]" name="fiscal_position" />
+	        	</field>
+	        </field>
+		</record>
+		
+		<record id="view_l10n_br_order_form2" model="ir.ui.view">
+			<field name="name">l10n_br_sale.order.form2</field>
+	   		<field name="model">sale.order</field>
+	   		<field name="inherit_id" ref="sale.view_order_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+	        	<field name="partner_id" position="replace">
+	        		<field name="partner_id" 
+	        		context="{'partner_id':partner_id, 'fiscal_operation_category_id': fiscal_operation_category_id, 'pricelist_id':pricelist_id, 'default_name':name}"  
+	        		on_change="onchange_partner_id(partner_id, shop_id, fiscal_operation_category_id)" required="1"/>
+	        	</field>
+	        </field>
+		</record>
+		
+		<record id="view_l10n_br_order_form3" model="ir.ui.view">
+			<field name="name">l10n_br_sale.order.form3</field>
+	   		<field name="model">sale.order</field>
+	   		<field name="inherit_id" ref="sale.view_order_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+	        	<field name="shop_id" position="replace">
+					<field name="shop_id"  on_change="onchange_shop_id(shop_id, partner_id, partner_invoice_id)"  widget="selection" />
+	        	</field>
+	        </field>
+		</record>
+
+		<record id="view_l10n_br_order_form4" model="ir.ui.view">
+			<field name="name">l10n_br_sale.order.form4</field>
+	   		<field name="model">sale.order</field>
+	   		<field name="inherit_id" ref="sale_fiscal_position_rule.view_order_form2"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+	        	<field name="partner_invoice_id" position="replace">
+	        	<field domain="[('partner_id','=',partner_id)]" name="partner_invoice_id" on_change="onchange_partner_invoice_id(partner_invoice_id, partner_id, shop_id, fiscal_operation_category_id)"/>
+	        	</field>
+	        </field>
+		</record>
+		
+		
+		<record id="l10n_br_view_shop_form" model="ir.ui.view">
+			<field name="name">l10n_br_sale.sale.shop</field>
+	   		<field name="model">sale.shop</field>
+	   		<field name="inherit_id" ref="sale.view_shop_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+	        	<field name="project_id" position="after">
+					<field name="default_fo_category_id" required="1"/>
+	        	</field>
+	        </field>
+		</record>
+ 
+    </data>
+
+</openerp>
\ No newline at end of file

=== added directory 'l10n_br_stock'
=== added file 'l10n_br_stock/__init__.py'
--- l10n_br_stock/__init__.py	1970-01-01 00:00:00 +0000
+++ l10n_br_stock/__init__.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+import stock
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+

=== added file 'l10n_br_stock/__openerp__.py'
--- l10n_br_stock/__openerp__.py	1970-01-01 00:00:00 +0000
+++ l10n_br_stock/__openerp__.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,38 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+{
+    'name' : 'Brazilian Localization',
+    'description' : 'Brazilian Localization',
+    'category' : 'Localisation/Account Charts',
+    'author' : 'OpenERP Brasil',
+    'website' : 'http://openerpbrasil.org',
+    'version' : '0.6',
+    'depends' : [
+        'stock',
+		'l10n_br_account', 
+		],
+    'init_xml': [],
+    'update_xml' : [
+		'stock_view.xml',
+    ],
+    'installable': True
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_br_stock/stock.py'
--- l10n_br_stock/stock.py	1970-01-01 00:00:00 +0000
+++ l10n_br_stock/stock.py	2010-10-25 23:14:40 +0000
@@ -0,0 +1,85 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+#                                                                               #
+# Copyright (C) 2009  Renato Lima - Akretion                                    #
+#                                                                               #
+#This program is free software: you can redistribute it and/or modify           #
+#it under the terms of the GNU General Public License as published by           #
+#the Free Software Foundation, either version 3 of the License, or              #
+#(at your option) any later version.                                            #
+#                                                                               #
+#This program is distributed in the hope that it will be useful,                #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of                 #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  #
+#GNU General Public License for more details.                                   #
+#                                                                               #
+#You should have received a copy of the GNU General Public License              #
+#along with this program.  If not, see <http://www.gnu.org/licenses/>.          #
+#################################################################################
+
+from osv import osv, fields
+
+class stock_picking(osv.osv):
+    _inherit = "stock.picking"
+    _description = "Picking List"
+
+    _columns = {
+                'fiscal_operation_category_id': fields.many2one('l10n_br.fiscal.operation.category', 'Categoria'),
+                'fiscal_operation_id': fields.many2one('l10n_br.fiscal.operation', 'Operação Fiscal', domain="[('fiscal_operation_category_id','=',fiscal_operation_category_id)]"),
+                'fiscal_position': fields.many2one('account.fiscal.position', 'Posição Fiscal', domain="[('fiscal_operation_id','=',fiscal_operation_id)]"),
+                }
+    
+    def onchange_partner_in(self, cr, uid, context=None, partner_id=None,fiscal_operation_category_id=False,company_id=False):
+
+        result = super(stock_picking, self).onchange_partner_in(cr, uid, context, partner_id)
+        
+        result = {'value':{}}
+        
+        if not fiscal_operation_category_id or not company_id or not partner_id:
+            return result
+        
+        partner_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [partner_id])[0]
+        
+        to_country = partner_addr_default.country_id.id
+        to_state = partner_addr_default.state_id.id
+        
+        obj_partner = self.pool.get('res.partner').browse(cr, uid, [partner_addr_default.partner_id.id])[0]
+        fiscal_position = obj_partner.property_account_position
+        partner_fiscal_type = obj_partner.partner_fiscal_type_id.id
+
+        if fiscal_position:
+            result['value']['fiscal_position'] = fiscal_position
+            result['value']['fiscal_operation_id'] = obj_partner.property_account_position.fiscal_operation_id.id
+            return result
+
+        obj_company = self.pool.get('res.company').browse(cr, uid, [company_id])[0]
+
+        company_addr = self.pool.get('res.partner').address_get(cr, uid, [obj_company.partner_id.id], ['default'])
+        company_addr_default = self.pool.get('res.partner.address').browse(cr, uid, [company_addr['default']])[0]
+        
+        from_country = company_addr_default.country_id.id
+        from_state = company_addr_default.state_id.id
+        
+        fsc_pos_id = self.pool.get('account.fiscal.position.rule').search(cr, uid, [('company_id','=', company_id),('from_country','=',from_country),('from_state','=',from_state),('to_country','=',to_country),('to_state','=',to_state),('use_sale','=',True),('fiscal_operation_category_id','=',fiscal_operation_category_id),('partner_fiscal_type_id','=',partner_fiscal_type),('use_picking','=',True)])
+        if fsc_pos_id:
+            obj_fpo_rule = self.pool.get('account.fiscal.position.rule').browse(cr, uid, fsc_pos_id)[0]
+            result['value']['fiscal_position'] = obj_fpo_rule.fiscal_position_id.id
+            result['value']['fiscal_operation_id'] = obj_fpo_rule.fiscal_position_id.fiscal_operation_id.id
+
+        return result
+
+    def _invoice_line_hook(self, cr, uid, move_line, invoice_line_id):
+        '''Call after the creation of the invoice line'''
+
+        self.pool.get('account.invoice.line').write(cr, uid, invoice_line_id, {'cfop_id': move_line.picking_id.fiscal_operation_id.cfop_id.id})
+
+        return super(stock_picking, self)._invoice_line_hook(cr, uid, move_line, invoice_line_id)
+
+    def _invoice_hook(self, cr, uid, picking, invoice_id):
+        '''Call after the creation of the invoice'''
+
+        self.pool.get('account.invoice').write(cr, uid, invoice_id, {'fiscal_operation_category_id': picking.fiscal_operation_category_id.id, 'fiscal_operation_id': picking.fiscal_operation_id.id, 'cfop_id': picking.fiscal_operation_id.cfop_id.id, 'fiscal_document_id': picking.fiscal_operation_id.fiscal_document_id.id, 'fiscal_position': picking.fiscal_position.id})
+
+        return super(stock_picking, self)._invoice_hook(cr, uid, picking, invoice_id)
+
+stock_picking()
\ No newline at end of file

=== added file 'l10n_br_stock/stock_view.xml'
--- l10n_br_stock/stock_view.xml	1970-01-01 00:00:00 +0000
+++ l10n_br_stock/stock_view.xml	2010-10-25 23:14:40 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+		<record id="l10n_br_view_picking_form" model="ir.ui.view">
+			<field name="name">l10n_br_stock.picking.form</field>
+	   		<field name="model">stock.picking</field>
+	   		<field name="inherit_id" ref="stock.view_picking_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+  				<field name="move_type" position="after">
+  					<group colspan="2" col="2" attrs="{'invisible':[('invoice_state','!=','2binvoiced')]}">
+			           <field name="fiscal_operation_category_id"/>
+		                <newline/>
+			            <field name="fiscal_operation_id" />
+			            <newline/>
+			            <field name="fiscal_position" domain="[('fiscal_operation_id','=',fiscal_operation_id)]" />
+					</group>
+	            </field>
+	        </field>
+		</record>
+
+		<record id="l10n_br_view_picking_out_form1" model="ir.ui.view">
+			<field name="name">l10n_br_stock.picking.out.form1</field>
+	   		<field name="model">stock.picking</field>
+	   		<field name="inherit_id" ref="stock.view_picking_out_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+				<field name="move_type" position="after">
+					<group colspan="2" attrs="{'invisible':[('invoice_state','!=','2binvoiced')]}">
+			            <field name="fiscal_operation_category_id" />
+		                <newline/>
+			            <field name="fiscal_operation_id" />
+			            <newline/>
+			            <field name="fiscal_position" domain="[('fiscal_operation_id','=',fiscal_operation_id)]" />
+					</group>
+				</field>
+			</field>
+		</record>
+
+		<record id="l10n_br_view_picking_out_form2" model="ir.ui.view">
+			<field name="name">l10n_br_stock.picking.out.form2</field>
+	   		<field name="model">stock.picking</field>
+	   		<field name="inherit_id" ref="stock.view_picking_out_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+				<field name="address_id" position="replace">
+			           <field name="address_id" required="1" on_change="onchange_partner_in(address_id, fiscal_operation_category_id, company_id)" />
+	            </field>
+			</field>
+		</record>		
+
+		<record id="l10n_br_view_picking_in_form1" model="ir.ui.view">
+			<field name="name">l10n_br_stock.picking.in.form1</field>
+	   		<field name="model">stock.picking</field>
+	   		<field name="inherit_id" ref="stock.view_picking_in_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+	   			<notebook>
+			   		<page string="Other Info" position="inside">
+		          		<group colspan="2" attrs="{'invisible':[('invoice_state','!=','2binvoiced')]}">
+		          		<separator colspan="2" string="l10n_br"/>
+		          		<newline/>
+			            <field name="fiscal_operation_category_id" />
+		                <newline/>
+			            <field name="fiscal_operation_id" />
+			            <newline/>
+			            <field name="fiscal_position" domain="[('fiscal_operation_id','=',fiscal_operation_id)]"/>
+					</group>
+		        	</page>
+	        	</notebook>
+	        </field>	
+		</record>
+		
+		<record id="l10n_br_view_picking_in_form2" model="ir.ui.view">
+			<field name="name">l10n_br_stock.picking.in.form2</field>
+	   		<field name="model">stock.picking</field>
+	   		<field name="inherit_id" ref="stock.view_picking_in_form"/>
+	   		<field name="priority">32</field>
+	   		<field name="arch" type="xml">
+	   			<field name="address_id" position="replace">
+			           <field name="address_id" string="Supplier" context="{'contact_display':'partner'}" on_change="onchange_partner_in(address_id, fiscal_operation_category_id, company_id)" />
+	            </field>
+	        </field>	
+		</record>
+	</data>
+
+</openerp>
\ No newline at end of file


Follow ups