Skip to content

[16.0][IMP] Adicionado cadastro de Natureza Jurídica #3786

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion l10n_br_cnpj_search/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,4 @@
from . import l10n_br_base_party_mixin
from . import res_config_settings
from . import cnpj_webservice
from . import res_partner
from . import res_company
38 changes: 31 additions & 7 deletions l10n_br_cnpj_search/models/cnpj_webservice.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,16 +116,27 @@ def _validate(self, response):
if response.status_code != 200:
raise ValidationError(_("%s") % response.reason)

@api.model
def _get_legal_nature(self, raw_code):
code = punctuation_rm(raw_code)
legal_nature_id = False
if code:
legal_nature_id = (
self.env["l10n_br_fiscal.legal.nature"]
.search([("code_unmasked", "=", code)])
.id
)
return legal_nature_id

@api.model
def _get_cnae(self, raw_code):
code = punctuation_rm(raw_code)
cnae_id = False

if code:
formatted_code = code[0:4] + "-" + code[4] + "/" + code[5:]
cnae_id = (
self.env["l10n_br_fiscal.cnae"]
.search([("code", "=", formatted_code)])
.search([("code_unmasked", "=", code)])
.id
)

Expand Down Expand Up @@ -168,7 +179,7 @@ def _receitaws_import_data(self, data):
"district": self.get_data(data, "bairro", title=True),
"street_number": self.get_data(data, "numero"),
"zip": self.get_data(data, "cep"),
"legal_nature": self.get_data(data, "natureza_juridica"),
"legal_nature_id": self._receitaws_get_legal_nature(data),
"phone": phone,
"mobile": mobile,
"state_id": state_id,
Expand Down Expand Up @@ -221,6 +232,16 @@ def _get_state_city(self, data):

return [state_id, city_id]

@api.model
def _receitaws_get_legal_nature(self, data):
legal_nature = data.get("natureza_juridica")
if legal_nature:
legal_nature = legal_nature.split(" - ")
if len(legal_nature) > 1:
legal_nature_code = legal_nature[0]
return self._get_legal_nature(legal_nature_code)
return False

@api.model
def _receitaws_get_cnae(self, data):
if data.get("atividade_principal"):
Expand Down Expand Up @@ -280,7 +301,6 @@ def _serpro_import_data(self, data):
name = fantasy_name if fantasy_name else legal_name
phone, mobile = self._serpro_get_phones(data)
address = data.get("endereco")
nature = data.get("naturezaJuridica")
cep = self.get_data(address, "cep")

res = {
Expand All @@ -291,8 +311,7 @@ def _serpro_import_data(self, data):
"street2": self.get_data(address, "complemento", title=True),
"district": self.get_data(address, "bairro", title=True),
"street_number": self.get_data(address, "numero"),
"legal_nature": self.get_data(nature, "codigo", title=True)
+ self.get_data(nature, "descricao", title=True),
"legal_nature_id": self._serpro_get_legal_nature(data),
"zip": cep,
"phone": phone,
"mobile": mobile,
Expand Down Expand Up @@ -388,9 +407,14 @@ def _get_city_id(self, cep):

return cep_values.get("city_id")

@api.model
def _serpro_get_legal_nature(self, data):
legal_nature = data.get("naturezaJuridica")
legal_nature_code = self.get_data(legal_nature, "codigo")
return self._get_legal_nature(legal_nature_code)

@api.model
def _serpro_get_cnae(self, data):
cnae_main = data.get("cnaePrincipal")
cnae_code = self.get_data(cnae_main, "codigo")

return self._get_cnae(cnae_code)
5 changes: 4 additions & 1 deletion l10n_br_cnpj_search/models/l10n_br_base_party_mixin.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ class PartyMixin(models.AbstractModel):

cnae_main_id = fields.Many2one(comodel_name="l10n_br_fiscal.cnae")

legal_nature = fields.Char()
legal_nature_id = fields.Many2one(
comodel_name="l10n_br_fiscal.legal.nature",
string="Legal Nature",
)

br_currency_id = fields.Many2one(
comodel_name="res.currency",
Expand Down
2 changes: 0 additions & 2 deletions l10n_br_cnpj_search/models/res_company.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ class ResCompany(models.Model):

mobile = fields.Char(related="partner_id.mobile")

legal_nature = fields.Char(related="partner_id.legal_nature")

company_currency_id = fields.Many2one(
"res.currency",
related="currency_id",
Expand Down
17 changes: 0 additions & 17 deletions l10n_br_cnpj_search/models/res_partner.py

This file was deleted.

5 changes: 1 addition & 4 deletions l10n_br_cnpj_search/views/res_company_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,9 @@
<field name="inherit_id" ref="l10n_br_fiscal.fiscal_res_company_form" />
<field name="priority">99</field>
<field name="arch" type="xml">
<field name="cnae_main_id" position="after">
<field name="cnae_secondary_ids" widget="many2many_tags" />
<field name="cnae_secondary_ids" position="after">
<field name="equity_capital" widget="monetary" />
<field name="legal_nature" />
</field>

<field name="cnpj_cpf" position="replace">
<label for="cnpj_cpf" string="CNPJ" />
<div class="o_row" colspan="1">
Expand Down
4 changes: 1 addition & 3 deletions l10n_br_cnpj_search/views/res_partner_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,8 @@
<field name="priority">99</field>
<field name="inherit_id" ref="l10n_br_fiscal.partner_form" />
<field name="arch" type="xml">
<field name="cnae_main_id" position="after">
<field name="cnae_secondary_ids" widget="many2many_tags" />
<field name="cnae_secondary_ids" position="after">
<field name="equity_capital" widget="monetary" />
<field name="legal_nature" />
</field>

<field name="cnpj_cpf" position="replace">
Expand Down
4 changes: 2 additions & 2 deletions l10n_br_cnpj_search/wizard/partner_cnpj_search_wizard.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class PartnerCnpjSearchWizard(models.TransientModel):
phone = fields.Char()
mobile = fields.Char()
email = fields.Char()
legal_nature = fields.Char()
legal_nature_id = fields.Many2one(comodel_name="l10n_br_fiscal.legal.nature")
currency_id = fields.Many2one(
comodel_name="res.currency",
default=lambda self: self.env.ref("base.BRL"),
Expand Down Expand Up @@ -112,7 +112,7 @@ def action_update_partner(self):
"phone": self.phone,
"mobile": self.mobile,
"email": self.email,
"legal_nature": self.legal_nature,
"legal_nature_id": self.legal_nature_id,
"equity_capital": self.equity_capital,
"cnae_main_id": self.cnae_main_id,
"cnae_secondary_ids": self.cnae_secondary_ids,
Expand Down
2 changes: 1 addition & 1 deletion l10n_br_cnpj_search/wizard/partner_cnpj_search_wizard.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
</group>

<group name="Other Information" string="Other Information">
<field name="legal_nature" />
<field name="legal_nature_id" />
<field name="equity_capital" widget="monetary" />
<field name="cnae_main_id" string="Main CNAE" />
<field
Expand Down
2 changes: 1 addition & 1 deletion l10n_br_crm_cnpj_search/models/crm_lead.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def _prepare_customer_values(self, name, is_company, parent_id=False):
"inscr_est": self.inscr_est,
"inscr_mun": self.inscr_mun,
"suframa": self.suframa,
"legal_nature": self.legal_nature,
"legal_nature_id": self.legal_nature_id.id,
"equity_capital": self.equity_capital,
"cnae_main_id": self.cnae_main_id.id,
"cnae_secondary_ids": [(6, 0, self.cnae_secondary_ids.ids)],
Expand Down
2 changes: 1 addition & 1 deletion l10n_br_crm_cnpj_search/views/crm_lead_form.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
<page name="lead" position="inside">
<group string="Fiscal">
<group>
<field name="legal_nature" string="Natureza jurídica" />
<field name="legal_nature_id" string="Natureza jurídica" />
<field name="equity_capital" string="Capital social" />
</group>
<group>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def action_update_partner(self):
"phone": self.phone,
"mobile": self.mobile,
"email_from": self.email,
"legal_nature": self.legal_nature,
"legal_nature_id": self.legal_nature_id.id,
"equity_capital": self.equity_capital,
"cnae_main_id": self.cnae_main_id.id,
"cnae_secondary_ids": [(6, 0, self.cnae_secondary_ids.ids)]
Expand Down
2 changes: 2 additions & 0 deletions l10n_br_fiscal/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
"data/l10n_br_fiscal_server_action.xml",
"data/ir_cron.xml",
"data/l10n_br_fiscal_comment_data.xml",
"data/l10n_br_fiscal.legal.nature.csv",
"data/l10n_br_fiscal.cnae.csv",
"data/l10n_br_fiscal.cfop.csv",
"data/l10n_br_fiscal_cfop_data.xml",
Expand All @@ -58,6 +59,7 @@
"data/l10n_br_fiscal.cest.csv",
"data/l10n_br_fiscal_icms_tax_definition_data.xml",
# Views
"views/legal_nature_view.xml",
"views/cnae_view.xml",
"views/cfop_view.xml",
"views/comment_view.xml",
Expand Down
82 changes: 82 additions & 0 deletions l10n_br_fiscal/data/l10n_br_fiscal.legal.nature.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
"id","code","name"
"legal_nature_1015","101-5","Órgão Público do Poder Executivo Federal"
"legal_nature_1023","102-3","Órgão Público do Poder Executivo Estadual ou do Distrito Federal"
"legal_nature_1031","103-1","Órgão Público do Poder Executivo Municipal"
"legal_nature_1040","104-0","Órgão Público do Poder Legislativo Federal"
"legal_nature_1058","105-8","Órgão Público do Poder Legislativo Estadual ou do Distrito Federal"
"legal_nature_1066","106-6","Órgão Público do Poder Legislativo Municipal"
"legal_nature_1074","107-4","Órgão Público do Poder Judiciário Federal"
"legal_nature_1082","108-2","Órgão Público do Poder Judiciário Estadual"
"legal_nature_1104","110-4","Autarquia Federal"
"legal_nature_1112","111-2","Autarquia Estadual ou do Distrito Federal"
"legal_nature_1120","112-0","Autarquia Municipal"
"legal_nature_1139","113-9","Fundação Pública de Direito Público Federal"
"legal_nature_1147","114-7","Fundação Pública de Direito Público Estadual ou do Distrito Federal"
"legal_nature_1155","115-5","Fundação Pública de Direito Público Municipal"
"legal_nature_1163","116-3","Órgão Público Autônomo Federal"
"legal_nature_1171","117-1","Órgão Público Autônomo Estadual ou do Distrito Federal"
"legal_nature_1180","118-0","Órgão Público Autônomo Municipal"
"legal_nature_1198","119-8","Comissão Polinacional"
"legal_nature_1201","120-1","Fundo Público"
"legal_nature_1210","121-0","Consórcio Público de Direito Público (Associação Pública)"
"legal_nature_1228","122-8","Consórcio Público de Direito Privado"
"legal_nature_1236","123-6","Estado ou Distrito Federal"
"legal_nature_1244","124-4","Município"
"legal_nature_1252","125-2","Fundação Pública de Direito Privado Federal"
"legal_nature_1260","126-0","Fundação Pública de Direito Privado Estadual ou do Distrito Federal"
"legal_nature_1279","127-9","Fundação Pública de Direito Privado Municipal"
"legal_nature_1287","128-7","Fundo Público da Administração Indireta Federal"
"legal_nature_1295","129-5","Fundo Público da Administração Indireta Estadual ou do Distrito Federal"
"legal_nature_1309","130-9","Fundo Público da Administração Indireta Municipal"
"legal_nature_1317","131-7","Fundo Público da Administração Direta Federal"
"legal_nature_1325","132-5","Fundo Público da Administração Direta Estadual ou do Distrito Federal"
"legal_nature_1333","133-3","Fundo Público da Administração Direta Municipal"
"legal_nature_2011","201-1","Empresa Pública"
"legal_nature_2038","203-8","Sociedade de Economia Mista"
"legal_nature_2046","204-6","Sociedade Anônima Aberta"
"legal_nature_2054","205-4","Sociedade Anônima Fechada"
"legal_nature_2062","206-2","Sociedade Empresária Limitada"
"legal_nature_2070","207-0","Sociedade Empresária em Nome Coletivo"
"legal_nature_2089","208-9","Sociedade Empresária em Comandita Simples"
"legal_nature_2097","209-7","Sociedade Empresária em Comandita por Ações"
"legal_nature_2127","212-7","Sociedade em Conta de Participação"
"legal_nature_2135","213-5","Empresário (Individual)"
"legal_nature_2143","214-3","Cooperativa"
"legal_nature_2151","215-1","Consórcio de Sociedades"
"legal_nature_2160","216-0","Grupo de Sociedades"
"legal_nature_2178","217-8","Estabelecimento, no Brasil, de Sociedade Estrangeira"
"legal_nature_2194","219-4","Estabelecimento de Empresa Binacional Argentino-Brasileira"
"legal_nature_2216","221-6","Empresa Domiciliada no Exterior"
"legal_nature_2224","222-4","Clube/Fundo de Investimento"
"legal_nature_2232","223-2","Sociedade Simples Pura"
"legal_nature_2240","224-0","Sociedade Simples Limitada"
"legal_nature_2259","225-9","Sociedade Simples em Nome Coletivo"
"legal_nature_2267","226-7","Sociedade Simples em Comandita Simples"
"legal_nature_2275","227-5","Empresa Binacional"
"legal_nature_2283","228-3","Consórcio de Empregadores"
"legal_nature_2291","229-1","Consórcio Simples"
"legal_nature_2321","232-1","Sociedade Unipessoal de Advocacia"
"legal_nature_2330","233-0","Cooperativas de Consumo"
"legal_nature_3034","303-4","Serviço Notarial e Registral (Cartório)"
"legal_nature_3069","306-9","Fundação Privada"
"legal_nature_3077","307-7","Serviço Social Autônomo"
"legal_nature_3085","308-5","Condomínio Edilício"
"legal_nature_3107","310-7","Comissão de Conciliação Prévia"
"legal_nature_3115","311-5","Entidade de Mediação e Arbitragem"
"legal_nature_3131","313-1","Entidade Sindical"
"legal_nature_3204","320-4","Estabelecimento, no Brasil, de Fundação ou Associação Estrangeiras"
"legal_nature_3212","321-2","Fundação ou Associação domiciliada no exterior"
"legal_nature_3220","322-0","Organização Religiosa"
"legal_nature_3239","323-9","Comunidade Indígena"
"legal_nature_3247","324-7","Fundo Privado"
"legal_nature_3255","325-5","Órgão de Direção Nacional de Partido Político"
"legal_nature_3263","326-3","Órgão de Direção Regional de Partido Político"
"legal_nature_3271","327-1","Órgão de Direção Local de Partido Político"
"legal_nature_3301","330-1","Organização Social (OS)"
"legal_nature_3999","399-9","Associação Privada"
"legal_nature_4014","401-4","Empresa Individual Imobiliária"
"legal_nature_4090","409-0","Candidato a Cargo Político Eletivo"
"legal_nature_4120","412-0","Produtor Rural (Pessoa Física)"
"legal_nature_5010","501-0","Organização Internacional"
"legal_nature_5029","502-9","Representação Diplomática Estrangeira"
"legal_nature_5037","503-7","Outras Instituições Extraterritoriais"
6 changes: 6 additions & 0 deletions l10n_br_fiscal/demo/company_demo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
name="fiscal_profile_id"
ref="l10n_br_fiscal.partner_fiscal_profile_snc"
/>
<field name="legal_nature_id" ref="l10n_br_fiscal.legal_nature_2062" />
</record>

<!-- Empresa Lucro Presumido -->
Expand All @@ -15,6 +16,7 @@
name="fiscal_profile_id"
ref="l10n_br_fiscal.partner_fiscal_profile_cnt"
/>
<field name="legal_nature_id" ref="l10n_br_fiscal.legal_nature_2062" />
</record>

<!-- Empresa Simples Nacional -->
Expand All @@ -23,6 +25,7 @@
name="fiscal_profile_id"
ref="l10n_br_fiscal.partner_fiscal_profile_snc"
/>
<field name="legal_nature_id" ref="l10n_br_fiscal.legal_nature_2062" />
</record>

<!-- Sua Empresa -->
Expand All @@ -36,6 +39,7 @@
/>
<field name="tax_ipi_id" ref="l10n_br_fiscal.tax_ipi_outros" />
<field name="tax_icms_id" ref="l10n_br_fiscal.tax_icms_sn_com_credito" />
<field name="legal_nature_id" ref="l10n_br_fiscal.legal_nature_2062" />
<field name="cnae_main_id" ref="l10n_br_fiscal.cnae_3101200" />
<field name="document_type_id" ref="l10n_br_fiscal.document_55" />
</record>
Expand Down Expand Up @@ -107,6 +111,7 @@
<field name="is_industry" eval="True" />
<field name="ripi" eval="True" />
<field name="icms_regulation_id" ref="tax_icms_regulation" />
<field name="legal_nature_id" ref="l10n_br_fiscal.legal_nature_2062" />
<field name="cnae_main_id" ref="l10n_br_fiscal.cnae_3101200" />
<field name="piscofins_id" ref="l10n_br_fiscal.tax_pis_cofins_columativo" />
<field name="document_type_id" ref="l10n_br_fiscal.document_55" />
Expand Down Expand Up @@ -196,6 +201,7 @@
/>
<field name="tax_ipi_id" ref="l10n_br_fiscal.tax_ipi_outros" />
<field name="tax_icms_id" ref="l10n_br_fiscal.tax_icms_sn_com_credito" />
<field name="legal_nature_id" ref="l10n_br_fiscal.legal_nature_2062" />
<field name="cnae_main_id" ref="l10n_br_fiscal.cnae_3101200" />
<field name="document_type_id" ref="l10n_br_fiscal.document_55" />
<field name="annual_revenue">815000.00</field>
Expand Down
1 change: 1 addition & 0 deletions l10n_br_fiscal/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from . import ibpt
from . import cfop
from . import cst
from . import legal_nature
from . import cnae
from . import nbs
from . import service_type
Expand Down
20 changes: 20 additions & 0 deletions l10n_br_fiscal/models/legal_nature.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright (C) 2025 Renato Lima - Akretion <renato.lima@akretion.com.br>
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html

from odoo import fields, models


class LegalNature(models.Model):
_name = "l10n_br_fiscal.legal.nature"
_inherit = "l10n_br_fiscal.data.abstract"
_description = "Legal Nature"

code = fields.Char(size=5)

_sql_constraints = [
(
"fiscal_legal_nature_code_uniq",
"unique (code)",
"Legal Nature already exists with this code !",
)
]
Loading