Como utilizar a função MaRgrDesc

No artigo de hoje, vamos mostrar como utilizar a função MaRgrDesc para calcular o valor do desconto conforme as regras cadastradas no sistema.

Caso você utilize o cadastro de regras (tabelas ACO e ACP), ele é bem versátil para calcular descontos por clientes, condição de pagamento, produtos, grupo de produtos, entre outros.

Vamos levar como base o print abaixo de cadastro:

Exemplo do cadastro da regra de descontos

 

Note que para o cliente C00001 e para a condição de pagamento C01, nós temos regras de 5%, 10% e 15% para o grupo de produtos G001. E como funciona, até a quantidade 100 vai entrar na primeira regra, acima de 100 até 200 vai entrar na segunda regra e acima de 200 até 300 vai entrar na terceira regra.

Então se nós tivermos, um produto nesse grupo G001, que estamos vendendo 240 unidades, num valor total de R$ 100,00, ele deve cair na terceira faixa, e assim calcular 15%.

Assim, montamos o exemplo abaixo usando a função MaRgrDesc (se atente ao código do produto, que tem que ser enviado com a quantidade exata de caracteres):

    cCodPro     := AvKey("F0001", "B1_COD")
    cCodCli     := "C00001"
    cLojCli     := "01"
    nQtdeFaixa  := 240
    cCondPg     := "C01"
    nTipoDesc   := 1
    nPreco      := 100

    nDesconto := MaRgrDesc(cCodPro, cCodCli, cLojCli, /*cTabPreco*/, nQtdeFaixa, cCondPg, /*cFormPg*/, nTipoDesc, /*aProds*/, /*aExc*/, /*cCodRegDe*/, nPreco)

    ShowLog(;
		"O desconto do produto '" + cCodPro + "' " + CRLF +;
		"Com a quantidade de '" + cValToChar(nQtdeFaixa) + "' " + CRLF + ;
		"No Valor de 'R$ " + cValToChar(nPreco) + "' " + CRLF + ;
		"É de 'R$ " + cValToChar(nDesconto) + "'";
	)

Executando então a função acima, abaixo o resultado da ShowLog:

Exemplo do resultado

 

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação