Jump to content

dev botao

NFSeX - Geração do NFSeX em PDF divergente da impressão.


Go to solution Solved by Italo Giurizzato Junior,
  • Este tópico foi criado há 701 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa tarde, 

Identifiquei que o método "Imprimir" e "ImprimirDANFSEPDF" são divergentes.

no caso do "ImprimirDANFSEPDF", percebi que não está imprimindo o Número do NFS-e e Data de Emissão, enquanto o método "Imprimir" sai corretamente.

Isso está gerando problema, pois quando ocorre o envio do e-mail pelo método "EnviarEmail", pois não está condizente com o correto.

Imagem de parte do da DANFSe gerada.

Att. Léo

DANFSeX gerado em PDF.png

Link to comment
Share on other sites

  • Consultores
Em 01/11/2022 at 18:12, Léo disse:

Boa tarde, 

Identifiquei que o método "Imprimir" e "ImprimirDANFSEPDF" são divergentes.

no caso do "ImprimirDANFSEPDF", percebi que não está imprimindo o Número do NFS-e e Data de Emissão, enquanto o método "Imprimir" sai corretamente.

Isso está gerando problema, pois quando ocorre o envio do e-mail pelo método "EnviarEmail", pois não está condizente com o correto.

Imagem de parte do da DANFSe gerada.

Att. Léo

DANFSeX gerado em PDF.png

Bom dia!
Por favor, você está utilizando o Fast ou Fortes Report?
É possível disponibilizar o XML para teste? Se o mesmo tiver dados sensíveis e não quiser disponibilizar aqui, pode seguir as orientações deste tópico:

Vale ressaltar que para imprimir o DANFSe é preciso ler o XML da NFSe e não o XML do RPS.
Verifique também se o arquivo que você está lendo tem uma entre as seguintes tags que são onde o componente lê a informação.

  • data_nfse
  • hora_nfse
  • numero_nfse

 

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Membros Pro

Bom dia Diego!,

Utilizo o FastReport,

No caso não utilizo o XML, eu populo o componente de NFSXe com os dados do banco, pois no caso da IPM não retorna o xml autorizado, mas somente um xml com o numero da nota, portanto adotei esse critério de popular o componente com os dados do meu banco. O curioso é que com o componente populado utilizando o método "Imprimir" imprime corretamente, mas como o método "ImprimirDANFSEPDF" não acontece o mesmo.

Link to comment
Share on other sites

  • Consultores

Bom dia Léo,

Muito estranho, pois tanto o Imprimir quanto o ImprimirPDF se utilizam das informações contidas nas classes do componente.

  • Like 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Membros Pro
1 hora atrás, Italo Giurizzato Junior disse:

Bom dia Léo,

Muito estranho, pois tanto o Imprimir quanto o ImprimirPDF se utilizam das informações contidas nas classes do componente.

Pois é, na verdade é o ImprimirDANFSEPDF não olhei se herança do mesmo método ImprimirPDF.

Vou tentar depurar aqui, estou atolado aqui, mas alguma diferença tem entre esses métodos. Claro que isso não ajuda muito, mas isso passou a ocorrer depois que migrei para o NFSeX.

  • Like 1
Link to comment
Share on other sites

  • Consultores

Boa tarde Léo,

Acabei de fazer um teste usando o programa exemplo do componente ACBrNFSeX.

Neste caso usei o botão [Imprimir DANFSe]

O como o programa exemplo não tem conexão com nenhum banco de dados, o componente foi "populado" com os dados lidos de um XML de NFS-e.

Para visualizar e imprimir o DANFSE no papel foi usado o método:

    ACBrNFSeX1.NotasFiscais.Imprimir;

Para gerar o PDF foi utilizado o método:

    ACBrNFSeX1.NotasFiscais.ImprimirPDF;

A execução desses dois métodos foi na sequencia:

    ACBrNFSeX1.NotasFiscais.Imprimir;
    ACBrNFSeX1.NotasFiscais.ImprimirPDF;

Comparando a visualização com a impressão e com o PDF não notei nenhuma discrepância ou ausência de alguma informação.

  • Like 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Membros Pro
1 hora atrás, Italo Giurizzato Junior disse:

Boa tarde Léo,

Acabei de fazer um teste usando o programa exemplo do componente ACBrNFSeX.

Neste caso usei o botão [Imprimir DANFSe]

O como o programa exemplo não tem conexão com nenhum banco de dados, o componente foi "populado" com os dados lidos de um XML de NFS-e.

Para visualizar e imprimir o DANFSE no papel foi usado o método:

    ACBrNFSeX1.NotasFiscais.Imprimir;

Para gerar o PDF foi utilizado o método:

    ACBrNFSeX1.NotasFiscais.ImprimirPDF;

A execução desses dois métodos foi na sequencia:

    ACBrNFSeX1.NotasFiscais.Imprimir;
    ACBrNFSeX1.NotasFiscais.ImprimirPDF;

Comparando a visualização com a impressão e com o PDF não notei nenhuma discrepância ou ausência de alguma informação.

Boa tarde Italo, 

Observei que isso acontece quando envia o xml e a Danfse por e-mail.

Alterei aqui a forma que estou Carregando a classe da NFSeX e percebi que quando envia o e-mail. Após isso a Danfe está saindo perfeito mas o xml anexado está vazio.

fui depurar e cheguei na seguinte funcao GravarStream da unit "ACBrNFSeXNotasFiscais"

function TNotaFiscal.GravarStream(AStream: TStream): Boolean;
begin
  if EstaVazio(FXmlRps) then
    GerarXML;

  AStream.Size := 0;
//  WriteStrToStream(AStream, AnsiString(FXmlNfse));

  WriteStrToStream(AStream, AnsiString(FXmlRps));
  Result := True;
end;

E que chama a funcao GerarXML da mesma unit.
 

function TNotaFiscal.GerarXML: String;
var
  FProvider: IACBrNFSeXProvider;
begin
  FProvider := TACBrNFSeX(FACBrNFSe).Provider;

  if not Assigned(FProvider) then
    raise EACBrNFSeException.Create(ERR_SEM_PROVEDOR);

  FProvider.GerarXml(NFSe, FXmlRps, FAlertas);
  Result := FXmlRps;
end;

 

Fazendo está alteração o E-mail fica com o XML e Danfse corretos

At. Léo

Link to comment
Share on other sites

  • Consultores

Bom dia Léo,

Não seria o caso de apenas alterar a alinha abaixo?

 if EstaVazio(FXmlRps) then
   FXmlNFSe := GerarXML;

Uma vez que devemos sempre enviar para o tomador o XML da NFS-e.

  • Like 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Membros Pro
19 horas atrás, Italo Giurizzato Junior disse:

Bom dia Léo,

Não seria o caso de apenas alterar a alinha abaixo?

 if EstaVazio(FXmlRps) then
   FXmlNFSe := GerarXML;

Uma vez que devemos sempre enviar para o tomador o XML da NFS-e.

Bom dia Italo,

Acho que sua solução é mais apropriada.

Grato !

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.