Skip to content

Renderizar bloco FORMA DE PAGAMENTO na DANFE (grupo <pag> do XML) #39

@rhfranzoni

Description

@rhfranzoni

Origem

📌 @Carolina Fagundes via Microsoft Teams — thread interna 27/05/2026 (mensagem 14:29), sem link público

Contexto

A DANFE gerada pelo nfe/DanfeSharp para o cliente Revenda Mais (company id 150a90afdf3e468f9feb7f8973707ce9) não renderiza o bloco "FORMA DE PAGAMENTO" mesmo quando o XML traz o grupo <pag><detPag> preenchido.

Exemplo do XML (invoice id 9175b02ac0cf4ed898025c4bad09e2fe):

<pag>
  <detPag>
    <tPag>99</tPag>
    <xPag>RECURSOS PROPRIOS</xPag>
    <vPag>48000.00</vPag>
  </detPag>
</pag>

A DANFE atual termina em "DADOS DOS PRODUTOS / SERVIÇOS" e não tem o bloco "FORMA DE PAGAMENTO". A Carolina anexou um print de "como deveria estar" mostrando o bloco esperado com colunas FORMA PAGAMENTO + VALOR.

Esse bloco passou a ser obrigatório na DANFE a partir da NT 2016.002 v1.50 (grupo <pag> obrigatório em NF-e modelo 55, em produção desde 2018). O fork nfe/DanfeSharp descende do upstream SilverCard/DanfeSharp que precede a NT — o bloco provavelmente nunca foi implementado neste renderer.

Objetivo

Renderizar o bloco "FORMA DE PAGAMENTO" na DANFE de NF-e modelo 55, lendo o grupo <pag><detPag> do XML e exibindo uma tabela com colunas FORMA PAGAMENTO + VALOR (uma linha por <detPag>).

Escopo — Inclui

  • Novo bloco "FORMA DE PAGAMENTO" entre "DADOS DOS PRODUTOS / SERVIÇOS" e os blocos finais da DANFE (cálculo de impostos / dados adicionais)
  • Mapeamento de <tPag> para descrição legível conforme tabela do MOC NF-e (01=Dinheiro, 02=Cheque, 03=Cartão de Crédito, 04=Cartão de Débito, ..., 99=Outros)
  • Quando <tPag>=99 (Outros), exibir o conteúdo de <xPag> em vez do código (ex.: "RECURSOS PROPRIOS")
  • Valor formatado em moeda brasileira (R$ 48.000,00)
  • Múltiplas linhas quando <pag> tem mais de um <detPag>
  • Comportamento neutro quando <pag> está ausente (DANFE não quebra)

Escopo — Não inclui

  • Renderização dos subgrupos opcionais <card> (bandeira / CNPJ adquirente / aut. transação) — somente colunas FORMA + VALOR nesta issue
  • DANFE de NFCe (modelo 65 / DANFE simplificada) — somente DANFE NF-e modelo 55
  • Alterações no XML ou na geração da NF-e (o XML já é íntegro)

Critérios de Aceitação

  • DANFE de NF-e com <pag><detPag> preenchido exibe o bloco "FORMA DE PAGAMENTO" entre Produtos e os blocos finais
  • Bloco mostra tabela com colunas "FORMA PAGAMENTO" e "VALOR"
  • <tPag>=99 exibe o conteúdo de <xPag> (ex.: "RECURSOS PROPRIOS") na coluna FORMA PAGAMENTO
  • <tPag> com código conhecido (01-19) exibe a descrição mapeada (ex.: "Dinheiro", "Cartão de Crédito")
  • Valor formatado como moeda brasileira com separador de milhar e duas casas decimais (R$ 48.000,00)
  • Múltiplos <detPag> aparecem em linhas separadas, somando ao total da nota
  • DANFE da invoice id 9175b02ac0cf4ed898025c4bad09e2fe (company id 150a90afdf3e468f9feb7f8973707ce9) renderiza "RECURSOS PROPRIOS / R$ 48.000,00"
  • DANFE de NF-e sem o grupo <pag> no XML continua válida (não quebra a renderização)
  • Testes unitários cobrindo: (a) <tPag>=99 com <xPag>, (b) <tPag> numérico mapeado, (c) múltiplos <detPag>, (d) XML sem grupo <pag>
  • Validação visual com cliente Revenda Mais antes do fechamento

Dependências

Nenhuma direta. Issue mãe: #37 (umbrella "Ajustes Danfe — Revenda Mais").

Referências


Classificação (Project Fields)

  • Status: Triage (por solicitação do criador)
  • Priority: Medium
  • Severity: Medium
  • Sprint: Sprint 6 (atual, 2026-05-25 a 2026-06-01)
  • Compliance: Não — bloco já obrigatório desde NT 2016.002 (2018); sem janela vigente para tratar como compliance ativo. (Registrado body-only — field ausente em nfe/5 (Product & Engineering))

Metadata

Metadata

Labels

No labels
No labels
No fields configured for Improvement.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions