You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
📌 @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
Origem
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
longem 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) comolong, o que vai gerar:dfetech-product-invoice-api(ja existe um adapterDanfeServiceque mapeia o dominio paraDanfeViewModel)Esta spike e o trabalho de mapeamento exaustivo antes de partir para implementacao — porque alterar
long → stringem 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:
arquivo:linhanonfe/DanfeSharponde CNPJ aparece tipado comolongarquivo:linhaonde CPF aparece tipado comolongFormatador.cs,Extentions.cs, blocos de pintura de campos)dfetech-product-invoice-api(adapterDanfeService+ dominio)Escopo — Inclui
DanfeSharp/Modelo/*(view-models —EmpresaViewModel,DanfeViewModel, etc.)DanfeSharp/Esquemas/NFe/*(classes de deserializacao do XML)DanfeSharp/Blocos/*(renderizacao das secoes do DANFE)DanfeSharp/Formatador.cs,Extentions.cs,Utils.cs(formatacao numerica)long/numericna entradaDFeTech.ProductInvoice/Services/DanfeService.cs(744 LOC, fortemente acoplado aDanfeSharp.Modelo) sera afetadoEscopo — Nao inclui
long → string(sai como issue(s) de feature derivada(s) desta spike)lib/Zeus.Net.NFe.NFCe/) — fica em issue separada no fork da ZeusDanfeServicenodfetech-product-invoice-api— sai como feature derivadaCriterios de Aceitacao
docs/ou wiki) com lista exaustiva dearquivo:linhapara CNPJ tratado comolonglongdfetech-product-invoice-apimapeado (lista de pontos de alteracao no adapter)Dependencias
dfetech-product-invoice-apipara alinhar timeline da feature derivadanfe/DanfeSharp#33— caso especifico que sera coberto pelo mapeamentoReferencias
src/DFeTech.ProductInvoice/Services/DanfeService.cs)DanfeViewModel)Classificacao (Project Fields)