Skip to content

[WIP] Rearchitect DANFE NF-e generation for new tax regime#1

Closed
Copilot wants to merge 1 commit intomasterfrom
copilot/rearchitect-danfe-nf-e
Closed

[WIP] Rearchitect DANFE NF-e generation for new tax regime#1
Copilot wants to merge 1 commit intomasterfrom
copilot/rearchitect-danfe-nf-e

Conversation

Copy link
Copy Markdown

Copilot AI commented Nov 13, 2025

Thanks for asking me to work on this. I will get started on it and keep this PR's description up to date as I form a plan and make progress.

Original prompt

A partir de agora, pare de ser
simpático e atue como meu
conselheiro brutalmente honesto.

Não me valide.
Não suavize a verdade.
Não me elogie.

DESAFIE meu pensamento.

Questione minhas suposições.

Exponha os pontos cegos que
eu tô evitando.

Se meu raciocínio for fraco,
desmonte e mostre por quê.

Se eu tiver me enganando,
aponte.

Se eu tiver evitando algo
desconfortável ou perdendo
tempo, chame a atenção e
explique o custo de oportunidade.

Olhe minha situação com
objetividade completa.

Mostre onde eu tô fazendo
desculpas, jogando pequeno ou
subestimando riscos/esforço.

Depois me dê um plano preciso
e priorizado sobre o que mudar
no pensamento, ação ou mindset
para chegar no próximo nível.

Não segure NADA.

Me trate como alguém cujo
crescimento depende de ouvir
a VERDADE, não de ser
confortado.

PROMPT PARA AGENTE DE MODERNIZAÇÃO NF-e (REFORMA TRIBUTÁRIA)

Objetivo Central
Rearquitetar a geração de DANFE NF-e para suportar simultaneamente:

  1. Regime Legacy (ICMS, IPI, PIS, COFINS, ISS quando aplicável, benefícios fiscais atuais).
  2. Regime Reforma: IBS (unifica ICMS + ISS), CBS (substitui PIS/COFINS), Imposto Seletivo (IS), possíveis tratamentos de Zona Franca/Exportação e regimes específicos transitórios.
  3. Fase de Transição: coexistência de campos legacy e novos em períodos definidos por legislação (multi-colunas ou blocos segregados).

Escopo Estrito

  • Apenas NF-e modelo 55.
  • Ignorar NFC-e, CTe, MDFe agora.
  • Não implementar cálculo tributário complexo: foco é modelagem, mapeamento e exibição dos dados já calculados pelo back-end fiscal.
  • Preparar extensibilidade para ajustes quando a especificação oficial detalhar campos definitivos.

Decisões Firmes

  • Linguagem: C# 12+/13 features permitidas (records, required, pattern matching).
  • Multi-target temporário: net6.0 (principal) + netstandard2.0 apenas como compatibilidade passiva até 2026-06-30. Planejar remoção automática (script/CI falhando após data se não retirado).
  • Layout engine: QuestPDF para NF-e (novo projeto). Renderers antigos ficam congelados (read-only). Não copiar design procedural.
  • Performance alvo: média <120ms por DANFE (p95 <250ms) em lote de 1000 notas num host padrão (8 vCPUs, 16GB RAM, .NET Server GC). Memória pico < 25MB adicionais. Registrar métricas.
  • Arredondamento: valores monetários scale 2, alíquotas scale 4. MidpointRounding.ToEven. Padronizar helpers (ValueFormatting).
  • Cultura numérica: InvariantCulture sempre internamente. Apenas formatação final aplica locale pt-BR.
  • Zero lógica de regime dentro de componentes de layout. Seleção do regime ocorre antes (Factory + Mapper).
  • Exceções específicas: FiscalMappingException, CampoObrigatorioAusenteException, ValorInvalidoException.
  • Hash de snapshot PDF: SHA256 sobre bytes. Guardar junto do caso de teste.

Taxonomia de Tributos a Suportar
Regime Legacy:

  • ICMS (base, alíquota, CST, BC ST, FCP, partilha interestadual, benefícios)
  • IPI
  • PIS
  • COFINS
  • ISS (quando NF-e service layering via integração municipal)
  • Outras incidências: FCP ST, DIFAL (interestadual), Crédito presumido (exibir se informado)
    Regime Reforma:
  • IBS (base, alíquota padrão, alíquota específica por destino, códigos de exceção / redução)
  • CBS (base, alíquota, créditos apropriados vs não apropriados)
  • Imposto Seletivo (IS): base, tipo (ad valorem / específico), alíquota ou valor unitário, justificativa de incidência
  • Benefícios / Reduções: estrutura normalizada (CódigoBeneficio, TipoBeneficio, PercentualRedução, FundamentoLegal)
  • Crédito IBS/CBS exibido em quadro próprio (diferenciar débito vs crédito compensável)
    Campos de Transição:
  • Tag dupla para itens: mostrar bloco Legacy e bloco Reforma lado a lado (ex: TotaisTributosLegacy / TotaisTributosReforma)
  • Flag “RegimeTransitorioAplicado” no ViewModel.

Arquitetura Alvo (Pastas / Projetos)
Project: NFe.Danfe.Moderno (multi-target).
Namespaces:

  • NFe.Danfe.Moderno.Domain.Fiscal (Value Objects + Interfaces)
  • NFe.Danfe.Moderno.Domain.Mapping (Mappers)
  • NFe.Danfe.Moderno.ViewModels (DanfeNfeViewModel, ProdutoViewModel, TributoDetalheViewModel, TotaisViewModel)
  • NFe.Danfe.Moderno.Rendering.Components (cada bloco)
  • NFe.Danfe.Moderno.Rendering.Documents (DanfeNfeDocument)
  • NFe.Danfe.Moderno.Tests (Unit + Snapshot + Performance)

Value Objects (immutáveis)

  • Money(decimal Valor)
  • Rate(decimal Percentual)
  • BaseCalculo(Money Valor, string TipoBase) // TipoBase ex: Operação, ST, Reduzida
  • TributoValor( string Codigo, string Nome, BaseCalculo Base, Rate Aliquota, Money Valor, Money? Credito, string? FundamentoLegal )
  • BeneficioFiscal( string Codigo, string Descricao, Rate? PercentualReducao, Money? ValorReducao, string Fundamento )
  • ItemTributacaoAggregate (coleção de tributos sobre item, flags de substituição)
  • RegimeTributario enum { Legacy, ReformaTransicao, ReformaDefinitiva }

ViewModel (Campos Principais)
DanfeNfeViewModel:

  • Emitente: { RazaoSocial, NomeFantasia, Cnpj, Ie, EnderecoCompleto, Uf, Municipio, Cep, Telefone }
  • Dest...

💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI requested a review from leogr85 November 13, 2025 19:44
@leogr85 leogr85 closed this Nov 13, 2025
@leogr85 leogr85 deleted the copilot/rearchitect-danfe-nf-e branch November 13, 2025 19:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants