Ir para conteúdo
  • Cadastre-se

dev botao

Possível Bug na nova versão do AcbrTefD


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

Recommended Posts

 Pessoal peguei a ultima versão do AcbrTefD e percebi um problema que não tinha na verão anterior.

 Estou usando o ACBrTefD com NFCe.

 Antes de pegar essa ultima versão que tem a propriedade "ConfirmarAntesDosComprovantes" o qual estou colocando como True.

 Se eu efetuasse uma venda e antes da geração da NFCe eu desligasse a maquina quando eu ligava novamente e abrisse o sistema eu conseguia capturar as respostas pendentes dentro do evento "OnExibeMsg"  ou seja ao ativar o sistema novamente depois de ter desligado sem ter confirmado a transação TEF eu sempre conseguia ler os arquivos repostas dentro do Evento "OnExibeMsg"  e mostrar para o usuário informações como NSU, Valor  Etc..

 Agora não consigo mais ler as repostas sempre me retorna "AcbrTEF1.RespostasPendentes.Count = 0"

 Não é problema em minha aplicação pois voltei a versão anterior do ACBr e consigo capturar normalmente as MSG

Obs Versão antiga 10/10/2016  versão nova 16/04/2017

 O que pode ser ?

Editado por luciano_f
Link para o comentário
Compartilhar em outros sites

 Será que existe alguma forma de eu mostrar os arquivos respostas da ultima transação antes da mesma ser cancelada ?

 Na minha aplicação eu tenho feito da seguinte forma :

 Apos a emissão da NFCe eu executo o comando "AcbrTefD.ConfirmarTransacoesPendentes(False);"

 Então caso haja uma queda de energia apôs ligar a maquina e subir a aplicação ao ativar a aplicação e Iniciar o ACBrTefD

   EstadoSimuladoEcf := tpsPagamento; 
   AcbrTefD.Inicializar(gpCliSiTef);
   EstadoSimuladoEcf := tpsLivre; 

será cancelado as transações pendentes nesse momento eu gostaria de capturar os dados da transação que está sendo cancelada e mostrar para o usuário porém não consigo pois no evento OnExibeMsg  sempre em retorna vazio AcbrTefD.RespostasPendentes.Count = 0

Testei em varios eventos como "OnDepoisCancelarTransacoes" porém sem sucesso 

 A grande questão é que eu não confirmo as transações logo apôs a emissão do TEF eu deixo tudo na memoria para ser confirmado só depois da emissão da NFCe e dessa forma percebo que o evento "OnDepoisCancelarTransacoes" nem é disparado.

Eu gostaria de mostrar informações como :

Function RetornaDadosTransacaoTEF(vValorParcela : Real = 0) : String;
Var aDebitoCredito : String;
Begin
 Result := EmptyStr;

 With Controle_Financeiro Do Begin
  if AcbrTefD.RespostasPendentes.Count > 0 Then
   With AcbrTefD.RespostasPendentes[Pred(CartaoTEF.RespostasPendentes.Count)] do Begin
   if Credito Then
    aDebitoCredito := 'Credito'
   Else
    aDebitoCredito := 'Debito';

    Result := 'Rede : ' + Rede + #13 +
              'NSU : ' + NSU + #13 +
              'Documento Vinculado : ' + DocumentoVinculado + #13 +
              'Codigo Autorização : ' + CodigoAutorizacaoTransacao + #13 +
              'D/C : ' + aDebitoCredito + #13 +
              'BIN do cartão : ' + LeInformacao(136, 0).AsString + #13 +
              'Header : ' + Header + ' ID : ' + IntToStr(ID) + #13 +
              'Valor Total Recebido : ' + MaskFloatDinheiro(ValorTotal) + #13 +
              'Saque : ' + MaskFloatDinheiro(Saque) + #13 +
              'Saldo Restante : ' + MaskFloatDinheiro(CartaoTEF.RespostasPendentes.SaldoRestante);

    if vValorParcela <> 0 Then
     Result := Result + #13 + 'Valor Parcela : ' + MaskFloatDinheiro(vValorParcela);
   End;
 End;

End;

 

Obs estou usando "gpCliSiTef"

Grato.

 

 

Editado por luciano_f
Link para o comentário
Compartilhar em outros sites

Pessoal achei a solução para o meu problema descrito acima se algum colega precisar no evento OnExibeMsg coloque uma chamada nessa function abaixo.

Function Func_RetornaDadosTransacaoTEF(vValorParcela : Real = 0) : String;
Var aDebitoCredito : String;

 Procedure CaptaDados(DadosResp : TACBrTEFDResp);
 Begin
  With Controle_Financeiro, DadosResp do Begin
   if Credito Then
    aDebitoCredito := 'Credito'
   Else
    aDebitoCredito := 'Debito';

   Result := 'Rede : ' + Rede + #13 +
             'NSU : ' + NSU + #13 +
             'Documento Vinculado : ' + DocumentoVinculado + #13 +
             'Codigo Autorização : ' + CodigoAutorizacaoTransacao + #13 +
             'D/C : ' + aDebitoCredito + #13 +
             'BIN do cartão : ' + LeInformacao(136, 0).AsString + #13 +
             'Header : ' + Header + ' ID : ' + IntToStr(ID) + #13 +
             'Valor Total Recebido : ' + MaskFloatDinheiro(ValorTotal) + #13 +
             'Saque : ' + MaskFloatDinheiro(Saque) + #13 +
             'Saldo Restante : ' + MaskFloatDinheiro(CartaoTEF.RespostasPendentes.SaldoRestante);
  End;
 End;

Begin
 Result := EmptyStr;

 With Controle_Financeiro Do Begin

  if CartaoTEF.RespostasPendentes.Count > 0 Then
   CaptaDados(CartaoTEF.RespostasPendentes[Pred(CartaoTEF.RespostasPendentes.Count)])
  Else
   CaptaDados(CartaoTEF.Resp);

  if vValorParcela <> 0 Then
   Result := Result + #13 + 'Valor Parcela : ' + MaskFloatDinheiro(vValorParcela);
 End;

End;

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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