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
📌 @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)
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)
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.
PR Marca d'água para documentos cancelados #8 (nfe/DanfeSharp#8) — tentativa anterior do @mateuszanini, branch feature/aviso-cancelamento, commit f658489 (2023-05-17), modificações em Danfe.cs (+4) e DanfePagina.cs (+16). Ponto de partida para avaliação técnica.
Manual de Orientação ao Contribuinte (MOC) NF-e — evento de cancelamento, cStat=101
Branch ativa: feature/credit-note-rendering (já renderiza outro caso especial: Nota de Crédito por Recusa)
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))
Origem
Contexto
A DANFE gerada pelo
nfe/DanfeSharpnão tem indicador visual quando a NF-e está cancelada (status SEFAZcStat=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 emDanfeSharp/Danfe.cs(+4) eDanfeSharp/DanfePagina.cs(+16). Quem implementar esta issue deve avaliar se o trabalho de @mateuszanini é base válida (rebase/atualização sobremain) ou se a abordagem precisa ser refeita por divergência arquitetural acumulada nesses 3 anos.Objetivo
Permitir que
nfe/DanfeSharpgere 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
cStat=101no XML do evento de cancelamento, quando disponível)Escopo — Não inclui
Critérios de Aceitação
danfe.GerarPdf(isCancelled: true)ou equivalente)true(oucStat=101é lido do XML do evento), a marca d'água "CANCELADA" aparece sobreposta no centro de TODAS as páginas da DANFEcStat=101, (d) detecção via flag explícito do chamadorDependê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
nfe/DanfeSharp#8) — tentativa anterior do @mateuszanini, branchfeature/aviso-cancelamento, commitf658489(2023-05-17), modificações emDanfe.cs(+4) eDanfePagina.cs(+16). Ponto de partida para avaliação técnica.cStat=101feature/credit-note-rendering(já renderiza outro caso especial: Nota de Crédito por Recusa)Classificação (Project Fields)