Ir para conteúdo
  • Cadastre-se

dev botao

Erro ACBrECF : Quantidade Vendida não pode ser zero


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

Recommended Posts

  • Membros Pro
Postado

Caros colegas, estou com um problema em um cliente que possui uma Elgin ZPM 200.

Ao vender um item menor que 1 retorna o seguinte erro :

Erro ao gerar o CUPOM. 

É necessário cancelar este CUPOM.

Erro: Erro retornado pela Impressora: FiscNET: ZPM - ZPM-200

Erro: 8003 - ErroCMDQuantidadeInvalida
Quantidade vendida nao pode ser zero

Se fizer uma venda com a quantidade maior que 1 não dá erro mas no cupom não sai a parte decimal, sai somente a parte inteira.

Fiz a leitura pelo ACBrSerialTeste do Exemplos do ACBr e o resultado do comando de Decimais é esse :

- + - + - + - + - + - + - + - + - + - + - + -
Decimais QTD: ( 3 )
Decimais Preço Unit: ( 3 )
{34;0;ValorInteiro=14400;24}
- + - + - + - + - + - + - + - + - + - + - + -

O que me faz crer que o problema não seja a ECF e sim alguma configuração que estou colocando errado, mas não consigo achar o que é !!!

Alguém já passou por esta situação ??

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Consultores
Postado

Pode ser algum erro de comunicação ou formatação.

Anexe o log do ACBrECF onde consta o comando de venda de item que gera esse erro. Se possível, use o ECFTeste apenas para abrir o cupom e vender este item gerando o erro para que o log não fique muito extenso.

  • Curtir 1

[]'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.
  • Membros Pro
Postado
25 minutos atrás, EMBarbosa disse:

Pode ser algum erro de comunicação ou formatação.

Anexe o log do ACBrECF onde consta o comando de venda de item que gera esse erro. Se possível, use o ECFTeste apenas para abrir o cupom e vender este item gerando o erro para que o log não fique muito extenso.

@EMBarbosa muito obrigado por responder.

Conforme disse no posto inicial, se eu usar o ECFTeste não dá erro, e portanto fica inútil eu postar o log. O problema está ocorrendo somente no meu programa, mas eu uso o comando VenderItem exatamente como no exemplo do ECFTeste.

Existe alguma configuração ou padrão de envio referente a casas decimais e separadores de milhares no componente ???

Eu devo estar formatando errado o double certo ??

Qual o padrão de envio de Valor Double para o componente ??

 

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Consultores
Postado
13 minutos atrás, Edevair Viesa Junior disse:

Conforme disse no posto inicial, se eu usar o ECFTeste não dá erro

Desculpe, não consegui entender isso no post inicial.

13 minutos atrás, Edevair Viesa Junior disse:

O problema está ocorrendo somente no meu programa, mas eu uso o comando VenderItem exatamente como no exemplo do ECFTeste.

Então anexe o log gerado pelo seu programa e o gerado pelo ECFTeste. Assim podemos comparar o que está acontecendo mesmo sem ter o ECF aqui pra testar.

13 minutos atrás, Edevair Viesa Junior disse:

Existe alguma configuração ou padrão de envio referente a casas decimais e separadores de milhares no componente ???

Eu devo estar formatando errado o double certo ??

Qual o padrão de envio de Valor Double para o componente ??

Até onde me lembro, o valor passado como Quantidade para VendeItem é Double. Sendo assim, não existe essa questão de separador de milhar ou decimal.

Por outro lado, o protocolo FiscNet funciona por meio de parâmetros e internamente o ACBrECF faz as conversões.

Essa conversão é feita de acordo com o que a impressora retorna para o parâmetro de quantidade de casas.

Então o log pode nos mostrar se o valor que está chegando ao ACBr está correto ou não.

  • Curtir 1

[]'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.
  • Membros Pro
Postado

Ok. De acordo com suas informações eu consegui detectar o problema e resolver, porém aqui em ambiente de programação, vamos ver no cliente.

Antes de eu enviar o comando VendeItem eu mudei o formatsettings :

				FormatSettings.DecimalSeparator := ',';
				FormatSettings.ThousandSeparator := '.';

				MD.ACBrECF.VendeItem( Trim(Copy(l_cod_produto, 1, 13)), Trim(Copy(l_desc_nf_produto, 1, 29)),
									v_aliquota_icms, l_qtd_venda, l_valor_unitario, 0,
									l_cod_un_produto, '$');

				FormatSettings.DecimalSeparator := g_decimal_separator;
				FormatSettings.ThousandSeparator := g_thousand_separator;

Aí deu certo. Fiz isso, pois percebí que no ACBrECF, no campo de qtd, se eu usar um número decimal, ele usa vírgula como separador decimal e por isso não dá erro. Talvez uma correção no componente, incluindo a alteração do formatsettimgs resolva o problema, caso alguém use com o formatsettings no padrão com separador decimal = '.'

Mesmo assim muito obrigado pelas informações.

Vou colocar o exe no cliente e reporto os resultados.

Abs

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Membros Pro
Postado

Funcionou 95% !!!!

Com a ZMP200 nenhum erro, porém em outro cliente que usa uma X5 apresenta uma mensagem de erro :

A impressora FisNet: ELGIN - X5 não está respondendo.

Deseja tentar novamente  ? (conforme imagem em anexo)

 

Se clicar no "Yes" imprime o cupom normalmente e se clicar em "No" ele cancela o cupom.

 

Tem idéia do pq está aparecendo esta mensagem ???

IMG-20180323-WA0027.jpg

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Consultores
Postado
1 hora atrás, Edevair Viesa Junior disse:

Funcionou 95% !!!!

Com a ZMP200 nenhum erro, porém em outro cliente que usa uma X5 apresenta uma mensagem de erro :

A impressora FisNet: ELGIN - X5 não está respondendo.

Deseja tentar novamente  ? (conforme imagem em anexo)

 

Se clicar no "Yes" imprime o cupom normalmente e se clicar em "No" ele cancela o cupom.

 

Tem idéia do pq está aparecendo esta mensagem ???

IMG-20180323-WA0027.jpg

Não... Só com o log do ACBrECF...

 

22 horas atrás, Edevair Viesa Junior disse:

Antes de eu enviar o comando VendeItem eu mudei o formatsettings :


				FormatSettings.DecimalSeparator := ',';
				FormatSettings.ThousandSeparator := '.';

				MD.ACBrECF.VendeItem( Trim(Copy(l_cod_produto, 1, 13)), Trim(Copy(l_desc_nf_produto, 1, 29)),
									v_aliquota_icms, l_qtd_venda, l_valor_unitario, 0,
									l_cod_un_produto, '$');

				FormatSettings.DecimalSeparator := g_decimal_separator;
				FormatSettings.ThousandSeparator := g_thousand_separator;

Aí deu certo. Fiz isso, pois percebí que no ACBrECF, no campo de qtd, se eu usar um número decimal, ele usa vírgula como separador decimal e por isso não dá erro. Talvez uma correção no componente, incluindo a alteração do formatsettimgs resolva o problema, caso alguém use com o formatsettings no padrão com separador decimal = '.'

Olha, isso não me parece correto. Não deveria ser necessário alterar o FormatSettings global para executar o comando vendeItem.

Se isso está acontecendo, pode ser um problema do seu software ou do componente.

Se puder anexar os logs, tanto do ECFTeste como gerado pelo seu software pelas duas impressoras usando o mesmo produto e quantidade, seria ótimo.

[]'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
Em 27/03/2018 at 15:20, Edevair Viesa Junior disse:

Ok..

 

Seguem em anexo...

 

Muito Obrigado !!!

LogECF.txt

acbrlog.rar

Os logs que você anexou não tem o erro apresentado neste tópico.

Outro detalhe é que o primeiro log está com quantidade em números inteiros. Veja:

Primeiro LogECF.txt:

-- 27/03 08:34:20:257 
-- 27/03 08:34:20:257                 TX -> {31;VendeItem;CodAliquota=3 CodProduto="7898513072774" NomeProduto="PANO MULTIUSO 300MTS AZUL" PrecoUnitario=120 Quantidade=1 Unidade="BB";138}
-- 27/03 08:34:20:922     RX <- {31;0;;6}
-- 27/03 08:34:20:942 VendeItem( 7898904903335 , CHEF DETERGENTE DESENGORDURAN , T03 , 1 , 60 , 0 , GL , $ , D , -1 )
-- 27/03 08:34:20:947                 TX -> {32;VendeItem;CodAliquota=3 CodProduto="7898904903335" NomeProduto="CHEF DETERGENTE DESENGORDURAN" PrecoUnitario=60 Quantidade=1 Unidade="GL";141}
-- 27/03 08:34:21:692     RX <- {32;0;;6}
-- 27/03 08:34:21:712 VendeItem( 3077400000005 , RALO DE PIA TIPO AMERICANA , T03 , 2 , 3 , 0 , UN , $ , D , -1 )
-- 27/03 08:34:21:712                 TX -> {33;VendeItem;CodAliquota=3 CodProduto="3077400000005" NomeProduto="RALO DE PIA TIPO AMERICANA" PrecoUnitario=3 Quantidade=2 Unidade="UN";137}
-- 27/03 08:34:22:412     RX <- {33;0;;6}

Segundo, acbrlog.txt:

-- 22/03 19:20:34:336 VendeItem( 111222333 , TESTE DE PRODUTO , FF , 0,28 , 24 , 0 , UN , % , D , -1 )
-- 22/03 19:20:34:337                 TX -> {37;VendeItem;CodAliquota=-2 CodProduto="111222333" NomeProduto="TESTE DE PRODUTO" PrecoUnitario=24 Quantidade=0,28 Unidade="UN";128}
-- 22/03 19:20:36:040     RX <- {37;0;;6}
-- 22/03 19:20:36:040    Desativando a porta: COM1
-- 22/03 19:20:36:162    Ativando a porta: COM1
-- 22/03 19:20:36:288 Estado
-- 22/03 19:20:36:289                 TX -> {38;LeInteiro;NomeInteiro="EstadoFiscal";40}
-- 22/03 19:20:36:410     RX <- {38;0;ValorInteiro=2;20}
-- 22/03 19:20:36:410    Desativando a porta: COM1
-- 22/03 19:20:36:415   estVenda
-- 22/03 19:20:51:896    Ativando a porta: COM1

 

[]'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.
  • Membros Pro
Postado

Entendi, porém a mensagem está aparecendo conforme foto que anexei acima. Se aparece ou não no log eu não sei, só sei que na aplicação aparece a mensagem e não é da minha aplicação, é uma mensagem do componente ACBrECF e o cliente já reclamou bastante disso.

Acho que a solução será voltar a usar a dll do fabricante !!!

Mesmo assim muito obrigado !

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Fundadores
Postado

Não temos bola de cristal... podemos sugerir melhorias e correções, baseado apenas em fatos...

Provavelmente o seu problema está no fato de estar usando um TimeOut muito baixo...

Citar

ATIVAR - 27/03/18 08:25:39:794 - Modelo: FiscNET - Porta: COM1 - TimeOut: 3

Um valor recomendado seria 10 ou mais...

  • 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

@Daniel Simoes obrigado pela dica.

Eu sei que vocês nem tem obrigação de corrigir os problemas e muito menos ter que saber os motivos de erros (ter a bola de cristal Rsss), fica tranquilo. Eu só disse que voltaria  a usar a dll do fabricante pois com ela não dá erro, porém tem que ficar copiando as dlls em todas as máquinas, enfim, é bem melhor usar os componentes do ACBr, mas não posso deixar o cliente descontente e o mais interessante é que só acontece com a X5, com a ZPM 200 e Elgin FIT 1E não ocorrem, nos dois clientes que usam X5 dá o erro.

Não fiz em momento algum uma crítica ou reclamação ok ? Por favor me desculpe se me fiz entender assim... Sou fã deste projeto e mesmo não usando muito o suporte de vocês, eu continuo pagando o SAC para poder ajudar o projeto de alguma forma.

Muito obrigado pela dica, vou testar e reporto os resultados !

Abs

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Fundadores
  • Solution
Postado

Desculpe-me pela minha resposta...

Creio que o TimeOut em 10 deverá resolver o problema...

Deixe isso configurável, na sua aplicação... pois é comum precisar valores diferentes, de acordo com a marca/modelo do ECF...

Por favor nos notifique através desse post, sobre os testes com um TimeOut mais elevado...

  • Obrigado 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
1 hora atrás, Daniel Simoes disse:

Desculpe-me pela minha resposta...

Não precisa se desculpar não. Tranquilo...

1 hora atrás, Daniel Simoes disse:

Creio que o TimeOut em 10 deverá resolver o problema...

Realmente resolveu, era isso mesmo...

1 hora atrás, Daniel Simoes disse:

Deixe isso configurável, na sua aplicação... pois é comum precisar valores diferentes, de acordo com a marca/modelo do ECF...

Já o fiz, deixei no padrão do ACBrECFTeste. Muito obrigado pela dica !!!!

1 hora atrás, Daniel Simoes disse:

Por favor nos notifique através desse post, sobre os testes com um TimeOut mais elevado...

Enfim, resolveu mesmo o problema, era mesmo o timeout que estava baixo, abandonei todas as dlls e estão funcionando no meu sistema em 12 clientes diferentes, com as impressoras : Elgin X5, ZPM200 e FIT 1E, Daruma FS700, Bematech MP4000 e MP4200

Muitíssimo obrigado a todos pela ajuda !!!

Abs

  • Curtir 1

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Consultores
Postado
Em 03/04/2018 at 14:02, Edevair Viesa Junior disse:

Não precisa se desculpar não. Tranquilo...

Realmente resolveu, era isso mesmo...

Já o fiz, deixei no padrão do ACBrECFTeste. Muito obrigado pela dica !!!! 

Enfim, resolveu mesmo o problema, era mesmo o timeout que estava baixo, abandonei todas as dlls e estão funcionando no meu sistema em 12 clientes diferentes, com as impressoras : Elgin X5, ZPM200 e FIT 1E, Daruma FS700, Bematech MP4000 e MP4200

Muitíssimo obrigado a todos pela ajuda !!!

Abs

Só aproveitando, algumas vezes nas impressoras USB podem ser necessário aumentar ainda mais o timeout, até pra 30.

  • Curtir 1

[]'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.
×
×
  • 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.