[firebase-br] RES: RES: curva abc

Felix felix.sol em terra.com.br
Qui Out 6 14:07:06 -03 2011


Vc está usando Delphi? Pois estou fazendo a consulta, ordem por valor total
da venda por produto:

Select produto, sum(venda) tvendas, 0 ABC from vendas order by tvendas desc

Produto  / TVendas / ABC
Produto1  1.000,00 / 0
Produto7    900,00 / 0
Produto9    850,00 / 0
Produto8    700,00 / 0
Produto4    100,00 / 0
Produto3     99,00 / 0
Produto2     80,00 / 0
Produto6     10,00 / 0
Produto5      5,00 / 0
Produto0      2,00 / 0

Então faço um loop para definir em ABC conforme os índices que o usuário
determinou na janela para execução do relatório:
Defina os % para a curva ABC: [20] para itens A  [30] para itens B  [50]
para itens C

   CD_Relatorio.First;
   while not CD_Relatorio.Eof do
   begin
      CD_Relatorio.Edit;
      if (100/CD_Relatorio.RecordCount*CD_Relatorio.RecNo) <=
StrToInt(Edit1.Text) then
         CD_Relatorio.FieldByName('abc').AsInteger := 1
      else
         if (100/CD_Relatorio.RecordCount*CD_Relatorio.RecNo) <=
StrToInt(Edit2.Text) then
            CD_Relatorio.FieldByName('abc').AsInteger := 2
         else
            CD_Relatorio.FieldByName('abc').AsInteger := 3;
      CD_Relatorio.Post;
      CD_Relatorio.Next;
   end;

Deixando a tabela do exemplo acima da seguinte maneira:

Produto  / TVendas / ABC
Produto1  1.000,00 / 1
Produto7    900,00 / 1
Produto9    850,00 / 2
Produto8    700,00 / 2
Produto4    100,00 / 2
Produto3     99,00 / 3
Produto2     80,00 / 3
Produto6     10,00 / 3
Produto5      5,00 / 3
Produto0      2,00 / 3

Entenda-se aqui que itens ABC quando for 1 significam itens do grupo A (e
assim por diante).

Fco. Felix
Desenvolvimento de Sistemas
www.soltecnologia.com.br


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Reijanio Nunes Ribeiro
Enviada em: quinta-feira, 6 de outubro de 2011 13:47
Para: FireBase
Assunto: Re: [firebase-br] RES: curva abc

verdade felix a classificação abc no caso é dinamica, fiz ela baseado num
exemplo do excel e esse link que tu me passou é muito pouco conclusivo, na
realidade deveria fazer a consulta e depois atribuir a letra ao produto mais
esta foi a forma mais simples que achei poi existe pouco material que não
seja em sp, vc teria algum exemplo de sintaxe para a curva abc da forma que
vc falou que não seja baseada no posicionamento e qual são os parametros
para isso

Em 5 de outubro de 2011 19:31, Felix <felix.sol em terra.com.br> escreveu:

> Reijanio, vc está fazendo a curva ABC com base no Valor Total das Vendas e
> não pelo posicionamento dos itens? Eu fiz conforme está em
>
>
http://antigo.sp.sebrae.com.br/principal/melhorando%20seu%20neg%C3%B3cio/ori
> enta%C3%A7%C3%B5es/marketing/planejamento/sistemaabcestoques.aspx
>
> Após a consulta SQL faço uma varredura para determinar a posição de cada
> um.
>
> Fco. Felix
> Desenvolvimento de Sistemas
> www.soltecnologia.com.br
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
> Em
> nome de Reijanio Nunes Ribeiro
> Enviada em: quarta-feira, 5 de outubro de 2011 18:33
> Para: FireBase
> Assunto: Re: [firebase-br] curva abc
>
> meu problema esta so na totalização das vendas, pq se coloco sum(vlrtotal)
> ele totaliza por vendas e preciso de um total geral para poder achar a
> curva
> abc dos itens
>
> Em 1 de outubro de 2011 14:24, Alex Miranda de Oliveira <
> alex em araguaiasistemas.com.br> escreveu:
>
> > Boa tarde Reijanio
> >
> > Quais são os campos que vc esta querendo agrupar
> > e quais são os campos que vc precisa que apareça na pesquisa...
> >
> >
> > Porque se não precisar da Data da venda..
> >
> > Pode tentar assim
> >
> > Neste caso o agrupamento ficaria somente por Codigo de Produto e
> Descrição
> > do Produto..
> >
> > SELECT
> > D.CODPRO,
> > P.DESCRICAO,
> > SUM(D.QTDE * D.VLRUNITARIO- d.desconto) AS SUBTOTAL,
> > SUM(D.QTDE * D.VLRUNITARIO - D.DESCONTO)/SUM(D.VLRTOTAL)*100 AS
CURVA_ABC
> > FROM D_VENDA D
> > INNER JOIN C_VENDA V ON D.CODVENDA = V.CODIGO
> > INNER JOIN PRODUTO P ON D.codpro = P.codigo
> > WHERE V.DATAVENDA BETWEEN :DT1 AND :DT2
> > GROUP BY D.CODPRO, P.descricao
> > ORDER BY SUM(D.QTDE * D.VLRUNITARIO)/SUM(D.vlrtotal)*100 DESC
> >
> >
> >
> > Qualquer coisa posta o erro ai.
> >
> >
> >
> > SELECT
> > D.CODPRO,
> > P.DESCRICAO, SUM(D.QTDE * D.VLRUNITARIO- d.desconto) AS
> > SUBTOTAL,
> > SUM(D.QTDE * D.VLRUNITARIO - D.DESCONTO)/SUM(D.VLRTOTAL)*100 AS
> > CURVA_ABC,V.DATAVENDA
> > FROM D_VENDA D
> > INNER JOIN C_VENDA V ON D.CODVENDA = V.CODIGO
> > INNER JOIN PRODUTO P ON D.codpro = P.codigo
> > WHERE V.DATAVENDA BETWEEN :DT1 AND :DT2
> > GROUP BY V.DATAVENDA, D.CODPRO, P.descricao, V.TOTAL
> > ORDER BY SUM(D.QTDE * D.VLRUNITARIO)/SUM(D.vlrtotal)*100 DESC
> >
> >
> >
> >
> > Em 1 de outubro de 2011 10:38, Reijanio Nunes Ribeiro
> > <rnribeiro em gmail.com>escreveu:
> >
> > > bom dia a todos estou com um pequeno problema na geração de uma curva
> ABC
> > > que é o seguinte
> > >
> > > TENTATIVA 1
> > > SELECT D.CODPRO,P.DESCRICAO, SUM(D.QTDE * D.VLRUNITARIO- d.desconto)
AS
> > > SUBTOTAL,
> > > SUM(D.QTDE * D.VLRUNITARIO - D.DESCONTO)/278.50*100 AS
> > > CURVA_ABC,V.DATAVENDA
> > > FROM D_VENDA D
> > > INNER JOIN C_VENDA V
> > > ON D.CODVENDA = V.CODIGO
> > > INNER JOIN PRODUTO P
> > > ON D.codpro = P.codigo
> > > WHERE V.DATAVENDA BETWEEN :DT1 AND :DT2
> > > GROUP BY V.DATAVENDA, D.CODPRO, P.descricao, V.TOTAL
> > > ORDER BY SUM(D.QTDE * D.VLRUNITARIO)/278.50*100 DESC//se coloco o
valor
> > > total das vendas dessa forma funciona porem se tento somar o valor de
> > todos
> > > os orcamentos como abaixo da erro poderia me ajudar
> > >
> > > TENTATIVA 2
> > > SELECT D.CODPRO,P.DESCRICAO, SUM(D.QTDE * D.VLRUNITARIO- d.desconto)
AS
> > > SUBTOTAL,
> > > SUM(D.QTDE * D.VLRUNITARIO - D.DESCONTO)/SUM(D.VLRTOTAL)*100 AS
> > > CURVA_ABC,V.DATAVENDA
> > > FROM D_VENDA D
> > > INNER JOIN C_VENDA V
> > > ON D.CODVENDA = V.CODIGO
> > > INNER JOIN PRODUTO P
> > > ON D.codpro = P.codigo
> > > WHERE V.DATAVENDA BETWEEN :DT1 AND :DT2
> > > GROUP BY V.DATAVENDA, D.CODPRO, P.descricao, V.TOTAL
> > > ORDER BY SUM(D.QTDE * D.VLRUNITARIO)/SUM(D.vlrtotal)*100 DESC
> > >
> > > NESSA SEGUNDA TENTATIVA A SOMA SUM(D.VLRTOTAL) DA APENAS O VALAR
> > INDIVIDUAL
> > > DE CADA VENDA E NÃO GERAL
> > >
> > > desde ja grato pela ajuda
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> >
> >
> >
> > --
> > Alex Miranda de Oliveira
> > Coordenador de Desenvolvimento
> > alex em araguaiasistemas.com.br
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista