Ir para conteúdo
  • Cadastre-se

dev botao

Danferave Imprimindo Nota Anterior


  • Este tópico foi criado há 4028 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Transmito primeiramente a nota

NFe31130403913404000164550010000003441000003444

e imprimo o Danfe logo após.  *** Tudo OK ***

Logo em seguida, transmito a nota seguinte

NFe31130403913404000164550010000003451000003450

E vou imprimir o Danfe.

Observe no passo a passo...

No meu fonte, executo o comando

ACBrNFe1.NotasFiscais.Items[0].Imprimir;

O componente executa a procedure

procedure NotaFiscal.Imprimir;

begin

  if not Assigned( TACBrNFe( TNotasFiscais( Collection ).ACBrNFe ).DANFE ) then

     raise EACBrNFeException.Create('Componente DANFE não associado.')

  else

     TACBrNFe( TNotasFiscais( Collection ).ACBrNFe ).DANFE.ImprimirDANFE(NFe);

end;

LOCAL DO PROBLEMA:

1-) O componente executa a procedure TACBrNFeDANFERave.ExecutaReport;

2-) No final da procedure ExecutaReport, executa a linha ExecuteReport('DANFE1'), (abaixo);

   finally

      dmDanfe.RvProject.ExecuteReport('DANFE1');

      dmDanfe.RvProject.Close;

      ProtocoloNFe:='';

   end;

3-) Quando dispara a linha acima, executa a procedure

procedure TdmACBrNFeRave.RvSystem1BeforePrint(Sender: TObject);

begin

  with Sender as TBaseReport do

   begin

     SelectPaper('A4');

     SetPaperSize(DMPAPER_A4,0,0);

   end;

   //processo para não exibir o quadro ISSQN no DANFE_Rave513

   if ((FNFe.Total.ISSQNtot.VServ=0) and

       (FNFe.Total.ISSQNtot.VBC=0) and

       (FNFe.Total.ISSQNtot.VISS=0)) then // ATE ESTE PONTO FNFE.INFNFE.ID ESTA COM O VALOR ...3450 (NOTA ATUAL)

      rvPROJECT.SetParam('wISSQN','N')    // QUANDO EXECUTA ESSA LINHA VAI PARA A PROCEDURE ABAIXO...

   else

      rvPROJECT.SetParam('wISSQN','S');

end;

4-) Quando entra nesta procedure, visualizo a variável FNFE.INFNFE.ID e ela já está com o valor ...3444 (NOTA ANTERIOR)

procedure TdmACBrNFeRave.CustomDadosProdutosCXNOpen(

  Connection: TRvCustomConnection);

begin

  Connection.DataRows := FNFe.Det.Count;

end;

RESULTADO: IMPRIME A DANFE DA NOTA QUE FOI FEITA ANTERIORMENTE.

OBS1: SE FIZER ACBrNFe1.NotasFiscais.Items[0].ImprimirPDF; TAMBÉM CRIA O PDF REFERENTE A DANFE DA NOTA ANTERIOR.

OBS2: SE SAIR DO SISTEMA E ENTRAR NOVAMENTE ENTRE AS DUAS NOTAS, NÃO ACONTECE O PROBLEMA.

 

Alguém tem uma solução para esse problema?

 

Link para o comentário
Compartilhar em outros sites

É a primeira coisa que eu faço. No início de cada nota, limpa as notas e inicializa algumas variáveis gerais.

 

procedure TGerNFE.Inicializa_componente_limpa_nfe;
begin
  // LIMPA AS NOTAS FISCAIS QUE ESTÃO NA MEMÓRIA DO COMPONENTE
  ACBrNFe1.NotasFiscais.Clear;

 

  ACBrNFe1.Configuracoes.Geral.PathSalvar         := Acha_path_alias_faturam;                            

  ACBrNFe1.Configuracoes.Geral.Salvar             := true;
  ACBrNFe1.Configuracoes.Geral.FormaEmissao       := teNormal;        // nfe 2.0

  if Seguranca.Ambiente_NFEletronica = 'PRODUCAO' then
    ACBrNFe1.Configuracoes.WebServices.Ambiente   := taProducao
  else
    ACBrNFe1.Configuracoes.WebServices.Ambiente   := taHomologacao;

  ACBrNFe1.Configuracoes.WebServices.UF           := ansiuppercase(UFOrigem);

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Então debugue para ver pq as notas não estão sendo limpadas ou se o componente DANFe está buscando a NFe de algum outro local.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Vou tentar encontrar algo que me mostre mais claramente onde está o erro, mas o curioso é que na entrada da procedure

procedure TdmACBrNFeRave.CustomDadosProdutosCXNOpen(Connection: TRvCustomConnection);

a variável FNFE.INFNFE.ID de repente perde o valor que tinha até então e muda o conteúdo para a nota anterior.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Tente colocar o componente de Danfe num DataModule, onde vc cria quando for imprimir, e depois de imprimir vc destroi ele.

 

[]´s

João Henrique de Souza

 

Manual de como configurar o TortoiseSVN para não ficar mostrando a senha repetidas vezes (somente para commiters):

https://sourceforge.net/p/forge/community-docs/TortoiseSVN/

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4028 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.