Beispiel #1
0
        private ImpostoDeRenda(Contribuinte contribuinte, decimal salarioMinimo)
        {
            // Armazena os valores
            Contribuinte  = contribuinte;
            SalarioMinimo = salarioMinimo;

            // Instancia a validação
            new ValidationContract <ImpostoDeRenda>(this)
            .IsGreaterThan(x => x.SalarioMinimo, 1)
            .IsNotNull(Contribuinte, "O contribuinte não pode ser vazio");

            // Verifica se o contribuinte não está vazio
            if (base.IsValid())
            {
                // Cria a aliquota para o contribuinte
                Aliquota = Aliquota.Novo(CalcularRendaLiquida(), SalarioMinimo);

                // Adiciona as notificações da aliquota e do contribuinte.
                if (Contribuinte.Notifications != null)
                {
                    base.AddNotifications(Contribuinte.Notifications);
                }

                base.AddNotifications(Aliquota.Notifications);
            }
        }
Beispiel #2
0
        public static void Initialize(CalculatorContext context)
        {
            context.Database.EnsureCreated();

            // Look for any students.
            if (context.Aliquotas.Any())
            {
                return;   // DB has been seeded
            }

            var aliquotas = new Aliquota[]
            {
                new Aliquota {
                    SalarioMax = 2, Porcentagem = 0
                },
                new Aliquota {
                    SalarioMin = 2, SalarioMax = 4, Porcentagem = 7.5m
                },
                new Aliquota {
                    SalarioMin = 4, SalarioMax = 5, Porcentagem = 15
                },
                new Aliquota {
                    SalarioMin = 5, SalarioMax = 7, Porcentagem = 22.5m
                },
                new Aliquota {
                    SalarioMin = 7, Porcentagem = 27.5m
                },
            };

            foreach (Aliquota a in aliquotas)
            {
                context.Aliquotas.Add(a);
            }
            context.SaveChanges();
        }
Beispiel #3
0
        public Aliquota FindByCodigo(Aliquota aliquota)
        {
            var findAliq = db.Aliquota.FirstOrDefault(a => a.Codigo.Equals(aliquota.Codigo));

            if (findAliq == null)
            {
                throw new Exception(
                          string.Format("A alíquota {0} não está cadastrada! Informe ao administrador do sistema"
                                        , aliquota));
            }

            return(findAliq);
        }
        public void Fundo_Calcula_Imposto_Renda()
        {
            //Given
            var investimento = _fixture.Create <Fundo>();
            var aliquota     = new Aliquota(0.15m);
            var valorImpostoRendaEsperado = investimento.Rentabilidade * aliquota.Percentual;

            //When
            investimento.CalculaImpostoRenda();

            //Then
            Assert.Equal(valorImpostoRendaEsperado, investimento.ValorImpostoRenda);
        }
        public AliquotaServiceTest()
        {
            _aliquotaMockService = new Mock<IAliquotaService>();

            _aliquotaNotEmpty = new Aliquota
            {
                Id = new Guid(),
                Porcentagem = 10,
                SalarioMax = 10,
                SalarioMin = 0
            };

            _aliquotaEmpty = null;
        }
        protected virtual Aliquota CalculaAliquotaParaResgate()
        {
            // Aliquota padrão
            Aliquota aliquotaParaResgate = 0.30M;

            if (MaisDaMetadeDoTempoEmCustodia())
            {
                aliquotaParaResgate = 0.15m;
            }
            else if (VencimentoOcorreEmAteTresMeses())
            {
                aliquotaParaResgate = 0.06m;
            }

            return(aliquotaParaResgate);
        }
        public void Renda_Fixa_Calcula_Valor_Resgate_Custodia_Acima_Metade_Tempo()
        {
            //Given
            var      valorInvestido       = 100m;
            Aliquota aliquotaEsperada     = 0.15m;
            var      valorResgateEsperado = valorInvestido - (valorInvestido * aliquotaEsperada.Percentual);
            var      vencimento           = DateTime.Today.AddDays(1);
            var      compra = DateTime.Today.AddDays(-2);

            //When
            var investimento = Investimento.Factor.Criar <RendaFixa>(
                nome: _fixture.Create <string>(),
                valorInvestido: valorInvestido,
                valorTotal: _fixture.Create <decimal>(),
                vencimento: vencimento,
                compra: compra);

            //Then
            Assert.Equal(valorResgateEsperado, investimento.ValorResgate);
        }
Beispiel #8
0
        public void Fundo_Calcula_Valor_Resgate_Padrao()
        {
            //Given
            var      valorInvestido       = 100m;
            Aliquota aliquotaEsperada     = 0.3m;
            var      valorResgateEsperado = valorInvestido - (valorInvestido * aliquotaEsperada.Percentual);
            var      vencimento           = DateTime.Today.AddYears(1);
            var      compra = DateTime.Today;

            //When
            var investimento = Investimento.Factor.Criar <Fundo>(
                nome: _fixture.Create <string>(),
                valorInvestido: valorInvestido,
                valorTotal: _fixture.Create <decimal>(),
                vencimento: vencimento,
                compra: compra);

            //Then
            Assert.Equal(valorResgateEsperado, investimento.ValorResgate);
        }
Beispiel #9
0
        public void Renda_Fixa_Calcula_Valor_Resgate_Vencimento_Menor_Tres_Meses()
        {
            //Given
            var      valorInvestido       = 100m;
            Aliquota aliquotaEsperada     = 0.06m;
            var      valorResgateEsperado = valorInvestido - (valorInvestido * aliquotaEsperada.Percentual);
            var      totalDiasTresMeses   = (365.25 / 12) * 3;
            var      vencimento           = DateTime.Today.AddDays(totalDiasTresMeses - 1);
            var      compra = DateTime.Today;

            //When
            var investimento = Investimento.Factor.Criar <RendaFixa>(
                nome: _fixture.Create <string>(),
                valorInvestido: valorInvestido,
                valorTotal: _fixture.Create <decimal>(),
                vencimento: vencimento,
                compra: compra);

            //Then
            Assert.Equal(valorResgateEsperado, investimento.ValorResgate);
        }
Beispiel #10
0
 public ValorNota()
 {
     Aliquota = new Aliquota();
 }
 public ValorProduto()
 {
     Aliquota = new Aliquota();
 }