Ir para conteúdo
  • Cadastre-se

dev botao

Mesmo passando os valores o componente não preenche as respostas utilizando a CliSiTEF


Ver Solução Respondido por Daniel Simoes,

Recommended Posts

  • Membros Pro
Postado

Bom dia, notei um pequeno problema com o cancelamento de um transação e vi que na verdade vai acontecer em outras também.
No código do cancelamento está o seguinte:
 

  fRespostasPorTipo.ValueInfo[146] := ValorStr;
  fRespostasPorTipo.ValueInfo[147] := ValorStr;
  fRespostasPorTipo.ValueInfo[515] := FormatDateTime('DDMMYYYY',DataHoraTransacao) ;
  fRespostasPorTipo.ValueInfo[516] := NSU ;

Esses valores deveriam ser usados para "ignorar" o evento QuandoPerguntarCampo do componente, porém o mesmo não ocorre, e continua sendo requisitado informar manualmente esses dados.
Ao olhar o código da ContinuarRequisicaoSiTef da ACBrTEFAPICliSiTef notei que nos comandos 30,31,34,35 e 41 está sendo ignorado a resposta e solicitando novamente (Conforme código abaixo).
 

      Resposta := '';
      Voltar := False;
      Digitado := True;

      if (fUltimoRetornoAPI = 10000) then
      begin
        if (TipoCampo > 0) then
          Resposta := fRespostasPorTipo.ValueInfo[TipoCampo]; //////////////////////////////// PREENCHIMENTO DA RESPOSTA ///////////////////////////
		...
        case ProximoComando of
          0: 
          begin
            RespCliSiTef.GravaInformacao(TipoCampo, Mensagem);

            case TipoCampo of
              ...
            31:
            begin
              DefinicaoCampo.TipoCampo := TipoCampo;
              DefinicaoCampo.TituloPergunta := ACBrStr(Mensagem);
              DefinicaoCampo.TipoDeEntrada := tedNumerico;
              DefinicaoCampo.TipoEntradaCodigoBarras := tbQualquer;
              DefinicaoCampo.TamanhoMaximo := TamanhoMaximo;
              DefinicaoCampo.TamanhoMinimo := TamanhoMinimo;

              Resposta := '';     ////////////////// ignora a resposta informada nas primeiras linhas /////////////////
              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;


Para resolver simplesmente tirei essa atribuição Resposta := ''; e passei a validar com base se ela está vazia antes de cada chamada do QuandoPerguntarCampo .
Vou anexar o arquivo para conseguirem comparar as alterações.

ACBrTEFAPICliSiTef.pas

  • Fundadores
Postado

@Datacamp,

Pelo que notei da implementação antiga, em ACBrTEFDCliSiTef, o valor é atribuído para o Campo, mas mesmo assim, a chamada da pergunta ocorre... Creio que a intenção do código original, era de sugerir valores para as perguntas, mas não omitir a pergunta...

Atualmente eu acho que faz mais sentido, omitir a pergunta (nem chamar o evento)... Qual a sua opiniã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.

  • Membros Pro
Postado

@Daniel Simoes, eu acho interessante a omissão nesses casos por conta de que já ocorreu a passagem de parâmetros.
É interessante uma forma de "zerar" esses parâmetros, o default por exemplo passando sempre String vazia para que ele caia na condição e pergunte, se assim for especificado.

Mas no caso de possuir o preenchimento desses valores eu tenho preferência por ocultar justamente para não prejudicar a experiência do usuário final, no seguinte raciocínio: "Se já possui valor, por que eu deveria confirmar ?",  nesse caso acredito que fique redundante.

  • Curtir 1
  • Membros Pro
Postado

Obrigado, assim que possível atualizo os fontes.
Mas se foi o mesmo arquivo que enviei já testei aqui e funcionou para o cancelamento corretamente.

  • Curtir 1
  • 2 semanas depois ...
  • Membros Pro
Postado

Bom dia, atualizado os fontes para a última versão e realizados os testes no cancelamento, funcionou corretamente.
Obrigado.

  • Curtir 1
  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.