コード例 #1
0
ファイル: Calculo.cs プロジェクト: MegaMeganium/TB_Finaanzas
 public Calculo(Models.Bono bono)
 {
     this.bono = bono;
     size      = bono.NroTatalPeriodos() + 1;
     tabla     = new Periodo[size];
     for (int i = 0; i < size; i++)
     {
         tabla[i] = new Periodo();
     }
 }
コード例 #2
0
        public static IDictionary <int, char> PlazoDeGracia(this Models.Bono bono)
        {
            var plazos = bono.PlazoBono.Select(x => new
            {
                Plazo   = (x.PlazoGracia.Nombre == "Total") ? 'T' : (x.PlazoGracia.Nombre == "Parcial") ? 'P' : 'S',
                Periodo = x.Periodo
            }).OrderBy(x => x.Periodo).ToDictionary(x => x.Periodo, x => x.Plazo);

            return(plazos);
        }
コード例 #3
0
        public static double CostesInicialesEmisor(this Models.Bono bono)
        {
            var    costes = bono.Costes_Gastos.OrderBy(x => x.ID).ToList();
            double sum    = 0;

            foreach (var costo in costes)
            {
                if (costo.Nombre != "Prima")
                {
                    sum += costo.Valor;
                }
            }
            return(sum.Percent() * bono.ValorComercial);
        }
コード例 #4
0
        public static double CostesInicialesBonista(this Models.Bono bono)
        {
            var    costes = bono.Costes_Gastos.OrderBy(x => x.ID).ToList();
            double sum    = 0;

            foreach (var coste in costes)
            {
                if (coste.Nombre == "Flotacion" || coste.Nombre == "CAVALI")
                {
                    sum += coste.Valor;
                }
            }
            return(sum.Percent() * bono.ValorComercial);
        }
コード例 #5
0
        public static IDictionary <int, double> TasaEfectivaPeriodo(this Models.Bono bono)
        {
            IDictionary <int, double> list = new Dictionary <int, double>();
            var TEAS = bono.TasaEfectivaAnual();

            foreach (var TEA in TEAS)
            {
                double aux          = TEA.Value.Percent();
                double sumAux       = 1.00 + aux;
                double exponenete   = (double)bono.FrecCupon / (double)bono.DiasPorAnio;
                double valPorciento = (Math.Pow(sumAux, exponenete) - 1) * 100;
                list.Add(TEA.Key, valPorciento);
            }
            return(list);
        }
コード例 #6
0
        public void AddEditEntity(AddEditBonoViewModel model)
        {
            var bono = new Models.Bono();

            if (model.BonoId.HasValue)
            {
                Debug.WriteLine("IBono - if:editar");
                bono = context.Bono.Find(model.BonoId);
            }
            else
            {
                Debug.WriteLine("IBono - else:agregar");
                context.Bono.Add(bono);
            }
            model.TransferModel(ref bono);

            Debug.WriteLine("IBono - antes de guardar");
            context.SaveChanges();
        }
コード例 #7
0
        public static IDictionary <int, double> TasaEfectivaAnual(this Models.Bono bono)
        {
            IDictionary <int, double> list = new Dictionary <int, double>();
            var tasas = bono.Bono_Tasa.OrderBy(x => x.NroCuota).ToList();

            foreach (var tasa in tasas)
            {
                Debug.WriteLine(tasa.TasaInteres);
                if (tasa.TipoTasa_ID != 1)
                {
                    list.Add(tasa.NroCuota, tasa.TasaInteres);
                }
                else
                {
                    var Conversion = Math.Pow(1 + tasa.TasaInteres.Percent() / (bono.DiasPorAnio / tasa.Capitalizacion1.ID.CapVal()), (bono.DiasPorAnio / tasa.Capitalizacion1.ID) - 1) * 100;//falta cap
                    list.Add(tasa.NroCuota, Conversion);
                }
            }
            return(list);
        }
コード例 #8
0
        public static void TransferModel(this AddEditBonoViewModel model, ref Models.Bono bono /*, ref Models.Bono_Tasa bonoTasa*/)
        {
            //ID del bono se autogenera
            bono.Entidad_ID         = model.userId;
            bono.ValorNominal       = model.ValorNominal.ToDouble();
            bono.ValorComercial     = model.ValorComercial.ToDouble();
            bono.NroAnios           = model.nAnios;
            bono.FrecCupon          = model.frecCupon;
            bono.DiasPorAnio        = model.diasXanio;
            bono.ImpRenta           = model.ImpRenta.ToDouble();
            bono.FechaEmision       = model.FechaEmision;
            bono.TasaAnualDescuento = model.TasaAnualDescuento.ToDouble();

            if (model.LstTasaId.Count != model.LstValorTasa.Count)
            {
                Debug.WriteLine("TranferHelper-(bono, bonoTasa) sizes of List non equal");
                return;
            }
            Debug.WriteLine(model.LstValorTasa.Count + ", " + model.LstTasaId.Count);
            for (var i = 0; i < model.LstValorTasa.Count; i++)
            {
                Debug.WriteLine("i: " + i + " -> " + model.LstTasaId[i] + ", " + model.LstValorTasa[i].ToDouble() + ", " + model.LstCapitalizaciones[i] + ", " + model.LstNroPeriodos[i]);
            }
            for (var i = 0; i < model.LstValorTasa.Count; i++)
            {
                bono.Bono_Tasa.Add(new Bono_Tasa
                {
                    //ID del Bono_Tasa se autogenera
                    TipoTasa_ID = model.LstTasaId[i],
                    //BonoId se autogenera ya que es IDENTITY el pk del Bono
                    TasaInteres    = model.LstValorTasa[i].ToDouble(),
                    NroCuota       = model.LstNroPeriodos[i],
                    capitalizacion = model.LstCapitalizaciones[i].validacionCap(model.LstTasaId[i])
                });
            }

            for (var i = 0; i < model.LstValInflaciones.Count; i++)
            {
                bono.Inflacion.Add(new Inflacion
                {
                    Valor   = model.LstValInflaciones[i].ToDouble(),
                    Periodo = model.LstPerInflaciones[i]
                });
            }


            for (var i = 0; i < model.LstPlazosDeGraciaId.Count; i++)
            {
                if (model.LstPlazosDeGraciaId.Count <= 1 && model.LstPlazosDeGraciaId[0] == 1)
                {
                    break;
                }
                //{

                /*bono.PlazoBono.Add(new PlazoBono
                 * {
                 *  PlazoGracia_ID = 1,
                 *  Periodo = 1
                 * });*/
                //break;
                // }
                // else
                // {
                bono.PlazoBono.Add(new PlazoBono
                {
                    PlazoGracia_ID = model.LstPlazosDeGraciaId[i],
                    Periodo        = model.LstPerPlazoBono[i]
                });
                // }
            }

            for (int i = 0; i < model.LstCostesGastosNombres.Count; i++)
            {
                bono.Costes_Gastos.Add(new Costes_Gastos
                {
                    Nombre = model.LstCostesGastosNombres[i],
                    Valor  = model.LstCostesGastosValores[i].ToDouble(),
                    Emisor = model.LstCostesGastosEmisor[i]
                });
            }
        }
コード例 #9
0
 public static double COKperiodo(this Models.Bono bono)
 {
     return((Math.Pow(1 + bono.TasaAnualDescuento.Percent(), (double)bono.FrecCupon / (double)bono.DiasPorAnio) - 1) * 100);
 }
コード例 #10
0
        public static IDictionary <int, double> InflacionAnual(this Models.Bono bono)
        {
            var IA = bono.Inflacion.OrderBy(x => x.Periodo).ToDictionary(x => x.Periodo, x => x.Valor);

            return(IA);
        }
コード例 #11
0
 public static double CAVALI(this Models.Bono bono)
 {
     return(bono.Costes_Gastos.FirstOrDefault(x => x.Nombre == "CAVALI").Valor);
 }
コード例 #12
0
 public static int NroTatalPeriodos(this Models.Bono bono)
 {
     return(bono.NroAnios * bono.NroPeriodosPorAnio());
 }
コード例 #13
0
 public static double Flotacion(this Models.Bono bono)
 {
     return(bono.Costes_Gastos.FirstOrDefault(x => x.Nombre == "Flotacion").Valor);
 }
コード例 #14
0
 public static DateTime getFechaByIndex(this Models.Bono bono, int index)
 {
     return((index == 0) ? bono.FechaEmision : (bono.FechaEmision.AddDays(index * bono.FrecCupon)));
 }
コード例 #15
0
 public static int NroPeriodosPorAnio(this Models.Bono bono)
 {
     return(bono.DiasPorAnio / bono.FrecCupon);
 }