Mudanças entre as edições de "Cálculo de Margem"
Linha 23: | Linha 23: | ||
== Implementação == | == Implementação == | ||
− | Iremos dividir em dois momentos | + | 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 === | === Pré-Requisitos === | ||
− | # O Sistema deve | + | # O Sistema deve possuir o cadastro de parâmetro '''ID_RENTABILIDADE''' com o valor '''S''' |
# O Sistema deve possuir o cadastro de parâmetro '''ID_CALCULA_CUSTO''' configurado com '''S''' | # O Sistema deve possuir o cadastro de parâmetro '''ID_CALCULA_CUSTO''' configurado com '''S''' | ||
# A Margem de cada vendedor deve estar cadastrada no ERP no campo '''A3_ZZMBMIN''' e integrada com o GeoSales na tabela VENDEDOR | # A Margem de cada vendedor deve estar cadastrada no ERP no campo '''A3_ZZMBMIN''' e integrada com o GeoSales na tabela VENDEDOR | ||
Linha 59: | Linha 59: | ||
|} | |} | ||
+ | * 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 | * 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 o cálculo do custo dos produtos da AGROSEMA será criado o listener TAXA_VENCIMENTO | ||
Linha 80: | Linha 81: | ||
400 + (400*(0*0,06%)) = R'''$400,00''' | 400 + (400*(0*0,06%)) = R'''$400,00''' | ||
− | * O resultado desse calculo será inserido no campo | + | * 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 ==== | ==== Calculo da Margem ==== | ||
− | * Após obter o custo de cada item a Margem de Lucro do Pedido | + | * 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 |
+ | |||
+ | ===== 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:''' | '''Calcular a Margem do Lucro:''' | ||
− | Margem de Lucro = 1 - (Soma dos Custos do Produto (Campo | + | 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 | 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 | + | * Após obter esse percentual o mesmo será comparado com o campo PR_MINIMO da tabela FAMILIA_PRODUTO_RENTABILIDADE. |
− | ** Se a Margem for menor que o percentual do | + | ** 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 | + | ** Se a margem for maior que o percentual do PR_MINIMO da tabela FAMILIA_PRODUTO_RENTABILIDADE não exibir nenhum alerta. |
---- | ---- | ||
==== Observação ==== | ==== 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 | + | * 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 ===== | ===== Terceiro Cálculo ===== | ||
Linha 123: | Linha 127: | ||
'''[RN2]''' – A mensagem que será exibida será: '''“Pedido bloqueado. Motivo: Margem do pedido abaixo do permitido.”''' | '''[RN2]''' – A mensagem que será exibida será: '''“Pedido bloqueado. Motivo: Margem do pedido abaixo do permitido.”''' | ||
− | '''[RN3]''' – Criar o campo | + | '''[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 | '''[RN4]''' – Criar o campo PR_JUROS na tabela PRODUTO para informar o juros de cada produto | ||
Linha 133: | Linha 137: | ||
No momento da integração os campos e tabelas abaixo devem ser preenchidos, conforme descrito: | No momento da integração os campos e tabelas abaixo devem ser preenchidos, conforme descrito: | ||
− | '''[RN6]''' – O campo | + | '''[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'''. | '''[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'''. |
Edição das 14h12min de 2 de fevereiro de 2017
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
- O Sistema deve possuir o cadastro de parâmetro ID_RENTABILIDADE com o valor S
- O Sistema deve possuir o cadastro de parâmetro ID_CALCULA_CUSTO configurado com S
- A Margem de cada vendedor deve estar cadastrada no ERP no campo A3_ZZMBMIN e integrada com o GeoSales na tabela VENDEDOR
- O Custo do Produto deve estar cadastrado no ERP no campo DA1_ZZCUST e integrado com o GeoSales na tabela PRODUTO_CUSTO
- O Juros do dia de cada Produto deve estar cadastrado no ERP no campo A3_ZZTXMES e integrado no GeoSales na tabela PRODUTO
- 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
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 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] – 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 o 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 |