Ir para conteúdo
  • Cadastre-se

dev botao

Travamento ao finalizar transação


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

Recommended Posts

  • Membros Pro

Bom dia 

Estou utilizando o seguinte componente "ACBrTEFDDepoisConfirmarTransacoes" que me retorna alguma informações da transação feita do cartão, ele esta funcionando normalmente me trazendo as informações que eu preciso, sendo que especificamente no tipo de cartão " Ticket Cultura" e no TEF D-TEF Direção ao entrar nessa procedure ele trava o sistema. Eu consigo imprimir o cupom e as duas vias do cartao em seguida trava e para na execução dessa procedure. Segue abaixo como ela esta sendo feita:

var
  I : Integer;
  sdes : string;
begin
  for I := 0 to RespostasPendentes.Count-1  do
  begin
     with RespostasPendentes do
     begin

        frcupom.Memo1.Lines.Add('Confirmado: '+Header);
        frcupom.Memo1.Lines.Add('ID: '+IntToStr(ID));
        frcupom.Memo1.Lines.Add('Rede: '+Rede);
        frcupom.Memo1.Lines.Add('NSU: '+NSU);
        frcupom.Memo1.Lines.Add('Valor: '+FormatFloat('###,###,##0.00',ValorTotal)) ;
        frCupom.memo1.lines.Add('Parcelas: '+IntToStr(TipoParcelamento));
        frcupom.Memo1.Lines.Add('Qtd Parcelas: '+IntToStr(QtdParcelas));
        frcupom.Memo1.Lines.Add('Cupom Vinculado: '+DocumentoVinculado);
        frcupom.Memo1.Lines.Add('Valor Orgiginal: '+FormatFloat('###,###,##0.00',ValorOriginal));
        frcupom.Memo1.Lines.Add('Taxa de Servico: '+FloatToStr(taxaservico));
        frcupom.Memo1.Lines.Add('Finalizacao: '+Finalizacao);
        frcupom.Memo1.Lines.Add('StatusTransacao: '+StatusTransacao);
        frcupom.Memo1.Lines.Add('Tipo Transacao: '+IntToStr(tipotransacao));
        frcupom.Memo1.Lines.Add('CodigoAutorizacaoTransacao: '+IntToStr(CodigoAutorizacaoTransacao));
        frcupom.Memo1.Lines.Add('NumeroloteTransacao: '+IntToStr(NumeroloteTransacao));
        frcupom.Memo1.Lines.Add('CodigoRedeAutorizada: '+CodigoRedeAutorizada);

        if debito then begin
           frcupom.Memo1.Lines.Add('Debito:  '+'SIM');
           frcupom.Memo1.Lines.Add('Credito: '+'NAO')
        end
        else begin
            frcupom.Memo1.Lines.Add('Debito: '+'NAO');
            frcupom.Memo1.Lines.Add('Credito: '+'SIM');
        end;

        frcupom.Memo1.Lines.Add('Nome Administradora: '+NomeAdministradora);

        if transacaoaprovada then
           frCupom.Memo1.Lines.Add('Transação Aprovada: '+'SIM')
        else
           frCupom.Memo1.Lines.Add('Transação Aprovada: '+'NAO');

        frcupom.Memo1.Lines.Add('Data/Hora Host: '+DateToStr(DataHoraTransacaoHost));
        frcupom.Memo1.Lines.Add('Data/Hora Transacao: '+DateToStr(DataHoraTransacaoLocal));
        frcupom.Memo1.Lines.Add('Data/Hora Transação Comprovante: '+DateToStr(DataHoraTransacaoComprovante));
        frcupom.Memo1.Lines.Add('NSU Transação Cancelada: '+NSUTransacaoCancelada);
        frcupom.Memo1.Lines.Add('Data Transação Cancelado: '+DateToStr(DataHoraTransacaoCancelada));
        frcupom.Memo1.Lines.Add('Data Vencimento: '+DateToStr(DataVencimento));
        frcupom.Memo1.Lines.Add('Modalidade Pgto: '+ ModalidadePagto);
        frcupom.Memo1.Lines.Add('Autenticação: '+Autenticacao);
        frcupom.Memo1.Lines.Add('Campo 11: '+LeInformacao(141,142).AsString);

        frCupom.Memo1.Lines.Add('Parcelado por: '+GetEnumName(TypeInfo(TACBrTEFDRespParceladoPor), integer(ParceladoPor)));
        frCupom.Memo1.Lines.Add('Tipo Operação: '+GetEnumName(TypeInfo(TACBrTEFDRespParceladoPor), Integer(TipoOperacao)));
        frcupom.Memo1.Lines.Add('Autenticacao:  '+GetEnumName(TypeInfo(TACBrTEFDRespParceladoPor), Integer(Autenticacao)));


        frCupom.Memo1.Update;
        frCupom.Memo1.Lines.SaveToFile(PATH_PDV);
        frCupom.Memo1.Lines.SaveToFile(ExtractFileDir(Paramstr(0))+'\Transacoes.txt');


        qrDesc.Close;
        qrDesc.sql.Clear;
        qrDesc.SQL.Add('select');
        qrdesc.sql.Add('nr_loja as nr_loja,data as data,nr_cupom as nr_cupom,nr_ecf as nr_ecf,');
        qrDesc.SQL.Add('nr_id as nr_id,rede as rede,nr_nsu as nr_nsu,');
        qrDesc.sql.Add('qt_parcelas as qt_parcelas,tp_modal as tp_modal,');
        qrDesc.SQL.Add('dt_transcancel as dt_transcancel,nr_nsucancel as nr_nsucancel');
        qrDesc.SQL.Add('from cupom');
        qrDesc.SQL.add('where');
        qrDesc.SQL.add('data ="'+invertedata(impfiscal.acbr1.DataHora)+'"');
        qrDesc.SQL.add('and nr_loja ="'+impfiscal.NrLojaEstoque+'"');
        qrDesc.SQL.add('and nr_ecf ="'+nrecf+'"');
        qrDesc.SQL.add('and nr_cupom ="'+nrcupom+'"');
        qrDesc.SQL.add(';');
        //InputBox('','',qrDesc.SQL.Text);
        qrDesc.open;


        with zLocal2.Script do begin
          Clear;
          if (Header='CRT') then begin
              add('update cupom set nr_id="'+IntToStr(ID)+'",');
              Add('rede="'+Rede+'",');
              Add('nr_nsu="'+NSU+'",');
              Add('qt_parcelas="'+IntToStr(QtdParcelas)+'",');

              if debito then
                 Add('tp_modal="1"')
              else if credito then
                 Add('tp_modal="0"');
          end;
          
          if NSUTransacaoCancelada<>'' then begin
             add('update cupom set');
             Add('dt_transcancel="'+InverteData(DataHoraTransacaoCancelada)+'",');
             Add('nr_nsucancel="'+NSUTransacaoCancelada+'"');
          end;
          
          add('where');
          add('data ="'+invertedata(impfiscal.acbr1.DataHora)+'"');
          add('and nr_loja ="'+impfiscal.NrLojaEstoque+'"');
          add('and nr_ecf ="'+nrecf+'"');
          add('and nr_cupom ="'+nrcupom+'"');
          add(';');
        end;
        zLocal2.Execute;

     end;

  end;
 

 

Alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

  • Consultores

Olá, Bom dia.

   Você precisará debugar, colocar um breakpoint nesse evento e identificar exatamente em qual linha acontece o travamento.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Para investigarmos um Bug, primeiro precisamos reproduzi-lo...

por favor descreva um passo a passo de como configurar e operar o TEFDDemo, até a ocorrência do problema...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
  • Membros Pro

Amigos, estou reativando o tópico pois, a responsável entrou de licença e somente agora pude fazer os testes. Também tive alguns problemas pois somente TEFs em produção passam esse cartão. Debugando, o erro acontece na seguinte linha:

if debito then
    Add('tp_modal="1"')
else if credito then
    Add('tp_modal="0"');

 

Está acontecendo o seguinte: Não entra nesse if acima, ou seja, ele não identifica se a venda é crédito ou debito. Vocês já passaram por isso? Essa bandeira é suportada pelo ACBrTEF?

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Você precisa analisar o log de respostas do Gerenciador do TEF. O mapeamento dessas respostas do Gerenciador, para as propriedades internas do componente, é feito no método: "ConteudoToProperty" da classe de TEF em questão...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Infelizmente não conheço o TEF da direção...

Nunta testei o mesmo... Portanto desconheço os detalhes de como ele retorna informações para a aplicação 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Pay&Go usa emulação de TEF discado... consulte a documentação do TEF discado ou da própria Pay&Go... para saber quais são os registradores que você precisa ler...

Eu só uso e recomendo, SiTEF

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...