Ir para conteúdo
  • Cadastre-se

dev botao

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


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 750 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

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

  • Consultores
Postado
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 !!

  • Membros Pro
Postado

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.

  • Membros Pro
Postado
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.

  • Curtir 1
  • Consultores
Postado

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.

  • Curtir 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

  • Membros Pro
Postado
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

  • Membros Pro
Postado
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 !

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.