Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2942 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Boa tarde pessoal,

Estamos implementando correspondente bancário e pagamento de fatura SIGACRED no nosso PDV. Está acontecendo um fato estranho. No módulo da SIGACRED quando retorna o relatório gerencial para impressão, ocorre erro de impressão e o ECF mostra a mensagem para tentarmos novamente. Se escolhemos SIM, o processo tenta novamente, ocorre erro de impressão e entra em loop. Só sai se escolhemos a opção NÃO.

Pelo que analisei, o problema ocorre na procedure:

procedure TACBrECFSwedaSTX.LinhaRelatorioGerencial(Linha: AnsiString; IndiceBMP: Integer);

Especificamente na linha:

EnviaComando( '25|' + Buffer, Espera ) ;

O valor da variável Espera está sendo 4 no caso. No log, temos a seguinte situação:

-- 31/10 14:58:34:262 -- Ativando a porta: COM1
-- 31/10 14:58:34:263 LinhaRelatorioGerencial( " [LF].....S.O.F.T.W.A.R.E.E.X.P.R.E.S.S....[LF]SI                            Rede 124[LF]MU               Codigo transacao: 200[LF]LA             Codigo operacao: 930030[LF]DO                         Valor: 7,69[LF].....S...I...M...U...L...A...D...O....[LF]SI                   NSU SiTef: 310022[LF]MU                      31/10/16 13:54[LF]LA                    ID PDV: SE000001[LF]DO             Estab.: 000000000000001[LF].....S...I...M...U...L...A...D...O....[LF]SI                     Host: 000310022[LF]MU         Transacao Simulada Aprovada[LF]                               (SiTef)[LF][CR][LF]", 0 )
-- 31/10 14:58:34:264                 TX -> [STX][207]25| [LF].....S.O.F.T.W.A.R.E.E.X.P.R.E.S.S....[LF]SI                            Rede 124[LF]MU               Codigo transacao: 200[LF]LA             Codigo operacao: 930030[LF]DO                         Valor: 7,69[LF].....S...I...M...U...L...A...D...O....[LF]SI                   NSU SiTef: 310022[LF]MU                      31/10/16 13:54[LF]LA                    ID PDV: SE000001[LF]DO             Estab.: 000000000000001[LF].....S...I...M...U...L...A...D...O....[LF]SI                     Host: 000310022[LF]MU         Transacao Simulada Aprovada[LF]                               (SiTef)[LF][LF][ETX][164]
-- 31/10 14:58:34:829    14:58:34:829 RX <- ACK = 2 Falha: 0
-- 31/10 14:58:34:933                 TX -> [STX][207]25| [LF].....S.O.F.T.W.A.R.E.E.X.P.R.E.S.S....[LF]SI                            Rede 124[LF]MU               Codigo transacao: 200[LF]LA             Codigo operacao: 930030[LF]DO                         Valor: 7,69[LF].....S...I...M...U...L...A...D...O....[LF]SI                   NSU SiTef: 310022[LF]MU                      31/10/16 13:54[LF]LA                    ID PDV: SE000001[LF]DO             Estab.: 000000000000001[LF].....S...I...M...U...L...A...D...O....[LF]SI                     Host: 000310022[LF]MU         Transacao Simulada Aprovada[LF]                               (SiTef)[LF][LF][ETX][164]
-- 31/10 14:58:35:498    14:58:35:498 RX <- ACK = 2 Falha: 1
-- 31/10 14:58:35:602                 TX -> [STX][207]25| [LF].....S.O.F.T.W.A.R.E.E.X.P.R.E.S.S....[LF]SI                            Rede 124[LF]MU               Codigo transacao: 200[LF]LA             Codigo operacao: 930030[LF]DO                         Valor: 7,69[LF].....S...I...M...U...L...A...D...O....[LF]SI                   NSU SiTef: 310022[LF]MU                      31/10/16 13:54[LF]LA                    ID PDV: SE000001[LF]DO             Estab.: 000000000000001[LF].....S...I...M...U...L...A...D...O....[LF]SI                     Host: 000310022[LF]MU         Transacao Simulada Aprovada[LF]                               (SiTef)[LF][LF][ETX][164]
-- 31/10 14:58:36:186    14:58:36:186 RX <- ACK = 6 Falha: 2
-- 31/10 14:58:39:026                 TimeOut estendido
-- 31/10 14:58:39:027                 Alteração de Estado: 0-
-- 31/10 14:58:39:027    14:58:39:027 RX <- (Bloco) = [STX][207]00!0000AI[128][128][146][128][128][ETX]1
-- 31/10 14:58:39:027                 TX -> ACK = 6 Falha: 0
-- 31/10 14:59:09:262 RespostaComando: 
-- 31/10 14:59:09:267     RX <- 
-- 31/10 14:59:09:267 -- Desativando a porta: COM1
-- 31/10 14:59:09:285 
----------------- ERRO -----------------
Impressora SwedaSTX não está respondendo
----------------------------------------

O estranho é que em testes com a Daruma FS600/FS700 e Bematech 2100 não tivemos problema e em alguns casos até mesmo na Sweda conseguimos imprimir, 1 em cada 8 tentativas.

Gostaríamos da opinião de vocês para este caso. O log completo eu anexei abaixo.

Desde já agradeço.

20161031.ecflog

  • Membros Pro
Postado

Bom dia pessoal, o conteúdo da variável ImagemComprovante.Text na procedure:

procedure TdmVendaECF.TEFComandaECFImprimeVia(TipoRelatorio    : TACBrTEFDTipoRelatorio;
                                              Via              : Integer;
                                              ImagemComprovante: TStringList;
                                              var RetornoECF   : Integer);

É o seguinte:

' '#$D#$A'.....S.O.F.T.W.A.R.E.E.X.P.R.E.S.S....'#$D#$A'SI                            Rede 124'#$D#$A'MU               Codigo transacao: 200'#$D#$A'LA             Codigo operacao: 930030'#$D#$A'DO                         Valor: 5,89'#$D#$A'.....S...I...M...U...L...A...D...O....'#$D#$A'SI                    NSU SiTef: 10007'#$D#$A'MU                      01/11/16 07:11'#$D#$A'LA                    ID PDV: SE000001'#$D#$A'DO             Estab.: 000000000000001'#$D#$A'.....S...I...M...U...L...A...D...O....'#$D#$A'SI                     Host: 000010007'#$D#$A'MU         Transacao Simulada Aprovada'#$D#$A'                               (SiTef)'#$D#$A

O que fiz foi:

1) Retirar os seguintes caracteres do começo: ' '#$D#$A

2) Retirar os seguintes caracteres do final: #$D#$A

3) Após isso executei a função:

ImagemComprovante.Text := StringReplace(ImagemComprovante.Text, '#$D#$A', '#10', [rfReplaceAll, rfIgnoreCase]);

A princípio parece que resolveu, consigo agora imprimir 10 comprovantes seguidos sem problema algum.

Será que o ECF não estava conseguindo interpretar algum caractere enviado no relatório gerencial?

  • Fundadores
Postado

Não consegui reproduzir o problema, com o mesmo texto, salvo em um .TXT e lido em um TStringList... e o ECFTeste, e o emulador da Sweda, ConnectSIM

Repare no seu Log, que os CR foram filtrados.. (apenas aparecem "LF" no comando de envio)

-- 31/10 14:58:34:263 LinhaRelatorioGerencial( " [LF].....S.O.F.T.W.A.R.E.E.X.P.R.E.S.S....[LF]SI                            Rede 124[LF]MU               Codigo transacao: 200[LF]LA             Codigo operacao: 930030[LF]DO                         Valor: 7,69[LF].....S...I...M...U...L...A...D...O....[LF]SI                   NSU SiTef: 310022[LF]MU                      31/10/16 13:54[LF]LA                    ID PDV: SE000001[LF]DO             Estab.: 000000000000001[LF].....S...I...M...U...L...A...D...O....[LF]SI                     Host: 000310022[LF]MU         Transacao Simulada Aprovada[LF]                               (SiTef)[LF][CR][LF]", 0 )
-- 31/10 14:58:34:264                 TX -> [STX][207]25| [LF].....S.O.F.T.W.A.R.E.E.X.P.R.E.S.S....[LF]SI                            Rede 124[LF]MU               Codigo transacao: 200[LF]LA             Codigo operacao: 930030[LF]DO                         Valor: 7,69[LF].....S...I...M...U...L...A...D...O....[LF]SI                   NSU SiTef: 310022[LF]MU                      31/10/16 13:54[LF]LA                    ID PDV: SE000001[LF]DO             Estab.: 000000000000001[LF].....S...I...M...U...L...A...D...O....[LF]SI                     Host: 000310022[LF]MU         Transacao Simulada Aprovada[LF]                               (SiTef)[LF][LF][ETX][164]

 

texto.txt

Notei que você não está usando a propriedade "MaxLinhasBuffer"... isso será necessário para certificação TEF... (impressão de  3 linhas por vez)

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

  • Membros Pro
Postado

Bom dia Daniel, desculpa a demora.

Realmente é muito estranho. A princípio parece que estabilizou aqui, vou monitorar e qualquer coisa reporto se algo diferente acontecer.

Na procedure:

procedure TdmVendaECF.TEFComandaECFImprimeVia(TipoRelatorio    : TACBrTEFDTipoRelatorio;
                                              Via              : Integer;
                                              ImagemComprovante: TStringList;
                                              var RetornoECF   : Integer);

No começo dela eu coloco:

  with ecf.ACBrECF do
  begin
    {*** Se estiver usando ACBrECF - Lembre-se de configurar ***
    MaxLinhasBuffer   := 3; //Os homologadores permitem no máximo impressao de 3 em 3 linhas
    LinhasEntreCupons := 7; //Ajuste conforme o seu ECF }
    MaxLinhasBuffer   := 3;
    LinhasEntreCupons := 7;
    ReTentar          := False;
  end;

Pois realmente os homologadores pediram para efetuarmos esta alteração. Existe algum outro lugar que temos que setar esta propriedade?

  • Membros Pro
Postado

Daniel, na unit ACBrECF.pas, temos:

     property LinhasEntreCupons : Integer read  GetLinhasEntreCupons
                 write SetLinhasEntreCupons default cACBrLinhasEntreCupons ;

Ela é utilizada em:

procedure TACBrECF.TraduzirTag(const ATag: AnsiString;
  var TagTraduzida: AnsiString);

Pra ser sincero, não conheço totalmente qual seria a função da mesma, mas esta propriedade foi setada pela programadora que homologou o TEF.

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