OdooWiki OCA HUB

MDF-e abstract models

l10n_br_mdfe_spec folder_open OCA/l10n-brazil open_in_new
Accounting Licencia: LGPL-3

Este módulo es la base para la emisión del Manifesto Eletrônico de Documentos Fiscais (MDF-e, modelo 58) en Odoo, proporcionando una estructura de datos completa y fiel al leiaute oficial 3.00 de la SEFAZ.

Es importante entender que este módulo actúa como una biblioteca de modelos abstractos (mixins) y no realiza la emisión del MDF-e por sí solo. Su finalidad es ser la base para un módulo de implementación, como el l10n_br_mdfe, que es responsable de mapear estos modelos en los documentos fiscales de Odoo (l10n_br_fiscal.document) y de comunicarse con los web services de la SEFAZ. Esta arquitectura, que separa la estructura de datos de la lógica de emisión, es la misma utilizada con éxito en los módulos de la Nota Fiscal Eletrônica (l10n_br_nfe_spec y l10n_br_nfe).

El MDF-e es un documento fiscal que agrega y vincula múltiples documentos (como NF-e y CT-e) que amparan una carga transportada en un único vehículo, simplificando la fiscalización durante el trayecto.

Principales Conceptos y Estructura del MDF-e

El módulo l10n_br_mdfe_spec mapea con precisión la estructura jerárquica del manifiesto. Los conceptos más importantes implementados son:

  • Agrupación por Municipio de Descarga (infMunDescarga): Esta es la principal lógica organizacional de un MDF-e. El módulo permite agrupar todos los documentos fiscales (NF-e y CT-e) que serán entregados en un mismo municipio, garantizando el correcto armado del XML.
  • Documentos Vinculados: Dentro de cada municipio de descarga, es posible vincular:
  • Conocimientos de Transporte (infCte): Para operaciones donde el emisor es un prestador de servicio de transporte.
  • Notas Fiscales (infNFe): Para operaciones de transporte de carga propia o por transportadoras que realizarán la emisión de CT-e Globalizado posteriormente.
  • Manifiestos Anteriores (infMDFeTransp): Utilizado en operaciones específicas del modal acuaviario.
  • Totalizadores (tot): El módulo contiene modelos para totalizar la carga, incluyendo la cantidad de documentos, el valor total de la carga y el peso bruto total.
  • Seguro de la Carga (seg): Estructuras para informar los datos del seguro, el responsable (emisor o contratante), la aseguradora y los números de póliza y avería.

Estructura por Modal de Transporte

El MDF-e exige informaciones distintas para cada modalidad de transporte. El l10n_br_mdfe_spec ofrece modelos de datos específicos para cada uno de ellos:

  • Rodoviario (mdfe.30.rodo): Es el más detallado, incluyendo:
  • infANTT: Informaciones para la Agencia Nacional de Transportes Terrestres, como el RNTRC.
  • infCIOT: Para el Código Identificador de la Operación de Transporte.
  • valePed: Para el Vale-Peaje obligatorio.
  • infContratante e infPag: Para identificar a los contratantes y detallar las informaciones de pago del flete.
  • veicTracao, veicReboque, condutor: Modelos para detallar los vehículos de la composición y sus respectivos conductores.
  • Aéreo (mdfe.30.aereo): Contempla campos para el número del vuelo (nVoo), y los códigos IATA/OACI de los aeródromos de embarque (cAerEmb) y destino (cAerDes).
  • Acuaviario (mdfe.30.aquav): Aborda datos como el IRIN, el número del viaje (nViag), los puertos y terminales de embarque, descarga y transbordo, además de informaciones del convoy.
  • Ferroviario (mdfe.30.ferrov): Permite detallar las informaciones del tren (prefijo, origen, destino) y de cada vagón de la composición.

Generación de Código Automatizada

La principal característica de este módulo es que el 100% de sus modelos de datos Odoo son generados automáticamente a partir de los esquemas XSD oficiales, publicados por el Portal del MDF-e. Esta generación por el xsdata-odoo garantiza máxima fidelidad a los leiautes fiscales y agilidad en la actualización a nuevas versiones.

Aunque los esquemas XSD oficiales del MDF-e son publicados y mantenidos en el Portal de la SEFAZ, la arquitectura de este proyecto se apoya en la biblioteca nfelib para la tarea de serialización de los datos en XML. Para facilitar el proceso de desarrollo y garantizar la consistencia, la propia nfelib almacena en su repositorio una copia actualizada de esos esquemas oficiales.

Por lo tanto, la práctica recomendada para (re)generar los modelos de este módulo es utilizar un clon local del repositorio de la nfelib como fuente para los archivos de esquema (.xsd), dirigiendo el comando del xsdata-odoo al directorio correspondiente.

Links:

  • GitHub - akretion/xsdata-odoo: Odoo abstract model generator from xsd schemas using xsdata
  • GitHub - akretion/nfelib: nfelib - bindings Python para e ler e gerir XML de NF-e, NFS-e nacional, CT-e, MDF-e, BP-e

El comando utilizado para generar los modelos de la versión 3.0 del MDF-e fue:

Prefijo de los campos y versión

Con más de 500 campos fiscales solo en el MDF-e, con una media docena de documentos fiscales complejos, con 3000 módulos OCA, existiría un riesgo real de conflicto con los nombres de campos provenientes de los esquemas. Además, tenemos varias versiones del MDF-e, la 2.0, la 3.0...

Ante esto se decidió que cada campo tiene un prefijo compuesto del nombre del schema y de algunos dígitos de la versión del esquema. En el caso mdfe30_. La elección de 2 dígitos permite que una actualización menor del esquema use los mismos campos (y datos en la base de datos entonces) y que un simple update Odoo (--update=...) consiga resolver la migración. Mientras que para un cambio mayor como de 3.0 a 4.0, se asumiría usar nuevos campos y nuevas tablas (para los objetos no Odoo) y que la lib nfelib trabajaría con los campos de la versión mayor del documento fiscal considerado.

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 18.0

Este módulo proporciona la estructura de datos técnica (modelos abstractos) que refleja el diseño oficial del documento electrónico de transporte MDF-e de Brasil, versión 3.00. No emite documentos por sí mismo; es la base que otros módulos utilizan para registrar los datos del MDF-e.

Este es un módulo de base técnica, no una pantalla en la que los usuarios trabajen directamente. Define un conjunto de modelos de datos abstractos que reproducen el layout oficial de SEFAZ MDF-e (Manifesto Eletrônico de Documentos Fiscais, modelo 58) versión 3.00. No se añaden menús, botones ni informes, y este módulo por sí solo no transmite ningún documento a la autoridad fiscal.

Los modelos cubren los distintos modos de transporte de un MDF-e:

  • Carretera (mdfe.30.rodo): vehículo de tracción, remolques, precintos, registro ANTT, CIOT, vales de peaje, contratistas y detalles de pago del contrato.
  • Ferrocarril (mdfe.30.ferrov): composición del tren y vagones con pesos.
  • Vía fluvial (mdfe.30.aquav): embarcación, viaje, puertos, terminales, embarcaciones de convoy y unidades de carga/transporte vacías.
  • Aéreo (mdfe.30.aereo): nacionalidad y matrículas de la aeronave, número de vuelo, aeropuertos y fecha del vuelo.

También define estructuras de apoyo como el responsable técnico (mdfe.30.tresptec), direcciones (mdfe.30.tendorg), ubicaciones de recogida/entrega (mdfe.30.tendreent) y un mixin compartido (spec.mixin.mdfe) que proporciona la moneda brasileña (BRL) utilizada por los campos monetarios. Muchos campos llevan indicadores de obligatoriedad y reglas de selección tomadas del esquema oficial, de modo que los módulos posteriores pueden validar y mapear los datos antes de enviarlos a SEFAZ.

Lo necesitan otros módulos

Modelos y campos (30)
  • mdfe.30.emi · modelo nuevomdfe30_UF (UF do Emitente), mdfe30_CNPJ (CNPJ do emitente), mdfe30_xNome (Razão Social ou Nome)
  • mdfe.30.ide · modelo nuevomdfe30_cDV (Digito verificador da chave de acesso), mdfe30_cUF (Código da UF do emitente do MDF-e), mdfe30_mod (Modelo do Manifesto Eletrônico), mdfe30_cMDF (Código numérico que compõe a Chave), mdfe30_nMDF (Número do Manifesto), mdfe30_UFFim (Sigla da UF do Descarregamento), mdfe30_UFIni (Sigla da UF do Carregamento), mdfe30_dhEmi (Data e hora de emissão do Manifesto), mdfe30_modal (Modalidade de transporte), mdfe30_serie (Série do Manifesto), mdfe30_tpAmb (Tipo do Ambiente), mdfe30_tpEmis (Forma de emissão do Manifesto), mdfe30_tpEmit (Tipo do Emitente), mdfe30_procEmi (Identificação do processo de emissão), mdfe30_verProc (Versão do processo de emissão), mdfe30_tpTransp (Tipo do Transportador), mdfe30_dhIniViagem (Data e hora previstos de inicio), mdfe30_infPercurso (Informações do Percurso do MDF-e), mdfe30_indCanalVerde (Indicador de participação do Canal Verde), mdfe30_infMunCarrega (Informações dos Municípios), mdfe30_indCarregaPosterior (Indicador de MDF-e com inclusão)
  • mdfe.30.seg · modelo nuevomdfe30_nApol (Número da Apólice), mdfe30_nAver (Número da Averbação), mdfe30_infSeg (Informações da seguradora), mdfe30_infResp (Informações do responsável pelo seguro), mdfe30_seg_infMDFe_id
  • mdfe.30.tot · modelo nuevomdfe30_qCTe (Quantidade total de CT-e relacionados), mdfe30_qNFe (Quantidade total de NF-e relacionadas), mdfe30_cUnid (Código da unidade de medida), mdfe30_qMDFe (Quantidade total de MDF-e relacionados), mdfe30_qCarga (Peso Bruto Total), mdfe30_vCarga (Valor total)
  • mdfe.30.vag · modelo nuevomdfe30_TU (Tonelada Útil), mdfe30_nSeq (Sequencia do vagão na composição), mdfe30_nVag (Número de Identificação do vagão), mdfe30_pesoR (Peso Real em Toneladas), mdfe30_serie (Serie de Identificação do vagão), mdfe30_tpVag (Tipo de Vagão), mdfe30_pesoBC (Peso Base de Cálculo de Frete), mdfe30_vag_ferrov_id
  • mdfe.30.dest · modelo nuevomdfe30_UF (UF do Destinatário), mdfe30_CPF (CPF do Destinatário), mdfe30_CNPJ (CNPJ do Destinatário), mdfe30_xNome (Razão Social ou Nome)
  • mdfe.30.disp · modelo nuevomdfe30_CPFPg (CPFPg), mdfe30_CNPJPg (CNPJ do responsável pelo pagamento), mdfe30_nCompra (Identificador), mdfe30_CNPJForn (CNPJ da empresa fornecedora), mdfe30_vValePed (Valor do Vale-Pedagio), mdfe30_tpValePed (Tipo do Vale Pedagio), mdfe30_disp_valePed_id
  • mdfe.30.emit · modelo nuevomdfe30_IE (Inscrição Estadual do emitemte), mdfe30_CPF (CPF do emitente), mdfe30_CNPJ (CNPJ do emitente), mdfe30_xFant (Nome fantasia do emitente), mdfe30_xNome (Razão social ou Nome do emitente), mdfe30_enderEmit (Endereço do emitente)
  • mdfe.30.rodo · modelo nuevomdfe30_infANTT (Grupo de informações), mdfe30_lacRodo (Lacres), mdfe30_codAgPorto (Código de Agendamento no porto), mdfe30_veicTracao (Dados do Veículo com a Tração), mdfe30_veicReboque (Dados dos reboques)
  • mdfe.30.trem · modelo nuevomdfe30_qVag (Quantidade de vagões carregados), mdfe30_xOri (Origem do Trem), mdfe30_xDest (Destino do Trem), mdfe30_xPref (Prefixo do Trem), mdfe30_dhTrem (Data e hora de liberação do trem)
  • mdfe.30.aereo · modelo nuevomdfe30_nac (Marca da Nacionalidade da aeronave), mdfe30_dVoo (Data do Voo), mdfe30_matr (Marca de Matrícula da aeronave), mdfe30_nVoo (Número do Voo), mdfe30_cAerDes (Aeródromo de Destino), mdfe30_cAerEmb (Aeródromo de Embarque)
  • mdfe.30.aquav · modelo nuevomdfe30_MMSI (Maritime Mobile Service Identify), mdfe30_irin (Irin do navio sempre deverá), mdfe30_nViag (Número da Viagem), mdfe30_tpEmb (Código do tipo de embarcação), mdfe30_tpNav (Tipo de Navegação), mdfe30_cEmbar (Código da embarcação), mdfe30_xEmbar (Nome da embarcação), mdfe30_cPrtEmb (Código do Porto de Embarque), mdfe30_cPrtDest (Código do Porto de Destino), mdfe30_prtTrans (Porto de Transbordo), mdfe30_infEmbComb (Informações das Embarcações do Comboio), mdfe30_infTermCarreg (Grupo de informações dos terminais), mdfe30_infTermDescarreg (infTermDescarreg), mdfe30_infUnidCargaVazia (Informações das Undades de Carga vazias), mdfe30_infUnidTranspVazia (Informações das Undades)
  • mdfe.30.infnf · modelo nuevomdfe30_PIN (PIN SUFRAMA), mdfe30_emi (Informações do Emitente da NF), mdfe30_nNF (Número), mdfe30_vNF (Valor Total da NF), mdfe30_dEmi (Data de Emissão), mdfe30_dest (Informações do Destinatário da NF), mdfe30_serie (Série)
  • mdfe.30.tmdfe · modelo nuevomdfe30_infMDFe (Informações do MDF-e), mdfe30_infMDFeSupl (Informações suplementares do MDF-e)
  • mdfe.30.autxml · modelo nuevomdfe30_CPF (CPF do autorizado), mdfe30_CNPJ (CNPJ do autorizado), mdfe30_autXML_infMDFe_id
  • mdfe.30.ferrov · modelo nuevomdfe30_vag (informações dos Vagões), mdfe30_trem (Informações da composição do trem)
  • mdfe.30.infcte · modelo nuevomdfe30_peri (Preenchido quando for transporte), mdfe30_chCTe (Conhecimento Eletrônico), mdfe30_SegCodBarra (Segundo código de barras), mdfe30_indReentrega (Indicador de Reentrega), mdfe30_infUnidTransp (Informações das Unidades de Transporte), mdfe30_infEntregaParcial (Grupo de informações da Entrega Parcial), mdfe30_infNFePrestParcial (Grupo de informações das NFe), mdfe30_indPrestacaoParcial (Indicador de Prestação parcial), mdfe30_infCTe_infMunDescarga_id
  • mdfe.30.infrec · modelo nuevomdfe30_nRec (Número do Recibo), mdfe30_tMed (Tempo médio de resposta do serviço), mdfe30_dhRecbto (Data e hora do recebimento)
  • mdfe.30.infseg · modelo nuevomdfe30_CNPJ (Número do CNPJ da seguradora), mdfe30_xSeg (Nome da Seguradora)
  • mdfe.30.lacres · modelo nuevomdfe30_nLacre (número do lacre), mdfe30_lacres_infMDFe_id
  • mdfe.30.tlocal · modelo nuevomdfe30_UF (Sigla da UF), mdfe30_cMun (Código do município), mdfe30_xMun (Nome do município)
  • mdfe.30.tnfenf · modelo nuevomdfe30_infNF (Informações da NF mod 1 e 1A), mdfe30_infNFe (Informações da NF-e)
  • mdfe.30.infadic · modelo nuevomdfe30_infCpl (Informações complementares de interesse), mdfe30_infAdFisco (Informações adicionais de interesse)
  • mdfe.30.infantt · modelo nuevomdfe30_RNTRC (Registro Nacional), mdfe30_infPag (Informações do Pagamento do Contrato), mdfe30_infCIOT (Dados do CIOT), mdfe30_valePed (Informações de Vale Pedágio), mdfe30_infContratante (Grupo de informações dos contratantes)
  • mdfe.30.infciot · modelo nuevomdfe30_CPF (Número do CPF responsável pela geração), mdfe30_CIOT (Código Identificador da Operação), mdfe30_CNPJ (Número do CNPJ responsável pela geração), mdfe30_infCIOT_infANTT_id
  • mdfe.30.infprot · modelo nuevomdfe30_Id (Id), mdfe30_cStat (Código do status do MDF-e), mdfe30_nProt (Número do Protocolo de Status do MDF-e), mdfe30_tpAmb (Identificação do Ambiente), mdfe30_chMDFe (Chave de acesso do MDF-e), mdfe30_digVal (Digest Value do MDF-e processado), mdfe30_xMotivo (Descrição literal do status do MDF-e), mdfe30_dhRecbto (Data e hora de processamento), mdfe30_verAplic (Versão do Aplicativo que processou)
  • mdfe.30.infresp · modelo nuevomdfe30_CPF (Número do CPF do responsável pelo seguro), mdfe30_CNPJ (Número do CNPJ do responsável), mdfe30_respSeg (Responsável pelo seguro)
  • mdfe.30.lacrodo · modelo nuevomdfe30_nLacre (Número do Lacre), mdfe30_lacRodo_rodo_id
  • mdfe.30.tendorg · modelo nuevomdfe30_UF (Sigla da UF, ), mdfe30_CEP (CEP), mdfe30_nro (Número), mdfe30_cMun (Código do município), mdfe30_fone (Telefone), mdfe30_xCpl (Complemento), mdfe30_xLgr (Logradouro), mdfe30_xMun (Nome do município, ), mdfe30_cPais (Código do país), mdfe30_xPais (Nome do país), mdfe30_xBairro (Bairro)
  • mdfe.30.valeped · modelo nuevomdfe30_disp (Informações dos dispositivos), mdfe30_categCombVeic (Categoria de Combinação Veicular)

Texto generado por IA (DeepSeek) al leer el código de la versión 18.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. El módulo es muy grande y solo se ha leído una parte del código. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 5 confirmadas, 4 sin información de 9 versiones.

Fuentes · Odoo 18.0

Confirmado el 2026-11-03 en la rama 18.0 de OCA/l10n-brazil.

terminal Instalación y uso

Sin información verificada

Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.