Skip to content

Investigar impacto CNPJ/CPF alfanumerico — compliance 2026-07-01 #35

Description

@rhfranzoni

Origem

📌 @rhfranzoni via Reuniao interna NFE.io — sem link disponivel (decisao de produto/engenharia em resposta a prazo da Reforma Tributaria)

Contexto

A Reforma Tributaria (LC 214/2025) introduz o CNPJ alfanumerico a partir de 2026-07-01, passando o identificador de pessoa juridica a aceitar letras nos 12 primeiros caracteres (os 2 ultimos seguem sendo digitos verificadores). O CPF continua numerico, mas o tratamento conjunto dos dois identificadores no codigo historicamente usa o tipo long em ambos os casos.

A suspeita inicial e que o fork nfe/DanfeSharp (DanfeViewModel, esquemas NFe, blocos de renderizacao do DANFE/NFCe, formatadores) trate CNPJ (e provavelmente CPF) como long, o que vai gerar:

  • Falha de parsing de XML quando a SEFAZ comecar a emitir/aceitar XMLs com CNPJ alfanumerico
  • Quebra na renderizacao das secoes do DANFE/cupom onde o documento aparece (emitente, destinatario, transportador, autorizado a download do XML, eventos)
  • Impacto downstream no consumidor dfetech-product-invoice-api (ja existe um adapter DanfeService que mapeia o dominio para DanfeViewModel)

Esta spike e o trabalho de mapeamento exaustivo antes de partir para implementacao — porque alterar long → string em uma camada de view-model sem mapear todos os call-sites e contratos quebraria a renderizacao silenciosamente.

Objetivo

Produzir um documento de mapeamento (markdown na propria issue ou ADR no repo) que sirva de input para uma ou mais issues de feature de implementacao, contendo:

  • Lista exaustiva de arquivo:linha no nfe/DanfeSharp onde CNPJ aparece tipado como long
  • Lista exaustiva de arquivo:linha onde CPF aparece tipado como long
  • Lista de formatadores/mascaras que assumem entrada numerica (Formatador.cs, Extentions.cs, blocos de pintura de campos)
  • Pontos de impacto no schema XML NF-e/NFC-e que sera atualizado pela SEFAZ
  • Breaking changes esperados no dfetech-product-invoice-api (adapter DanfeService + dominio)

Escopo — Inclui

  • Varredura completa em DanfeSharp/Modelo/* (view-models — EmpresaViewModel, DanfeViewModel, etc.)
  • Varredura em DanfeSharp/Esquemas/NFe/* (classes de deserializacao do XML)
  • Varredura em DanfeSharp/Blocos/* (renderizacao das secoes do DANFE)
  • Varredura em DanfeSharp/Formatador.cs, Extentions.cs, Utils.cs (formatacao numerica)
  • Identificacao de formatadores que assumem long/numeric na entrada
  • Mapeamento downstream: como DFeTech.ProductInvoice/Services/DanfeService.cs (744 LOC, fortemente acoplado a DanfeSharp.Modelo) sera afetado
  • Cross-check com a issue relacionada Suportar barcode da chave de acesso com CNPJ alfanumérico (CODE-128A/C) #33 (CNPJ alfanumerico no barcode CODE-128A/C da chave de acesso) — provavel sub-caso do mapeamento

Escopo — Nao inclui

  • Implementacao das mudancas long → string (sai como issue(s) de feature derivada(s) desta spike)
  • Mudancas nas classes XML do submodulo Zeus (lib/Zeus.Net.NFe.NFCe/) — fica em issue separada no fork da Zeus
  • Refactor amplo do adapter DanfeService no dfetech-product-invoice-api — sai como feature derivada
  • Atualizacao do schema XML proprio NF-e/NFC-e (sera puxado da SEFAZ quando publicado)

Criterios de Aceitacao

  • Documento de mapeamento publicado (comentario no proprio issue, ADR em docs/ ou wiki) com lista exaustiva de arquivo:linha para CNPJ tratado como long
  • Mesma cobertura para CPF tratado como long
  • Lista de formatadores/mascaras com dependencia em entrada numerica identificada
  • Impacto downstream no dfetech-product-invoice-api mapeado (lista de pontos de alteracao no adapter)
  • Issue(s) de feature de implementacao preparada(s) — uma por agrupamento logico de mudanca (modelo, esquema XML, formatadores, downstream)
  • Cross-reference com Suportar barcode da chave de acesso com CNPJ alfanumérico (CODE-128A/C) #33 confirmando se o barcode entra no escopo do mapeamento ou fica como track paralelo

Dependencias

  • Publicacao do schema XML NF-e/NFC-e atualizado pela SEFAZ (formato alfanumerico do CNPJ) — pode chegar perto ou apos 2026-07-01
  • Coordenacao com o time do dfetech-product-invoice-api para alinhar timeline da feature derivada
  • Issue relacionada nfe/DanfeSharp#33 — caso especifico que sera coberto pelo mapeamento

Referencias

  • Lei Complementar 214/2025 — Reforma Tributaria (CNPJ alfanumerico a partir de 2026-07-01)
  • Issue relacionada: Suportar barcode da chave de acesso com CNPJ alfanumérico (CODE-128A/C) #33 (Suportar barcode da chave de acesso com CNPJ alfanumerico CODE-128A/C)
  • Repo consumidor afetado: nfe/dfetech-product-invoice-api (adapter src/DFeTech.ProductInvoice/Services/DanfeService.cs)
  • README do fork: lib/DanfeSharp/README.md (uso atual via DanfeViewModel)

Classificacao (Project Fields)

  • Priority: High
  • Compliance: <90d — prazo legal em ate 90 dias (vigencia 2026-07-01)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions