Identificação dos dados no código de barras.
De antemão quero agradecer a todos que fazem o ClubeDelphi, pois em aproximadamente 2,5 anos que frequento este Fórum, aprendi muito mais do que com certeza teria aprendido num curso convencional. Então obrigado, presteza, pela preocupação, pela urgência, e pelas ajudas que me foram dadas.
-----------------------------------------------------------------------------------
Agora, tenho a seguinte situação:
Estou terminando o desenvolvimento de um PDV, que através do código de barras lança o nome da mercadoria e o valor e, ao informar a quantidade já calcula o total do item, e acrescenta no cupom, até aí blz.
Mas o meu cliente pediu que eu mudasse o sistema, fazendo-o com que funcione da seguinte maneira: A quantidade sempre valerá ´1´, com isso, o funcionário dele terá apenas que passar a mercadoria pelo leitor. Mas, existe os casos de mercadorias que são pesadas, como carne, bolo, queijo, presunto... que muitas vezes (quase sempre) vem com uma quantidade inferior a 1 Kg, e nessa situação a quantidade deveria ser digitada (peso).
Se ele aceitasse isso, eu já teria feito. O que ele quer é simplesmente passar o produto e pelo código de barras o sistema já saber tudo da mercadoria. Sei que é possível, pois fui a um supermercado aqui da região, e lá é assim.
Por exemplo:
Código: 2 504300 00562 1
O 2 corresponde ao produto pesado, os 6 dígitos seguintes correspondem ao código de localização da mercadoria (504300) e os últimos dígitos correspondem ao valor da mercadoria (que nesse exemplo custa R$ 5,62).
Sei que se eu pegar o valor através do código de barras R$ 5,62 e dividir pelo preço do Kg acharei o peso da mercadoria comprada que nessa situação seria a quantidade comprada.
O que não sei, é como retirar do código esses valores.
Como fazer o programa entender que o 00562 corresponde a R$ 5,62, para que eu possa dividir pelo preço do Kg da mercadoria????
Se alguém puder me ajudar, mais uma vez fica registrado os meus sinceros agradecimentos.
-----------------------------------------------------------------------------------
Agora, tenho a seguinte situação:
Estou terminando o desenvolvimento de um PDV, que através do código de barras lança o nome da mercadoria e o valor e, ao informar a quantidade já calcula o total do item, e acrescenta no cupom, até aí blz.
Mas o meu cliente pediu que eu mudasse o sistema, fazendo-o com que funcione da seguinte maneira: A quantidade sempre valerá ´1´, com isso, o funcionário dele terá apenas que passar a mercadoria pelo leitor. Mas, existe os casos de mercadorias que são pesadas, como carne, bolo, queijo, presunto... que muitas vezes (quase sempre) vem com uma quantidade inferior a 1 Kg, e nessa situação a quantidade deveria ser digitada (peso).
Se ele aceitasse isso, eu já teria feito. O que ele quer é simplesmente passar o produto e pelo código de barras o sistema já saber tudo da mercadoria. Sei que é possível, pois fui a um supermercado aqui da região, e lá é assim.
Por exemplo:
Código: 2 504300 00562 1
O 2 corresponde ao produto pesado, os 6 dígitos seguintes correspondem ao código de localização da mercadoria (504300) e os últimos dígitos correspondem ao valor da mercadoria (que nesse exemplo custa R$ 5,62).
Sei que se eu pegar o valor através do código de barras R$ 5,62 e dividir pelo preço do Kg acharei o peso da mercadoria comprada que nessa situação seria a quantidade comprada.
O que não sei, é como retirar do código esses valores.
Como fazer o programa entender que o 00562 corresponde a R$ 5,62, para que eu possa dividir pelo preço do Kg da mercadoria????
Se alguém puder me ajudar, mais uma vez fica registrado os meus sinceros agradecimentos.
Pro-luck
Curtidas 0
Respostas
Gandalf.nho
05/11/2004
Você vai ter que usar rotinas como Copy para ´desmontar´ o valor fornecido pelo código de barras e passar as informações pertinentes ao sistema.
GOSTEI 0
Rodolpho123
05/11/2004
Vc pode utilizar um loop para verificar isto em uma string. Ex:
var
s: string;
i: integer;
begin
s:= ´00562´;
for i := 1 to Length(s) do begin
// Aqui vc pode fazer uma rotina de verificação
//onde ´i´ corresponde a localização da sua string (s) em foco.
end;
end;
var
s: string;
i: integer;
begin
s:= ´00562´;
for i := 1 to Length(s) do begin
// Aqui vc pode fazer uma rotina de verificação
//onde ´i´ corresponde a localização da sua string (s) em foco.
end;
end;
GOSTEI 0
Dopi
05/11/2004
Esse tipo de código é muito comum em Balanças automatizadas.... Todos os códigos de barra EAN13 que começao com 2 são denominados IN-STORE (código interno)
Grave no campo de Cod.Barras do seu programa somente o inicio do código: 2504300
Na rotina de entrada de Cod.Barras, use o COPY() (como já foi mencionado) e desmonte o código, separando o Código do Produto do Valor Total.
Use o Find ou algo paraceido para achar o Codigo do produto...
Se achou, divida o Total pelo Preço Unit. e vc terá a QTD...
Obs: Algumas balanças pode enviar, a QTD no código ao invez do Valor Total. Isso pode ser configurado na própria balança...
Grave no campo de Cod.Barras do seu programa somente o inicio do código: 2504300
Na rotina de entrada de Cod.Barras, use o COPY() (como já foi mencionado) e desmonte o código, separando o Código do Produto do Valor Total.
Use o Find ou algo paraceido para achar o Codigo do produto...
Se achou, divida o Total pelo Preço Unit. e vc terá a QTD...
Obs: Algumas balanças pode enviar, a QTD no código ao invez do Valor Total. Isso pode ser configurado na própria balança...
GOSTEI 0
Pro-luck
05/11/2004
Eu já havia pensado nisso, ou seja, tenho a idéia mas não estou conseguindo desenvolver esta rotina e, principalmente, como configurar a posição da vírgula tanto para o caso do código de barras mostrar o valor como o peso da mercadoria: Ex.: 5,60 ou 0,395 Kg.
Certo não só da sua atenção, mas também da atenção de todos que compôem o ClubeDelphi, antecipadamente agradeço.
Certo não só da sua atenção, mas também da atenção de todos que compôem o ClubeDelphi, antecipadamente agradeço.
GOSTEI 0
Pro-luck
05/11/2004
SOBE
GOSTEI 0
Pro-luck
05/11/2004
SOBE
GOSTEI 0
Rafs
05/11/2004
Recuperando o valor no código de barras
Transforme para Float e divida por 100, assim você terá o preço do produto pesado
CodBarra := ´250430000562´ PrecoString := Copy(CodBarra, 8, 5);
Transforme para Float e divida por 100, assim você terá o preço do produto pesado
PrecoFloat := StrToFloat(PrecoString) / 100;
GOSTEI 0
Universodosoftware
05/11/2004
Quanto a sua dúvida da vírgula ´,´, depois do procedimento passado pelos colegas acima, vc pode formatar o valor ´float´, para uma string de formato ´0,00´ ou ´0,000´.
ex. FormatFloat(´#0.00´, preco)
FormatFloat(´0.000´, peso)
ex. FormatFloat(´#0.00´, preco)
FormatFloat(´0.000´, peso)
GOSTEI 0