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

Fields

No fields configured for Spike.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions