Skip to content

Suportar DANFE de NF-e cancelada com marca d'água CANCELADA #40

@rhfranzoni

Description

@rhfranzoni

Origem

📌 @Carolina Fagundes via Microsoft Teams — thread interna 27/05/2026, sem link público

Contexto

A DANFE gerada pelo nfe/DanfeSharp não tem indicador visual quando a NF-e está cancelada (status SEFAZ cStat=101 / nProt). Cliente Revenda Mais pediu adaptar o renderer para que seja viável gerar o PDF de uma NF-e cancelada — com marca d'água "CANCELADA" tornando o estado evidente para quem receber ou consultar o documento.

cStat=101 é o status SEFAZ retornado pelo evento de cancelamento autorizado (NF-e cancelada via evento). Sem a marca, o documento cancelado pode ser confundido com uma NF-e ativa autorizada.

Tentativa anterior — PR #8 (2023-05-17, aberta há 3 anos)

Já existe uma PR aberta com tentativa de implementação: #8 "Marca d'água para documentos cancelados" — autor @mateuszanini, branch feature/aviso-cancelamento. A PR contém 1 commit (f658489) com ~20 linhas em DanfeSharp/Danfe.cs (+4) e DanfeSharp/DanfePagina.cs (+16). Quem implementar esta issue deve avaliar se o trabalho de @mateuszanini é base válida (rebase/atualização sobre main) ou se a abordagem precisa ser refeita por divergência arquitetural acumulada nesses 3 anos.

Objetivo

Permitir que nfe/DanfeSharp gere DANFE PDF de NF-e cancelada com marca d'água visual indicando "CANCELADA", sem alterar o XML nem o conteúdo dos blocos da DANFE — somente sobrepondo a marca.

Escopo — Inclui

  • Detecção do estado cancelado (entrada explícita do chamador OU leitura de cStat=101 no XML do evento de cancelamento, quando disponível)
  • Marca d'água "CANCELADA" sobreposta no centro de cada página da DANFE (texto rotacionado ~45°, cinza translúcido, fonte grande)
  • API/parâmetro no DanfeSharp para o chamador sinalizar "esta nota está cancelada" (não depender exclusivamente do XML)
  • Funciona para DANFE de NF-e modelo 55 (e idealmente para a Nota de Crédito por Recusa já implementada na branch atual)
  • Avaliação da PR Marca d'água para documentos cancelados #8 como ponto de partida (rebase ou reimplementação)

Escopo — Não inclui

  • Marca para outros estados (denegada, inutilizada, EPEC) — escopo desta issue é apenas cancelada
  • DANFE NFCe (modelo 65) — escopo é só modelo 55
  • Alteração na consulta de status na SEFAZ ou no fluxo de cancelamento da NF-e
  • Texto exato da marca diferente de "CANCELADA" (revisar com cliente se necessário)

Critérios de Aceitação

  • DanfeSharp expõe API/parâmetro para gerar DANFE em estado cancelado (ex.: danfe.GerarPdf(isCancelled: true) ou equivalente)
  • Quando o flag de cancelado é true (ou cStat=101 é lido do XML do evento), a marca d'água "CANCELADA" aparece sobreposta no centro de TODAS as páginas da DANFE
  • A marca não obscurece os dados subjacentes (texto translúcido, idealmente cinza com opacidade ~30%)
  • DANFE de NF-e não-cancelada continua renderizando idêntica (zero regressão visual)
  • Funciona em DANFE de múltiplas páginas (uma marca por página)
  • Decisão registrada na issue: reaproveitar PR Marca d'água para documentos cancelados #8 (rebase) ou reimplementar — com justificativa
  • Validação visual com cliente Revenda Mais em emissões reais canceladas antes do fechamento
  • Testes unitários cobrindo: (a) DANFE cancelada renderiza marca, (b) DANFE não-cancelada não renderiza marca, (c) detecção via cStat=101, (d) detecção via flag explícito do chamador

Dependências

Nenhuma direta. Issue mãe: #37 (umbrella "Ajustes Danfe — Revenda Mais"). Verificar compatibilidade com a Nota de Crédito por Recusa implementada na branch feature/credit-note-rendering.

Referências


Classificação (Project Fields)

  • Status: Triage (por solicitação do criador)
  • Priority: Medium
  • Sprint: Sprint 6 (atual, 2026-05-25 a 2026-06-01)
  • Compliance: Não — sem janela regulatória vigente (registrado body-only — field ausente em nfe/5 (Product & Engineering))

Metadata

Metadata

Labels

No labels
No labels
No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions