Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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?

 

Postado

É 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);

Postado

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.

  • Este tópico foi criado há 4286 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.