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(); } }
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); }
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); }
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); }
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); }
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(); }
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); }
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] }); } }
public static double COKperiodo(this Models.Bono bono) { return((Math.Pow(1 + bono.TasaAnualDescuento.Percent(), (double)bono.FrecCupon / (double)bono.DiasPorAnio) - 1) * 100); }
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); }
public static double CAVALI(this Models.Bono bono) { return(bono.Costes_Gastos.FirstOrDefault(x => x.Nombre == "CAVALI").Valor); }
public static int NroTatalPeriodos(this Models.Bono bono) { return(bono.NroAnios * bono.NroPeriodosPorAnio()); }
public static double Flotacion(this Models.Bono bono) { return(bono.Costes_Gastos.FirstOrDefault(x => x.Nombre == "Flotacion").Valor); }
public static DateTime getFechaByIndex(this Models.Bono bono, int index) { return((index == 0) ? bono.FechaEmision : (bono.FechaEmision.AddDays(index * bono.FrecCupon))); }
public static int NroPeriodosPorAnio(this Models.Bono bono) { return(bono.DiasPorAnio / bono.FrecCupon); }