Produto: | TOTVS CRM Automação da Força de Vendas |
---|---|
Linha de Produto: | Linha TOTVS CRM SFA |
Módulo: | Venda |
Função: | Pedido |
Ticket: | |
Requisito/Story/Issue: |
Atualmente,
No pedido de venda, ao buscar registros de descontos/acréscimos que estarão vigentes para interagir com os preços de tabela e venda dos itens do pedido,
O sistema somente considera um registro vigente por item, optando pelo menor desconto, quando encontra mais de um registro passível de aplicação para o mesmo item.
Dessa forma, não é possível, ao buscar o preço de tabela de um item, aplicar múltiplos descontos, acumulando-os por multiplicação ou soma, por exemplo.
Em casos em que se deseja aplicar variações a um preço de base variando por alguma entidade selecionada no pedido, o sistema fica limitado em aplicar somente uma variação.
Agora,
Visto que pela documentação de "Classes de desconto/acréscimo" agora será possível cadastrar valores numéricos que representarão a ordem de variação no cálculo de desconto/acréscimo final que será aplicado ao preço do produto,
No cálculo de preço de tabela, exclusivamente,
O sistema irá realizar a aplicação de múltiplos descontos/acréscimos, respeitando a ordem estabelecida nas ordens de variação das classes de desconto/acréscimo, garantindo que os diferentes critérios de variação possam associar-se se maneira ordenada.
A associação de descontos/acréscimos será feita através de multiplicação, quando os descontos/acréscimos forem informados como percentuais, e subtração, quando os descontos/acréscimos forem informados como valores.
EXEMPLOS
Preço de tabela
Produto | Preço |
A | 10 |
Descontos/acréscimos com ordem de variação = 1
Tipo de cliente | Percentual desconto |
Mercado | 3 |
Descontos/acréscimos com ordem de variação = 2
Cliente | Valor |
Alfa | -0,5 |
Descontos/acréscimos com ordem de variação = 3
Produto | UF Origem | UF destino | Percentual acréscimo |
A | RS | PR | -2 |
Preço de tabela no pedido para o produto 1, selecionando cliente "Alfa", do tipo "Mercado", localizado no Paraná, selecionando filial "1", localizada no Rio Grande do Sul:
Preço de tabela no pedido = [10 * (1 - 3/100) - (-0,5)] * [1 - (-2)/100] = 10,404
Contexto / Gatilho:
Lógica:
A aplicação atualmente consulta apenas um registro de desconto por item, como também consulta apenas um registro de acréscimo por item.
Por exemplo, Cadastro de desconto: { "iddesconto": 1, "idclassedesconto": 1, "percentual": 10, "idproduto": 1 }, { "iddesconto": 2, "idclassedesconto": 1, "percentual": 3 "idproduto": 1 }, { "iddesconto": 3, "idclassedesconto": 2, "percentual": 5 "idproduto": 1 }, { "iddesconto": 4, "idclassedesconto": 3, "percentual": -10 "idproduto": 1 }, { "iddesconto": 5, "idclassedesconto": 4, "valor": -5 "idproduto": 1 }, { "iddesconto": 6, "idclassedesconto": 4, "percentual": -3 "idproduto": 1 } Cadastro de classes de desconto: { "idclassedesconto": 1, "descricao": "Desconto por canal de cliente" "ordem": 1 }, { "idclassedesconto": 2, "descricao": "Desconto por acordo contratual" "ordem": 2 }, { "idclassedesconto": 3, "descricao": "Acréscimo por frete" "ordem": 3 }, { "idclassedesconto": 4, "descricao": "Acréscimo por taxa de inadimplência" "ordem": 4 } Cadastro de Busca de níveis 1º nível: - PRODUTO_IDPRODUTO ANTES da alteração deste épico, Cache de descontos de preço de tabela: "item produto 1": { "iddesconto": 2, "idclassedesconto": 1, "percentual": 3, "idproduto": 1 } Cache de acréscimo de preço de tabela: "item produto 1": { "iddesconto": 5, "idclassedesconto": 4, "valor": -5, -- valor vale mais que percentual para critério de seleção "idproduto": 1 } APÓS a alteração deste épico: Cache de descontos de preço de tabela: "item produto 1": [ { "iddesconto": 2, "idclassedesconto": 1, "percentual": 3, "idproduto": 1, "ordem": 1 }, { "iddesconto": 3, "idclassedesconto": 2, "percentual": 5, "idproduto": 1, "ordem": 2 } ] Cache de acréscimo de preço de tabela: "item produto 1": [ { "iddesconto": 4, "idclassedesconto": 3, "percentual": -10 "idproduto": 1, "ordem": 3 }, { "iddesconto": 5, "idclassedesconto": 4, "valor": -5, -- valor vale mais que percentual para critério de seleção "idproduto": 1, "ordem": 4 } ] Diante desse cenário, teremos múltiplos registros para utilizar na influência de preços de tabela, no cálculo do preço original
Contexto / Gatilho:
Lógica:
O sistema deverá varrer o cache de descontos e acréscimos sobre preço de tabela, respeitando a ordem estabelecida no cache, aplicando o valor (ou percentual) do desconto ou acréscimo sobre o preço de tabela, da seguinte forma:
se (desconto.valor is not null) { então preco_influenciado = preco_base - desconto.valor } caso contrário se (desconto.percentual is not null) { então preco_influenciado = preco_base * (1-desconto.percentual/100) } preco_base = preco_influenciado