public Demonstrativo GerarDemonstrativo(int horasCategoria, double salarioBase, double horasExtras, double horasDescontadas) { double valorHora = salarioBase / horasCategoria; var salario_Base = salarioBase; var hcExtras = new HorasCalculadas(horasExtras, TruncarValor(horasExtras * valorHora)); var hcDescontadas = new HorasCalculadas(horasDescontadas, TruncarValor(horasDescontadas * valorHora)); double totalProventos = salario_Base + hcExtras.ValorTotalHoras - hcDescontadas.ValorTotalHoras; Desconto inss = CalcularInss(totalProventos); Desconto irrf = CalcularIrrf(totalProventos - inss.Valor); double totalDescontos = inss.Valor + irrf.Valor; var totalLiquido = TruncarValor(totalProventos - totalDescontos); var fgts = new Desconto(0.11, TruncarValor(totalProventos * 0.11)); return(new Demonstrativo( salario_Base, horasCategoria, hcExtras, hcDescontadas, totalProventos, inss, irrf, totalDescontos, totalLiquido, fgts)); }
private Desconto CalcularIrrf(double totalProventos) { Desconto desconto = null; foreach (var faixa in _irrf) { if (totalProventos < faixa.Teto) { desconto = new Desconto(faixa.Aliquota, TruncarValor(totalProventos * faixa.Aliquota)); } } return(desconto); }