Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado (editado)

Tem alguém usando a Daruma FS800i com o ACBr ? 

Estou tentando já faz um bom tempo e aqui comigo sempre ocorre o erro List index out of bounds (0) no EfetuaPagamento.

Ocorre nesta parte do código do ACBrECFEscECF.Pas

 
try
    NumPagtos := RespostasComando.FieldByName('NumPagtos').AsInteger;
except
    NumPagtos := 0;
end ;
 
 

Alguem já passou por isto ?  Se sim, como resolveu ?

 

Editado por ivan
  • Fundadores
Postado

A exceção é controlada ? Digo, ela só ocorre em Debug ?

Lendo o bloco de código acima, se o Exception ocorrer na linha:

    NumPagtos := RespostasComando.FieldByName('NumPagtos').AsInteger

ele será tratado quando o campo não existir...

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 (editado)

Ela não ocorre só em Debug.    Acabei de fazer mais um teste com o ACBr atualizado agora.

Se você puder fazer um teste, vai perceber que no ECFTeste também ocorre.

 

Editado por ivan
  • Fundadores
Postado

Vamos lá... Estamos realmente falando desse trecho de código ?

try
    NumPagtos := RespostasComando.FieldByName('NumPagtos').AsInteger;
except
    NumPagtos := 0;
end ;

Como seria possível a exceção criada dentro do "TRY", vazar do Except ?? (não há um raise no Except)

Não tenho esse ECF, e portanto não tenho como testar... Mas o problema não ocorre testando com a EPSON TM-T800 ou Bematech MP4200 (ambas do protocolo EscEcf)

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

Por favor anexe o Log gerado pelo ACBrECF... preciso compreender a resposta do ECF da Daruma... aparentemente ela está fora do padrão...

Analisando os fontes, no método TACBrECFEscECF.EfetuaPagamento, a única maneira do erro List index out of bounds (0) ocorrer, seria na linha:

RespostasComando.AddField( 'TotalAPagar', EscECFResposta.Params[0] );

Ou seja, provavelmente o ECF não está respondendo com todos os Parâmetros esperados, conforme a legislaçã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

O Regys me pediu para utilizar o apagar.bat e reinstalar a ACBr.  Vou fazer isto e testar tudo novamente.  

Depois te digo como ficou.

  • Membros Pro
Postado (editado)

Daniel...

Após apagar tudo e reinstalar tudo novamente, percebo que você tinha razão. 

A exceção ocorre mesmo na linha que você mencionou.

RespostasComando.AddField( 'TotalAPagar', EscECFResposta.Params[0] );

 

 

 

acbrlog_06072015.txt

Editado por ivan
Esqueci de anexar o arquivo de log
  • Fundadores
Postado

Obrigado pelo LOG... Realmente a Daruma está respondendo fora do padrão...

ela deveria obrigatoriamente, retornar o Total a Pagar na resposta do comando do Pagamento... mas essa informação não veio...

            Resposta: SEQ:24 CMD:4 EXT:0 CAT:0 RET:[SOH][NUL][NUL]@ TBR:1 BRS:"|" CHK:218

Veja uma resposta correta, pelo Emulador da Bematech MP4200

            Resposta: SEQ:53 CMD:4 EXT:0 CAT:0 RET:[SOH][NUL][NUL][NUL] TBR:4 BRS:"000|" CHK:74

 

Apliquei um workaround nos fontes.. (trunk e trunk2)

  • 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

Ok!   Muito obrigado Daniel.   Funcionou perfeitamente agora o EfetuaPagamento. Já é possível emitir cupons !

Estive testando outras coisas e então segue:

Leitura X e Redução Z, as vezes ocorre erro de checksum.

Se você pegar o ECFTeste, na opção Variáveis / Mapa Resumo, ocorre "List index out of bounds (1)" nas opções Total Descontos e Total Acréscimos.

Segue log destes 2 comandos em anexo; (acbrlog_06072015_3.txt)

 

Ainda no ECFTeste, na opção Variáveis / Formas de Pagamento, ocorre  "'''' is not a valid integer value" na opção "Ler Totais Forma de Pagamento". Log em anexo (acbrlog_06072015_6.txt). O mesmo tipo de erro ocorre com a opção Ler Totais Comprovante Não Fiscal.

Muito obrigado pela sua ajuda.

 

acbrlog_06072015_3.txt

acbrlog_06072015_6.txt

  • Membros Pro
Postado (editado)

Ok. Obrigado!

Eu havia aberto um tópico no SAC, no dia 05/06. Se puderes verificar.  Mas somente você conseguiu me dizer o que estava errado.   O pessoal da Daruma também havia me dito que já havia empresas utilizando em produção a FS800i com o ACBr. Por desconhecer o protocolo eu já não sabia mais a quem recorrer. Obrigado mesmo.

Se puderes verificar com ele, agradeço.

 

acbrlog_06072015.txt

Editado por ivan
  • Fundadores
Postado

Leitura X e Redução Z, as vezes ocorre erro de checksum.

Se você pegar o ECFTeste, na opção Variáveis / Mapa Resumo, ocorre "List index out of bounds (1)" nas opções Total Descontos e Total Acréscimos.

A resposta da Daruma FS800i, quando zerada, sempre vem vazia, Ex:

Resposta: SEQ:9 CMD:26 EXT:0 CAT:0 RET:[SOH][NUL][NUL]@ TBR:3 BRS:"4||" CHK:147

o correto seria:

Resposta: SEQ:9 CMD:26 EXT:0 CAT:0 RET:[SOH][NUL][NUL]@ TBR:3 BRS:"4|000|" CHK:147

Apliquei um possível workaround... por favor teste com a Unit em anexo, deve corrigir os problemas reportados...(essa Unit é para o trunk2, se necessário faça o Merge para o trunk)

 

ACBrECFEscECF.pas

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á 3429 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.

The popup will be closed in 10 segundos...