Ir para conteúdo
  • Cadastre-se

dev botao

Casas Decimais Sweda St 1000


giulianon
Ver Solução Respondido por giulianon,
  • Este tópico foi criado há 3641 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia colegas!

 

Estou enfrentando um problema em um cliente, problema esse que só hoje pude investigar mais a fundo.

 

Ele me relatou que estava tendo problemas com arredondamento nas impressoras Sweda ST 1000 (Ele tem todos os modelos 100, 120, 1000, 2000 e 2500).

 

Só na ST1000 o arredondamento não estava funcionando corretamente.

 

Observando o cupom fiscal impresso por esse modelo notei que a quantidade estava sendo impressa sempre com 2 casas decimais, apesar de no componente ACBrECF estar configurada pra 3.

 

Mas como sei que a própria ecf  poderia estar programada com 2 casas, solicitei a presença de um técnico através de intervenção fizemos a programação dela pra 3 casas para garantir que a ecf estivesse correta.

 

Após essa programação o próprio técnico com o lacrador emitiu um cupom fiscal e ai sim a ecf imprimiu a quantidade com 3 casas como tem que ser.

 

Feito isso voltei ao meu sistema e ao emitir um cupom fiscal ainda continuou saindo 2 casas na quantidade.

 

Fui para o ECFTeste o mesmo ocorreu o que indicou que o "problema" está realmente na classe da ecfSwedaSTX.

 

Depurando notei que apesar de estar configurado no componente ACBrECF pra quantidade com 2 casas, era enviado a ecf sempre 2.

 

Indo mais a fundo vi que essa configuração de casas decimais é consultada na própria ecf e que por isso o que está no componente não está sendo respeitado.

 

Bom diante disso forcei a utilização das 3 casas decimais setando essa configuração uma linha acima da linha que enviou o comando de vender o item.

 

Dessa forma funcionou perfeitamente imprimindo as 3 casas decimais na quantidade.

 

As minhas dúvidas agora são com relação a qual a melhor solução:

 

1-Manter como está agora setando as cadas decimais antes de cada item. Acredito que não terá problemas com ecfs que de fato só utilizem 2 casas decimais.

 

2-Fazer essa config fixando a mesma somente para o modelo ST1000. (bem bizarra essa)

 

3-Tentar corrigir a classe da ecfSwedaSTX para retornar o número de casas decimais corretamente. (Não sei se não afetará outros modelos fazendo isso).

 

Aguardo um feedback de vocês.

 

Att.

 

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

Link para o comentário
Compartilhar em outros sites

  • Consultores

Se o ACBrECF já consulta o ECF para saber a quantidade de casas antes de fazer a venda, seria melhor consertar o retorno da classe (método 3 que você descreveu). Digo isso pelos trechos que você escreveu aqui, com grifo meu:

 

Só na ST1000 o arredondamento não estava funcionando corretamente.

 

Após essa programação o próprio técnico com o lacrador emitiu um cupom fiscal e ai sim a ecf imprimiu a quantidade com 3 casas como tem que ser.

 

Indo mais a fundo vi que essa configuração de casas decimais é consultada na própria ecf e que por isso o que está no componente não está sendo respeitado.

 

Logo, o erro seria no retorno da impressora. Afinal, se o ECF está configurado para 3 casas, ele deveria retornar 3 casas.

[]'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.
Link para o comentário
Compartilhar em outros sites

Obrigado pela resposta EMBarbosa.

 

Mas como os demais modelos estão retornando corretamente e tanto a classe como protocolo são o mesmo para todos os modelos, eu acredito que pode ser algum "bug" nesse modelo ou na versão do firmware mesmo.

 

Nesse caso teríamos que diferenciar isso na classe.

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

Link para o comentário
Compartilhar em outros sites

  • Consultores

   Pode ser um bug no firmware mesmo, mas daí não caberia alterações no componente. O melhor seria atualizar o firmware.

 

   Contudo, precisa-se verificar com o fabricante se este modelo realmente suporta a propriedade ou se ele precisa de algum tratamento diferenciado. Talvez no manual de comunicação serial você encontre essa informação. No caso dele exigir um tratamento diferenciado, então mudamos o comportamento na classe para este modelo específico como você sugeriu.

   Quando os modelos exigem tratamento específico, fazemos isto no código. É normal. Mas quando o problema é do firmware, apesar de podermos tratar no código, só o fazemos no último caso. Devemos programar com o funcionamento correto do equipamento em mente e não para consertar bugs dos fabricantes (salvo se não houver outra escolha).

[]'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.
Link para o comentário
Compartilhar em outros sites

Então EMBarbosa.

 

Observando com mais calma percebi que a classe ecfSwedaSTX realmente recebe o retorno errado da ecf e que a mesma trata esse retorno setando 2 como default para as casas decimais

 

A linha:

fpDecimaisQtd := StrToIntDef(copy( TACBrECF(fpOwner).RetornaInfoECF( 'U2' ),  1, 1), 2 ) ;

O retorno U2 para o modelo ST 1000 deveria ser o número de casas decimais 1,2 ou 3 mas está retornando [ o que é tratado pelo StrToIntDef e setado por padrão 2.

 

Pra ter certeza que o problema está na impressora mesmo, utilizei o lacrador para consultar esse número de casas decimais e o mesmo mostra 0 com pode ver na figura em anexo. O próprio lacrador deve tratar esse retorno errado [ e mostrar o zero ali.

 

Acredito que uma solução boa seria alterar a linha para no caso de erro ao obter o número de casas decimais, não ser setado 2 e sim o próprio fpDecimaisQtd.

 

Assim:

fpDecimaisQtd := StrToIntDef(copy( TACBrECF(fpOwner).RetornaInfoECF( 'U2' ),  1, 1), fpDecimaisQtd  ) ;

É isso? Ou é falei besteira?

 

Att.

 

 

 

 

post-13-0-23588400-1395240802.png

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

Link para o comentário
Compartilhar em outros sites

  • Consultores

Ah sim, faz sentido. Creio que esta seja a correção adequada.

Eu não tenho aqui um  ECF Sweda para testar nem tenho feito alterações na classe SwedaSTX.

Você poderia fazer a alteração e anexar aqui no fórum para que outro desenvolvedor possa dar uma olhada e outros usuários possam testar?

[]'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.
Link para o comentário
Compartilhar em outros sites

  • Solution

Bom pra encerrar o tópico, mesmo depois de todas as correções o arredondamento não funcionou nem mesmo no lacrador.

 

Entrei em contato com sweda e após informar a versão do firmware da impressora me falaram que essa versão realmente só trunca.

 

Então fica aqui o registro.

 

Sweda Firmware 01.00.04 não trabalha com arredondamento.

 

Solução: Trabalhar com truncamento ou atualizar o firmware.

 

Att.

  • Curtir 2

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

Link para o comentário
Compartilhar em outros sites

  • Consultores

Mas e a correção? Ainda é necessária para exibir as 3 casas decimais no campo de quantidade?

[]'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.
Link para o comentário
Compartilhar em outros sites

  • Consultores

Ah. Compreendi. Uma coisa é o problema de arredondamento, outra coisa é a exibição de 3 casas decimais.

[]'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.
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores

Subi suas alterações para o SVN na Revisão  6611.
Pelo que vi está tudo certo.
Favor testar e reportar qualquer problema.
Obrigado.

[]'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.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Então EMBarbosa.

 

Observando com mais calma percebi que a classe ecfSwedaSTX realmente recebe o retorno errado da ecf e que a mesma trata esse retorno setando 2 como default para as casas decimais

 

A linha:

fpDecimaisQtd := StrToIntDef(copy( TACBrECF(fpOwner).RetornaInfoECF( 'U2' ),  1, 1), 2 ) ;

O retorno U2 para o modelo ST 1000 deveria ser o número de casas decimais 1,2 ou 3 mas está retornando [ o que é tratado pelo StrToIntDef e setado por padrão 2.

 

Pra ter certeza que o problema está na impressora mesmo, utilizei o lacrador para consultar esse número de casas decimais e o mesmo mostra 0 com pode ver na figura em anexo. O próprio lacrador deve tratar esse retorno errado [ e mostrar o zero ali.

 

Acredito que uma solução boa seria alterar a linha para no caso de erro ao obter o número de casas decimais, não ser setado 2 e sim o próprio fpDecimaisQtd.

 

Assim:

fpDecimaisQtd := StrToIntDef(copy( TACBrECF(fpOwner).RetornaInfoECF( 'U2' ),  1, 1), fpDecimaisQtd  ) ;

É isso? Ou é falei besteira?

 

Att.

 

Você poderia enviar o LOG deste ECF para compreendermos o que ele está retornando de diferente ?

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.

Link para o comentário
Compartilhar em outros sites

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