Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.inova10.simulador.calculos.rubricas.inova10
- import com.inova10.simulador.Remuneracao
- import com.inova10.simulador.IndiceRemuneracao
- import com.inova10.simulador.Rubrica
- import com.inova10.simulador.calculos.rubricas.Calculo
- import com.inova10.simulador.calculos.RegraAposentadoria
- import com.inova10.simulador.relatorios.ResolvedorDeMensagensParaRelatorio
- import com.inova10.simulador.Trabalhador
- class Calculo1 extends Calculo{
- private static Calculo1 instance = null;
- public media = 0
- public soma = 0
- public resultadoFinal = 0
- public tempoNecessario = 0
- public quantidadeTotal = 0
- public quantidadeMaiores = 0
- public pssRestituido = 0
- public proporcionalDeduzidoPssRestituido = 0
- public tempoLiquido = 0
- public valorProporcional = 0
- public isProporcional = false
- private Calculo1(){}
- public static Calculo1 getInstance(){
- return instance?instance:new Calculo1();
- }
- public Boolean pertenceAEstaRegra(String regra){
- return true
- }
- def calcula(Rubrica rubrica, List<Remuneracao> remuneracaoAtual, String descricaoRegra, Trabalhador trabalhador, Integer tempoLiquido){
- if(remuneracaoAtual.isEmpty())return "salarioContribuicaoNull"
- if(IndiceRemuneracao.count() <= 0)return "indiceRemuneracao"
- if(!rubrica){
- rubrica = new Rubrica()
- }
- println(rubrica)
- remuneracaoAtual.sort()
- remuneracaoAtual = remuneracaoAtual.findAll{it.validate() && it.valor > 0}
- Integer total = remuneracaoAtual.size()
- //remuneracaoAtual = remuneracaoAtual[total-total*0.8..total-1]
- List<Remuneracao> novaRemuneracao = new ArrayList<Remuneracao>();
- for (Remuneracao r:remuneracaoAtual){
- //valida a remuneração
- if(r.validate() && 0 < r.valor){
- this.quantidadeTotal++
- def indiceCorrecao = IndiceRemuneracao.find("from IndiceRemuneracao as id where id.referencia = ? order by id.aplicacao desc limit 1", [r.data])
- if(indiceCorrecao){
- //aplica o indice a remuneração
- def remuneracaoCorrigida = r.valor * indiceCorrecao.valor
- this.soma += remuneracaoCorrigida
- novaRemuneracao.add(remuneracaoCorrigida)
- }
- }
- }
- if(!novaRemuneracao.isEmpty()){
- List<Double> maiores = this.excluiValoresAbaixoDaMargem(0.2, novaRemuneracao);
- for(Double r: maiores){
- this.valorProporcional += r
- }
- this.quantidadeMaiores = maiores.size();
- this.pssRestituido = rubrica.pssRestituido
- this.proporcionalDeduzidoPssRestituido = this.valorProporcional - this.pssRestituido
- this.media = this.proporcionalDeduzidoPssRestituido/this.quantidadeMaiores;
- if(!ResolvedorDeMensagensParaRelatorio.getMessage(descricaoRegra).contains("INTEGRAL")){
- isProporcional = true
- this.tempoLiquido = tempoLiquido
- this.tempoNecessario = trabalhador.sexo.equals("M") ? 12775:10950
- this.resultadoFinal = this.media/this.tempoNecessario*this.tempoLiquido
- }
- return this.resultadoFinal;
- }
- }
- private List<Double> excluiValoresAbaixoDaMargem (double porcentagem, List<Double> valores){
- Integer total = valores.size();
- Integer margem = (int) total*porcentagem;
- valores.sort();
- List<Double> novosValores = valores[margem..total-1];
- return novosValores;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement