Ir para conteúdo
  • Cadastre-se

Felipe Sachetti

Membros
  • Total de ítens

    6
  • Registro em

  • Última visita

Posts postados por Felipe Sachetti

  1. acabei q pra poder passar na homologacao fiz um "arranjo tecnico", como é testado somente o ultimo documento emitido, ao iniciar o processo de pagamento, salvo em registro o nr do documento e ao inicializar a aplicacao consulto se o ultimo documento esta pendente, por falta de tempo nao consegui dar sequencia no ajusto do componente, alterei algumas partes de funcoes e procedures, vou postar aqui as minhas anotacoes se ajudar, inicio do ano acredito estar mais disponivel e posso ajudar tbm nos ajustes e testes..

     

    unit ACBrTEFAPICliSiTef;

    tirar de dentro e colocar fora do repeat

    TituloMenu := '' ;

    quando vinha titulo no comando 4 nao mostrava no comando 21, pois TituloMenu := '' ;
    eliminava o titulo

    =============================================================

    nit ACBrTEFAPICliSiTef;
    funcao ContinuarRequisicaoSiTef;

    tratamento do comando 30, incluido ajuste para aceitar o VOLTAR no formulario perguntar campo

    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);

                 //ajuste para aceitar voltar nos formulario de solicitar informacao
                 if((Interromper = False)and(Validado)and(Resposta = 'RetornarMenuAnterior'))then
                 begin
                      Resposta := '';
                                  Voltar := True;
                 end else
                      RespCliSiTef.GravaInformacao(TipoCampo, Resposta);
               end;

    ============================================================================

    na procedure quando perguntar campo passa valores quando for voltar

    procedure TTef.QuandoPerguntarCampo(DefinicaoCampo: TACBrTEFAPIDefinicaoCampo; var Resposta: string; var Validado, Cancelado: Boolean);

    //se nao for ok ou voltar trata como cancelado
          if((MR <> mrOK)and(MR <> mrRetry))then
          begin
              Cancelado := True;
            Validado := False;  // Não fizemos as validações de "DefinicaoCampo.ValidacaoDado", vamos deixar o ACBrTEFAPI validar
              Resposta := FormObtemCampo.Resposta;
          end else
          begin
              if(MR = mrRetry)then
            begin
                Cancelado := False;
              Validado     := True;
              Resposta     := 'RetornarMenuAnterior';
            end else
            begin
                 Cancelado := False;
              Validado     := False;
              Resposta     := FormObtemCampo.Resposta;
            end;
          end;

    =============================================================================================

    unit ACBrTEFAPICliSiTef;

    TACBrTEFAPIClassCliSiTef.FinalizarTransacao(

    // CliSiTEF não usa Rede, NSU e Finalizacao
      DocumentoVinculado := '';
      Confirma := (AStatus in [tefstsSucessoAutomatico, tefstsSucessoManual]);
      i := fpACBrTEFAPI.RespostasTEF.AcharTransacao(Rede, NSU, CodigoFinalizacao);
      if (i >= 0) then
        DocumentoVinculado := fpACBrTEFAPI.RespostasTEF[i].DocumentoVinculado;

        //caso nao localize e tenha vindo rede sem nsu é pq foi chamado avulso com o DOCUMENTOVINCULADO no Rede
      if((Rede <> '')and(DocumentoVinculado = '')and(NSU = ''))then
          DocumentoVinculado := Rede;

      FinalizarTransacaoSiTef(Confirma, DocumentoVinculado);

    =========================================================

    desculpa a forma como compartilhei sem formatacao, é que mantenho as alteracoes por escrito caso atualize o componente e tenha q 

    ajustar os detalhes manualmente

     

     

    qqr coisa estou a disposicao para ajudar e testes

     

    em relacao a tratar o ultimo documento pendente, ao abrir a aplicacao faco essa validacao

     

    var ultimo := BackupDocumentoSitef_Ler; //leio registro com ultimo documento q foi inicializado o pagamento
          var estapendente := (TACBrTEFAPIClassCliSiTef(ObjetoTef.Acbr.TEF).TEFCliSiTefAPI.ObtemQuantidadeTransacoesPendentes(Now, AnsiString(ultimo)) > 0);

        if(estapendente)then
        begin
          TACBrTEFAPIClassCliSiTef(ObjetoTef.Acbr.TEF).FinalizarTransacao(ultimo,
                                                                          '',
                                                                          '',
                                                                          tefstsSucessoManual);

  2. ao realizar a homologação com Sitef, esbarramos num teste.

    rotina do teste
     - realizar venda
     - credito
     - inserir cartao
     - digitar senha
     - quando aprovar e receber mensagem de retirar cartao (matar o processo simulando desligamento)

    ao iniciar novamente o componente nao valida as operacoes pendentes..

    chegamos no detalhe q o arquivo que é analisado para validar as pendencias "Acbr_xxx" é salvo na chamada apos executar o FinalizarChamadaAPI 
    porem esse somente é chamado no finally da fpTEFAPIClass.EfetuarPagamento(
    e essa so é concluida apos remover o cartao.

    percebemos tambem que existe uma funcao da sitef q retorna a quantidade de pendentes porem ainda nao implementada


    nao conseguimos contornar esse "detalhe", alguem ja passou por isso? conseguiu homologar? passou nesse teste?
    alguem com a implementacao de rotina de retornar e tratar pendentes da sitef??
     

  3. Em 07/05/2018 at 13:01, Josimar Dias disse:

    Até consegui imprimir o qr-code alterando diretamente na unit "ACBrEscPosEpson", porém não consegui lê-lo.

     

      Result := ESC  + 'Z' +                     // Codigo QRCode
                   AnsiChr(0) +                      // m means specified version.(1~40,0:Auto size)
                   'L' +                             // n specifies the EC level.(L:7%,M:15%,Q:25%,H:30%)
                   AnsiChr(2) +                      // k specified component type.(1~8)
                   AnsiChr(Low(Length(ACodigo)+2))  +    // dL:The first byte is the low order number.
                   AnsiChr(High(Length(ACodigo)+2)) +       // dH:The second byte is the upper number.
                   ACodigo;

    estou com o mesmo problema, sem conseguir ler os codigos impressos...
    ja revirei o manual da impressora e nao consegui fazer com que imprimisse e lesse uma URL de NFCE...


    conseguiu resolver esse problema...?

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