Cálculo de Margem

De GeoSales
Ir para navegação Ir para pesquisar

Histórico de Revisões

Data Quem Comentários
11/01/2017 Victor César Criação do Documento
27/01/2017 Jefferson Quesado Revisão Arquitetura
01/02/2017 Inaldo França Ajustes solicitados pela arquitetura

Necessidade

A Agrosema tem a necessidade de detectar se determinada venda está atingindo ou não a margem média de lucro por cada vendedor.

Solução

O Sistema realizará o calculo de rentabilidade para saber se a margem total do pedido está maior ou menor que a margem definida para cada vendedor. Se a margem obtida for menor o sistema exibirá um alerta informando que aquele pedido ficará bloqueado no ERP, caso a margem for maior o sistema não exibirá o alerta.

Para chegar na margem geral do pedido é preciso construir uma série cálculos, onde no final deverá ter a média de todos os produtos do pedido e identificar se a margem foi ou não atingida pelo vendedor

Implementação

Iremos dividir em dois momentos, Primeiramente calcular o CUSTO de cada item, e depois a APLICAÇÃO, onde iremos aplicar a Margem e qual validação ela terá.

Pré-Requisitos

  1. O Sistema deve possuir o cadastro de parâmetro ID_RENTABILIDADE com o valor S
  2. O Sistema deve possuir o cadastro de parâmetro ID_CALCULA_CUSTO configurado com S
  3. A Margem de cada vendedor deve estar cadastrada no ERP no campo A3_ZZMBMIN e integrada com o GeoSales na tabela VENDEDOR
  4. O Custo do Produto deve estar cadastrado no ERP no campo DA1_ZZCUST e integrado com o GeoSales na tabela PRODUTO_CUSTO
  5. O Juros do dia de cada Produto deve estar cadastrado no ERP no campo A3_ZZTXMES e integrado no GeoSales na tabela PRODUTO
  6. Integrar a tabela FAMILIA_PRODUTO_RENTABILIDADE

Cálculo

Como exemplo iremos adotar as seguinte informações:

  • Custo do produto Lorbson - R$400,00 (Essa informação será cadastrada no ERP)
  • Quantidade vendida: 1
  • Vencimento: Data de Hoje - (Essa campo é o mesmo que foi criado na funcionalidade de Bloqueio por Prazo)
  • Vendedor AGROSEMA - Margem Mínima de 15% (Essa informação será cadastrada no ERP)
  • Taxa de Juros de (1,8% a.m) / 30 = Taxa de Juros a.d = 0,06%. (Essa informação será cadastrada no ERP)
  • Valor total do pedido = R$ 516,75


Cálculo do Custo

  • O Custo será calculado através de Listeners, será criado uma tabela na base de dados para listar esses listeners e controlar a ordem de aplicação se houver a necessidade de realizar mais de um cálculo para achar o custo do Produto.

Estrutura da Tabela: APLICACAO_CUSTO

ID DS_LISTENER ORDEM ATIVO
CÓDIGO SEQUENCIAL DESCRIÇÃO DO LISTENER ORDEM DE APLICAÇÃO SE ESTÁ ATIVO OU NÃO.
  • O campo ORDEM deve ser único, para não haver conflitos.
  • Todo listener de custo deve preencher o campo VL_CUSTO da tabela ITEM_PEDIDO
  • Para o cálculo do custo dos produtos da AGROSEMA será criado o listener TAXA_VENCIMENTO
  • Para esse listener será aplicado o seguinte cálculo:
ONDE
DIAS (VENCIMENTO - DATA ATUAL), Resultado deve ser em número de dias
VR_CUSTO Custo do produto da tabela PRODUTO_CUSTO
PR_JUROS Percentual de Juros do dia de Cada produto
Custo do Produto = VR_CUSTO + (VR_CUSTO * (DIAS * PR_JUROS))
                             
  400 + (400*(0*0,06%)) = R$400,00
  • O resultado desse calculo será inserido no campo VR_CUSTO da tabela ITEM_PEDIDO e será utilizado no cálculo da Margem.

Calculo da Margem

  • Após obter o custo de cada item o sistema irá calcular a Margem de Lucro de Cada item e salvar no campo VR_RENTABILIDADE da tabela ITEM_PEDIDO a margem de cada item do pedido.
Aplicação do Cálculo da Margem
  • Após obter o custo de cada item e a Margem de Lucro de cada item será aplicado um cálculo para ser obtido a Margem de Lucro geral do Pedido para ser exibido o alerta.
Calcular a Margem do Lucro:

 Margem de Lucro = 1 - (Soma dos Custos do Produto (Campo VR_CUSTO da tabela ITEM_PEDIDO) * Quantidade de Cada Item / Valor Total do pedido)

    1 - (400 / 516,75) = 0,2259 ou 22,59% se multiplicarmos por 100
  • Após obter esse percentual o mesmo será comparado com o campo PR_MINIMO da tabela FAMILIA_PRODUTO_RENTABILIDADE.
    • Se a Margem geral do pedido for menor que o percentual do PR_MINIMO da tabela FAMILIA_PRODUTO_RENTABILIDADE exibir o seguinte alerta: “Pedido bloqueado. Motivo: Margem do pedido abaixo do permitido.”
    • Se a margem for maior que o percentual do PR_MINIMO da tabela FAMILIA_PRODUTO_RENTABILIDADE não exibir nenhum alerta.

Observação

  • Na fórmula que foi enviada pelo Reginaldo da AGROSEMA teriam mais dois passos, mas foi identificado que a nível de sistema os dois cálculos são redundantes, uma vez que não iremos exibir o total do lucro do pedido esses cálculos NÃO são necessários
Terceiro Cálculo
Calcular o Total do Lucro:

  Total do Lucro = (Valor total do pedido * Margem de Lucro)

      516,75 * 0,2259 = R$116,73
Quarto Cálculo
 Margem Geral do pedido

  Margem = (Soma do Lucro de cada item do pedido / Valor total do pedido) * 100

    (116,73 / 516,75) * 100 = 22,59%

Regras de Negócio

[RN1]– Regra de Alerta do pedido

Para exibir alerta de que o pedido será bloqueado no ERP, o resultado da MARGEM GERAL deve ser maior ou igual a margem mínima definida por vendedor. No caso supracitado a margem do vendedor é de 15%. Como a margem do pedido foi de 22,59%, o pedido vai passar sem bloqueios.

[RN2] – Se a MARGEM GERAL for menor que a margem definida por vendedor a mensagem que será exibida será: “Pedido bloqueado. Motivo: Margem do pedido abaixo do permitido.”

[RN3] – Criar o campo CD_VENDEDOR na tabela FAMILIA_PRODUTO_RENTABILIDADE para especificar a margem de cada vendedor.

[RN4] – Criar o campo PR_JUROS na tabela PRODUTO para informar o juros de cada produto

[RN5] – Criar uma configuração ID_ALERTA_MARGEM para ativar o alerta para do calculo de Margem

Integração

No momento da integração os campos e tabelas abaixo devem ser preenchidos, conforme descrito:

[RN6] – O campo PR_IDEAL na tabela FAMILIA_PRODUTO_RENTABILIDADE deve ser preenchida com a informação do ERP que da Tabela SA3 da coluna A3_ZZMBMIN Esse campo é a margem de cada vendedor.

[RN7] – O campo VR_CUSTO na tabela PRODUTO_CUSTO deve ser preenchida com a informação do ERP que da Tabela DA1 da coluna DA1_ZZCUST.

[RN8] – O campo PR_JUROS na tabela PRODUTO deve ser preenchida com a informação do ERP que da Tabela SA3 da coluna A3_ZZTXMES.

[RN9] - Integrar a tabela FAMILIA_PRODUTO_RENTABILIDADE

Cenários

Cenário Feliz

Dados

  • Vendedor: João
  • Produto: Semente A
  • Custo (R$): 400
  • Vencimento: 30 dias (1,33%)
  • Margem Vendedor Joao: 15%
  • Tx Juros: 0,06% (a.d)
  • Total Pedido (R$): 516,75

Operação

  • Vendedor João cria o pedido;
  • Selecionar o Item: Semente A
  • O vendedor salva o Pedido

Assertivas

  • Pedido enviado para o ERP com sucesso.

Cenário de Alerta

Dados

  • Vendedor: João
  • Produto: Semente B
  • Custo (R$): 200
  • Vencimento: 60 dias (2,40%)
  • Margem Vendedor João: 15%
  • Tx Juros: 0,06% (a.d)
  • Total Pedido (R$): 230

Operação

  • Vendedor João cria o pedido;
  • Selecionar o Item: Semente B;
  • O vendedor salva o Pedido

Assertivas

  • A mensagem que será exibida “Pedido bloqueado. Motivo: Margem do pedido abaixo do permitido.”
  • Pedido enviado para o ERP com sucesso.

Aprovação

Considero aprovada a documentação da funcionalidade especificada acima, e autorizo a implementação da mesma no Sistema GeoSales, em nome da Organização a qual estou vinculado.

Setor Aprovado Por Data Assinatura
Tecnologia da Informação Reginaldo Possari
Comercial André Franco