|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
fabio.avila Aprendiz
Registrado: Segunda-Feira, 11 de Junho de 2007 Mensagens: 292
|
Enviada: Sex Fev 08, 2008 5:32 pm Assunto: Etiqueta balança |
|
|
No meu sistema já esta sendo lido o peso da balança utilizando o ACBRBal, agora preciso ler o peso atraves da etiqueta do produto impressa na balança toledo prix 4.
alguém pode me ajudar? |
|
Voltar ao Topo |
|
|
vitoraraujo Novato
Registrado: Sexta-Feira, 8 de Fevereiro de 2008 Mensagens: 23
|
Enviada: Sex Fev 08, 2008 7:51 pm Assunto: |
|
|
Amigo não tem muito segredo não, basta você ver o padrão escolhido pela balança e retirar as informações das etiquetas.
Como funciona:
Ex: Na Toledo Prix4 vem por default a seguinte configuração o número 2 como identificador de produto de pesagem nos próximos 4 digitos vem o código do produto acompanhado de 2 zeros, e os próximos 5 digitos vem o preço do produto e o último digito é apenas o digito verificador do EAN13 (Padrão de código utilizado pela balança). Dai é só verificar se o código tem tamanho de 13 digitos e começa com o número 2.
2000100001006 (Ps. talvez o digito verificador esteja errado pois não fiz o calculo para o mesmo).
Dai sabemos que é produto de pesagem pois tem 13 digitos e começa com o número 2.
Sabemos o código do produto retirando os 4 próximo digitos digitos (código 0001).
Excluimos os próximos 2 digitos que são dois zeros.
Sabemos que o preço do produto é R$ 1,00 pelos próximos 5 digitos (00100) .
Dai é só tratar isso em sua aplicação.
Lógico que se pode configurar na balança outras configurações (muito fácil pelo programa MGV5 e um pouco mais complicado pela balança).
Eu sinseramente prefiro trabalhar com a seguinte configuração
DCCCC00PPPPPV
D=Digito identificador de produto de pesagem
C=Código do produto
0=Apenas zero para complementar o código
P=Peso do produto no formato 5,2 (Cinco digitos com duas casas decimais).
Para maior esclarecimento olhe no manual que acompanha a balança, que é facilmente baixado no site da Toledo (pelo menos era). |
|
Voltar ao Topo |
|
|
fabio.avila Aprendiz
Registrado: Segunda-Feira, 11 de Junho de 2007 Mensagens: 292
|
Enviada: Sáb Fev 09, 2008 10:02 am Assunto: |
|
|
beleza, me deu uma luz. mas ainda tá meio confuso, será que eu conseguiria algum exemplo de como fazer isso? |
|
Voltar ao Topo |
|
|
fabio.avila Aprendiz
Registrado: Segunda-Feira, 11 de Junho de 2007 Mensagens: 292
|
Enviada: Sáb Fev 09, 2008 10:14 am Assunto: |
|
|
o preço do produto eu entendi mas fiquei na dúvida quanto ao peso do produto. |
|
Voltar ao Topo |
|
|
vitoraraujo Novato
Registrado: Sexta-Feira, 8 de Fevereiro de 2008 Mensagens: 23
|
Enviada: Sáb Fev 09, 2008 10:32 am Assunto: |
|
|
Olha vai depender de como está configurado a sua balança ai.
Ela pode esta configurada pra colocar nos últimos (tirando o digito verificador) 5 digitos o preço do produto (vem por default assim) ou pode colocar o peso do produto (tem que alterar a configuração).
No primeiro caso pra você descobri a quantidade você teria que ler o preço da etiqueta e dividir pelo preço do produto no banco de dados, no segundo caso bastaria você pegar o peso e colocar no campo quantidade do seu PDV.
Pra você entender melhor procura na internet o manual da prix4 no site da Toledo, lá no final (eu acho) tem as configurações de etiquetas aceitas por ela, são umas dez se não me engano.
Qualquer coisa estamos ai.
Atenciosamente Vitor Araújo Alcântara. |
|
Voltar ao Topo |
|
|
fabio.avila Aprendiz
Registrado: Segunda-Feira, 11 de Junho de 2007 Mensagens: 292
|
Enviada: Sáb Fev 09, 2008 10:45 am Assunto: |
|
|
baixei Manual do Usuário PRIX4 mas não resolveu muito não... |
|
Voltar ao Topo |
|
|
fabio.avila Aprendiz
Registrado: Segunda-Feira, 11 de Junho de 2007 Mensagens: 292
|
Enviada: Sáb Fev 09, 2008 12:09 pm Assunto: |
|
|
cheguei no seguinte código:
codbarras:=EditCodigo.Text;
if length(codbarras) = 13 then
begin
//verifica se o primeiro digito é 2(produto pesado)
pesagem:=copy(codbarras,1,1);
//le o código do produto com 4 digitos
codpesagem:=copy(codbarras,2,4);
if DMTabelas.ibproduto.locate('CodBarras',codpesagem,[]) = true then
unitpeso:=DMTabelas.ibprodutoVALORVENDA.Value;
//le o total do item
totpesagem:=copy(codbarras,7,6);
totpesagemfloat:=strtofloat(totpesagem);
//
totpesagem:=formatfloat('###,###,##0.00',totpesagemfloat);
//
qtdencontrada:=floattostr(strtofloat(totpesagem)/unitpeso);
if pesagem = '2'then//produto pesado
begin
EditQtd.Value:=strtofloat(qtdencontrada);
end;
end;
------------------
exemplo de código de etiqueta(feito no olho):2333300003002
O problema está no Total do item. como vou pegar esse valor meu Deusssssssssssss...
fiz o teste com 300(seria trez reais) mas pega trezentos... como vou saber quando é trez ou trezentos ou 0,50 o total do item? |
|
Voltar ao Topo |
|
|
vitoraraujo Novato
Registrado: Sexta-Feira, 8 de Fevereiro de 2008 Mensagens: 23
|
Enviada: Sáb Fev 09, 2008 12:11 pm Assunto: |
|
|
Você tem algum exemplo de alguma etiqueta ai pra gente trabalhar em cima dela?
Se sim posta ai uma exemplo da etiqueta (Acho que no manual tem alguns). Dai manda também o código e preço do produto no banco, o EAN13 (código de barras gerado pela etiqueta) acompanhado to valor total e peso que deu na etiqueta, pra ficar mais fácil de eu tentar explicar para o colega como a gente trataria esse código no PDV.
É que eu não tenho nenhum aqui comigo, mais da uma olhada ai no trecho do código (em Delphi) que tem no meu PDV.
Código: | TextoCodigo := EditPesq.Text;
if (Length(TextoCodigo) = 13) and (TextoCodigo[1] = '2') then//Verifica se é produto de pesagem
Begin
Case DmDados.TbConfigTipobal.Value of
2://Firizola
Begin
CurEditQtd.Value := StrToFloat(Copy(TextoCodigo,8,5)) /1000;//Coloco a quantidade no Edit de quantidade
EditPesq.Text := Copy(TextoCodigo,4,4);//Coloco o código do produto no Edit de código do produto
end;
1://Toledo
Begin
CurEditQtd.Value := StrToFloat(Copy(TextoCodigo,8,5)) /1000;//Coloco a quantidade no Edit de quantidade
EditPesq.Text := Copy(TextoCodigo,2,4);//Coloco o código do produto no Edit de código do produto
end;
end;
end;
|
Tentando explicar o código:
Eu peguei o código lido pela etiqueta e gravei em uma váriavel
"TextoCodigo := EditPesq.Text;"
Eu peguei o edit responsavel por inserir o código do produto e verifiquei se tinha 13 digitos e começava com o número 2
"if (Length(TextoCodigo) = 13) and (TextoCodigo[1] = '2') then"
Eu peguei as partes referente ao peso do produto e coloquei no edit de quantidade
"CurEditQtd.Value := StrToFloat(Copy(TextoCodigo,8,5)) /1000;"
Do oitavo digito ao décimo segundo digito
Eu peguei as partes referente ao código do produto e coloquei no edit de pesquisa (sobrepondo o código de treze digitos pelo código de 4 digitos (no meu caso))
"EditPesq.Text := Copy(TextoCodigo,2,4);"
Do segundo digito ao quinto digito.
Após feito esse tratamento prossigo com o processo de inclusão de produto nos itens da venda.
Viu é só pegar as partes do código e tratar na sua aplicação, no caso do meus sistema sempre configuro as balanças pra imprimir o peso do produto em vez do preço nas etiquetas, pois pode ocorrer de o preço na balança está destatualizado com o preço do banco de dados, o que geraria um erro na baixa do estoque.
Mais continuo insistindo, da uma lida com calma no manual que tem as possiveis configurações de códigos que as etiquetas irão assumir.
Pra ficar mais fácil pra você eu procurei no manual está na página 58 "COMPOSIÇÃO DO EAN-13"
No exemplo acima trata a composição B da etiqueta no modo peso da balança. |
|
Voltar ao Topo |
|
|
vitoraraujo Novato
Registrado: Sexta-Feira, 8 de Fevereiro de 2008 Mensagens: 23
|
Enviada: Sáb Fev 09, 2008 12:25 pm Assunto: |
|
|
Respondi sem ler o tópico anterior, mais pelo que etendi você está pegando o código 2333300003002 onde
2 é o digito que indica produto de pesagem
3333 é referente ao código do produto
00 são os dois zeros que acompanham pra nada
00300 é referente ao preço total do produto
e 2 é apenas o digito verificador
no seu cado (etiqueta por preço em vez de peso) você teria que descobri a quantidade do produto e não o total do produto.
Seria algo assim o produto (de código 3333) no banco custa 3,00 o Kilo logo seria (00300 / 100 ) / 3,00 = 1 Kilo vendido.
se o preço do produto (de código 3333) fosse 1,50 o Kilo logo seria (00300 / 100) / 1,50 = 2 Kilos vendidos.
e assim vai.
Etenda que em caso de etiquetas que imprimam o preço em vez do peso no EAN-13, você irá ter que descobrir a quantidade de seu produto que irár ser dado baixo de acordo com o preço do produto que está em seu banco de dados.
Por isso que uso a configuração da etiqueta que imprima por peso em vez de imprimir por preço, pois caso o preço na balança esteja desatualizado com o do seu banco de dados irá gerar uma baixa no estoque errada. |
|
Voltar ao Topo |
|
|
fabio.avila Aprendiz
Registrado: Segunda-Feira, 11 de Junho de 2007 Mensagens: 292
|
Enviada: Sáb Fev 09, 2008 12:30 pm Assunto: |
|
|
no meu exemplo considerei a opção 'A' da balança
A = 2CCCC0TTTTTTD
onde:
2 = (produto pesado)
C = código do produto
T = Total a pagar
D = dígito verificador
não tenho agora uma etiqueta de balança mas na segunda feira vou providenciar... |
|
Voltar ao Topo |
|
|
fabio.avila Aprendiz
Registrado: Segunda-Feira, 11 de Junho de 2007 Mensagens: 292
|
Enviada: Sáb Fev 09, 2008 12:32 pm Assunto: |
|
|
sim vitoraraujo, no meu código oque estou 'achando' é mesmo a quantidade = (totalitem/preço) |
|
Voltar ao Topo |
|
|
rafael1401 Novato
Registrado: Sábado, 2 de Fevereiro de 2008 Mensagens: 12 Localização: Varginha-MG
|
Enviada: Dom Fev 10, 2008 11:50 am Assunto: |
|
|
tudo bem fabio.
exemplo
no seu cadastro de produto
codigo: 1
unitario: 1,50
etiqueta da balanca
2000100005001
entao temos
o codigo inica com 2 e tem 13 digitos
do 2 ao 5 digito vc tem o codigo do produto.
do 8 ao 11 vc tem o valor total do produto.
entao vc localiza no teu cadastro o codigo e divide o valor total do produto pelo valor unitario que esta no teu cadastro de produto.
entao termos.
codigo: 0001
valor unitario: 1,50
valor total: 5,00
qtde: 3,33
qualquer coisa entre em contato. |
|
Voltar ao Topo |
|
|
fabio.avila Aprendiz
Registrado: Segunda-Feira, 11 de Junho de 2007 Mensagens: 292
|
Enviada: Seg Fev 11, 2008 10:14 am Assunto: |
|
|
Pessoal, peguei uma etiqueta de produto pesado contendo a seguinte estrutura:
Peso: 0,566 Kg
Preço/kg: 12,99
Tot: R$ 7,35
código: 2 051100 007350
1) Qual opção está essa balança? (de 'A' até 'E'), acredito que é 'A'
2) Fiz o teste mas da mesma forma que o teste anterior não consigo pegar o valor correto do preço total, agora está vindo como 735,00 ao invés de 7,35.
meu código está assim:
codbarras:=EditCodigo.Text;
if length(codbarras) = 13 then
begin
//verifica se o primeiro digito é 2(produto pesado)
pesagem:=copy(codbarras,1,1);
//le o código do produto com 4 digitos
codpesagem:=copy(codbarras,2,4);
if DMTabelas.ibproduto.locate('CodBarras',codpesagem,[]) = true then
unitpeso:=DMTabelas.ibprodutoVALORVENDA.Value;
//le o total do item
totpesagem:=copy(codbarras,8,5);
totpesagemfloat:=strtofloat(totpesagem);
//
totpesagem:=formatfloat('###,###,##0.00',totpesagemfloat);
//
qtdencontrada:=floattostr(strtofloat(totpesagem)/unitpeso);
if pesagem = '2'then//produto pesado
begin
EditQtd.Value:=strtofloat(qtdencontrada);
end;
end; |
|
Voltar ao Topo |
|
|
fabio.avila Aprendiz
Registrado: Segunda-Feira, 11 de Junho de 2007 Mensagens: 292
|
Enviada: Seg Fev 11, 2008 10:59 am Assunto: |
|
|
vitoraraujo escreveu: |
Sabemos que o preço do produto é R$ 1,00 pelos próximos 5 digitos (00100) .
|
como meu sistema vai saber se o preço total do produto é 1,00 ou 100,00? |
|
Voltar ao Topo |
|
|
vitoraraujo Novato
Registrado: Sexta-Feira, 8 de Fevereiro de 2008 Mensagens: 23
|
Enviada: Seg Fev 11, 2008 1:15 pm Assunto: |
|
|
Caro fabio é so você pegar o valor e dividir por 100 que da o valor correto .
2 05110 0 00735 0 (do exemplo da sua etiqueta)
Pega os útimos cinco digitos antes do digito verificador e divide por cem.
00735 / 100 = 7,35
no segundo caso
"Sabemos que o preço do produto é R$ 1,00 pelos próximos 5 digitos (00100) ."
00100 / 100 = 1,00
Viu como é simples.
Quanto a configuração da balança, ela por default vem na configuração A.
PS:
Agora se fosse por peso você iria dividir por 1000 pois a balança Toledo Prix 4 trabalha com 3 casas decimais.
Qualquer coisa estamos ai
Atenciosamente Vitor Araújo Alcântara. |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|