예제 #1
0
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("Informe o valor do crédito:");
                decimal valor = Convert.ToDecimal(Console.ReadLine());

                Console.WriteLine("Infome o tipo de crédito:");
                TipoCredito tipoCredito = (TipoCredito)Convert.ToDecimal(Console.ReadLine());

                Console.WriteLine("Infome o número de parcelas:");
                int qtdeParcelas = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine("Infome a data do primeiro vencimento:");
                DateTime dataPrimeiroVencimento = Convert.ToDateTime(Console.ReadLine());

                var credito = new Credito(valor, tipoCredito, qtdeParcelas, dataPrimeiroVencimento);

                Console.WriteLine("Crédito aprovado");
                Console.WriteLine($"Valor total: { credito.ValorTotal }");
                Console.WriteLine($"Juros: { credito.ValorTotal - credito.Valor }");
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Crédito reprovado");
                Console.WriteLine($"Motivo: { ex.Message }");
                Console.ReadKey();
            }
        }
예제 #2
0
 public CalculaCredito(double vlrEmprestimo, TipoCredito tpCredito, int qtParcelas, DateTime prVcto)
 {
     VlrEmprestimo = vlrEmprestimo;
     QtParcelas    = qtParcelas;
     TpCredito     = tpCredito;
     PrimVcto      = prVcto;
 }
예제 #3
0
        private static void ProcessarCalculoCredito(TipoCredito tipoCredito)
        {
            switch (tipoCredito)
            {
            case TipoCredito.Direto:
                ProcessarCalculoCreditoDireto();
                break;

            case TipoCredito.Consignado:
                ProcessarCalculoCreditoConsignado();
                break;

            case TipoCredito.PessoaJuridica:
                ProcessarCalculoCreditoPessoaJuridica();
                break;

            case TipoCredito.PessoaFisica:
                ProcessarCalculoCreditoPessoaFisica();
                break;

            case TipoCredito.Imobiliario:
                ProcessarCalculoCreditoImobiliario();
                break;

            default:
                Console.Clear();
                ExibirMensagemExcecaoOpcaoMenu();
                break;
            }
        }
예제 #4
0
        public static Credito CreateInstance(short tipoCredito)
        {
            TipoCredito credito = (TipoCredito)Enum.Parse(typeof(TipoCredito), tipoCredito.ToString());

            switch (credito)
            {
            case TipoCredito.Direto:
                return(new CreditoDireto());

            case TipoCredito.Consignado:
                return(new CreditoConsignado());

            case TipoCredito.Juridica:
                return(new CreditoPessoaJuridica());

            case TipoCredito.Fisica:
                return(new CreditoPessoaFisica());

            case TipoCredito.Imobiliario:
                return(new CreditoImobiliario());

            default:
                return(new Credito());
            }
        }
예제 #5
0
            public static Credito New(decimal valor, TipoCredito tipo, AvaliacaoCredito avaliacao)
            {
                var credito = new Credito(valor);
                credito.Tipo = tipo;
                credito.Avaliacao = avaliacao;

                return credito;
            }
예제 #6
0
 public void NovaTransacaoSaida(decimal?valor, TipoCredito credito, int?ClienteId)
 {
     this.data          = DateTime.Now;
     this.valor         = valor.GetValueOrDefault();
     this.tipoCredito   = credito;
     this.clienteId     = ClienteId;
     this.tipoTransacao = TipoTransacao.SAIDA;
 }
예제 #7
0
 public void InsertarTipoCredito(TipoCredito tipoCredito)
 {
     using (var dbc = new SPC_BD())
     {
         dbc.TipoCredito.Add(tipoCredito);
         dbc.SaveChanges();
     }
 }
예제 #8
0
 public void ActualizarTipoCredito(TipoCredito tipoCredito)
 {
     using (var dbc = new SPC_BD())
     {
         dbc.Entry(tipoCredito).State = EntityState.Modified;
         dbc.SaveChanges();
     }
 }
        public void GeraTransacaoSaida(decimal?valor, TipoCredito credito, int?clienteId)
        {
            Transacao transacao = new Transacao();

            transacao.NovaTransacaoSaida(valor, credito, clienteId);
            transacao.ConfigurarParaSalvar();
            db.Transacao.Add(transacao);
            db.SaveChanges();
        }
        public Credito(decimal _valor, TipoCredito _tipoCredito, int _qtdeParcelas, DateTime _dataPrimeiroVencimento)
        {
            valor                  = _valor;
            tipoCredito            = _tipoCredito;
            qtdeParcelas           = _qtdeParcelas;
            dataPrimeiroVencimento = _dataPrimeiroVencimento;

            Validar();

            CalcularTotal();
        }
예제 #11
0
        static void Main(string[] args)
        {
            Console.Write("Valor Emprestimo ...............: ");
            double vlrEmprestimo = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);

            Console.Write("Quantas Parcelas ...............: ");
            int qtParcelas = int.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);

            Console.WriteLine();

            Console.WriteLine("Tipo Credito ...................:");
            foreach (int i in Enum.GetValues(typeof(TipoCredito)))
            {
                Console.Write($"{Enum.GetName(typeof(TipoCredito), i)}");
                Console.WriteLine($" {i}");
            }

            Console.WriteLine();

            Console.Write("Informe o Tipo Credito .........: ");
            TipoCredito tipoCredito = (TipoCredito)Enum.Parse(typeof(TipoCredito), Console.ReadLine());

            Console.WriteLine();

            Console.Write("Primeiro Vencimento (DD/MM/YYYY): ");
            DateTime primVcto = DateTime.Parse(Console.ReadLine());

            CalculaCredito cCredito = new CalculaCredito();

            try
            {
                double valor = cCredito.Calcular(vlrEmprestimo, tipoCredito, qtParcelas, primVcto);
            }
            catch (DomainException e)
            {
                Console.WriteLine();
                Console.WriteLine("Mensagem .......................: " + e.Message);
            }

            Console.WriteLine(cCredito);
            Console.ReadKey();
        }
        public ActionResult Editar([Bind(Include = "Id,Descricao,Ativo")] TipoCredito tipo)
        {
            try
            {
                tipo.AlteradoPor = Identification.IdUsuario;
                tipo.AlteradoEm  = DateTime.Now;
                TryUpdateModel(tipo);

                if (ModelState.IsValid)
                {
                    _service.Gravar(tipo);
                    return(RedirectToAction("Index"));
                }

                return(View(tipo));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message);
                return(View(tipo));
            }
        }
예제 #13
0
        public double Calcular(double vlrEmprestimo, TipoCredito tpCredito, int qtParcelas, DateTime prVcto)
        {
            Validacoes(qtParcelas, prVcto);

            switch (tpCredito)
            {
            case TipoCredito.CD:
                taxa             = 2;
                anoMes           = "M";
                VlrTotalComJuros = Calcula(taxa, vlrEmprestimo, qtParcelas, tpCredito, anoMes);
                break;

            case TipoCredito.CC:
                anoMes           = "M";
                taxa             = 1;
                VlrTotalComJuros = Calcula(taxa, vlrEmprestimo, qtParcelas, tpCredito, anoMes);
                break;

            case TipoCredito.PJ:
                anoMes           = "M";
                taxa             = 5;
                VlrTotalComJuros = Calcula(taxa, vlrEmprestimo, qtParcelas, tpCredito, anoMes);
                break;

            case TipoCredito.PF:
                anoMes           = "M";
                taxa             = 3;
                VlrTotalComJuros = Calcula(taxa, vlrEmprestimo, qtParcelas, tpCredito, anoMes);
                break;

            default:
                anoMes           = "A";
                taxa             = 9;
                VlrTotalComJuros = Calcula(taxa, vlrEmprestimo, qtParcelas, tpCredito, anoMes);
                break;
            }

            return(VlrTotalComJuros);
        }
예제 #14
0
        private double Calcula(double taxa, double vlrEmprestimo, int qtParcelas, TipoCredito tpCredito, string anoMes)
        {
            StatusAprovacao = "Aprovado.";

            double taxaR     = (taxa / 100);
            double taxaC     = taxaR;
            double dividendo = 1;
            double divisor   = 12;
            double potencia  = (dividendo / divisor);

            if (anoMes.Equals("A"))
            {
                taxaC = Math.Pow(1 + taxaR, potencia) - 1;
            }

            VlrTotalComJuros = vlrEmprestimo * Math.Pow(1 + taxaC, qtParcelas);

            VlrJuros = VlrTotalComJuros - vlrEmprestimo;

            if (VlrTotalComJuros > MaxEmprestimo)
            {
                StatusAprovacao = "Emprestimo reprovado.";
            }

            if (tpCredito == TipoCredito.PJ && VlrTotalComJuros < 15000)
            {
                StatusAprovacao = "Emprestimo reprovado.";
                throw new DomainException("Valor minimo a ser liberado nao alcancado");
            }

            if (VlrTotalComJuros > MaxEmprestimo)
            {
                StatusAprovacao = "Emprestimo reprovado.";
                throw new DomainException("Credito excedeu o limite");
            }

            return(VlrTotalComJuros);
        }
        public List <GerenciaTreeCredito> AgregarTipos(List <GerenciaTreeCredito> list, List <GerenciaCredito> data)
        {
            var tipos = new List <TipoCredito>();

            foreach (var grupo in list)
            {
                var otipos = data.GroupBy(g => g.xxx).Select(s => s.First()).ToList();

                foreach (var tipo in otipos)
                {
                    var oTipoCredito = new TipoCredito();
                    oTipoCredito.Agrupador = grupo.Agrupador;
                    oTipoCredito.Tipo      = tipo.xxx;

                    var comprobantes = data.FindAll(p => p.xxx == tipo.xxx).GroupBy(g => g.Comprobante).Select(s => s.First()).ToList();
                    if (oTipoCredito.Tipo == "FACTURADO")
                    {
                        var total = comprobantes.Sum(s => s.d_NetoXCobrarFactura);
                        if (total != null)
                        {
                            oTipoCredito.Total = Math.Round(total.Value, 2, MidpointRounding.AwayFromZero);
                        }
                    }

                    else
                    {
                        var total = decimal.Parse(data.FindAll(p => p.xxx == tipo.xxx).Sum(s => s.CostoExamen).ToString());
                        oTipoCredito.Total = Math.Round(total, 2, MidpointRounding.AwayFromZero);
                    }

                    tipos.Add(oTipoCredito);
                }

                grupo.Tipos = tipos;
            }

            return(list);
        }
예제 #16
0
        public double pegarTaxa(TipoCredito tipoCredito)
        {
            switch (tipoCredito)
            {
            case TipoCredito.CreditoDireto:
                return(0.02);

            case TipoCredito.CreditoConsignado:
                return(0.01);

            case TipoCredito.CreditoPessoaJuridica:
                return(0.05);

            case TipoCredito.CreditoPessoaFisica:
                return(0.03);

            case TipoCredito.CreditoImobiliario:
                return(0.0075);

            default:
                return(0.0);
            }
        }
예제 #17
0
        private static ICredito ObterInterface(TipoCredito tipoCredito, decimal valorCredito, int quantidadeParcelas, DateTime dataPrimeiroVencimento)
        {
            switch (tipoCredito)
            {
            case TipoCredito.Direto:
                return(new CreditoDireto(valorCredito, quantidadeParcelas, dataPrimeiroVencimento));

            case TipoCredito.Consignado:
                return(new CreditoConsignado(valorCredito, quantidadeParcelas, dataPrimeiroVencimento));

            case TipoCredito.PessoaJuridica:
                return(new CreditoPessoaJuridica(valorCredito, quantidadeParcelas, dataPrimeiroVencimento));

            case TipoCredito.PessoaFisica:
                return(new CreditoPessoaFisica(valorCredito, quantidadeParcelas, dataPrimeiroVencimento));

            case TipoCredito.Imobiliario:
                return(new CreditoImobiliario(valorCredito, quantidadeParcelas, dataPrimeiroVencimento));

            default:
                throw new Exception(Mensagens.Erro_ParametroNaoMapeado);
            }
        }
예제 #18
0
        static void Main(string[] args)
        {
            while (true)
            {
                ExibirMenuPrincipal();

                #region Verificar Opção Parametro Entrada Tipo de Credito
                var opcao = Console.ReadKey().KeyChar;

                Console.Clear();

                TipoCredito tipoCredito = 0;

                try
                {
                    tipoCredito = (TipoCredito)Enum.Parse(typeof(TipoCredito), opcao.ToString(), true);

                    if ((int)tipoCredito > 5)
                    {
                        Console.Clear();
                        ExibirMensagemExcecaoOpcaoMenu();
                        continue;
                    }
                }
                catch (Exception ex)
                {
                    Console.Clear();
                    ExibirMensagemExcecaoOpcaoMenu();
                    continue;
                }
                #endregion

                #region Verificar Parametro de Entrada Valor Crédito
                Console.Clear();

                Console.WriteLine("Digite o valor de crédito desejado no formato '0,00' com duas casas decimais para os centavos, exemplo: 14000,56(quatorze mil e 56 centavos)");

                try
                {
                    var valorCreditoRL = Console.ReadLine();
                    valorCredito = Convert.ToDecimal(valorCreditoRL);
                }
                catch (Exception ex)
                {
                    Console.Clear();
                    Console.WriteLine(ex.Message);
                    Console.WriteLine("Pressione qualquer tecla para continuar...");
                    Console.ReadKey();
                    Console.Clear();
                    continue;
                }
                #endregion

                #region Verificar Parametro de Entrada Parcelas
                Console.Clear();

                Console.WriteLine("Digite a quantidade de parcelas desejadas");

                try
                {
                    quantidadeParcelas = Convert.ToInt32(Console.ReadLine());
                }
                catch (Exception ex)
                {
                    Console.Clear();
                    Console.WriteLine(ex.Message);
                    Console.WriteLine("Pressione qualquer tecla para continuar...");
                    Console.ReadKey();
                    Console.Clear();
                    continue;
                }
                #endregion

                #region Verificar Parametro de Entrada Data Primeiro Vencimento
                Console.Clear();

                Console.WriteLine("Digite a data de vencimento da primeira parcela no formato 'dd/mm/yyyy'");

                try
                {
                    dataPrimeiroVencimento = Convert.ToDateTime(Console.ReadLine(), new CultureInfo("pt-BR"));
                }
                catch (Exception ex)
                {
                    Console.Clear();
                    Console.WriteLine(ex.Message);
                    Console.WriteLine("Pressione qualquer tecla para continuar...");
                    Console.ReadKey();
                    Console.Clear();
                    continue;
                }
                #endregion

                ProcessarCalculoCredito(tipoCredito);
            }
        }
예제 #19
0
        public static ResultadoCreditoDto Executar(TipoCredito tipoCredito, decimal valorCredito, int quantidadeParcelas, DateTime dataPrimeiroVencimento)
        {
            var interfaceCredito = ObterInterface(tipoCredito, valorCredito, quantidadeParcelas, dataPrimeiroVencimento);

            return(interfaceCredito.ExecutarCalculo());
        }