Ir para conteúdo
  • Cadastre-se

Arino

Membros
  • Total de ítens

    5
  • Registro em

  • Última visita

Posts postados por Arino

  1. Informação da Epson não encontrei a referente a esta situação. Porém, hoje da forma que está ocorre o erro que mencionei.

    Se passar uma condição de pagamento dinheiro + uma cartão, no ACBr quando passar o cartão ele gera um exceção que é capturada pelo try except, onde é verificado se é Epson e decrementa um na sequência que é mandado para a ECF. Ou seja, dinheiro sequência 1, cartão sequência 2 (ocorre a exceção que é tratada e decrementada ficando cartão sequência 1).

    Só que se tiver mais cartão esta abordagem não funciona e ocorre o erro. Foi seguindo esta linha de raciocínio que propus está solução. Nos testes que eu realizei, dinheiro sendo a primeira FPG e as próximas FPG sendo mescladas funciona. Porém, se o dinheiro não estiver nesta ordem pode gerar uma exceção realmente.

    Tens outra abordagem para este caso?

  2. Daniel testei com a versão anexa, porém, continuou ocorrendo o problema conforme o anexo.

    Eu desenvolvi uma maneira que resolveu o problema e pelos testes efetuados não prejudicou o andamento da Bematech 09/09.

    procedure TACBrECFEscECF.AbreCupomVinculado(COO, CodFormaPagto,
       CodComprovanteNaoFiscal: String; Valor: Double);
    Var
      Sequencia, NumPagtos, P : Integer ;
      APagto, CodPagto : String ;
      TemDinheiro: Boolean;
    
      procedure EnviaComandoCCD;
      begin
        with EscECFComando do
        begin
           CMD := 8;
           if (IsEpson) and (TemDinheiro) then	 								
             AddParamInteger(Sequencia -1)
           else
             AddParamInteger(Sequencia);	
           AddParamString(CodFormaPagto) ;
           AddParamInteger(1) ;   // Qtd Parcelas ??
           AddParamInteger(1) ;   // Num Parcela ??
           AddParamString(LeftStr(OnlyNumber(Consumidor.Documento),14)) ;
           AddParamString(LeftStr(Consumidor.Nome,30)) ;
           AddParamString(LeftStr(Consumidor.Endereco,79)) ;
        end;
        EnviaComando;
      end;
    
    begin
      // Achando a Sequencia do Pagamento de acordo com o Indice //
      Sequencia := 1;
      TemDinheiro := False;
      try
        NumPagtos := RespostasComando.FieldByName('NumPagtos').AsInteger;
        if NumPagtos > 1 then
        begin
          repeat
            APagto := RespostasComando.FieldByName('Pagto'+IntToStr(Sequencia)).AsString;
            P := pos('|',APagto);
            CodPagto := Copy(APagto,1,P-1);
            if CodPagto = '1' then											
    			TemDinheiro := True;				
            if CodPagto = CodFormaPagto then
            begin
              APagto := '*'+APagto;  // sinaliza que já usou;
              break;
            end ;
    
            Inc( Sequencia );
          until (Sequencia >= NumPagtos);
        end ;
      except
      end ;
    
      try
        EnviaComandoCCD;
      except
        On Exception do
        begin
          // Woraround para Epson, que em algumas situações não reconhece o Nu. de Sequencia corretamente
          if IsEpson and (EscECFResposta.CAT = 16) and (EscECFResposta.RET.ECF = 11) then
          begin
            Dec(Sequencia);
            EnviaComandoCCD;
          end
          else
            raise;
        end;
      end;
     
      //...  	
    end;

    Adicionei esta verificação na EnviaComandoCCD:

           if (IsEpson) and (TemDinheiro) then
             AddParamInteger(Sequencia -1)
           else
             AddParamInteger(Sequencia);

    E verifico se tem uma condição em dinheiro nas formas de pagamento:

            if CodPagto = '1' then
              TemDinheiro := True;

    Porque se tem dinheiro, significa que a minha sequência na ECF EPSON tem que começar da sequência 1.

    ACBrLog.txt

  3. Boa tarde,

    estou com o seguinte problema na ECF Epson convênio 09/09:

    - Faço um cupom no valor de R$37,00

    - Efetuo os pagamentos: (Dinheiro - RS10,00), (Cartão Débito - R$12,00), (Cartão Débito - R$15,00).

    Os CCDs são impressos corretamente, porém sempre no último CCD o ACBr volta esta mensagem :

    "Erro retornado pela Impressora: EPSON

    Categoria: 16-Erro específico do Fabricante
    Motivo: 11-Meio de pagamento não encontrado."

    Percebi que o problema é quando utiliza Dinheiro + Cartão. A ECF se perde na sequência dos CCDs. No arquivo de resposta do ACBr ele grava, no caso exposto acima, 3 pagamentos. (Dinheiro - Sequência 1), (Cartão Débito - Sequência 2), (Cartão Débito - Sequência 3).

    Quando estas informações são passadas para a ECF imprimir o Cupom Vinculado, o ACBr passa o primeiro Cartão Débito com sendo a sequência 2, que está correto, porém para a EPSON este cartão deve começar na sequência 1, onde ocorre o erro.

    Procurando no fórum encontrei este tópico: Epson Tm-T800F (Escecf) - Problemas Com Comprovante Ccd, que é a mesma situação, porém aqui foi utilizado apenas Dinheiro e Um cartão. Se fizer com mais acontece o problema. Neste tópico o Daniel fez um Merge na Unit e resolveu o problema. Só que com mais de um cartão e dinheiro da problema.

    Estou anexando o log. Alguém poderia me ajudar.

    Ah, lembrando que para a Bematech do convênio 09/09 a forma como esta programado no ACBr funciona.

    ACBrLog.txt

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