public Demonstrativo GerarDemonstrativo(int horasCategoria, double salarioBase, double horasExtras, double horasDescontadas)
        {
            double          PrecoPorHoras         = Math.Round(salarioBase / horasCategoria, 2);
            HorasCalculadas CustoHorasExtras      = new HorasCalculadas(horasExtras, PrecoPorHoras);
            HorasCalculadas TotalHorasDescontadas = new HorasCalculadas(horasDescontadas, PrecoPorHoras);
            double          TotalDeProventos      = Math.Round(salarioBase + CustoHorasExtras.Calcular() - TotalHorasDescontadas.Calcular(), 2);
            Desconto        INSS           = new Desconto(INSS_aliquota(TotalDeProventos), TotalDeProventos);
            Desconto        IRRF           = new Desconto(IRRF_aliquota(TotalDeProventos - INSS.CalcularDesconto()), TotalDeProventos - INSS.CalcularDesconto());
            double          TotalDescontos = INSS.CalcularDesconto() + IRRF.CalcularDesconto();
            double          SalarioLiquido = Math.Round(TotalDeProventos - TotalDescontos, 2);
            Desconto        FGTS           = new Desconto((11 / 100), TotalDeProventos);

            Demonstrativo modelo = new Demonstrativo(salarioBase, horasCategoria, CustoHorasExtras, TotalHorasDescontadas, TotalDeProventos, INSS, IRRF, TotalDescontos, SalarioLiquido, FGTS);

            modelo.demonstrativoNoConsole();

            return(modelo);
        }
        public Demonstrativo GerarDemonstrativo(int horasCategoria, double salarioBase, double horasExtras, double horasDescontadas)
        {
            double SalarioBase      = salarioBase;
            double HorasCat         = horasCategoria;
            double HorasExtras      = horasExtras;
            double HorasDescontadas = horasDescontadas;

            var TotalHorasExtras      = new HorasCalculadas(HorasExtras, SalarioBase / HorasCat);
            var TotalHorasDescontadas = new HorasCalculadas(HorasDescontadas, SalarioBase / HorasCat);


            double SalarioTotal = (SalarioBase + TotalHorasExtras.CalcularHoras() - TotalHorasDescontadas.CalcularHoras());

            var aliquota = 0.0;

            if (SalarioTotal < 1000)
            {
                aliquota = 8.0;
            }

            else if (SalarioTotal < 1500)
            {
                aliquota = 9.0;
            }

            else
            {
                aliquota = 10.0;
            }

            var    INSS      = new Desconto(aliquota, SalarioTotal);
            double valorIRRF = SalarioTotal - INSS.CalcularDesconto();

            if (valorIRRF < 1710.18)
            {
                aliquota = 0;
            }

            else if (valorIRRF < 2563.91)
            {
                aliquota = 7.5;
            }

            else if (valorIRRF < 3418.59)
            {
                aliquota = 15.0;
            }

            else if (valorIRRF < 4271.59)
            {
                aliquota = 22.5;
            }

            else
            {
                aliquota = 27.5;
            }

            Desconto IRRF = new Desconto(aliquota, valorIRRF);

            double totalDescontos = INSS.CalcularDesconto() + IRRF.CalcularDesconto();
            double totalLiquido   = SalarioTotal - totalDescontos;

            Desconto FGTS = new Desconto(11, SalarioTotal);

            return(new Demonstrativo(SalarioBase, HorasCat, TotalHorasExtras, TotalHorasDescontadas,
                                     SalarioTotal, INSS, IRRF, totalDescontos, totalLiquido, FGTS));
        }