Pessoal ainda algumas duvida sobre Curva ABC !
Pessoal criei então um parametro que o usuário coloca o percentual de cada curva exemplo cruva A50¬ B30¬ C20¬.
Pergunta!
Então o produto para entrar na curva A ele tem que atingir 50¬ das venda ou + isso ?
E para entrar na B Ele que ser maio que o percentual D B e menor do que A seria Isso.
Ea curva colocaria só os que atigissem 20¬
Agora estou fazendo assim !.
Ex:Somos os totais de todos os itens vendidos, depois agrupo por produto.
vou produto a produto pegando a quantidade dele fazendo assim
Percentual(Quantidade/TotalVendido)*100 ;
Se ele atingiu 50¬ ou + ele entra na curva A seria Isso ?
Obrigado a tds !
Pergunta!
Então o produto para entrar na curva A ele tem que atingir 50¬ das venda ou + isso ?
E para entrar na B Ele que ser maio que o percentual D B e menor do que A seria Isso.
Ea curva colocaria só os que atigissem 20¬
Agora estou fazendo assim !.
Ex:Somos os totais de todos os itens vendidos, depois agrupo por produto.
vou produto a produto pegando a quantidade dele fazendo assim
Percentual(Quantidade/TotalVendido)*100 ;
Se ele atingiu 50¬ ou + ele entra na curva A seria Isso ?
Obrigado a tds !
Essistemas
Curtidas 0
Respostas
Luineumann
17/11/2003
não é o produto e sim o acumulado dos produtos.
se você tem os percentuais A 50, B 30 e C¬20 na realidade seria
A 50, B 80 (50+30) e C 100 (50+30+20)
ordene os produtos em ordem decrescente do valor a ser tabulado (do mais vendido para o menos vendido)
você soma todos os produtos e tem o total das vendas
aí, produto a produto, faz
1 produto x venda x venda x ¬devendaX sobre total se ¬ até A, produto é A senão ¬ é até (A+B) é B senão se é até (A+B+C) é C
2 produto y venda y (venda x + y) ¬ de venda(x+y) sobre total se ¬ até A, produto é A, senão se ¬ é até (A+B) é B, etc
3 produto z venda z (venda x + y + z) ¬ de venda(x+y+z) sobre total se ¬ até A, produto é A, senão se ¬ é até (A+B) é B, etc
se você tem os percentuais A 50, B 30 e C¬20 na realidade seria
A 50, B 80 (50+30) e C 100 (50+30+20)
ordene os produtos em ordem decrescente do valor a ser tabulado (do mais vendido para o menos vendido)
você soma todos os produtos e tem o total das vendas
aí, produto a produto, faz
1 produto x venda x venda x ¬devendaX sobre total se ¬ até A, produto é A senão ¬ é até (A+B) é B senão se é até (A+B+C) é C
2 produto y venda y (venda x + y) ¬ de venda(x+y) sobre total se ¬ até A, produto é A, senão se ¬ é até (A+B) é B, etc
3 produto z venda z (venda x + y + z) ¬ de venda(x+y+z) sobre total se ¬ até A, produto é A, senão se ¬ é até (A+B) é B, etc
GOSTEI 0
Essistemas
17/11/2003
Amigo vc, poderia me passar um pequeno exemplo em um botão
para que eu possa entender melhor principalmente a parte a onde vc explica os calculos !!.
Obrigado !!!
para que eu possa entender melhor principalmente a parte a onde vc explica os calculos !!.
Obrigado !!!
GOSTEI 0
Luineumann
17/11/2003
no private formulário do relatório declare
baseA, baseB, baseC : extended;
totalvenda, totalacum, percent : extended;
no formcreate do relatório coloque
qr1.close;
qr1.sql.clear;
qr1.sql.add(´select cod_produto, descricao, sum(qtd_venda) as totalprod´)
qr1.sql.add(´from tab_vendas´)
qr1.sql.add(´where ... ´);
qr1.sql.add(´group by cod_produto, descricao´);
qr1.sql.add(´order by totalprod desc, cod_produto asc´);
qr1.open;
totalvenda := 0;
while not qr1.eof
do begin
totalvenda := totalvenda + qr1totalprod.value;
qr1.next;
end;
totalacum := 0;
baseA := strtofloat(edit do ¬ A.text);
baseB:= strtofloat(edit do ¬ Btext) + base A;
baseC= strtofloat(edit do ¬ Ctext) + base B;
no beforeprint da linha detalhe do relatório coloque
totalacum := totalacum + qr1totalprod.value;
percent := (totalacum * 100) / totalvenda;
if percent <= baseA
then é A
else if percent <= baseB
then é B
else if percent <= baseC
then é C
else é D (caso a soma dos ¬ A, B e C seja < 100)
essa é uma forma de fazer
espero ter ajudado
baseA, baseB, baseC : extended;
totalvenda, totalacum, percent : extended;
no formcreate do relatório coloque
qr1.close;
qr1.sql.clear;
qr1.sql.add(´select cod_produto, descricao, sum(qtd_venda) as totalprod´)
qr1.sql.add(´from tab_vendas´)
qr1.sql.add(´where ... ´);
qr1.sql.add(´group by cod_produto, descricao´);
qr1.sql.add(´order by totalprod desc, cod_produto asc´);
qr1.open;
totalvenda := 0;
while not qr1.eof
do begin
totalvenda := totalvenda + qr1totalprod.value;
qr1.next;
end;
totalacum := 0;
baseA := strtofloat(edit do ¬ A.text);
baseB:= strtofloat(edit do ¬ Btext) + base A;
baseC= strtofloat(edit do ¬ Ctext) + base B;
no beforeprint da linha detalhe do relatório coloque
totalacum := totalacum + qr1totalprod.value;
percent := (totalacum * 100) / totalvenda;
if percent <= baseA
then é A
else if percent <= baseB
then é B
else if percent <= baseC
then é C
else é D (caso a soma dos ¬ A, B e C seja < 100)
essa é uma forma de fazer
espero ter ajudado
GOSTEI 0
Essistemas
17/11/2003
Quero desde já manifestar meus agredecimentos a ajuda que tenho recebido !.
Ainda resta + algumas duvidas !!
//Nesta Parte eu Somei os Totais de vendas
With ObjVendas.Tb_Vendas,Sql do
begin
Clear ;
Add(´Select Sum(Quantidade) TotalVendas from Vendas´) ;
Active:=True ;
end;
// Peguei o Total nesta Variavel
TotalVendas:=ObjVendas.Tb_Vendas.FieldByname(´TotalVendas´).Value ;
// Agrupei os prdutos ;
With ObjVendas.Tb_Vendas,Sql do
begin
Clear ;
Add(´SELECT Produto,SUM( Quantidade) Quantidade FROM VENDAS Vendas´);
Add(´GROUP BY Produto´);
Add(´ORDER BY 2 Desc´);
Active:=True ;
end;
totalacum := 0;
baseA := strtofloat(CbCurvaA.Text);
baseB := strtofloat(CbCurvaB.Text) + baseA;
baseC := strtofloat(CbCurvaC.Text) + baseB;
ObjVendas.Tb_Vendas.First ;
//Agos Aqui é as partes de Calculos
While not ObjVendas.Tb_Vendas.Eof do
begin
Quant :=ObjVendas.Tb_Vendas.FieldByname(´Quantidade´).Value ;
Produto :=ObjVendas.Tb_Vendas.FieldByname(´Produto´).AsString ;
totalacum := totalacum + Quant;
percent := Round((TotalAcum * 100) / totalvendas);
if percent <= baseA then
MCurvaA.Lines.Add(Produto)
else if percent <= baseB then
CurvaB.Items.Add(Produto)
else if percent <= baseC then
CurvaC.Items.Add(Produto)
else if (Percent <>BaseA)and(Percent <>BaseB) and (Percent <>BaseC)then
CurvaD.Items.Add(Produto);
ObjVendas.Tb_Vendas.Next ;
end;
end;
Montei este código, não sei se estou fazendo algo errado ainda.
Exemplo fiz uma venda de um produto com 4 Unidades e outro 1 Unidade !. só o que eu vendi 1 ficou na curva A e o que eu vendi 4 ficou na curva B, o + vendido não era para ficar na CurvaA
Pecentual A50¬ B¬30 C20¬
Obrigado a tds !
e principalmente ao
luineumann, Deus abençoe !!
Ainda resta + algumas duvidas !!
//Nesta Parte eu Somei os Totais de vendas
With ObjVendas.Tb_Vendas,Sql do
begin
Clear ;
Add(´Select Sum(Quantidade) TotalVendas from Vendas´) ;
Active:=True ;
end;
// Peguei o Total nesta Variavel
TotalVendas:=ObjVendas.Tb_Vendas.FieldByname(´TotalVendas´).Value ;
// Agrupei os prdutos ;
With ObjVendas.Tb_Vendas,Sql do
begin
Clear ;
Add(´SELECT Produto,SUM( Quantidade) Quantidade FROM VENDAS Vendas´);
Add(´GROUP BY Produto´);
Add(´ORDER BY 2 Desc´);
Active:=True ;
end;
totalacum := 0;
baseA := strtofloat(CbCurvaA.Text);
baseB := strtofloat(CbCurvaB.Text) + baseA;
baseC := strtofloat(CbCurvaC.Text) + baseB;
ObjVendas.Tb_Vendas.First ;
//Agos Aqui é as partes de Calculos
While not ObjVendas.Tb_Vendas.Eof do
begin
Quant :=ObjVendas.Tb_Vendas.FieldByname(´Quantidade´).Value ;
Produto :=ObjVendas.Tb_Vendas.FieldByname(´Produto´).AsString ;
totalacum := totalacum + Quant;
percent := Round((TotalAcum * 100) / totalvendas);
if percent <= baseA then
MCurvaA.Lines.Add(Produto)
else if percent <= baseB then
CurvaB.Items.Add(Produto)
else if percent <= baseC then
CurvaC.Items.Add(Produto)
else if (Percent <>BaseA)and(Percent <>BaseB) and (Percent <>BaseC)then
CurvaD.Items.Add(Produto);
ObjVendas.Tb_Vendas.Next ;
end;
end;
Montei este código, não sei se estou fazendo algo errado ainda.
Exemplo fiz uma venda de um produto com 4 Unidades e outro 1 Unidade !. só o que eu vendi 1 ficou na curva A e o que eu vendi 4 ficou na curva B, o + vendido não era para ficar na CurvaA
Pecentual A50¬ B¬30 C20¬
Obrigado a tds !
e principalmente ao
luineumann, Deus abençoe !!
GOSTEI 0
Essistemas
17/11/2003
???
GOSTEI 0
Essistemas
17/11/2003
??
GOSTEI 0