예제 #1
0
        public void CalcularImpostoDeRendaQuinzePorcentoComSucesso()
        {
            Cpf            cpf            = Cpf.Create("09854146006");
            Contribuinte   contribuinte   = Contribuinte.Novo("Diego Parente", cpf, 4925M, 1);
            ImpostoDeRenda impostaDeRenda = ImpostoDeRenda.Novo(contribuinte, _salarioMinimo);

            Assert.AreEqual(impostaDeRenda.Aliquota.Percentual, 0.15M);
        }
예제 #2
0
        public void CalcularImpostoDeRendaIsentoComSucesso()
        {
            Cpf            cpf            = Cpf.Create("09854146006");
            Contribuinte   contribuinte   = Contribuinte.Novo("Diego Parente", cpf, 1500M, 2);
            ImpostoDeRenda impostaDeRenda = ImpostoDeRenda.Novo(contribuinte, 985m);

            Assert.AreEqual(impostaDeRenda.Aliquota.Percentual, 0M);
        }
예제 #3
0
        public void CalcularImpostoDeRendaVinteESeteEMeioPorcentoValido()
        {
            Cpf            cpf            = Cpf.Create("09854146006");
            Contribuinte   contribuinte   = Contribuinte.Novo("Diego Parente", cpf, 10000M, 1);
            ImpostoDeRenda impostaDeRenda = ImpostoDeRenda.Novo(contribuinte, _salarioMinimo);

            Assert.IsTrue(impostaDeRenda.IsValid());
        }
예제 #4
0
        public void CalcularImpostoDeRendaIsentoValido()
        {
            Cpf            cpf            = Cpf.Create("09854146006");
            Contribuinte   contribuinte   = Contribuinte.Novo("Diego Parente", cpf, 1500M, 2);
            ImpostoDeRenda impostaDeRenda = ImpostoDeRenda.Novo(contribuinte, 985m);

            Assert.IsTrue(impostaDeRenda.IsValid());
        }
예제 #5
0
        public void CalcularImpostoDeRendaComContribuinteInvalidoErro()
        {
            Cpf            cpf            = Cpf.Create("09857146006");
            Contribuinte   contribuinte   = Contribuinte.Novo("Diego Parente", cpf, 0M, 2);
            ImpostoDeRenda impostaDeRenda = ImpostoDeRenda.Novo(contribuinte, 985m);

            Assert.IsFalse(impostaDeRenda.IsValid());
        }
        public CalcularIRResult Handle(CalcularIRInput input)
        {
            CalcularIRResult result = new CalcularIRResult();

            try
            {
                // Recupera os contribuintes da base de dados
                var contribuintes = _contribuinteRepository.ObterTodos();

                // Varre todos os contribuintes da base de dados.
                foreach (var contribuinte in contribuintes)
                {
                    // Cria um novo imposto
                    var imposto = ImpostoDeRenda.Novo(contribuinte, input.SalarioMinimo);

                    // Verifica se o imposto está válido
                    if (imposto.IsValid())
                    {
                        result.ContribuintesImpostoDeRenda.Add(imposto);
                    }
                    else
                    {
                        base.AddNotifications(imposto.Notifications);
                    }
                }

                // Ordena o resultado.
                result.ContribuintesImpostoDeRenda =
                    result.ContribuintesImpostoDeRenda.OrderByDescending(x => x.Imposto)
                    .ThenByDescending(x => x.Contribuinte.Nome).ToList();
            }
            catch (Exception ex)
            {
                base.AddNotification("Error", $"Houve uma falha inesperada! Mensagem: {ex.Message}");
            }

            return(result);
        }