UC00082 - Consulta Curva ABC Dinâmica
Conteúdo |
[editar] Objetivo
- Fazer o ranking de vendas, no estilo curva ABC, através de um atributo dinâmico, a ser escolhido pelo usuário. Este ranking poderá ser impresso, gerado excell ou gráfico.
[editar] Atores
- Usuário
[editar] Pré-requisitos
- Considerar documento Padrões de desenvolvimento.
- No projeto da rotina, em confsrc > META-INF > messages > view.properties definir o nome como Consulta de Curva ABC Dinâmica. Este nome será utilizado para criar a página no Wiki.
[editar] Resultado esperado
- Gerar a curva ABC, cujo campo totalizador seja dinâmico, em seus vários formatos.
[editar] Fluxo de eventos
[editar] Fluxos principais
Fluxo 1: Usuário acessa a rotina no menu Consulta -> Faturamento -> Curva ABC de Vendas Dinâmica.
- Sistema exibe os campos de filtragem conforme RN01.
Fluxo 2: Usuário informa dados para filtragem das vendas.
- Sistema procede conforme regra de negócio RN02, e em seguida, após clicar em <Pesquisa> o sistema exibe os dados conforme RN03.
[editar] Regras de negócio
[editar] RN01 - Tela inicial de filtragem
Haverá 3 regiões de filtragem: dados gerais, dados de produtos e dados de clientes. A parte referente dados gerais ficará visível por default. As duas outras regiões de filtragem ficarão ocultas, e serão apertas quando desejadas, em um componente estilo "Collapsible Panel"
[editar] Dados Gerais
- Filiais: Usar componente padrão do sistema
- Período: Usar componente padrão do sistema, para data inicial e final
- Tipo Período: Componente estilo radiogroup, onde se indica período de vendas ou período de faturamento. Posicionar à frente da data
- Vendedor: Componente estilo combobox, com todos os vendedores do sistema (ativos, inativos e bloqueados)
- Considerar para calculo de performance: Componente estilo combobox, com os seguintes preços disponíveis: preço de custo atual, preço de custo do dia da venda, preço médio atual, preço médio do dia da venda. Default "preço de custo atual".
- Apenas Pedidos Faturados: Componente checkbox, default marcado
- Considerar apenas os XX produtos mais importantes: Componente estilo spinBotton.
- Ordenar por Maior venda ou Maior Markup: Componente estilo radioGroup.
- Totalizar por: Componente combobox com as seguintes opções:
- Produto
- Grupo
- Família
- Marca
- Fabricante
- Fornecedor
- Vendedor
- Cliente
- Segmento de Mercado
- Classificação
- Cidade
- Estado
- Rota
- Tabela do Cliente
[editar] Filtragem de Produtos
Criar um link chamado "Filtragem de Produtos", que ao ser clicado abre um panel com as seguintes opções de filtragem:
- Grupo: Componente estilo combobox
- Subgrupo: Componente estilo combobox. Apenas se grupo for informado. A lista dos subgrupos refere-se ao grupo previamente informado.
- Familia: Componente estilo combobox
- Marca: Componente estilo combobox
- Fabricante: Componente estilo combobox
- Principal Fornecedor: Componente de pesquisa padrão para "pessoas"
[editar] Filtragem de Clientes
Criar um link chamado "Filtragem de Clientes", que ao ser clicado abre um panel com as seguintes opções de filtragem:
- Cliente: Componente de pesquisa padrão para "pessoas"
- Segmento: Componente estilo combobox
- Classificação do cliente: Componente estilo combobox
- Cidade: Componente padrão - edit com busca por aproximação
- Estado:
- Rota: Componente estilo combobox
[editar] RN02 - Filtragem dos Dados da Curva ABC
- O sistema deverá ler os pedidos presentes na classe DoctoPedidoDevolucao (classe principal), que são vendas efetivas (isto deve ser observado pela operação de saída, campo "Considerar em Vendas") e diminuir as entradas referente às formas de pagamento "troca" do PDV, bem como as devoluções. Estas devoluções são provenientes de uma nf de entrada (documento fiscal de entrada normal, que ocorre quando uma empresa devolve a mercadoria com a sua nf, e depois temos que lançar esta nf) ou uma emissão de nf de entrada, via documento próprio (ocorre, por exemplo, no caso de venda ao consumidor, que evidentemente não emite NF - neste caso o usuário do sistema emite a nf). Em ambos casos as operações são de entrada (entrada normal ou entrada via documento próprio). Em qualquer situação, só deduzir as vendas se na operação for uma "devolução de vendas".
- Filiais: filtrar contra DoctoPedidoDevolucao.Filial.
- Período: observar se o usuário optou por data de pedido ou data de faturamento. A data de faturamento esta gravada no encerramento do pedido (EncerramentoPedido).
- Vendedor: se informado validar contra o vendedor da classe principal da venda (DoctoPedidoDevolucao.Vendedor).
- Apenas Pedidos Faturados: se marcado apenas para pedidos que tiveram encerramento.
- Filtragem de produtos: se informado algum filtro de produto, validá-los contra os itens do pedido. O fornecedor a ser validado, caso informado, refere-se apenas ao principal. Ou seja: não considerar fornecedores secundários.
- Filtragem de clientes: se informado um código de cliente especifico, considerar só as vendas e devolução do mesmo. Os demais filtros são todos referentes atributos presentes no cadastro do cliente,
[editar] RN03 - Tela exibição dos dados
Após realizar a filtragem, o sistema deverá exibir um grid com as as seguintes colunas
- #: Este símbolo representará o número sequencial do registro. Dependerá da ordem solicitada. O usuário poderá pedir uma ordenação por maior venda ou maior markup (venda - custo).
- Descrição: refere-se ao campo que o usuário escolheu para totalizar os dados. Exemplo: se ele quer uma curva ABC por segmento de mercado, nesta coluna, aparecerá a descrição do segmento de mercado.
- Total Venda: soma liquida das vendas, deduzindo os descontos, adicionado os acréscimos e abatido as trocas e devoluções. Totalizado no campo escolhido pelo usuário.
- Venda Acumulada: a cada linha do grid ir acumulando o valor das vendas
- Total Custo: soma do custo da quantidade vendida. Importante salientar que o preço retornado depende da opção de preço que o cliente escolheu. As opções são:
- Preço de custo atual: para cada item de venda, localizar o preço de custo atual, gravado no complemento do item.
- Preço de custo do dia da venda: com a data do pedido, localizar o movimento de estoque mais próximo (kardex), e usar o preço de custo deste registro.
- Preço médio atual: de forma análoga ao preço de custo atual. Pelo registro do complemento do produto, obter o preço médio atual.
- Preço médio do dia da venda: de forma análoga ao preço de custo do dia da venda, só que agora obtendo o preço médio.
- Markup: diferença entre o total da venda e o total do custo.
- %: ((total da venda / total do custo) - 1) * 100.
- Markup Acm: markup acumulado em valor, linha a linha
- % sobre a venda: (total de venda do item / soma total da venda, de todos os itens) * 100
- % sobre o markup: (total do markup do item / soma total dos markup´s, de todos os itens) * 100
- % acumulado: de acordo com a ordenação do relatório, posicionar as duas últimas colunas de forma que a que foi escolhida para ordenar (vendas ou markup) fique por último, e sendo assim, criar um acumulador para este %.
Com os dados em tela o usuário poderá, seguindo os padrões da empresa, gerar PDF, word, Excell ou gráficos. Os gráficos deverão seguir RN04.
[editar] RN04 - Tela exibição dos Gráficos
O usuário poderá acessar 3 gráficos, utilizando setas de navegação:
- Gráfico de vendas, conforme figura 1.
- Gráfico de custos, conforme figura 2.
- Gráfico de markup, conforme figura 3.
O nome do rótulo dependerá do campo escolhido para totalização, RN01, "Dados Gerais", campo "Totalizar por". Exemplo: se minha curva ABC é focada em cidade, o rótulo será o nome da cidade.
Se o gráfico for de vendas, haverá uma barra com os dados da coluna "Venda Acumulada". Se for de custos, os dados da barra será o da coluna "Total Custo". Se for por markup, teremos uma barra com duas informações sobrepostas (total da venda - total do custo).
Para melhor legibilidade, se o gráfico tiver mais de 30 barras, recusar a emissão do gráfico e orientar o usuário a restringir a pesquisa através do campo de Considerar apenas os XX produtos mais importantes:.