Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao realizar transação com emulador


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

Recommended Posts

  • Membros Pro

Boa noite pessoal tudo bem...

 

seguinte estou testando o meu TEF no meu frnete de caixa do ECF...

e estou usando um emulador do ECF, alguem sabe se o tef da pra testar com o emulador?

pois fica dando erro direto quando tento realizar uma vendo com tef. quando ele cai na funcao abaixo

StatusTransacao := ACBrTEFD.CRT(ValorInformado, TipoPagamento.Codigo, fdatamodule.ACBrECF.NumCOO);

 

obrigado

 

Tiago passarella

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Sim, você pode usar um emulador... é o que usamos para o desenvolvimento do dia a dia..

Já estou os fontes do TEFDDemo ?

Você forneceu poucas informações..

- Qual a exata msg do erro ?
- Que comando você tentou executar ?
- Anexe (zip) o Log do ACBrECF e ACBrTEFD

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

  • Membros Pro

entao ele esta entrando aki e fica em um loop infinito pois nao consegue obter um retorno do emulador. ( Oretorno fica sempre := '') nao retorna nenhum valor...

function TACBrTEFD.InfoECFAsString(Operacao: TACBrTEFDInfoECF): String;
var
   Retorno: String;
begin
   Retorno := '';
   fTefClass.GravaLog( 'InfoECF: '+
     GetEnumName(TypeInfo(TACBrTEFDInfoECF), Integer(Operacao) ) ) ;

   while Retorno = '' do
   begin
      try
         OnInfoEcf( Operacao, Retorno ) ;
      except
         On E : Exception do
         begin
            fTefClass.GravaLog( fTefClass.Name +'   Erro: '+E.Message ) ;

            if DoExibeMsg( opmYesNo, CACBrTEFD_Erro_ECFNaoRespondeInfo ) <> mrYes then
               raise EACBrTEFDECF.Create(E.Message);
         end;
      end;
   end;

   fTefClass.GravaLog( '    Ret: '+Retorno ) ;
   Result := Retorno;
end;

no arquivo log do componente fica assim...

-- 30/11 20:10:58:930 - TEF_DIAL Inicializado
-- 30/11 20:10:58:940 - TEF_DIAL CancelarTransacoesPendentesClass 
-- 30/11 20:10:58:949 - TEF_DIAL IniciarRequisicao: ATV
-- 30/11 20:10:58:961 - TEF_DIAL FinalizarRequisicao: ATV, Fechando arquivo: C:\TEF_DIAL\req\intpos.tmp
-- 30/11 20:10:58:993 - TEF_DIAL FinalizarRequisicao: ATV, Renomeando: C:\TEF_DIAL\req\intpos.tmp para: C:\TEF_DIAL\req\intpos.001
-- 30/11 20:10:58:999 - TEF_DIAL FinalizarRequisicao: ATV, Aguardando: C:\TEF_DIAL\resp\intpos.sts
-- 30/11 20:10:59:267 - TEF_DIAL FinalizarRequisicao: ATV, Fim da Espera de: C:\TEF_DIAL\resp\intpos.sts Recebido
-- 30/11 20:10:59:286 - TEF_DIAL FinalizarRequisicao: ATV, Verificando conteudo de: C:\TEF_DIAL\resp\intpos.sts
-- 30/11 20:11:04:381 - InfoECF: ineEstadoECF
-- 30/11 20:11:04:651 -     Ret: V
-- 30/11 20:11:04:655 - InfoECF: ineSubTotal
-- 30/11 20:11:05:548 -     Ret: 2,00
-- 30/11 20:11:05:555 - InfoECF: ineTotalAPagar

 

o que pode ser ?

 

abraços

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

  • Membros Pro

encontrei exatamente onde esta o problema so nao sei o pq...

SaldoAPagar := SaldoAPagar - InfoECFAsDouble(ineTotalAPagar,0);

essa funcao InfoECFAsDouble nao tem a chamada ineTotalAPagar dentro de seu CASE sendo assim fica em um loop infinito....

acredito qeu ai esteja o problema, mas nao sei como resolver...

 

quando ao log do acbrecf eu nao achei....

aguardo retorno de uma possivel ajuda...

 

abraços

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Como posso reproduzir o problema, usando o TEFDDemo ? Qual o passo a passo ?

Vc diz que na sua aplicação você não implementou o retorno para "ineSubTotal" ?  Se for o caso, isso é o problema.. Veja no Projeto TEFDDemo, um exemplo de como os eventos devem ser programados...

 

procedure TForm1.ACBrTEFD1InfoECF(Operacao : TACBrTEFDInfoECF;
   var RetornoECF : String );
var
   ASubTotal: Double;
begin
   try
      if not ACBrECF1.Ativo then
         ACBrECF1.Ativar ;
   except
      { Para CliSiTEF ou V&SPague aplique o IF abaixo em sua aplicação, que
        permite saber se o Cupom foi concluido mesmo com o ECF desligado }

      if (not ACBrTEFD1.TEF.Inicializado) and   { Está na inicialização ? }
         (Operacao = ineEstadoECF) and          { Quer Saber o estado do ECF ? (mas se chegou aqui é pq o ECF já está com problemas) }
         (ACBrTEFD1.GPAtual in [gpCliSiTef,gpVeSPague]) then
      begin
         { Leia o último Documento Gravado no seu Banco de Dados, e verifique
           se o Cupom já foi finalizado,ou se já foi aberto um CCD ou Gerencial...
           Exemplo:

           Documento.Le(0);

           if (Documento.Finalizado) or (pos(Documento.Denominacao,'CC|RG') > 0) then
              RetornoECF := 'R'
           else
              RetornoECF := 'O' ;
         }

         //RetornoECF := 'O';    // Executará CancelarTransacoesPendentes;
         RetornoECF := 'R';    // Executará ConfirmarESolicitarImpressaoTransacoesPendentes;
         exit ;
      end ;

      raise ;
   end;

   case Operacao of
     ineSubTotal :
       begin
         ASubTotal := ACBrECF1.Subtotal ;
         ASubTotal := ASubTotal - ACBrECF1.TotalPago +
                      StringToFloatDef(edValorDescAcre.Text, 0);

         RetornoECF := FloatToStr( ASubTotal ) ;
       end;

     ineTotalAPagar :
       RetornoECF := FloatToStr( CalculaTotalPago );

     ineEstadoECF :
       begin
         Case ACBrECF1.Estado of
           estLivre     : RetornoECF := 'L' ;
           estVenda     : RetornoECF := 'V' ;
           estPagamento : RetornoECF := 'P' ;
           estRelatorio : RetornoECF := 'R' ;
           estNaoFiscal : RetornoECF := 'N' ;
         else
           RetornoECF := 'O' ;
         end;
       end;
   end;
end;   

 

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.