Histórico da Página
Limitar o desconto dos empréstimos a 30% do líquido de uma rescisão é uma tarefa que pode ser feita de várias formas.
Vamos imaginar uma situação em que determinado funcionário possua os seguintes empréstimos a serem descontados na rescisão :
1) Empréstimo Habitacional 1.000,00
2) Empréstimo Educacional 1.200,00
3) Empréstimo Particular 1.500,00
Vamos imaginar ainda que 30% sobre o líquido da rescisão do funcionário seja igual a 1.100,00.
Como proceder neste caso ?
1) Descontar o valor integral do empréstimo 1 e descontar 100,00 do empréstimo 2 ?
2) Priorizar o desconto de algum tipo de empréstimo, por exemplo o Empréstimo Particular ?
3) Descontar proporcionalmente ao saldo devedor de cada empréstimo ?
Empréstimo 1 297,30
Empréstimo 2 356,76
Empréstimo 3 445,94
Na verdade esta pergunta não tem uma resposta única, cada empresa pode ter uma forma de interpretar como deve ser realizada a limitação de descontos de empréstimo a 30% do líquido da rescisão.
Desta forma, esta implementação foi realizada no sistema utilizando o recurso de fórmulas de cálculo para definir como deve ser feito o desconto dos empréstimos do funcionário. Através do recurso de fórmulas cada empresa poderá efetuar o desconto conforme sua necessidade.
Solução Adotada
Para facilitar o desenvolvimento da fórmula foi criada uma função chamada InfEmp (Informações do empréstimo), que será utilizada para retornar as informações dos empréstimos pendentes do funcionário. A documentação do funcionamento da Função de Formula pode ser consultada aqui
Iremos exemplificar um cenário com a utilização da Fórmula, considerando que o desconto será limitado a 30% do líquido de rescisão:
Funcionário possuí 3 empréstimos, com saldo maior que zero, no valor total de R$ 3.700,00. E seu salário é de R$ 377,20:
Criada a fórmula que será calculada 30% sobre o salário líquido do funcionário. A lógica desenvolvida é de rateiro e proporção em relação ao saldo devedor, pois o saldo devedor pode ser maior que o salário.
DECL SaldoTot;
DECL TotEmp;
DECL ItemEmp;
DECL Retorno;
DECL SalLiq;
DECL MaxEmp;
DECL saldodist;
DECL aDistribuir;
SetVar(ItemEmp,0);
setvar(MaxEmp,0);
setvar(SalLiq, 0);
SetVar(aDistribuir,0);
SetVar(Retorno,'');
SetVar(saldodist,0);
SetVar(SaldoTot, InfEmp(-2, 'codigo'));
SetVar(TotEmp, InfEmp(-1, 'codigo'));
setvar(SalLiq, L);
setvar(MaxEmp, SalLiq*0.3);
Se TotEmp > 0
Entao
Se MaxEmp >= SaldoTot
Entao
repita
SetVar(ItemEmp,ItemEmp + 1);
SetVar(aDistribuir, InfEmp( ItemEmp, 'SALDODEVEDOR' ) );
SetVar(aDistribuir,val( str(aDistribuir, '999999999,99')));
SetVar(Retorno, Concat(Retorno, InfEmp( ItemEmp, 'CODIGO' )));
SetVar(Retorno,Concat(Retorno,':'));
SetVar(Retorno, Concat(Retorno, str(aDistribuir,'999999999,99')));
SetVar(Retorno,Concat(Retorno,';'))
Ate ItemEmp = TotEmp
Senao
repita
SetVar(ItemEmp,ItemEmp + 1);
Se ItemEmp = TotEmp
Entao
SetVar(aDistribuir,MaxEmp-saldodist)
Senao
SetVar(aDistribuir, (MaxEmp / SaldoTot ) * InfEmp( ItemEmp, 'SALDODEVEDOR' ) );
SetVar(aDistribuir,val( str(aDistribuir, '999999999,99')))
FimSe;
SetVar(saldodist, saldodist + aDistribuir);
SetVar(Retorno, Concat(Retorno, InfEmp( ItemEmp, 'CODIGO' )));
SetVar(Retorno,Concat(Retorno,':'));
SetVar(Retorno, Concat(Retorno, str(aDistribuir,'999999999,99')));
SetVar(Retorno,Concat(Retorno,';'))
ate ItemEmp = TotEmp
FimSe
FimSe;
Retorno
O funcionário será demitido em 31/12/2019 e será lançado o saldo devedor de empréstimo, utilizando a nova implementação através da fórmula