private static Desconto CalculaIRPF(double totalProventos, Desconto inss)
        {
            double aliquota = 0;
            double valor    = (totalProventos - inss.Valor);

            if (valor <= 1710.78)
            {
                return(new Desconto(0, 0));
            }
            else if (valor <= 2563.91)
            {
                aliquota = 7.5;
            }
            else if (valor <= 3418.59)
            {
                aliquota = 15;
            }
            else if (valor <= 4271.59)
            {
                aliquota = 22.5;
            }
            else
            {
                aliquota = 27.5;
            }
            return(new Desconto(aliquota, TruncaValor((valor * aliquota) / 100)));
        }
        public Demonstrativo GerarDemonstrativo(int horasCategoria, double salarioBase, double horasExtras, double horasDescontadas)
        {
            #region Variáveis
            double          valorHora      = salarioBase / horasCategoria;
            HorasCalculadas hExtras        = new HorasCalculadas(horasExtras, TruncaValor(valorHora * horasExtras));
            HorasCalculadas hDescontadas   = new HorasCalculadas(horasDescontadas, TruncaValor(valorHora * horasDescontadas));
            double          totalProventos = TruncaValor(salarioBase + hExtras.ValorTotalHoras - hDescontadas.ValorTotalHoras);
            Desconto        inss           = CalculaINSS(totalProventos);
            Desconto        irpf           = CalculaIRPF(totalProventos, inss);
            double          totalDescontos = TruncaValor(inss.Valor + irpf.Valor);
            double          aliquotaFgts   = 11;
            Desconto        fgts           = new Desconto(aliquotaFgts, TruncaValor((totalProventos * aliquotaFgts) / 100));
            #endregion

            Demonstrativo dmst = new Demonstrativo(
                TruncaValor(salarioBase),                     // salário base
                TruncaValor(horasCategoria),                  // horas categoria
                hExtras,                                      // valor horas extras
                hDescontadas,                                 // valor horas descontadas
                totalProventos,                               // total proventos
                inss,                                         // inss
                irpf,                                         // irpf
                totalDescontos,                               // total de descontos
                TruncaValor(totalProventos - totalDescontos), // salário liquido
                fgts                                          // fgts
                );
            return(dmst);
        }
        public Demonstrativo GerarDemonstrativo(int horasCategoria, double salarioBase, double horasExtras, double horasDescontadas)
        {
            var ValorHora        = salarioBase / horasCategoria;
            var HorasExtras      = new HorasCalculadas(horasExtras, ValorHora * horasExtras);
            var HorasDescontadas = new HorasCalculadas(horasDescontadas, ValorHora * horasDescontadas);
            var TotalProventos   = (salarioBase + HorasExtras.ValorTotalHoras - HorasDescontadas.ValorTotalHoras);
            var Inss             = new CalculaINSS().calcular(TotalProventos);
            var Irpf             = new CalculaIRPF().calcular(TotalProventos - Inss.Valor);
            var TotalDescontos   = Inss.Valor + Irpf.Valor;
            var AliquotaFgts     = 0.11;
            var Fgts             = new Desconto(AliquotaFgts, Utils.DoFormat((TotalProventos * AliquotaFgts)));

            return(new Demonstrativo(
                       salarioBase,
                       horasCategoria,
                       HorasExtras,
                       HorasDescontadas,
                       TotalProventos,
                       Inss,
                       Irpf,
                       Utils.DoFormat(TotalDescontos),
                       Utils.DoFormat((TotalProventos - TotalDescontos)),
                       Fgts
                       ));
        }
 public Demonstrativo(
     double salarioBase,
     double hrsConvencao,
     HorasCalculadas horasExtras,
     HorasCalculadas horasDescontadas,
     double totalProventos,
     Desconto inss,
     Desconto irrf,
     double totalDescontos,
     double totalLiquido,
     Desconto fgts)
 {
     SalarioBase      = salarioBase;
     HrsConvencao     = hrsConvencao;
     HorasExtras      = horasExtras;
     HorasDescontadas = horasDescontadas;
     TotalProventos   = totalProventos;
     Inss             = inss;
     Irrf             = irrf;
     TotalDescontos   = totalDescontos;
     TotalLiquido     = totalLiquido;
     Fgts             = fgts;
 }