Ir para conteúdo
  • Cadastre-se

dev botao

Homologação Skytef/SiTef - sequência 6 - ajuste no ACBrTEFApi


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

Recommended Posts

Postado

Olá,

Estou fazendo a homologação com a Skytef usando ACBrTEFApi e tudo tem corrido bem, porém há um pequeno ajuste necessário no componente para atender a sequência 6 da homologação:

sitef.thumb.jpg.11300ee4b480990edac29454e1765bd6.jpg

 

Cheguei a tentar contato com a Skytef para confirmar essa informação, e tive esse retorno:

resposta.jpg.0690ca4ef56a1cc477243aadc63d1494.jpg

 

Na prática, o evento QuandoPerguntarCampo precisa permitir que eu envie uma instrução para voltar, assim como ocorre no evento QuandoPerguntarMenu. Assim eu posso criar um inputbox com os botões OK | VOLTAR | CANCELAR para tratar essa situação. Para permitir isso fiz um ajuste na rotina ContinuarRequisicaoSiTef. Nos comandos 30, 31, 34, 35 e 41 incluí um tratamento para que ao receber o valor "*VOLTAR*" o componente use a mesma variável Voltar que já está usando no comando 21:

altera.thumb.jpg.70247a3ae9f8a2c48fa51daf5f0231f6.jpg

 

Segue o arquivo alterado em anexo para avaliação.

ACBrTEFAPICliSiTef.pas

  • Fundadores
Postado

Olá @edu,

Pelo que notei, a aplicação deveria sempre retornar a String "*VOLTAR*", para que o código funcionasse, correto ?

             TefAPI.QuandoPerguntarCampo(DefinicaoCampo, Resposta, Validado, Interromper);
             Voltar := (Resposta = '*VOLTAR*');
             if not Voltar then
               RespCliSiTef.GravaInformacao(TipoCampo, Resposta);

 

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.

Postado

Sim, quando o usuário clicar num botão que você definir com a função para voltar no seu sistema, ele envia esse texto *VOLTAR* na resposta, o que por sua vez aciona variável voltar, exatamente igual ocorre quando usa a opção -2 no ItemSelecionado do evento QuandoPerguntarMenu.

Fiz assim para evitar a criação de um novo parâmetro, o que envolveria alterar também a unit da PayGo (que não sei se suporta isso) e também obrigaria quem já homologou a alterar o sistema. Usei a palavra dessa forma para evitar o risco de acabar usando uma resposta válida para alguma situação. Caso ache interessante fazer isso de outra forma tudo bem. Pelo que percebi na homologação o SiTef permite voltar praticamente em todos os campos que testei, exceto claro na primeira interação. A sequência 6 da homologação é justamente para testar se o sistema está aceitando isso.

Usei o "if not voltar then" porque o texto *VOLTAR* não é uma resposta que o sistema vai passar para a SiTef, pelo que entendi "RespCliSiTef.GravaInformacao(TipoCampo, Resposta);" faz a gravação do valor recebido em Resposta como um retorno ao comando.

  • 2 semanas depois ...
  • Fundadores
Postado

Não me agrada muito, a ideia de usar uma "String" como Flag... então provavelmente não devo incorporar a modificação...

Mas ainda não tive tempo de analisar qual seria a melhor soluçã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.

  • 3 meses depois ...
Postado

Olá, 

Passei pela mesma dificuldade, resolvi de forma parecida a do colega @edu. Segue a sugestão:

           // ACBrTEFAPICliSiTef.pas - Linha 573
           30:  // Deve ser lido um campo cujo tamanho está entre TamMinimo e TamMaximo
           begin
             DefinicaoCampo.TipoCampo := TipoCampo;
             DefinicaoCampo.TituloPergunta := ACBrStr(Mensagem);
             DefinicaoCampo.TipoDeEntrada := tedTodos;
             DefinicaoCampo.TamanhoMaximo := TamanhoMaximo;
             DefinicaoCampo.TamanhoMinimo := TamanhoMinimo;
             DefinicaoCampo.MascaraDeCaptura := EmptyStr;

             Validado := True;
             TefAPI.QuandoPerguntarCampo(DefinicaoCampo, Resposta, Validado, Interromper);

             if Resposta = '-1' then
               Interromper := True
             else
               if Resposta = '-2' then
                 Voltar := True
               else
                 RespCliSiTef.GravaInformacao(TipoCampo, Resposta);
           end;

 

  • Moderadores
Postado
13 minutos atrás, joão vitor de fraga venancio disse:

Olá, 

Passei pela mesma dificuldade, resolvi de forma parecida a do colega @edu. Segue a sugestão:

           // ACBrTEFAPICliSiTef.pas - Linha 573
           30:  // Deve ser lido um campo cujo tamanho está entre TamMinimo e TamMaximo
           begin
             DefinicaoCampo.TipoCampo := TipoCampo;
             DefinicaoCampo.TituloPergunta := ACBrStr(Mensagem);
             DefinicaoCampo.TipoDeEntrada := tedTodos;
             DefinicaoCampo.TamanhoMaximo := TamanhoMaximo;
             DefinicaoCampo.TamanhoMinimo := TamanhoMinimo;
             DefinicaoCampo.MascaraDeCaptura := EmptyStr;

             Validado := True;
             TefAPI.QuandoPerguntarCampo(DefinicaoCampo, Resposta, Validado, Interromper);

             if Resposta = '-1' then
               Interromper := True
             else
               if Resposta = '-2' then
                 Voltar := True
               else
                 RespCliSiTef.GravaInformacao(TipoCampo, Resposta);
           end;

 

no caso tu usou os códigos, que seria o melhor caminho do que uma string que pode ser modificada ou alterada

se quiser anexar sua solução também

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Fundadores
Postado

Parece fazer mais sentido...

O correto, seria modificar a assinatura do evento, para também ter o parâmetro "Voltar" por referencia..
mas isso quebraria todas as aplicações existentes... pois tornaria o evento incompatível, com o atual...

Portanto acho que a sua sugestão, é a que melhor pacifica o problema...

Obrigado pela contribuição, devo subir ao SVN, após uma pequena revisão...

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

Postado

Neste tópico...

 

Fiz uma solução alterando o evento QuandoPerguntarCampo, colocando um booleano para informar que deve voltar.

 

  • 2 semanas depois ...
  • Fundadores
Postado
Em 06/03/2024 at 10:15, joão vitor de fraga venancio disse:

Olá,

Segue o arquivo com as alterações.

ACBrTEFAPICliSiTef.pas 38.4 kB · 5 downloads

Enviada a contribuição do @joão vitor de fraga venancio... Commit [r33017]

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.

  • Fundadores
Postado

Notei que os Demos, precisariam de ajustes, para enviar a Resposta com '-1' ou '-2', conforme os botões pressionados...

Alguém pode por favor subir as Units dos Demos alteradas?

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.

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