Repository
OCA/l10n-brazil · module folder · Try on Runboat
Module version
Category
Localisation
Folder size
0.93 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/l10n-brazil
Last tracking update
2026-08-14 23:15:54
Authors
Akretion, Odoo Community Association (OCA), KMEE
Maintainers
Akretion, Odoo Community Association (OCA), KMEE
Committers
Raphaël Valyi, Renato Lima, Weblate, OCA-git-bot, oca-ci, Magno Costa, CristianoMafraJunior
Odoo dependencies
Python dependencies
brazilfiscalreport, erpbrasil.assinatura, erpbrasil.base, erpbrasil.edoc, erpbrasil.transmissao, nfelib, email-validator, num2words, phonenumbers
System dependencies
None
Required by
l10n_br_ie_search
Description
Este módulo permite a emissão de NF-e.

Mais especificamente ele:  
- mapea os campos de NF-e do módulo `l10n_br_nfe_spec` com os campos
  Odoo em especial os campos dos módulos `l10n_br_base` e
  `l10n_br_fiscal`
- usa a logica do módulo `spec_driven_model` para realizar esse
  mapeamento de forma dinâmica, em especial ele usa o sistema de modelos
  com várias camadas, ou `StackedModel`, com os modelos
  `l10n_br_fiscal.document`, `l10n_br_fiscal.document.line` e
  `l10n_br_fiscal.document.related` que tem varios niveis hierarquicos
  de elementos XML que estão sendo denormalizados dentro desses modelos
  Odoo 
- permite a exportação e importação de XML de NF-e
- tem wizards para implementar a comunicação SOAP de NF-e com a SEFAZ
  (Autorização, Cancelamento, Inutilização...)
- implementa a autorização, inutilização e contingência de documentos
  NFC-e

Módulos relacionados:  
- este módulo não depende do módulo `account` do Odoo. A integração com
  o financeiro do módulo `account` é realizada no módulo
  `l10n_br_account_nfe` (tags dup e pag em especial)
- existe também o módulo `l10n_br_delivery_nfe` que faz a integração do
  módulo `l10n_br_nfe` com o módulo `delivery` do Odoo (tags de
  transportadora e de frete em especial)

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
document_import_wizard_form document_import_wizard.form l10n_br_fiscal.document.import.wizard form Inherits l10n_br_fiscal.document_import_wizard_form
l10n_br_nfe_import_xml_products_tree l10n_br_nfe.import_xml.products.tree l10n_br_nfe.import_xml.products list New
l10n_br_nfe_product_supplierinfo_form_view l10n_br_nfe.product.supplierinfo.form.view product.supplierinfo form Inherits product.product_supplierinfo_form_view
l10n_br_nfe_product_supplierinfo_tree_view l10n_br_nfe.product.supplierinfo.tree.view product.supplierinfo tree Inherits product.product_supplierinfo_tree_view
nfe_40_infadic_form nfe.40.infadic.form nfe.40.infadic form New
nfe_40_vol_form nfe.40.vol.form nfe.40.vol form New
nfe_dfe_form l10n_br_nfe.dfe.form l10n_br_fiscal.dfe form Inherits l10n_br_fiscal_dfe.dfe_form
nfe_di_form nfe.40.di.form nfe.40.di form New
nfe_di_tree nfe.40.di.tree nfe.40.di list New
nfe_document_edi_form_inherit l10n_br_nfe_edi.document.form.inherit l10n_br_fiscal.document form Inherits l10n_br_fiscal_edi.document_form
nfe_document_form_inherit l10n_br_nfe.document.form.inherit l10n_br_fiscal.document form Inherits l10n_br_fiscal.document_form
nfe_document_line_form l10n_br_nfe.document.line.form l10n_br_fiscal.document.line form Inherits l10n_br_fiscal.document_line_form
nfe_res_company_form nfe.res.company.form res.company form Inherits l10n_br_fiscal.fiscal_res_company_form
nfe_res_config_settings_form nfe.res.config.settings.view.form res.config.settings form Inherits l10n_br_fiscal.l10n_br_fiscal_res_config_settings_form
report_danfe_nfce report_danfe_nfce ir.ui.view qweb New
view_l10n_br_nfe_mde_filter l10n_br_nfe_mde.select l10n_br_nfe.mde search New
view_l10n_br_nfe_mde_form l10n_br_nfe_mde.form l10n_br_nfe.mde form New
view_l10n_br_nfe_mde_tree l10n_br_nfe_mde.tree l10n_br_nfe.mde list New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (19)

New fields (0)

No new fields.

Public methods (1)
  • render_danfe_brazilfiscalreport(self, nfe, nfe_xml)

New fields (0)

No new fields.

Public methods (1)
  • match_or_create_m2o(self, rec_dict, parent_dict, model=None)
    @api.model
    If CEST not found, break hard, don't create it

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • mde_ids One2many → l10n_br_nfe.mde
    comodel_name='l10n_br_nfe.mde' inverse_name='dfe_id' string='Manifestações do Destinatário Importadas'
Public methods (3)
  • find_mde_by_key(self, key)
    @api.model
  • import_documents(self)
  • parse_procNFe(self, xml)
    @api.model

New fields (2)
  • imported_products_ids One2many → l10n_br_nfe.import_xml.products
    comodel_name='l10n_br_nfe.import_xml.products' inverse_name='import_xml_id' string='Imported Products'
  • nat_op Char
    string='Natureza da Operação'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • match_or_create_m2o(self, rec_dict, parent_dict, model=None)
    @api.model
    If IpiGuideline not found, break hard, don't create it

New fields (23)
  • cfop_xml Char
    string='XML CFOP'
  • icms_percent Char
    string='Alíquota ICMS'
  • icms_value Char
    string='ICMS Value'
  • import_xml_id Many2one → l10n_br_fiscal.document.import.wizard
    comodel_name='l10n_br_fiscal.document.import.wizard'
  • imported_partner_id Many2one
    related='import_xml_id.partner_id'
  • ipi_percent Char
    string='Alíquota IPI'
  • ipi_value Char
    string='IPI Value'
  • ncm_internal Char
    related='product_id.ncm_id.code' string='Internal NCM Code'
  • ncm_xml Char
    string='XML NCM Code'
  • new_cfop_id Many2one → l10n_br_fiscal.cfop
    comodel_name='l10n_br_fiscal.cfop' string='Change CFOP'
  • price_unit_com Float
    string='Comercial Price Unit'
  • price_unit_trib Float
    string='Fiscal Price Unit'
  • product_code Char
    string='XML Product Code'
  • product_id Many2one → product.product
    comodel_name='product.product' string='Product Internal Reference'
  • product_name Char
  • product_supplier_id Many2one → product.supplierinfo
    comodel_name='product.supplierinfo' string='Product Supplier'
  • quantity_com Float
    string='Comercial Quantity'
  • quantity_trib Float
  • total Float
  • uom_com Char
    string='UOM Comercial'
  • uom_conversion_factor Float
    default=1 string='UOM Conversion Factor'
  • uom_internal Many2one → uom.uom
    comodel_name='uom.uom' help='Internal UoM, equivalent to the comercial one in the document'
  • uom_trib Char
    string='UOM Fiscal'
Public methods (0)

No public methods.

New fields (25)
  • attachment_id Many2one → ir.attachment
    comodel_name='ir.attachment'
  • authorization_datetime Datetime
    index=True string='Authorization Date'
  • authorization_protocol Char
    size=60
  • cancellation_datetime Datetime
    index=True string='Cancellation Date'
  • cancellation_protocol Char
    size=60
  • cnpj_cpf Char
    size=18 string='CNPJ/CPF'
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • dfe_id Many2one → l10n_br_fiscal.dfe
    comodel_name='l10n_br_fiscal.dfe' string='DF-e'
  • digest_value Char
    size=28
  • document_id Many2one → l10n_br_fiscal.document
    comodel_name='l10n_br_fiscal.document' string='Fiscal Document'
  • document_state Selection
    index=True selection=SITUACAO_NFE
  • document_value Float
    digits=(18, 2) readonly=True string='Document Total Value'
  • emission_datetime Datetime
    default=fields.Datetime.now index=True string='Emission Date'
  • emitter Char
    size=60
  • ie Char
    size=18 string='Inscrição estadual'
  • inclusion_datetime Datetime
    default=fields.Datetime.now index=True string='Inclusion Date'
  • inclusion_mode Char
    size=255
  • key Char
    size=44 string='Access Key'
  • nsu Char
    index=True size=25 string='NSU'
  • number Float
    digits=(18, 0) index=True string='Document Number'
  • operation_type Selection
    selection=OPERATION_TYPE
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Supplier (partner)'
  • schema Selection
    selection=SCHEMAS
  • serie Char
    index=True size=3
  • state Selection
    index=True selection=SITUACAO_MANIFESTACAO string='Manifestation State'
Public methods (11)
  • action_ciencia_emissao(self)
  • action_confirmar_operacacao(self)
  • action_download_xml(self)
  • action_negar_operacao(self)
  • action_operacao_desconhecida(self)
  • action_send_event(self, operation, valid_codes, new_state)
  • create_xml_attachment(self, xml)
  • download_attachment(self, attachment_id)
  • import_document(self)
  • import_document_multi(self)
  • validate_event_response(self, result, valid_codes)
    @api.model

New fields (7)
  • nfe40_CNPJ Char
    related='partner_acquirer_id.nfe40_CNPJ'
  • nfe40_UFDesemb Char
    related='state_clearance_id.code' string='Customs Clearance Code'
  • nfe40_UFTerceiro Char
    related='partner_acquirer_id.state_id.code'
  • nfe40_tpIntermedio Selection
    selection=TPINTERMEDIO_DI
  • nfe40_tpViaTransp Selection
    selection=TPVIATRANSP_DI
  • partner_acquirer_id Many2one → res.partner
    comodel_name='res.partner' string='Partner Acquirer'
  • state_clearance_id Many2one → res.country.state
    comodel_name='res.country.state' domain=[('country_id.code', '=', 'BR')] string='State Customs Clearance'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, default_fields)
    @api.model
    The nfe.40.prod mixin (prod XML tag) cannot be injected in the product.product object because the tag includes attributes from the Odoo fiscal document line and because we may have an Nfe with lines decsriptions instead of full blown products. So a part of the mapping is done in the fiscal document line: from Odoo -> XML by using related fields/_compute from XML -> Odoo by overriding the product default_get method
  • match_or_create_m2o(self, rec_dict, parent_dict, model=None)

New fields (2)
  • partner_uom_factor Float
    default=1 string='Partner UOM Factor'
  • partner_uom_id Many2one → uom.uom
    comodel_name='uom.uom' string='Partner Unit of Measure'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • match_or_create_m2o(self, rec_dict, parent_dict, model=None)
    @api.model
    If city not found, break hard, don't create it

New fields (9)
  • nfce_danfe_layout Selection
    readonly=False related='company_id.nfce_danfe_layout' string='NFCe Layout'
  • nfe_authorize_accountant_download_xml Boolean
    readonly=False related='company_id.nfe_authorize_accountant_download_xml' string='Include Accountant Partner data in persons authorized to download NFe XML'
  • nfe_authorize_technical_download_xml Boolean
    readonly=False related='company_id.nfe_authorize_technical_download_xml' string='Include Technical Support Partner data in persons authorized to download NFe XML'
  • nfe_danfe_layout Selection
    readonly=False related='company_id.nfe_danfe_layout' string='NFe Layout'
  • nfe_enable_sync_transmission Boolean
    readonly=False related='company_id.nfe_enable_sync_transmission'
  • nfe_environment Selection
    readonly=False related='company_id.nfe_environment' string='NFe Environment'
  • nfe_transmission Selection
    readonly=False related='company_id.nfe_transmission' string='NFe Transmission'
  • nfe_version Selection
    readonly=False related='company_id.nfe_version' string='NF-e Version'
  • nfe_version_name Char
    config_parameter='l10n_br_nfe.version.name' string='NFe Proc Version'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • match_or_create_m2o(self, rec_dict, parent_dict, model=None)
    @api.model
    If country not found, break hard, don't create it

New fields (0)

No new fields.

Public methods (1)
  • match_or_create_m2o(self, rec_dict, parent_dict, model=None)
    @api.model
    If state not found, break hard, don't create it

New fields (0)

No new fields.

Public methods (1)
  • match_or_create_m2o(self, rec_dict, parent_dict, model=None)
    @api.model
    If uom not found, break hard, don't create it

Loading…

Loading…

Loading…

Loading…

Loading…