Skip to content

Tag-icone-mini.png Análise

Análise
Projeto 1221
Data da Análise: 23/04/2014

Projeto ​

Requisitos ​

Essa análise é referente ao requisito 48 do projeto de aderência da Casa Carneiro.

Para mais detalhes acesse o sistema de projetos.

48-Estoque mínimo para compras ¿ Cálculo do desvio padrão de vendas por dia útil, para um determinado período, por produto. ¿ Histórico do tempo de recebimento do pedido, entre o envio e chegada do produto, usar p/ o cálculo do estoque mínimo p/ compras. Desvio padrão deste período.

Para ver os requisitos na íntegra, acesso o sistema de projetos.

Podemos listar os requisitos da seguinte forma:

  • Sistema deve permitir cadastrar níveis de serviço.
  • Sistema deve permitir cadastrar prazo de compra por combinação ABC/XYZ.
  • Sistema deve calcular "Tempo Médio de Entrega dos Pedidos".
  • Sistema deve calcular "Desvio Padrão no Tempo Médio de Entrega dos Pedidos".
  • Sistema deve calcular "Tempo de Ressuprimento (lead time)".
  • Sistema deve calcular "Estoque de Segurança".
  • Sistema deve calcular "Ponto do Pedido".
  • Sistema deve calcular "Estoque Máximo".
  • Sistema deverá fazer os cálculos para dias corridos e para dias úteis com estoque, conforme configuração.
  • Sistema deverá fazer os cálculos considerando todas as vendas e vendas fora de promoção, conforme filtro em tela.
  • Na sugestão de compra, sistema deve mostrar coluna "Mínimo Vendido no Dia".
  • Na sugestão de compra, sistema deve mostrar coluna "Máximo Vendido no Dia".
  • Na sugestão de compra, sistema deve mostrar coluna "Média Vendida no Dia".
  • Na sugestão de compra, sistema deve mostrar coluna "Desvio Padrão da Média Vendida no Dia".
  • Na sugestão de compra, sistema deve mostrar coluna "Classificação ABC".
  • Na sugestão de compra, sistema deve mostrar coluna "Classificação XYZ".
  • Na sugestão de compra, sistema deve mostrar coluna "Tempo de Ressuprimento (lead time)".
  • Na sugestão de compra, sistema deve mostrar coluna "Estoque de Segurança".
  • Na sugestão de compra, sistema deve mostrar coluna "Ponto do Pedido".
  • Na sugestão de compra, sistema deve mostrar coluna "Estoque Máximo".
  • Na sugestão de compra, sistema deve ter uma projeção de "Estoque Máximo" que sugira somente no "Ponto de Pedido".

Detalhamento ​

Tela de sugestão deverá ter uma projeção de Estoque Máximo que seja disparada quando estoque do produto estiver no Ponto de Pedido.
Com isso, será possível ter a quantidade mínima do produto em estoque que seja capaz de atender ao nível de serviço que se deseja ter em relação a venda de um determinado produto.
Bem como prever o tempo que leva para conseguir pedir e receber o produto.
E para permitir ao usuário algum controle em relação ao sugerido, sistema apresentará várias novas informações na sugestão.

Escopo ​

O cálculo pela VDU será feito em outra etapa.

Cenário ​

Esse projeto está sendo desenvolvido para atender a todos os segmentos sem distinção.

Filial de Depósito ​

Atualmente, o sistema está preparado para funcionar bem com apenas uma filial de depósito.
Existe uma configuração geral que não tem interface para definir qual é essa filial.

SELECT CODDEP FROM TT_IDF

As configurações de níveis de serviço e lote de compra que serão detalhadas neste artigo devem ser configuradas apenas para essa filial.
A sugestão de compra levará em consideração essa filial quando não for aplicado filtro para nenhuma outra.

Configurar Níveis de Serviço ​

Para o cálculo do estoque de segurança haverá uma tabela de configuração para níveis do serviço. Cada registro dessa tabela terá um percentual para identificação e o fator de serviço correspondente. Ela deve vir com os valores definidos conforme tabela abaixo.

Tela001-nivel-servico.jpg

Criar Tabela de Níveis de Serviço ​

Especificação para tarefa(s): 89474

Criar TD_NIV para armazenar os Níveis de Serviço para estoque de um produto.

ColunaPrecisãoNullDefaultDescrição
CODTABNUMBER(5)NOT NULL-X-Código
DESNIVVARCHAR(100)NOT NULL-X-Nível de Serviço
NIVATIVARCHAR(1)NOT NULL"T"Ativo?
PERNIVNUMBER(4,2)NOT NULL0 % Nível de Serviço
FATSERNUMBER(5,3)NOT NULL0Fator do Serviço

Check-contraints:

ColunaRegra
NIVATI"T" ou "F"
PERNIV>= 0
FATSER>= 0

Fazer passo de migração incluindo os níveis de serviço apresentados neste artigo. Criá-los com CODTAB a partir do 1.

Interface para Tabela de Níveis de Serviço ​

Especificação para tarefa(s): 89475

Config - Menu >>> Outros >>> Compras >>> Níveis de Serviço

Criar interface para nova tabela TD_NIV - Níveis de Serviço. A coluna DESNIV será utilizada para cadastrar o percentual - que é meramente informativo. Deve-se tratar formato do campo fator do serviço.

Cadastrar Níveis de Serviço para Produto ​

Os níveis de serviço estarão vinculados aos produtos. Desta forma, eles poderão ser definidos por departamento, classe, etc.

Criar Coluna para Definir Níveis de Serviço no Produto ​

Especificação para tarefa(s): 93896

Na TT_PRO, criar nova coluna para armazenar nível do serviço.

ColunaPrecisãoNullDefaultDescrição
CODNIVNUMBER(5)NULL-X-Nível do Serviço

Foreign-key:

ColunasTabela ReferenciadaColunas na Referência
CODNIVTD_NIVCODTAB

Criar Interface para Definir Níveis de Serviço no Produto ​

Especificação para tarefa(s): 93897

Backoffice - Menu >>> Produtos >>> Cadastro
Backoffice - Menu >>> Produtos >>> Manutenção

No cadastro de produtos e manutenção de produtos, deve-se permitir cadastrar um nível de serviço [TT_PRO.CODNIV]. No cadastro, incluir combo na guia Complementos. Na manutenção, incluir combo na guia Produto.

Prazo de Compra por Classificação ABCXYZ ​

E para o cálculo do lote de compra (LC) será necessário que exista uma definição de prazo de compra para cada combinação de classificação ABC e XYZ.

Tela002-config-prazo-compra.png

Criar Colunas para Prazo de Compra ​

Especificação para tarefa(s): 93898

Na TD_FIL criar colunas conforme descrito nas tabelas abaixo.

ColunaPrecisãoNullDefaultDescrição
PRAZO_COMPRA_XANUMBER(3)NOT NULL0Prazo de Compra para Combinação X e A (Prazo Compra XA)
PRAZO_COMPRA_XBNUMBER(3)NOT NULL0Prazo de Compra para Combinação X e B (Prazo Compra XB)
PRAZO_COMPRA_XCNUMBER(3)NOT NULL0Prazo de Compra para Combinação X e C (Prazo Compra XC)
PRAZO_COMPRA_YANUMBER(3)NOT NULL0Prazo de Compra para Combinação Y e A (Prazo Compra YA)
PRAZO_COMPRA_YBNUMBER(3)NOT NULL0Prazo de Compra para Combinação Y e B (Prazo Compra YB)
PRAZO_COMPRA_YCNUMBER(3)NOT NULL0Prazo de Compra para Combinação Y e C (Prazo Compra YC)
PRAZO_COMPRA_ZANUMBER(3)NOT NULL0Prazo de Compra para Combinação Z e A (Prazo Compra ZA)
PRAZO_COMPRA_ZBNUMBER(3)NOT NULL0Prazo de Compra para Combinação Z e B (Prazo Compra ZB)
PRAZO_COMPRA_ZCNUMBER(3)NOT NULL0Prazo de Compra para Combinação Z e C (Prazo Compra ZC)

Check-contraints:

ColunaRegra
(para todas)>= 0

Criar Interface para Prazo de Compra ​

Especificação para tarefa(s): 93899

Config - Menu >>> Outros >>> Filiais

Em uma nova guia chamada "Compras", criar interface para as novas colunas de prazo de compra (PRAZO_COMPRA_XA, PRAZO_COMPRA_XB, PRAZO_COMPRA_XC, etc).

Configurar Dias para Recebimento de Pedidos ​

Será necessário configurar um número de dias que será levado em consideração para obtenção da médio de tempo que demora para um determinado produto ser pedido e recebido.

Criar Colunas para Dias para Recebimento de Pedidos ​

Especificação para tarefa(s): 93900

Na TT_CFG, criar coluna para definir número de dias para calcular média na demora do ressuprimento de uma mercadoria.

ColunaPrecisãoNullDefaultDescrição
DIAS_REC_PEDIDOSNUMBER(3)NOT NULL30Dias para Recebimento dos Pedidos (Dias Rec Pedidos)

Check-contraints:

ColunaRegra
DIAS_REC_PEDIDOS>= 0

Criar Interface para Dias para Recebimento do Pedidos ​

Especificação para tarefa(s): 93901

Config - Outros >>> Ambiente >>> Produto

No grupo Pedido, criar interface para Dias para Recebimento dos Pedidos [TT_CFG.DIAS_REC_PEDIDOS].

Tipo de Dia para Média de Vendas ​

Será necessário configurar se a média de vendas será por dias corridos ou por dias com loja aberta e estoque.

Criar Colunas para Tipo de Dia para Média de Vendas ​

Especificação para tarefa(s): 93902

Na TT_CFG, criar coluna conforme descrito nas tabelas abaixo.

ColunaPrecisãoNullDefaultDescrição
TIPDIA_VDU_PPCHAR(1)NOT NULL"C"Dias que Serão Considerados para Média de Vendas no Cálculo do Ponto de Pedido (Tipo Dia VDU PP)

Domínios:

ColunaValorDescrição
TIPDIA_VDU_PP"C"Dias Corridos
TIPDIA_VDU_PP"A"Dias com Loja Aberta

Check-contraints:

ColunaRegra
TIPDIA_VDU_PPPermitir "C" ou "A"

Criar Interface para Tipo de Dia para Média de Vendas ​

Especificação para tarefa(s): 93903

Config - Outros >>> Ambiente >>> Produto >>> Estoque

Junto com "Regra para Giro de Estoque", criar interface para Dias que Serão Considerados na Projeção do Fluxo Financeiro [TT_CFG.TIPDIA_VDU_PP].

Calcular Média de Recebimento do Pedido ​

Sistema terá um processo diário para calcular a média e desvio padrão da média do tempo de recebimento do pedido. Essa informação será guardada por fornecedor.

Cálculo da Média e Desvio Padrão ​

Calcular a média é bem simples, primeiro temos que ter uma lista com amostras.

Amplitude Variancia Oracle1.jpg.png

Depois podemos utilizar as funções AVG e STDDEV.

SELECT STDDEV(juiz_a), STDDEV(juiz_b), avg(juiz_a), avg(juiz_b) FROM campeonato

Exemplo obtido do artigo Calculando Amplitude, Variância e Desvio Padrão no Oracle.

Criar Colunas da Média de Recebimento do Pedido ​

Especificação para tarefa(s): 93904 94756

Na TT_PXF, criar coluna para armazenar a média e desvio padrão do tempo de recebimento do pedido.

ColunaPrecisãoNullDefaultDescrição
MEDENTNUMBER(8,4)NULL-X-Média de Dias para Recebimento dos Pedidos (Média Rec Pedidos)
DP_ENTNUMBER(8,4)NULL-X-Desvio Padrão dos Dias para Recebimento dos Pedidos (Desv Padrão Rec Ped)

Check-contraints:

ColunaRegra
MEDENT>= 0
DP_ENT>= 0

Criar Job para Calcular Média de Recebimento do Pedido ​

Especificação para tarefa(s): 93905

Deve-se criar um job de banco para calcular a média e desvio padrão de recebimento do pedido. Considerar tempo entre Pedido e Compra (somente abertas e não devolvidas).
Considerar configuração de dias [TT_CFG.DIAS_REC_PEDIDOS].

Para cada fornecedor, sistema deve fazer um selects nos itens de pedidos [TT_IPE] filtrando os registros dos últimos n dias de acordo com TT_CFG.DIAS_REC_PEDIDOS.
Usar a coluna TT_PED.DATPED para isso.

Um item de pedido pode ser recebido em mais de uma compra, vamos considerar o primeiro recebimento do pedido. Então o relacionamento com a TT_ICO deve ter um GROUP BY e deve ser considerada a MIN(TT_COM.DATOPE).

Diminuindo as duas datas teremos uma lista de pedidos e seus respectivos tempos de entrega em dias. Pode-se utilizar a função IntervaloDias para isso.

select intervalodias(<DATA DA ENTRADA DA COMPRA>, <DATA DO REGISTRO DO PEDIDO>) from dual

Com essa lista aplicar as funções AVG e STDDEV para obter respectivamente a média e desvio padrão. E materializar seus resultados em TT_PXF.MEDENT e TT_PXF.DP_ENT. Como na PXF não temos filial, consideraremos todas as filiais.

Configurar Regra para Média de Vendas ​

Para o cálculo do Ponto de Pedido será necessário ter uma média de vendas. A média de vendas será sobre um período de vendas que poderá ser por:

  • Período Anterior: se vamos sugerir para os próximo 30 dias, então consideremos a média de vendas dos últimos 30 dias.
  • Mesmo Período no Ano Anterior: se vamos sugerir compras na próxima semana que é Natal, então vamos tomar como referência a semana de Natal do ano passado.

Será necessário configurar qual será a regra utilizada para calcular a média de vendas no Ponto de Pedido.

Criar Colunas para Dias da Média de Vendas no Ponto de Pedido ​

Especificação para tarefa(s): 93906

Na TT_CFG, criar coluna para definir regra utilizada para calcular a média de vendas no Ponto de Pedido.

ColunaPrecisãoNullDefaultDescrição
REGRA_MEDIA_VENDASCHAR(1)NOT NULL"1"Regra para Calcular a Média de Vendas no Ponto de Pedido (Regra Média Ven)

Check-contraints:

ColunaRegra
REGRA_MEDIA_VENDASPermitir somente "1" ou "2"

Domínios:

ColunaValorDescrição
REGRA_MEDIA_VENDAS"1"Período Anterior
REGRA_MEDIA_VENDAS"2"Mesmo Período no Ano Anterior (Ano Anterior)

Criar Interface para Dias para Recebimento do Pedidos ​

Especificação para tarefa(s): 93907

Outros >>> Ambiente >>> Produto

Na guia Estoque, dentro do grupo "Giro de Estoque", criar interface para a coluna TT_CFG.REGRA_MEDIA_VENDAS.
Deve ser um combo respeitando as possibilidades do domínio.

Sugiro modificar o nome do grupo de "Giro de Estoque" para "Sugestão de Compras".

Estoque de Gôndola ​

O estoque máximo existente no sistema atualmente serve para que não se transfira mais mercadorias do que cabe nas prateleiras (gôndolas) da filial. Por ser assim específico, vamos chamá-lo de "Estoque de Gôndola", permitindo que o termo "Estoque Máximo" seja utilizado para o número máximo que precisa ser comprado de uma mercadoria para manter o estoque pelo tempo de ressuprimento e nível de serviço.

Renomear Estoque Máximo para Estoque de Gôndola ​

Especificação para tarefa(s): 93908

Menu >>> Produtos >>> Cadastro e Manutenção
Menu >>> Compras >>> Distribuição >>> Gerar (Sugestão)
Menu >>> Compras >>> Distribuição >>> Aplicar

Rastrear o que foi feito nas tarefas 90081 e 90082 mudando o nome "Estoque Máximo" para "Estoque de Gôndola". Basicamente, as alterações são no Cadastro de Produtos, Manutenção de Produtos e Sugestão de Compra (projeção e coluna).

Alterar também metadados da coluna.

Calcular Ponto de Pedido e Estoque Máximo ​

Sistema terá uma função de banco para calcular o Ponto de Pedido. Esse cálculo levará em consideração o tempo de ressuprimento, estoque de segurança e a média de vendas aplicado ao mesmo período foi considerado no cálculo de estoque de segurança.

Cálculo do Tempo de Ressuprimento (lead time) ​

Tempo que o produto demora do pedido até o recebimento.
Utilizaremos a média do tempo de recebimento dos pedidos do fornecedor.

Cálculo do Estoque de Segurança ​

É a gordura de estoque de um produto calculada a partir do nível de segurança e do tempo de ressuprimento.

Para calcular o ES (Estoque de Segurança) da fórmula do ponto do pedido será utilizada a fórmula abaixo.

ES = FS * DP * (TR ^ 1/2)

  • FS é o fator de serviço cadastrado para o produto [TD_NIV.FATSER].
  • DP = Desvio padrão do recebimento da mercadoria [TT_PXF.DP_ENT].
  • TR = Tempo de ressuprimento [TT_PXF.MEDENT].
  • A raiz quadrada de um número é equivalente a elevar à potência de 1/2.

Cálculo do Ponto do pedido ​

Ponto de Ressuprimento (PR), Ponto de Encomenda (PE) ou Ponto de Pedido (PP) – corresponde ao nível de estoque que ao ser atingido indica a necessidade de ressuprimento. Ao invés da coluna fixa do cadastro de produtos sistema deverá fazer o cálculo. A fórmula que deverá ser considerada está descrito abaixo.

PP = VDU * TR * ES

  • VDU é a média de vendas por dia do produto.

a) Ela poderá ser obtida pela função MEDIA_VENDAS_PRODUTO que trabalha com os conceitos de Dias Corridos ou Dias com Loja Aberta e Estoque, que é definido pela configuração [TT_CFG.TIPDIA_VDU_PP].

b) Tratar a possibilidade da filial ser filtrada na tela também.

c) Se considerar média de vendas do período anterior, filtrar a mesma quantidade de dias do TR antes de hoje (função Agora()).
Exemplo:
Se hoje é dia 28/04/2014, e o TR=20 dias, então o filtro deve ser do dia 08/04/2014 até 27/04/2014 23:59:59:999.

d) Se considerar média de vendas no mesmo período no ano anterior, filtrar a mesma quantidade de dias do TR a partir de hoje.
Exemplo:
Se hoje é dia 28/04/2014, e o TR=20 dias, então o filtro deve ser do dia 28/04/2013 até 17/05/2013 23:59:59:999.

e) Tratar a possibilidade da amostragem ser por:

    1. Todas as Vendas;
    1. Somente Vendas Fora de Promoção [TR_MOV.PROMOC="F"].

Cálculo do Lote de Compra ​

Apresentar na tela também para fins de validação de fórmula.

LC = PE * VDU

  • Pegar PE da configuração da tabela ABCXYZ [TD_FIL.PRAZO_COMPRA_XA, PRAZO_COMPRA_XB, etc.]. Utilizar da filial informada na tela quando tiver, caso contrário usar a filial de depósito [TT_IDF.CODDEP].
  • VDU é a mesma considerada no cálculo do Ponto de Pedido.

Cálculo da Quantidade Máxima ​

Quando a comparação for por "Estoque Máximo", então trazer na coluna "Quantidade Máxima" a quantidade máxima calculada pelo sistema, senão trazer 0. Nessa coluna será apresentado um cálculo da quantidade máxima que precisa ter do produto em estoque para suprir as expectativa de venda durante o prazo de compra.

E.MAX = ES + LC

\\ttadm\Anexos_PRJ\Casa Carneiro\Projeto Aderencia\004-Fase 4\48-Estoque mínimo para compras\Exemplo dos Cálculos.xlsx

Projetar Estoque Máximo no Ponto de Pedido ​

Projetar Estoque Máximo no Ponto de Pedido ​

Especificação para tarefa(s): 93909

Backoffice - Menu >>> Compras >>> Pedido >>> Registro

Na tela de sugestão de compra serão necessários ajustes nos filtros e nas colunas para permitir filtrar somente produtos que tenham atingido o ponto de pedido calculado.
Será necessário uma nova projeção para que sistema faça a sugestão pelo "Estoque Máximo".
Outra mudança será a presença de um novo filtro para que se possa filtrar os dados para todas as vendas, ou somente vendas fora de promoção.

Filtros

Os filtros estão demonstrados nas figuras abaixo, será necessário ajustar a ordem e a posição dos campos conforme apresentado na tela.

  • Filtro de Sugestão

  • Filtro de Produto

Comparação por: Criar novo filtro de comparação por "Estoque Máximo". Ele deve ser só permitido para Registro de Pedidos. Pedido de Reposição e Distribuição de Estoque não poderão utilizá-lo.

Período a ser avaliado: Ele não deve desaparecer mais. Quando for um tipo de comparação que não usa período, deve ser deixado desabilitado.

Quando a comparação for por "Estoque Máximo", deve-se usar fixo o período calculado na função de Ponto de Pedido e deixar desabilitado.

Manter estoque até: Quando a comparação for por "Estoque Máximo", deve-se usar fixo o período calculado na função de Ponto de Pedido e deixar desabilitado.

Saldo: Mudar o descritivo das opções do combo da seguinte forma:

  • Mínimo (Somente se atingiu o mínimo)
  • Ponto de Pedido (Somente se atingiu o Ponto do Pedido)
  • Qualquer saldo

Dilatar bem o combo para que se possa ver seu conteúdo.

Quando a comparação for por "Estoque Máximo", deixar saldo fixo em "Ponto de Pedido" e desabilitar.

Filial: O normal é não informar a filial. O que faz com que a tela verifique todas as vendas. Quando a comparação for por "Estoque Máximo", se a filial não for informada, sistema utilizará a filial de depósito para obter o lote de compras. Caso a filial seja informada, a função Ponto de Pedido e Estoque Máximo devem filtrar filial.
Enfim, quando a filial é informada, sistema considera somente o universo daquela filial.

Amostragem: tela terá um combo para que se escolha os dias que serão considerados nos cálculos de Giro de Estoque, Mínimo Vendido por Dia, Máximo Vendido por Dia, Média de Vendas por Dia, Desvio Padrão de Vendas por Dia, Estoque Mínimo de Dias e Tracking Signal*.

Deve-se ajustar demais campos que trazem dados de venda para considerar esse filtro também (Vendas dos últimos meses, média de vendas, etc.).

As opções serão:

  • Todas as Vendas
  • Somente Vendas Fora de Promoção

* Tracking Signal será implementado no Req. 49

Apenas com vendas efetuadas: Quando a comparação for por "Estoque Máximo", deixar esses campos vazios e desabilitar.

Colunas

O grid também apresentará diversas novas informações.

Quantidade Mínima Vendida por Dia: É a quantidade vendida no dia que teve menos vendas. Se não teve vendas em um dia é zero. Esse número faz bastante sentido quando tratarmos vendas por dia útil, mas por enquanto, para dias corridos, traremos o menor QTDVEN dentro do período avaliado. Quando usar filtro de amostragem em promoção ou fora da promoção deve-se filtrar PROMOC da TR_MOV.

Quantidade Máxima Vendida por Dia: Idem quantidade mínima, mas utilizaremos o maior QTDVEN.

Média Diária de Vendas no Período Avaliado: A coluna já é trazida pela tela.

Desvio Padrão das Vendas: Aplicar cálculo de desvio padrão nos mesmos registros utilizados para se obter a média de vendas no período avaliado.

Tempo de Ressuprimento (lead time): Não foi solicitado pelo cliente, mas para que se possa validar o cálculo do Ponto de Pedido é interessante ter essa informação na tela.

Nota: Função ponto de pedido poderia retornar mais de um parâmetro, ou transformar isso em outra função. Cálculos não podem ficar dispersos (função e tela).

Estoque de Segurança: Idem tempo de ressuprimento.

Ponto do pedido: Quando a comparação for por "Estoque Máximo", então trazer na coluna "Ponto de Pedido" o ponto de pedido calculado pelo sistema.

Lote de Compra: Apresentar na tela também para fins de validação de fórmula.

Quantidade Máxima: Quando a comparação for por "Estoque Máximo", então trazer na coluna "Quantidade Máxima" a quantidade máxima calculada pelo sistema, senão trazer 0. Nessa coluna será apresentado um cálculo da quantidade máxima que precisa ter do produto em estoque para suprir as expectativa de venda durante o prazo de compra.

Categorias ​