decimal CalcularSRC(int sqPlano) { var salarioContrib = new SalarioContribuicaoProxy().BuscarUltimoPorContratoTrabalhoPlano(SqContratoTrabalho, sqPlano); var SRC = salarioContrib.VL_BASE_FUNDACAO.Value; return(SRC); }
decimal CalcularINSSHipotetico(int sqPlano) { var indiceProxy = new IndiceProxy(); var dtFim = DateTime.Now.AddMonths(-1).DefinirDia(1); var dtIni = dtFim.AddMonths(-36); var indiceINPC = indiceProxy.BuscarPorCdIndicePeriodo("INPC", dtIni, dtFim); var fatores = new List <KeyValuePair <DateTime, decimal> >(); var fatorAnterior = 1M; foreach (var indice in indiceINPC) { var fator = (fatorAnterior * (1 + indice.VL_INDICE.Value / 100)).Arredonda(6); fatores.Add(new KeyValuePair <DateTime, decimal>(indice.DT_INIC_VALIDADE, fator)); fatorAnterior = fator; } var indiceTETOPREV = indiceProxy.BuscarPorCdIndice("TETOPREV"); var salarios = new SalarioContribuicaoProxy().BuscarPorContratoTrabalhoPlanoPeriodo(SqContratoTrabalho, sqPlano, dtIni, dtFim); var salariosCorrigidos = new List <KeyValuePair <DateTime, decimal> >(); foreach (var salario in salarios) { var dtReferencia = salario.DT_REFERENCIA; var teto = indiceTETOPREV.FirstOrDefault(x => x.DT_INIC_VALIDADE <= dtReferencia); if (teto == null) { throw new Exception($"Índice TETOPREV não encontrado para a referência {dtReferencia.ToString("dd/MM/yyyy")}"); } if (!salario.VL_BASE_PREVIDENCIA.HasValue) { throw new Exception($"Salário de contribuição não encontrado na data de {salario.DT_REFERENCIA}"); } var valor = Math.Min(salario.VL_BASE_PREVIDENCIA.Value, teto.VL_INDICE.Value); var fator = fatores.First(x => x.Key <= dtReferencia); valor = valor * fator.Value; salariosCorrigidos.Add(new KeyValuePair <DateTime, decimal>(dtReferencia, valor)); } var inssHipotetico = salariosCorrigidos.Sum(x => x.Value) / 36; inssHipotetico = Math.Min(inssHipotetico, indiceTETOPREV.First().VL_INDICE.Value); return(inssHipotetico); }
public IActionResult Get(int sqPlanoPrevidencial) { try { //TODO: Jogar pra proxy var contribuicoes = new ContribuicaoProxy().BuscarPorPlanoContratoTrabalho(SqContratoTrabalho, sqPlanoPrevidencial).ToList(); if (contribuicoes.Count == 0) { throw new Exception("Não foram encontradas nenhuma contribuição para este plano."); } // Data de referência do salário de participação var dataReferencia = contribuicoes.First().DT_REFERENCIA; // Busca o salário de participação var salarioContribuicao = new SalarioContribuicaoProxy().BuscarUltimoPorContratoTrabalhoPlano(SqContratoTrabalho, sqPlanoPrevidencial); var salarioParticipacao = salarioContribuicao.VL_BASE_FUNDACAO; // Busca o percentual de contribuição var percentualContribuicao = new HistManutContribuicaoProxy().BuscarUltimoPorContratoTrabalho(SqContratoTrabalho); var percentual = percentualContribuicao.VL_COEF_TAXA; return(Json(new { dataReferencia, salarioParticipacao, percentual })); } catch (Exception ex) { return(BadRequest(ex.Message)); } }