Ir para conteúdo
  • Cadastre-se

dev botao

Clisitef Seq.68 (Roteiro De Homologação Clisitef)


Ver Solução Respondido por joaoagra,
  • Este tópico foi criado há 2535 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá! Estou fazendo a homologação no Sitef utilizando o ACBRTEFD, Todos os testes do roteiro de Pré-Homologação Clisitef foram realizados sem nenhum problema com excessão da Seq.68 do Roteiro Pré-Homologação, veja após fazer o teste da seguencia está aprovando a tranzação como demonstra a imagem em anexo, mas não está em conformidade com a proposta do teste. Após enviar o material de pré-homologação para a Software Express o Roberto Alvarez solicitou que eu corrigisse esse teste, segue a Resposta da Software Express(Teste 68 da CliSitef, a transação ficou com estado de "Efetuada" no Relatório do SiTef quando deveria ficar cancelada;)

 

Obs.: só ta faltando esse teste, os demais testes do CliSitef, o Cielo Premia e  Recarga estão todos ok.

 

 

 

Sequência

Preparação

Execução

Resultado Esperado

Seq. 68

- Esta transação poderá ser de qualquer valor

 

- Para esta transação utilizar cartões Visa e Visa Electron

 

- A aplicação sempre deverá verificar o status da impressora.

- Realizar uma transação de Crédito magnético com uma parte do valor da venda

 

- Selecionar a opção á vista

 

- Chamar o 2º cartão com o valor restante da venda, ao aparecer a mensagem de “Insira ou passe o cartão”, desligar o computador (reset) e em seguida desligar a impressora

 

- Ligar novamente o computador e não ligar a impressora

 

- Cancelar a transação TEF mesmo com a impressora desligada e caso não tenha lançado a forma de pagamento é permitido aproveitar o cupom fiscal, caso contrário, cancelar o cupom fiscal.

 

 

- Tratar a pendência da transação TEF

 

- Exibir mensagem ao operador:

 

“Última transação TEF não foi efetuada. Favor reter o Cupom.”

 

- Verificar o status da impressora e exibir mensagem de Falha de comunicação

 

 

- Não há impressão de cupom TEF.

 

- A transação não será autorizada

 

 

post-3999-0-80179100-1357249952.jpg

post-3999-0-80179100-1357249952.jpg

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Acho que sei do que se trata.... você precisará ajustar seu evento OnInfoECF de acordo com o descrito no Demo...

 

Leia esse trecho do ACBrTEFDCliSiTef.pas

 


  try
     Est := TACBrTEFD(Owner).EstadoECF;
  except
     Est := 'O' ;
     { TODO: Criar arquivo de Status da Transação

         Se o ECF estiver desligado, será retornado 'O', o que fará o código
       abaixo Cancelar Todas as Transações Pendentes, porém, pelo Roteiro do
       TEF dedicado, é necessário confirmar a Transação se o Cupom foi
       finalizado com sucesso.
         Criar um arquivo de Status que seja atualizado no Fim do Cupom e no
       inicio do CCD, de maneira que seja possível identificar o Status do
       Documento no ECF indepentende do mesmo estar ou não ligado

         Como alteranativa, é possível implementar código no Evento "OnInfoECF"
       para buscar o Status do Documento no Banco de dados da sua aplicação, e
       responder diferente de 'O',   (Veja exemplo nos fontes do TEFDDemo)
     }
  end ;

  fpInicializado := True ;

  // Cupom Ficou aberto ?? Se SIM, Cancele tudo... //
  if (Est in ['V','P','N','O']) then
     CancelarTransacoesPendentesClass
  else
     // NAO, Cupom Fechado, Pode confirmar e Mandar aviso para re-imprimir //
     ConfirmarESolicitarImpressaoTransacoesPendentes ;

 

 

E no Demo:

 

 

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;

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

  • Solution

Olá! Daniel, resolvi o problema no Evento OnInfoECF como você orientou, segue ...

 

Obrigado mais uma vez pela orientação, assim que concluir o processo da homologação vou dar a minha contribuição para o projeto.

 


   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 ACBrTEFD.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) }
         (ACBrTEFD.GPAtual in [gpCliSiTef,gpVeSPague]) then
      begin
              if TotalRecebido>=TotalVenda then
              RetornoECF := 'R'
           else
              RetornoECF := 'O' ;
         exit ;
      end ;

      raise ;
   end;

   case Operacao of
     ineSubTotal :
       begin
         ASubTotal := ACBrECF1.Subtotal ;
         ASubTotal := ASubTotal - ACBrECF1.TotalPago +
                      StringToFloatDef(DesontoAcrescimo, 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;
 

Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...
Em 04/01/2013 at 09:03, Daniel Simoes disse:

Acho que sei do que se trata.... você precisará ajustar seu evento OnInfoECF de acordo com o descrito no Demo...

 

Leia esse trecho do ACBrTEFDCliSiTef.pas

 



  try
     Est := TACBrTEFD(Owner).EstadoECF;
  except
     Est := 'O' ;
     { TODO: Criar arquivo de Status da Transação

         Se o ECF estiver desligado, será retornado 'O', o que fará o código
       abaixo Cancelar Todas as Transações Pendentes, porém, pelo Roteiro do
       TEF dedicado, é necessário confirmar a Transação se o Cupom foi
       finalizado com sucesso.
         Criar um arquivo de Status que seja atualizado no Fim do Cupom e no
       inicio do CCD, de maneira que seja possível identificar o Status do
       Documento no ECF indepentende do mesmo estar ou não ligado

         Como alteranativa, é possível implementar código no Evento "OnInfoECF"
       para buscar o Status do Documento no Banco de dados da sua aplicação, e
       responder diferente de 'O',   (Veja exemplo nos fontes do TEFDDemo)
     }
  end ;

  fpInicializado := True ;

  // Cupom Ficou aberto ?? Se SIM, Cancele tudo... //
  if (Est in ['V','P','N','O']) then
     CancelarTransacoesPendentesClass
  else
     // NAO, Cupom Fechado, Pode confirmar e Mandar aviso para re-imprimir //
     ConfirmarESolicitarImpressaoTransacoesPendentes ;

 

 

E no Demo:

 

 


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;

Daniel, vc é um gênio!!!!!!!!!!! Vc não imagina o quanto me ajudou....rsrsrsrs....obrigada!!!!!

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

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