From 27de7ee5c364f5fe9e75f6a714a855fff57a1ffa Mon Sep 17 00:00:00 2001 From: Vanderson Guidi Date: Sat, 18 Oct 2025 09:30:20 -0300 Subject: [PATCH 1/2] =?UTF-8?q?Fix:=20Ajuste=20na=20impress=C3=A3o=20de=20?= =?UTF-8?q?danfce=20com=20QuestPDF=20para=20imprimir=20sem=20ocorrer=20err?= =?UTF-8?q?o=20quando=20o=20xml=20foi=20gerado=20em=20conting=C3=AAncia=20?= =?UTF-8?q?e=20n=C3=A3o=20tem=20nfeProc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MainWindow.xaml.cs | 4 +- .../ImpressaoNfce/DanfeNfceDocument.cs | 51 +++++++++++++++++-- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml.cs b/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml.cs index 6ab838106..c82ffc1d0 100644 --- a/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml.cs +++ b/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml.cs @@ -32,7 +32,6 @@ /********************************************************************************/ using Microsoft.Win32; -using NFe.Classes; using NFe.Danfe.QuestPdf.ImpressaoNfce; using QuestPDF.Fluent; using QuestPDF.Infrastructure; @@ -156,8 +155,7 @@ private static byte[] ConverterParaPngBytes(BitmapImage bitmap) private void GerarDanfeNfce(string caminhoXml, TamanhoImpressao tamanho) { - var proc = new nfeProc().CarregarDeArquivoXml(caminhoXml); - var xml = proc.ObterXmlString(); + var xml = File.ReadAllText(caminhoXml); var documento = new DanfeNfceDocument(xml, _logoMarcaBytes); documento.TamanhoImpressao(tamanho); diff --git a/NFe.Danfe.QuestPdf/ImpressaoNfce/DanfeNfceDocument.cs b/NFe.Danfe.QuestPdf/ImpressaoNfce/DanfeNfceDocument.cs index d4f24c973..cb906c7fe 100644 --- a/NFe.Danfe.QuestPdf/ImpressaoNfce/DanfeNfceDocument.cs +++ b/NFe.Danfe.QuestPdf/ImpressaoNfce/DanfeNfceDocument.cs @@ -349,6 +349,27 @@ private void Rodape(IContainer container) column.Item().LineHorizontal(1); + if (DeveExibirMensagemContingencia()) + { + column.Item().Row(r => + { + r.RelativeItem().AlignCenter().Column(c => + { + c.Item().AlignCenter().Text("EMITIDA EM CONTINGÊNCIA").FontSize(_tamanhoFontePadrao).ExtraBlack(); + }); + }); + + column.Item().Row(r => + { + r.RelativeItem().AlignCenter().Column(c => + { + c.Item().AlignCenter().Text("Pendente de autorização").FontSize(_tamanhoFontePadrao).ExtraBlack(); + }); + }); + + column.Item().LineHorizontal(1); + } + column.Item().Row(r => { r.RelativeItem().AlignCenter().Column(c => @@ -372,11 +393,18 @@ private void Rodape(IContainer container) t.Cell().AlignCenter().Image(ImagemQrCode()); t.Cell().AlignLeft().Column(c => { - c.Item().Text($"Série: {_nfe.infNFe.ide.serie:D3}").FontSize(_tamanhoFontePadrao); - c.Item().Text($"Número: {_nfe.infNFe.ide.nNF:D9}").FontSize(_tamanhoFontePadrao); - c.Item().Text($"Emissão: {_nfeProc.NFe.infNFe.ide.dhEmi:G}").FontSize(_tamanhoFontePadrao); - c.Item().Text($"Protocolo: {_nfeProc.protNFe.infProt.nProt}").FontSize(_tamanhoFontePadrao); - c.Item().Text($"Autorização: {_nfeProc.protNFe.infProt.dhRecbto:G}").FontSize(_tamanhoFontePadrao); + if (_nfe?.infNFe?.ide != null) + { + c.Item().Text($"Série: {_nfe.infNFe.ide.serie:D3}").FontSize(_tamanhoFontePadrao); + c.Item().Text($"Número: {_nfe.infNFe.ide.nNF:D9}").FontSize(_tamanhoFontePadrao); + c.Item().Text($"Emissão: {_nfe.infNFe.ide.dhEmi:G}").FontSize(_tamanhoFontePadrao); + } + + if (DeveExibirDadosProtocolo()) + { + c.Item().Text($"Protocolo: {_nfeProc!.protNFe!.infProt.nProt}").FontSize(_tamanhoFontePadrao); + c.Item().Text($"Autorização: {_nfeProc!.protNFe!.infProt.dhRecbto:G}").FontSize(_tamanhoFontePadrao); + } }); }); }); @@ -531,6 +559,8 @@ private void CarregarXml(string xml) { try { + _nfeProc = null; + _nfe = null; _nfeProc = FuncoesXml.XmlStringParaClasse(xml); _nfe = _nfeProc.NFe; } @@ -540,6 +570,7 @@ private void CarregarXml(string xml) { NFe.Classes.NFe nfe = FuncoesXml.XmlStringParaClasse(xml); _nfe = nfe; + _nfeProc = null; } catch (Exception) { @@ -549,6 +580,16 @@ private void CarregarXml(string xml) } } + private bool DeveExibirMensagemContingencia() + { + return _nfe?.infNFe?.ide?.tpEmis == TipoEmissao.teOffLine && _nfeProc == null; + } + + private bool DeveExibirDadosProtocolo() + { + return _nfeProc?.protNFe?.infProt != null && !DeveExibirMensagemContingencia(); + } + private string ObtemDescricao(FormaPagamento? formaPagamento) { var existeEnum = Enum From f67f0ad1ad7e8a883c17d3bcfb950b549bbcffa6 Mon Sep 17 00:00:00 2001 From: Vanderson Guidi Date: Sat, 18 Oct 2025 09:37:52 -0300 Subject: [PATCH 2/2] Fix: incluindo using que ficou faltando --- NFe.Danfe.QuestPdf/ImpressaoNfce/DanfeNfceDocument.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/NFe.Danfe.QuestPdf/ImpressaoNfce/DanfeNfceDocument.cs b/NFe.Danfe.QuestPdf/ImpressaoNfce/DanfeNfceDocument.cs index cb906c7fe..78a9f0152 100644 --- a/NFe.Danfe.QuestPdf/ImpressaoNfce/DanfeNfceDocument.cs +++ b/NFe.Danfe.QuestPdf/ImpressaoNfce/DanfeNfceDocument.cs @@ -3,6 +3,7 @@ using DFe.Utils; using NFe.Classes; using NFe.Classes.Informacoes.Destinatario; +using NFe.Classes.Informacoes.Identificacao.Tipos; using NFe.Classes.Informacoes.Pagamento; using NFe.Utils; using NFe.Utils.InformacoesSuplementares;