OdooWiki OCA HUB
Localisation License: AGPL-3

Este módulo permite a emissão de MDF-e.

Mais especificamente ele:

  • mapea os campos de MDF-e do módulo l10n_br_mdfe_spec com os campos Odoo.
  • 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 e l10n_br_fiscal.document.related que tem varios niveis hierarquicos de elementos XML que estão sendo denormalizados dentro desses modelos Odoo
  • tem wizards para implementar a comunicação SOAP de MDF-e com a SEFAZ (Autorização, Cancelamento, Encerramento...)

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Lets Brazilian companies issue and manage MDF-e transport documents (electronic manifests for cargo) inside Odoo, including the transport modal details, totals, XML generation, digital signing and the DAMDFE PDF.

This module adds the MDF-e (Manifesto Eletrônico de Documentos Fiscais) transport document to Odoo's Brazilian fiscal documents. Users find it under the fiscal documents menu, in a new "MDF-e" entry.

On the MDF-e screen the user fills transport information: version, environment, issuer type, transmission type, transport modal (road, air, waterway or rail), initial and final states, loading cities and route states. The module then automatically builds the official XML structure and fills in the document key, state codes, loading and route lists, and the totals of linked NF-e, CT-e and MDF-e documents (count, cargo weight and cargo value).

Each transport modal has its own detail screens: for road transport, vehicle plate, tare, wheel and body type, drivers, owner, RNTRC, toll tags, CIOT and payment information; for waterway, vessel, ports, loading/unloading terminals and convoys; for rail, train data and wagons; for air, aircraft and flight data. Unloading cities are recorded with the NF-e, CT-e or MDF-e documents being delivered there.

Before sending, the module checks that required fields are filled (company CNPJ, state, digital certificate, document type, series, number, dates, modal, states, cities and linked documents) and raises a clear error listing what is missing. For road transport it also checks vehicle data, driver name and CPF, and owner RNTRC rules.

It generates and signs the XML with the company certificate, validates it against the official schema, and produces the DAMDFE PDF report.

Menus it adds

MDF-e
Models and fields (30)
  • res.city · extends an existing model
  • res.company · new modelmdfe30_IE, mdfe30_CPF, mdfe30_CNPJ, mdfe30_fone, mdfe30_xFant, mdfe30_xNome, mdfe_version (MDFe Version), mdfe_emit_type (MDFe Emit Type), mdfe30_enderEmit (Endereço Emitente - MDFe), mdfe_environment (MDFe Environment), mdfe_transp_type (MDFe Transp Type), damdfe_margin_top, mdfe_transmission (MDFe Transmission), damdfe_margin_left, mdfe30_choice_emit (MDFe emit CNPJ/CPF), damdfe_margin_right, damdfe_margin_bottom, mdfe_authorize_accountant_download_xml (Include Accountant Partner data in persons authorized to download MDFe XML)
  • res.partner · new modelmdfe30_IE, mdfe30_UF, mdfe30_CEP (CEP - MDFe), mdfe30_CPF, mdfe30_nro (Número - MDFe), mdfe30_CNPJ, mdfe30_cMun (Código do Município - MDFe), mdfe30_fone (Telefone MDFe), mdfe30_xCpl (Complemento - MDFe), mdfe30_xLgr (Logradouro - MDFe), mdfe30_xMun (Nome do Município - MDFe), mdfe30_xSeg, mdfe30_cPais (Código do País - MDFe), mdfe30_email, mdfe30_xFant (Nome Fantasia - MDFe), mdfe30_xNome (Nome - MDFe), mdfe30_xPais (Nome do País - MDFe), mdfe30_tpProp, mdfe30_respSeg, mdfe30_xBairro (Bairro - MDFe), mdfe30_xContato, mdfe30_choice_emit (CNPJ/CPF do Emitente - MDFe), mdfe30_choice_autxml (CNPJ/CPF do Parceiro Autorizado - MDFe), mdfe30_idEstrangeiro, mdfe30_choice_insurer (CNPJ/CPF do Responsável pelo Seguro da Carga), mdfe30_choice_contractor (CNPJ/CPF do Contratante), mdfe30_choice_tcontractor (CNPJ/CPF/Id Estrangeiro do Contratante), mdfe30_choice_trailer_owner (CNPJ/CPF do Proprietário do Reboque)
  • product.product · new modelmdfe30_NCM, mdfe30_cEAN, mdfe30_xProd, mdfe30_tpCarga, mdfe30_infLotacao
  • ir.actions.report · extends an existing model
  • res.country.state · extends an existing model
  • res.config.settings · extends an existing modelmdfe_version (MDF-e Version), mdfe_environment (MDF-e Environment), mdfe_transmission (MDF-e Transmission), mdfe_version_name (MDF-e Proc Version)
  • l10n_br_fiscal.document · new modelmdfe30_Id, mdfe30_UF, mdfe30_cDV, mdfe30_cUF, mdfe30_mod, mdfe30_nac (Nacionalidade da Aeronave), mdfe30_seg (Seguros da Carga), mdfe30_vag, mdfe_modal (Transport Modal), mdfe30_cInt (Código do Veículo), mdfe30_cMDF (Código Numérico MDFe), mdfe30_dVoo (Data do Voo), mdfe30_disp, mdfe30_emit, mdfe30_irin (IRIN da Embarcação), mdfe30_matr (Matrícula da Aeronave), mdfe30_nMDF, mdfe30_nVoo (Número do Voo), mdfe30_prop (Proprietário do Veículo), mdfe30_qCTe, mdfe30_qNFe, mdfe30_qVag (Quantidade de Vagões), mdfe30_tara (Tara em KG), mdfe30_xOri (Origem do Trem), mdfe30_RNTRC (RNTRC), mdfe30_UFFim, mdfe30_UFIni, mdfe30_cUnid, mdfe30_capKG (Capacidade em KG), mdfe30_capM3 (Capacidade em M3)
  • l10n_br_mdfe.transporte · new modelmdfe30_peri, mdfe30_chMDFe, mdfe30_infUnidTransp
  • l10n_br_mdfe.modal.aereo · new modelmdfe30_nac, document_id, mdfe30_dVoo, mdfe30_matr, mdfe30_nVoo, mdfe30_cAerDes, mdfe30_cAerEmb
  • l10n_br_mdfe.seguro.carga · new modeldocument_id, mdfe30_infSeg, mdfe30_infResp
  • l10n_br_mdfe.transporte.inf · new modelmdfe30_idUnidTransp, mdfe30_infUnidCarga, mdfe30_tpUnidTransp, mdfe30_lacUnidTransp
  • l10n_br_mdfe.product.lotacao · new modelproduct_id, mdfe30_infLocalCarrega, mdfe30_infLocalDescarrega
  • l10n_br_mdfe.modal.aquaviario · new modeldocument_id, mdfe30_irin, mdfe30_nViag, mdfe30_tpEmb, mdfe30_tpNav, mdfe30_cEmbar, mdfe30_xEmbar, mdfe30_cPrtEmb, mdfe30_cPrtDest, mdfe30_prtTrans, mdfe30_infEmbComb, mdfe30_infTermCarreg, mdfe30_infTermDescarreg, mdfe30_infUnidCargaVazia, mdfe30_infUnidTranspVazia
  • l10n_br_mdfe.modal.rodoviario · new modelmdfe30_UF, document_id, mdfe30_cInt, mdfe30_disp, mdfe30_prop, mdfe30_tara, mdfe30_RNTRC, mdfe30_capKG, mdfe30_capM3, mdfe30_placa, mdfe30_tpCar, mdfe30_tpRod, mdfe30_infPag, mdfe30_RENAVAM, mdfe30_infCIOT, mdfe30_lacRodo, mdfe30_condutor, mdfe30_codAgPorto, mdfe30_veicReboque, mdfe30_categCombVeic, mdfe30_infContratante
  • l10n_br_mdfe.transporte.lacre · new modeldocument_id, mdfe30_nLacre
  • l10n_br_mdfe.modal.ferroviario · new modelmdfe30_vag, document_id, mdfe30_qVag, mdfe30_xOri, mdfe30_xDest, mdfe30_xPref, mdfe30_dhTrem
  • l10n_br_fiscal.document.related · new modelmdfe30_peri, mdfe30_chCTe, mdfe30_chNFe, mdfe30_chMDFe, mdfe30_infUnidTransp
  • l10n_br_mdfe.municipio.descarga · new modelcity_id (City), cte_ids, nfe_ids, mdfe_ids, state_id (State), document_id, document_type, mdfe30_infCTe, mdfe30_infNFe, mdfe30_cMunDescarga, mdfe30_xMunDescarga, mdfe30_infMDFeTransp
  • l10n_br_mdfe.transporte.perigoso · new modelmdfe30_nONU, mdfe30_qTotProd
  • l10n_br_mdfe.transporte.carga.inf · new modelmdfe30_idUnidCarga, mdfe30_tpUnidCarga, mdfe30_lacUnidCarga
  • l10n_br_fiscal.document.supplement · new modelmdfe30_qrCodMDFe
  • l10n_br_mdfe.modal.rodoviario.ciot · new modelis_company (É empresa?), mdfe30_CPF (CPF do responsável), document_id, mdfe30_CIOT, mdfe30_CNPJ (CNPJ do responsável), mdfe30_choice_responsible (CNPJ/CPF do responsável)
  • l10n_br_mdfe.product.lotacao.local · new modellocal_type, mdfe30_choice_tlocal (Tipo de Local)
  • l10n_br_mdfe.modal.rodoviario.lacre · new modeldocument_id, mdfe30_nLacre
  • l10n_br_mdfe.modal.ferroviario.vagao · new modelmdfe30_TU, document_id, mdfe30_nVag, mdfe30_pesoR, mdfe30_serie, mdfe30_pesoBC
  • l10n_br_fiscal.document.import.wizard · extends an existing model
  • l10n_br_mdfe.modal.aquaviario.comboio · new modeldocument_id, mdfe30_xBalsa, mdfe30_cEmbComb
  • l10n_br_mdfe.modal.rodoviario.reboque · new modeldocument_id, mdfe30_cInt, mdfe30_prop, mdfe30_tara, mdfe30_capKG, mdfe30_placa, mdfe30_tpCar, mdfe30_RENAVAM
  • l10n_br_mdfe.modal.rodoviario.pagamento · new modelmdfe30_CPF, partner_id (Responsável pelo pagamento), document_id, mdfe30_CNPJ, mdfe30_comp, mdfe30_xNome, payment_type (Meio de Pagamento), mdfe30_indPag, mdfe30_infPrazo, mdfe30_vContrato, mdfe30_choice_tpayment (Método de Pagamento), mdfe30_choice_tresponsible (CNPJ/CPF/Id Estrangeiro do responsável pelo pagamento)

Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 5 confirmed, 4 with no information of 9 versions.

Sources · Odoo 15.0

Confirmed on 2026-11-03 in branch 15.0 of OCA/l10n-brazil.

terminal Installation and usage

OCA documentation · Odoo 18.0

To configure this module you need to set a digital certificate on the company, and also set the company edoc processor.

Para utilizar o módulo l10n_br_mdfe em conjunto com o módulo l10n_br_account, é necessário configurar uma linha de operação fiscal que não adicione valor ao montante do documento, uma vez que o MDF-e (Manifesto Eletrônico de Documentos Fiscais) não possui valor financeiro.

Passo a Passo:

  • Criar uma Fatura:
  • Defina o tipo de documento como 58 (MDFe).
  • Configurar o Parceiro da Fatura:
  • Configure o parceiro para ser o mesmo da empresa emissora do MDF-e.
  • Adicionar uma Linha na Aba Produtos:
  • Adicione uma linha de fatura com a operação fiscal previamente configurada.
  • Não recomedamos que informe um produto ou utilize um produto que não possua CFOP (Código Fiscal de Operações e Prestações), ou que o CFOP esteja configurado para não gerar valor financeiro e esteja atento a dados como impostos e afins.
  • Acesse os detalhes fiscais da fatura e informe os demais dados necessário para emissão do MDF-e:
  • Preencha os campos obrigatórios para emissão do MDF-e, como UF de descarregamento, município de descarregamento, etc.
  • Valide o MDF-e, verifique os dados do XML e envie para a SEFAZ:
  • Após preencher todos os dados necessários, valide o MDF-e e envie para a SEFAZ.

Considerações Adicionais

  • Operação Fiscal: Certifique-se de que a operação fiscal esteja parametrizada corretamente para evitar a adição de valores financeiros ao documento.
  • CFOP: No caso de utilização de um produto cadastrado e que carregue o CFOP para a linha da fatura, verifique a configuração do CFOP para garantir que ele não gere impacto financeiro no montante da fatura.

Seguindo esses passos, o módulo l10n_br_mdfe funcionará corretamente em conjunto com o l10n_br_account, permitindo a emissão de MDF-e sem valores financeiros associados.

No verified information in OCA: Installation.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.