OdooWiki OCA HUB

NFS-e abstract models

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

Este módulo es la base para la emisión de la Nota Fiscal de Servicios Electrónica de estándar nacional (NFS-e, Sistema Nacional NFS-e) en Odoo, proporcionando una estructura de datos completa y fiel al leiaute oficial 1.01.

Es importante entender que este módulo actúa como una biblioteca de modelos abstractos (mixins) y no realiza la emisión de la NFS-e por sí solo. Su finalidad es ser la base para un módulo de implementación, como el l10n_br_nfse_nacional, que es responsable de mapear estos modelos en los documentos fiscales de Odoo (l10n_br_fiscal.document) y comunicarse con el ambiente nacional (Sefin Nacional / ADN). Esta arquitectura, que separa la estructura de datos de la lógica de emisión, es la misma utilizada con éxito en los otros documentos fiscales electrónicos de la localización brasileña.

En el estándar nacional, el contribuyente genera y firma una DPS (Declaración de Prestación de Servicios) y el ambiente nacional devuelve la NFS-e autorizada, que encapsula la DPS.

Estructura y Principales Conceptos de la NFS-e

El módulo l10n_br_nfse_spec mapea la estructura jerárquica de la DPS y de la NFS-e. Los conceptos más importantes implementados son:

  • Identificación de la DPS (infDPS): El encabezado de la declaración, con municipio emisor, serie, número, fechas y ambiente.
  • Prestador y Tomador (prest, toma): Modelos para los datos registrales del prestador y del tomador del servicio, incluyendo dirección nacional (endNac) o exterior (endExt) y el régimen de tributación (regTrib).
  • Servicio (serv): El detalle del servicio prestado, con el lugar de la prestación (locPrest) y su codificación (cServ): código de tributación nacional, código de tributación municipal y código NBS.
  • Valores (valores): El valor del servicio (vServPrest), los descuentos (vDescCondIncond) y la tributación — municipal/ISSQN (tribMun), federal y PIS/COFINS (tribNac) y el total de tributos (tribTotal).
  • Eventos: Las estructuras para los eventos de la NFS-e (como la cancelación), igualmente generadas a partir de los esquemas oficiales.

Generación de Código Automatizada

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

Aunque los esquemas XSD oficiales de la NFS-e son publicados y mantenidos por la Receita Federal, 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 estos 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 de xsdata-odoo al directorio correspondiente.

Links:

  • GitHub - akretion/xsdata-odoo: Odoo abstract model generator from xsd schemas using xsdata
  • GitHub - akretion/nfelib

El comando utilizado para generar los modelos de la versión 1.01 de la NFS-e fue:

Prefijo de los campos y versión

Con cientos de campos fiscales, 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, podemos tener varias versiones de la NFS-e.

En 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 nfse10_. 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 de versión, 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.

Es el caso de la actualización del leiaute 1.00 al 1.01 (grupos IBSCBS de la reforma tributaria): el leiaute nuevo entra en la misma carpeta v1_0 de la nfelib (un leiaute por carpeta, como para NF-e/CT-e/MDF-e) y el prefijo continúa nfse10_, entonces los campos y las tablas ya existentes se reutilizan y la actualización es un simple -u l10n_br_nfse_spec. Los modelos de la reforma tributaria (IBSCBS, CBS, IBS) entran como modelos nuevos, y los grupos que el 1.01 abandonó (serv/explRod y el infRej de los eventos) desaparecen de los modelos.

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 es una base técnica para las facturas de servicios electrónicos brasileñas (NFS-e). Solo define la estructura de datos del layout nacional de NFS-e; no emite facturas por sí mismo y no añade menús ni pantallas para los usuarios finales.

Este módulo es una biblioteca de modelos de datos abstractos, no una funcionalidad operativa. Proporciona la estructura de campos que coincide con el diseño oficial nacional de la NFS-e (factura de servicios electrónica) versión 1.01, para que otro módulo pueda posteriormente mapearla sobre los documentos fiscales de Odoo y enviar facturas al entorno nacional.

Debido a que es abstracto, no crea menús, botones, informes ni acciones programadas, y no aparece por sí solo en ninguna parte de la interfaz de usuario. Solo se vuelve visible una vez que un módulo de implementación (como el emisor nacional de NFS-e) se construye sobre él.

Lo que sí define, a nivel de datos, son los bloques constitutivos de una factura de servicios: códigos y descripciones de tributación de servicios (nfse.10.tccserv), direcciones en Brasil y en el extranjero (nfse.10.tcendernac, nfse.10.tcenderext, nfse.10.tcendereco), valores de servicios y descuentos (nfse.10.tcvservprest, nfse.10.tcvdesccondincond), referencias a otros documentos fiscales (nfse.10.tcdocnfnfs, nfse.10.tcdocoutnfse), beneficios municipales (nfse.10.tcbeneficiomunicipal), y los nuevos grupos de impuestos IBS/CBS (nfse.10.tcrtcvaloresibscbs, nfse.10.tcrtctotalibs, nfse.10.tcrtctotalcbs).

Un modelo base compartido (spec.mixin.nfse) otorga a cada una de estas estructuras un campo de moneda brasileña (brl_currency_id) que se establece automáticamente en BRL. Ningún otro comportamiento automático, validación o cálculo está implementado en el código mostrado.

Lo necesitan otros módulos

Modelos y campos (30)
  • nfse.10.tcdps · modelo nuevonfse10_infDPS (infDPS), nfse10_versao (versao)
  • nfse.10.tcnfse · modelo nuevonfse10_versao (versao), nfse10_infNFSe (infNFSe)
  • nfse.10.tcserv · modelo nuevonfse10_obra (Grupo de informações do DPS relativas), nfse10_cServ (Grupo de informações relativas ao código), nfse10_comExt (Grupo de informações relativas), nfse10_locPrest (Grupo de informações relativas ao local), nfse10_atvEvento (atvEvento), nfse10_infoCompl (Grupo)
  • nfse.10.tccserv · modelo nuevonfse10_cNBS (Código NBS correspondente), nfse10_cTribMun (Código de tributação municipal do ISSQN), nfse10_cTribNac (Código de tributação nacional do ISSQN), nfse10_xDescServ (Descrição completa do serviço prestado), nfse10_cIntContrib (Código interno do contribuinte)
  • spec.mixin.nfse · modelo nuevobrl_currency_id (Moeda)
  • nfse.10.tcinfdps · modelo nuevonfse10_Id (Id), nfse10_nDPS (Número do DPS), nfse10_serv (serv), nfse10_toma (toma), nfse10_dhEmi (Data e hora da emissão do DPS), nfse10_prest (Grupo de informações do DPS relativas), nfse10_serie (Número do equipamento emissor do DPS), nfse10_subst (Dados da NFS-e a ser substituída), nfse10_tpAmb (Identificação do Ambiente), nfse10_IBSCBS (Grupo de informações declaradas), nfse10_interm (interm), nfse10_tpEmit (Emitente da DPS: 1 - Prestador; 2), nfse10_cLocEmi (O código de município utilizado), nfse10_dCompet (Data em que se iniciou a prestação), nfse10_valores (Grupo de informações relativas à valores), nfse10_verAplic (Versão do aplicativo que gerou o DPS), nfse10_chNFSeRej (Chave de Acesso da NFS-e rejeitada), nfse10_cMotivoEmisTI (Motivo da Emissão da DPS)
  • nfse.10.tcinfnfse · modelo nuevonfse10_Id (Id), nfse10_DPS (DPS), nfse10_emit (Grupo de informações da DPS relativas), nfse10_xNBS (Descrição do código da NBS), nfse10_cStat (Código do Status da mensagem), nfse10_nDFSe (Número sequencial do documento gerado), nfse10_nNFSe (Número sequencial por tipo de emitente), nfse10_IBSCBS (Grupo de informações geradas), nfse10_ambGer (Ambiente gerador da NFS-e), nfse10_dhProc (Data/Hora da validação da DPS e geração), nfse10_tpEmis (Processo de Emissão da DPS), nfse10_procEmi (Processo de Emissão da DPS (procEmi)), nfse10_valores (Grupo de valores referentes), nfse10_xLocEmi (Descrição do código do IBGE), nfse10_xOutInf (Uso), nfse10_verAplic (Versão do aplicativo que gerou a NFS-e), nfse10_xTribMun (Descrição do código (xTribMun)), nfse10_xTribNac (Descrição do código), nfse10_cLocIncid (O código de município utilizado), nfse10_xLocIncid (A descrição do código), nfse10_xLocPrestacao (Descrição do local da prestação)
  • nfse.10.tcregtrib · modelo nuevonfse10_opSimpNac (Situação perante o Simples Nacional), nfse10_regEspTrib (Tipos de Regimes Especiais de Tributação), nfse10_regApTribSN (Opção para que o contribuinte optante)
  • nfse.10.tcdocnfnfs · modelo nuevonfse10_nNFS (Número da Nota Fiscal NF ou NFS), nfse10_modNFS (Modelo da Nota Fiscal NF ou NFS), nfse10_serieNFS (Série Nota Fiscal NF ou NFS)
  • nfse.10.tcemitente · modelo nuevonfse10_IM (Número da inscrição municipal), nfse10_CPF (Número do CPF do emitente da NFS-e), nfse10_CNPJ (Número do CNPJ do emitente da NFS-e), nfse10_fone (Número do telefone do emitente), nfse10_email (E-mail do emitente), nfse10_xFant (Nome / Fantasia do emitente), nfse10_xNome (Nome / Razão Social do emitente), nfse10_enderNac (Grupo de informações)
  • nfse.10.tcendereco · modelo nuevonfse10_nro (Número do imóvel), nfse10_xCpl (Complemento do endereço), nfse10_xLgr (Tipo e nome do logradouro da localização), nfse10_endExt (endExt), nfse10_endNac (Grupo de informações específicas), nfse10_xBairro (Bairro)
  • nfse.10.tcenderext · modelo nuevonfse10_cPais (Código do país), nfse10_xCidade (Nome da cidade no exterior do prestador), nfse10_cEndPost (Código alfanumérico), nfse10_xEstProvReg (Estado)
  • nfse.10.tcendernac · modelo nuevonfse10_CEP (Número do CEP), nfse10_cMun (Código do município)
  • nfse.10.tcinfoobra · modelo nuevonfse10_end (Grupo de informações do endereço da obra), nfse10_cCIB (Código), nfse10_cObra (Número de identificação da obra), nfse10_inscImobFisc (Inscrição imobiliária fiscal)
  • nfse.10.tclocprest · modelo nuevonfse10_cLocPrestacao (Código do município onde o serviço), nfse10_cPaisPrestacao (Código do país onde o serviço)
  • nfse.10.tcatvevento · modelo nuevonfse10_end (Grupo de informações relativas), nfse10_dtFim (Data de fim da atividade de evento), nfse10_dtIni (Data de início da atividade de evento), nfse10_xNome (Descrição do evento Artístico), nfse10_idAtvEvt (Identificação da Atividade de Evento)
  • nfse.10.tcdocdedred · modelo nuevonfse10_nDoc (Número de documento não fiscal), nfse10_NFNFS (Grupo de informações de NF ou NFS), nfse10_chNFe (Chave de Acesso da NF-e), nfse10_chNFSe (Chave de Acesso da NFS-e), nfse10_fornec (Grupo de informações do Fornecedor), nfse10_NFSeMun (Grupo de informações de Outras NFS-e), nfse10_dtEmiDoc (Data da emissão do documento dedutível), nfse10_nDocFisc (Número de documento fiscal), nfse10_tpDedRed (Identificação da Dedução/Redução), nfse10_xDescOutDed (Descrição da Dedução/Redução), nfse10_vDeducaoReducao (Valor monetário utilizado), nfse10_vDedutivelRedutivel (vDedutivelRedutivel), nfse10_docDedRed_TCListaDocDedRed_id
  • nfse.10.tcinfocompl · modelo nuevonfse10_xPed (Número do pedido/ordem de compra/ordem), nfse10_docRef (Chave da nota), nfse10_gItemPed (Grupo de itens do pedido/ordem), nfse10_idDocTec (Identificador de Documento), nfse10_xInfComp (Informações complementares)
  • nfse.10.tcrtcibscbs · modelo nuevonfse10_totCIBS (Grupo de Totalizadores), nfse10_valores (Grupo de valores brutos referentes), nfse10_pRedutor (Percentual de redução de aliquota), nfse10_cLocalidadeIncid (Código IBGE da localidade de incidência), nfse10_xLocalidadeIncid (Nome da localidade de incidência)
  • nfse.10.tctribtotal · modelo nuevonfse10_pTotTrib (Valor percentual total aproximado), nfse10_vTotTrib (Valor monetário total aproximado), nfse10_indTotTrib (Indicador de informação de valor total), nfse10_pTotTribSN (Valor percentual aproximado do total)
  • nfse.10.tcdocoutnfse · modelo nuevonfse10_nNFSeMun (Número da nota eletrônica municipal), nfse10_cMunNFSeMun (Código Município emissor), nfse10_cVerifNFSeMun (Código de Verificação)
  • nfse.10.tcinfodedred · modelo nuevonfse10_pDR (Valor percentual padrão), nfse10_vDR (Valor monetário padrão), nfse10_documentos (Grupo de informações)
  • nfse.10.tcinfopessoa · modelo nuevonfse10_IM (Número da inscrição municipal), nfse10_CPF (Número do CPF), nfse10_NIF (Número de Identificação Fiscal fornecido), nfse10_end (Dados de endereço), nfse10_CNPJ (Número do CNPJ), nfse10_fone (Número do telefone do prestador), nfse10_CAEPF (Número do Cadastro), nfse10_email (E-mail), nfse10_xNome (Nome/Nome Empresarial), nfse10_cNaoNIF (Motivo para não informação do NIF)
  • nfse.10.tcvservprest · modelo nuevonfse10_vServ (Valor dos serviços em R$), nfse10_vReceb (Valor monetário recebido)
  • nfse.10.tccomexterior · modelo nuevonfse10_nDI (Número da Declaração de Importação), nfse10_nRE (Número do Registro de Exportação), nfse10_mdic (Compartilhar as informações), nfse10_tpMoeda (Identifica a moeda), nfse10_vincPrest (Vínculo entre as partes no negócio), nfse10_vServMoeda (Valor do serviço prestado expresso), nfse10_mdPrestacao (Modo de Prestação), nfse10_mecAFComexP (Mecanismo de apoio/fomento), nfse10_mecAFComexT (Mecanismo de apoio/fomento (mecAFComexT)), nfse10_movTempBens (Vínculo da Operação)
  • nfse.10.tcinfoitemped · modelo nuevonfse10_xItemPed (Número do item do pedido/ordem)
  • nfse.10.tcinforefnfse · modelo nuevonfse10_refNFSe (Chave da NFS-e referenciada)
  • nfse.10.tcinfovalores · modelo nuevonfse10_trib (Grupo de informações relacionados), nfse10_vDedRed (Grupo de informações relativas (vDedRed)), nfse10_vServPrest (Grupo de informações relativas), nfse10_vDescCondIncond (vDescCondIncond)
  • nfse.10.tcrtcinfodest · modelo nuevonfse10_CPF (Número da inscrição no Cadastro), nfse10_NIF (Número de Identificação Fiscal fornecido), nfse10_end (Grupo de informações do endereço), nfse10_CNPJ (Número da inscrição no Cadastro Nacional), nfse10_fone (Número do telefone do Destinatário), nfse10_email (E-mail do Destinatário do serviço), nfse10_xNome (Nome / Nome Empresarial), nfse10_cNaoNIF (Motivo para não informação do NIF)
  • nfse.10.tcrtclistadoc · modelo nuevonfse10_fornec (Grupo de informações do fornecedor), nfse10_docOutro (Grupo de informações de documento), nfse10_dtEmiDoc (Data da emissão do documento dedutível), nfse10_dtCompDoc (Data da competência), nfse10_dFeNacional (Grupo de informações), nfse10_tpReeRepRes (Tipo de valor incluído neste documento), nfse10_vlrReeRepRes (Valor monetário), nfse10_xTpReeRepRes (Descrição do reembolso), nfse10_docFiscalOutro (Grupo de informações (docFiscalOutro)), nfse10_documentos_TCRTCInfoReeRepRes_id

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: 2 confirmadas, 7 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.