Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Consultores
Postado

Detectei a seguinte situação usando impressoras Bematech (no emulador também).

Quando estamos fazendo uma venda de um item e acaba o papel, o ACBrECF não consegue atualizar o AAC.

Isso acontece pois ao tentar puxar o GT, o ACBrECF apesar de receber o retorno correto, levanta uma exceção.

Assim o comando DoAtualizaGT não funciona.

Qual o problema disso? Se um usuário esquecer de trocar o papel, e ele acabar durante uma impressão do cupom, o ACBrAAC vai ficar diferente do valor do ECF. Normalmente, isso deveria travar o programa para vendas e etc...

A correção seria fazer o componente ignorar o sinal de SEM PAPEL, pelo menos durante o retorno do GT. Vocês podem ver como isso acontece se marcar o emulador como sem papel e tentar retornar o Grande Total.

Percebi que o código atual do TACBrECFBematech.EnviaComando_ECF já faz um tratamento similar:

  PediuStatus := ( cmd = #19 ) ; { quando pede Status nao deve disparar
exceçao com erros "Pouco Papel" ou "Cupom Aberto" }[/code]

Talvez pudéssemos fazer algo parecido para os comandos que são passados por causa do RetornaInfoECF?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Fundadores
Postado

E se usássemos um Try/Except quando o AAC tenta ler o GT ?

Verificamos se a exceção é relacionada a Fim de Papel... Hum... resta saber se ele mesmo assim retornaria o GT atual...

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.

  • Consultores
Postado

Então, o retorno do comando está bom.

Mas se o TACBrECFBematech.EnviaComando_ECF levanta a exception, daí o valor recebido não é retornado.

Pelo que analisei aqui, isso acontece com todas as funções de retorno. Na verdade, mesmo pro comando 19 que mencionei anteriormente também é levantada a exception.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Fundadores
Postado

Teria que ser um Flag que ligamos antes de enviar o comando, e ele poderia se desligar após a execução do próximo comando...

Se ele estiver ligado, a exceção de Fim de Papel não seria disparada...

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.

  • Consultores
Postado

O problema acontece que o flag/Sensor de fim de papel só é atualizado depois da venda do item. Deixa tentar colocar o algorítimo simplificado atual aqui:

-> ECF: Sensor marcando pouco papel mas ainda tem papel;

-> ACBrECF.VendeItem()

-> ECF: Sensor atualizado para FIM DE PAPEL

-> DoAtualizaGT -> ACBrECF.GetGrandeTotal ***EXCEPTION***

Outra coisa que precisa-se ver é que atualmente, pelo que testei, não se consegue retornar nenhuma leitura de variável enquanto está como FIM DE PAPEL. Por exemplo, só daria para recompor o GT depois de colocar o papel no ECF. Podem fazer o teste com o emulador, que acontece o mesmo com o ECF físico.

PS.: Só lembrando que isso é do ECF Bematech. Não testei com outros.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Fundadores
Postado

Elton,

Pela situação que você descreveu, o ACBrECF1.VendeItem foi aceito (sem exception) mas a leitura do GT foi barrada no Exception, certo ?

Mas nesse caso, não haveria falha já no VendeItem ?

Fiz uma ampla reforma no ACBrECF para introduzir introduzir um Exception específico de Fim de Papel (EACBrECFSemPapel), além de um Evento quando isso ocorrer (OnErrorSemPapel : TNotifyEvent )... Também adicionei uma propriedade publica ( IgnorarErroSemPapel ), que permitiria desabilitar a verificação desse erro. Ela deve ser Ligada antes de cada comando enviado, e é desligada após a execução do mesmo

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.

  • Consultores
Postado

Exatamente isso que acontece. Infelizmente não acontece a falha no vende item.

O ECF marca com FIM DE PAPEL só depois do VendeItem. Na verdade, isso só foi descoberto porque alguns clientes foram insistentes em continuar usando o papel até acabar e ele acabou justamente depois de uma venda de item. :|

Como pode ser testado, no entanto, isso prejudica qualquer leitura de variável que se tente fazer do ECF Bematech, visto que sempre é levantada a exception. Tudo bem, não fico imaginando alguém usando o ECF sem papel... mas...

Obrigado pela implementação. Vou testar e volto a postar.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

Você vai subir pro SVN? Se quiser eu posso fazer alguns testes antes.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Fundadores
Postado

Acabei de subir... Já fiz uma mudança para que a leitura do GT e do Estado não se importassem com o erro de Fim de Papel, talvez seja necessário em outras propriedades tb...

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.

  • Consultores
Postado

Daniel, já testei aqui e parece que o problema já não existe mais. No entanto, está dando um erro na compilação pelo Delphi do ACBrECFFiscNet.pas:

[DCC Error] ACBrECFFiscNET.pas(735): E1012 Constant expression violates subrange bounds

        if ( FiscNETResposta.CodRetorno in [ 7003, 7004, 15011 ] ) then
DoOnErrorSemPapel
else
raise EACBrECFSemResposta.create(ErroMsg) ;[/code] Isso acontece pois um conjunto no Delphi só aceita índices e valores até no máximo 255. Teria que trocal por algo como:
[code] if (FiscNETResposta.CodRetorno = 7003) or
(FiscNETResposta.CodRetorno = 7004) or
(FiscNETResposta.CodRetorno = 15011 ) then
DoOnErrorSemPapel
else
raise EACBrECFSemResposta.create(ErroMsg) ;

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

Obrigado Daniel. Até agora está tudo perfeito.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Aqui também tudo funcionando com esta nova atualização.

O erro no ECF com "FIM DE PAPEL" somente mostra a mensagem ao operador. Antes, na minha aplicação, isso resultava em mostrar a mensagem de erro e em "fechar a tela de venda", o que poderia ser constrangedor para o operador de caixa na frente do cliente.

Agora está perfeito.

Leandro Gobbo

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