Ir para conteúdo
  • Cadastre-se

dev botao

Capturar Cancelamento De Transação - Obtemcampoclisitef Tipocampo = 500


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

Recommended Posts

Olá, Alguém poderia me ajudar em uma duvida? Estou usando o ACBrTEF (SiTef)

Vou explicar um pouco do meu processo: É um Cancelamento de Transação.

Solicito um ADM, (Modalidade: 110)

Então é disparado o evento ExibeMenuCliSiTef;

No Menu escolho a Opção de 3:Cancelamento de Transação; (Buffer = 3);

Então é disparado o evento ObtemCampoCliSiTef com Tipo Campo = 500 (código do supervisor);

Na implementação do ObtemCampoCliSiTef, é disparado o ShowModal de uma tela para solicitar a senha do supervisor.

Na minha rotina de solicitação de autorização eu tenho que passar qual é a ação desejada e a função retorna se tem acesso sim/não. Ex: Boolean := AutorizaAcaoUsuario('User', paCancelaProduto); 

 

Agora vem minha duvidas:

1º - No evento ObtemCampoCliSiTef  quando o Tipo Campo for 500, sempre será do tipo 3:Cancelamento de Transação; (Buffer = 3)?

2º - De que maneira eu conseguiria identificar que o usuario escolheu a opção 3:Cancelamento de Transação; (Buffer = 3) no ADM (ExibeMenuCliSiTef)?

Já verifiquei que no ExibeMenuCliSiTef existe a var ItemSelecionado, que retornar qual opção o usuario escolheu... seria por aqui msmo? 

Para que eu consiga fazer mais ou menos isso:

 

  if (TipoCampo = 500) then
  begin
    Digitado := AutorizaAcaoUsuario('User', Ord(paCancelaTransacao);
    if Digitado then
       Resposta := 'OK';
  end 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Você precisa capturar que é um cancelamento para gravar na base de dados, se sim, utilize o evento OnDepoisConfirmarTransacoes do ACBrTEFD, ele será disparado depois que o cancelamento ou qualquer outra transação forem confirmados no TEF e possui retorno com todas as informações a respeito da transação.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Régys Obrigado pela resposta.

Mas o problema está um pouco antes....

Seria encontrar uma maneira de identificar que no ADM do CliSiTef o Usuario escolheu a opção 3:Cancelamento de transacao, e assim poderei fazer uma validação se o Usuario tem acesso pra ação de 3:Cancelamento de transacao... A principio estou fazendo assim:

 

type
  TefAcaoAtual = (TesteDeComunicacao = 0, ReimpressaoComprovante = 1, CancelamentoTransacao = 2,
    PreAutorizacao = 3, ConsultaParcelaCDC = 4, ConsultaPrivateLabel = 5,   ConsultaSaqueFinivest = 6,
    ConsultaSaqueBancoIBI = 7, ConsultaSaldoDebito = 8, ConsultaSaldoCredito = 9, RecargaCelular = 10,
    PetrobrasPremmia = 11, OutrosCielo = 12); 
 
Depois do OnTefCliSiTefExibeMenu(Titulo: String; Opcoes: TStringList; var ItemSelecionado: Integer; var VoltarMenu: Boolean);
 
  TEF.AcaoAtual := TefAcaoAtual(ItemSelecionado);  // CancelamentoTransacao
 
  Boolean := ValidarAcessoAcao('Usuario', TEF.AcaoAtual);
 
So que tem um problema isso funciona apenas quando mando o ADM (110) pro ACBrTEFD... Pq quando o ACBrTEFD solicitar o OnTefCliSiTefExibeMenu pra escolher por exemplo a opção se é Cartao Magnetico/Chip ou Digitado, e o usuario escolher o tipo Magnetico/Chip o fluxo vai disparar TEF.AcaoAtual := TefAcaoAtual(ItemSelecionado); onde ItemSelecionado é 0 ao fazer TefAcaoAtual(ItemSelecionado) sera retornado TesteDeComunicacao, mas na realidade seria o Magnetico/Chip
Editado por Ronaldo Cesar Bim
Link para o comentário
Compartilhar em outros sites

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