public void CreateFicha(DatosBono ficha) { using (var db = new ApplicationDbContext()) { db.DatosBono.Add(ficha); db.SaveChanges(); } }
public ActionResult DeleteConfirmed(int id) { DatosBono datosBono = db.DatosBono.Find(id); db.DatosBono.Remove(datosBono); db.SaveChanges(); return(RedirectToAction("Index")); }
// GET: DatosBono/Delete/5 public ActionResult Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } DatosBono datosBono = db.DatosBono.Find(id); if (datosBono == null) { return(HttpNotFound()); } ViewBag.ListPG = service.ListPGracia(datosBono.Id); return(View(datosBono)); }
public ActionResult Create([Bind(Include = "Id,Nombre,Moneda,Metodo,ValNominal,ValComercial,AnosVida,TipoAno,FrecPago,Tea,Tdea,Ianual,Ir,Pprima,Pestructuracion,Pcolocacion,Pflotacion,PCavali,fechaEmision,UserId")] DatosBono datosBono) { datosBono.UserId = User.Identity.GetUserId(); int numPeriodos = calculo.NumeroPeriodos(datosBono.TipoAno, datosBono.FrecPago, datosBono.AnosVida); if (ModelState.IsValid) { db.DatosBono.Add(datosBono); db.SaveChanges(); service.CreatePG(datosBono.Id, numPeriodos); service.CreateResult(datosBono.Id, true); return(RedirectToAction("Index")); } return(View(datosBono)); }
//GET: DatosBono/Resultados/4 public ActionResult Results(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ResultadoBono resultBono = service.GetResultado((int)id); DatosBono datosBono = db.DatosBono.Find(id); if (resultBono == null) { return(HttpNotFound()); } ViewBag.Nombre = datosBono.Nombre; ViewBag.Moneda = datosBono.Moneda; ViewBag.FechaEmision = datosBono.fechaEmision.ToShortDateString(); return(View(resultBono)); }
public ActionResult Edit([Bind(Include = "Id,Nombre,Moneda,Metodo,ValNominal,ValComercial,AnosVida,TipoAno,FrecPago,Tea,Tdea,Ianual,Ir,Pprima,Pestructuracion,Pcolocacion,Pflotacion,PCavali,UserId")] DatosBono datosBono) { string idCurrentUser = User.Identity.GetUserId(); datosBono.UserId = idCurrentUser; db.SaveChanges(); int numPeriodos = calculo.NumeroPeriodos(datosBono.TipoAno, datosBono.FrecPago, datosBono.AnosVida); if (ModelState.IsValid) { db.Entry(datosBono).State = EntityState.Modified; db.SaveChanges(); service.DeletePG(datosBono.Id); service.CreatePG(datosBono.Id, numPeriodos); return(RedirectToAction("Details", new { id = datosBono.Id })); } return(View(datosBono)); }
// GET: DatosBono/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } DatosBono datosBono = db.DatosBono.Find(id); if (datosBono == null) { return(HttpNotFound()); } ViewBag.Metodos = service.Metodos(); ViewBag.TipoAnios = service.TipoAnios(); ViewBag.Frecuencias = service.Frecuencias(); ViewBag.TiposTasa = service.TiposTasa(); return(View(datosBono)); }
public void CreateResult(int id_ficha, bool createOrEdit) { DatosBono datosBono = null; List <PGracia> lstPGracia = null; ResultadoBono resultBono = null; using (var db = new ApplicationDbContext()) { datosBono = db.DatosBono.Find(id_ficha); lstPGracia = db.PGracia.Where(pg => pg.DatosBonoId == id_ficha).ToList(); } double cie = calculo.CostoInicialEmisor(datosBono.ValComercial, datosBono.Pestructuracion / 100, datosBono.Pcolocacion / 100, datosBono.Pflotacion / 100, datosBono.PCavali / 100); double cib = calculo.CostoInicialBonista(datosBono.ValComercial, datosBono.Pflotacion / 100, datosBono.PCavali / 100); int numeroPeriodos = calculo.NumeroPeriodos(datosBono.TipoAno, datosBono.FrecPago, datosBono.AnosVida); int diasXPeriodo = calculo.DiasXPeriodo(datosBono.FrecPago); int diasXAnio = calculo.DiasAnio(datosBono.TipoAno); double tea = datosBono.Tea / 100; double tdea = datosBono.Tdea / 100; double tep = calculo.TasaDelPeriodo(tea, diasXPeriodo, diasXAnio); double tedp = calculo.TasaDelPeriodo(tdea, diasXPeriodo, diasXAnio); double ip = calculo.InflacionXPeriodo(datosBono.Ianual / 100, diasXPeriodo, diasXAnio); int n = 0; //Listas List <double> bono = new List <double>(); List <double> bonoIndexado = new List <double>(); List <double> cupon = new List <double>(); List <double> cuota = new List <double>(); List <double> amortizacion = new List <double>(); List <double> prima = new List <double>(); List <double> escudo = new List <double>(); List <double> flujoEmisor = new List <double>(); List <double> flujoEmisorEscudo = new List <double>(); List <double> flujoBonista = new List <double>(); List <DateTime> flujoFechas = new List <DateTime>(); //Objetos a añadir a los flujos double eBono = 0.0; double eBonoIndexado = 0.0; double eCupon = 0.0; double eCuota = 0.0; double eAmortizacion = 0.0; double ePrima = 0.0; double eEscudo = 0.0; double eFEmisor = 0.0; double eFEmisorEscudo = 0.0; double eFBonista = 0.0; //Primer flujo 0 flujoFechas.Add(datosBono.fechaEmision); bono.Add(eBono); bonoIndexado.Add(eBonoIndexado); cupon.Add(eCupon); cuota.Add(eCuota); amortizacion.Add(eAmortizacion); prima.Add(ePrima); escudo.Add(eEscudo); eFEmisor = calculo.FlujoEmisor(n, numeroPeriodos, datosBono.ValComercial, cie, cuota[n], prima[n]); flujoEmisor.Add(eFEmisor); eFEmisorEscudo = calculo.FlujoEmisorEscudo(n, flujoEmisor[n], escudo[n]); flujoEmisorEscudo.Add(eFEmisorEscudo); eFBonista = calculo.FlujoBonista(n, datosBono.ValComercial, cib, flujoEmisor[n]); flujoBonista.Add(eFBonista); //Flujo for (int i = 1; i <= numeroPeriodos; i++) { flujoFechas.Add(flujoFechas[i - 1].AddDays(diasXPeriodo)); if (i - 2 < 0) { eBono = calculo.Bono(i, datosBono.ValNominal, numeroPeriodos, "S", bonoIndexado[i - 1], cupon[i - 1], amortizacion[i - 1]); bono.Add(eBono); } else { eBono = calculo.Bono(i, datosBono.ValNominal, numeroPeriodos, lstPGracia[i - 2].Tipo, bonoIndexado[i - 1], cupon[i - 1], amortizacion[i - 1]); bono.Add(eBono); } eBonoIndexado = calculo.BonoIndexado(bono[i], ip); bonoIndexado.Add(eBonoIndexado); eCupon = calculo.Cupon(tep, bonoIndexado[i]); cupon.Add(eCupon); if (datosBono.Metodo == "aleman" || datosBono.Metodo == "americano") { eAmortizacion = calculo.Amortizacion(i, numeroPeriodos, lstPGracia[i - 1].Tipo, bonoIndexado[i], datosBono.Metodo, 0, cupon[i]); amortizacion.Add(eAmortizacion); eCuota = calculo.Cuota(i, numeroPeriodos, lstPGracia[i - 1].Tipo, cupon[i], amortizacion[i], datosBono.Metodo, datosBono.ValNominal, tep); cuota.Add(eCuota); } else { eCuota = calculo.Cuota(i, numeroPeriodos, lstPGracia[i - 1].Tipo, cupon[i], 0, datosBono.Metodo, datosBono.ValNominal, tep); cuota.Add(eCuota); eAmortizacion = calculo.Amortizacion(i, numeroPeriodos, lstPGracia[i - 1].Tipo, bonoIndexado[i], datosBono.Metodo, cuota[i], cupon[i]); amortizacion.Add(eAmortizacion); } ePrima = calculo.Prima(i, numeroPeriodos, datosBono.Pprima / 100, bonoIndexado[i]); prima.Add(ePrima); eEscudo = calculo.Escudo(cupon[i], datosBono.Ir / 100); escudo.Add(eEscudo); //Flujos Emisor y bonista eFEmisor = calculo.FlujoEmisor(i, numeroPeriodos, datosBono.ValComercial, cie, cuota[i], prima[i]); flujoEmisor.Add(eFEmisor); eFEmisorEscudo = calculo.FlujoEmisorEscudo(i, flujoEmisor[i], escudo[i]); flujoEmisorEscudo.Add(eFEmisorEscudo); eFBonista = calculo.FlujoBonista(i, datosBono.ValComercial, cib, flujoEmisor[i]); flujoBonista.Add(eFBonista); } //Las fechas se pasan a una lista de strings List <string> listaFlujoFechas = new List <string>(); foreach (var x in flujoFechas) { listaFlujoFechas.Add(x.ToShortDateString()); } //Añadiremos porsiacaso se quiera acceder a los resultados //Resultados double vaBonista = nDecimals(calculo.ValorActual(flujoBonista.ToArray(), tedp, numeroPeriodos), 2); double vanBonista = nDecimals(calculo.VANeto(flujoBonista.ToArray(), vaBonista), 2); double tirBonista = nDecimals(calculo.Tir(flujoBonista.ToArray()) * 100, 7); double tceaBonista = nDecimals(calculo.Tcea(tirBonista / 100, diasXAnio, diasXPeriodo) * 100, 7); double tirEmisor = nDecimals(calculo.Tir(flujoEmisor.ToArray()) * 100, 7); double tceaEmisor = nDecimals(calculo.Tcea(tirEmisor / 100, diasXAnio, diasXPeriodo) * 100, 7); double tasaPeriodo = nDecimals(tep * 100, 7); double cokPeriodo = nDecimals(tedp * 100, 7); //Cadenas de flujos string cadenaBono = listToString(listStringsTwoDecimals(bono)); string cadenaBonoIndexado = listToString(listStringsTwoDecimals(bonoIndexado)); string cadenaCupon = listToString(listStringsTwoDecimals(cupon)); string cadenaCuota = listToString(listStringsTwoDecimals(cuota)); string cadenaAmortizacion = listToString(listStringsTwoDecimals(amortizacion)); string cadenaPrima = listToString(listStringsTwoDecimals(prima)); string cadenaEscudo = listToString(listStringsTwoDecimals(escudo)); string cadenaFlujoEmisor = listToString(listStringsTwoDecimals(flujoEmisor)); string cadenaFlujoEmisorEscudo = listToString(listStringsTwoDecimals(flujoEmisorEscudo)); string cadenaBonista = listToString(listStringsTwoDecimals(flujoBonista)); string cadenaFlujoFechas = listToString(listaFlujoFechas); if (createOrEdit) { //Añadiendo el resultado a la base de datos resultBono = new ResultadoBono() { DatosBonoId = id_ficha, TirBonista = tirBonista, TceaBonista = tceaBonista, TirEmisor = tirEmisor, TceaEmisor = tceaEmisor, Va = vaBonista, Van = vanBonista, Bono = cadenaBono, BonoIndexado = cadenaBonoIndexado, Cupon = cadenaCupon, Cuota = cadenaCuota, Amortizacion = cadenaAmortizacion, Prima = cadenaPrima, Escudo = cadenaEscudo, FlujoEmisor = cadenaFlujoEmisor, FlujoEmisorEsc = cadenaFlujoEmisorEscudo, FlujoBonista = cadenaBonista, FlujoFechas = cadenaFlujoFechas, Ip = ip, Tep = tasaPeriodo, Tdep = cokPeriodo, }; using (var db = new ApplicationDbContext()) { db.ResultadoBono.Add(resultBono); db.SaveChanges(); } //Fin de añadir } else { //Actualizar Resultado using (var db = new ApplicationDbContext()) { resultBono = db.ResultadoBono.Where(res => res.DatosBonoId == id_ficha).First(); resultBono.Va = vaBonista; resultBono.Van = vanBonista; resultBono.TirBonista = tirBonista; resultBono.TceaBonista = tceaBonista; resultBono.TirEmisor = tirEmisor; resultBono.TceaEmisor = tceaEmisor; resultBono.Bono = cadenaBono; resultBono.BonoIndexado = cadenaBonoIndexado; resultBono.Cupon = cadenaCupon; resultBono.Cuota = cadenaCuota; resultBono.Amortizacion = cadenaAmortizacion; resultBono.Prima = cadenaPrima; resultBono.Escudo = cadenaEscudo; resultBono.FlujoEmisor = cadenaFlujoEmisor; resultBono.FlujoEmisorEsc = cadenaFlujoEmisorEscudo; resultBono.FlujoBonista = cadenaBonista; resultBono.FlujoFechas = cadenaFlujoFechas; resultBono.Ip = ip; resultBono.Tep = tasaPeriodo; resultBono.Tdep = cokPeriodo; db.SaveChanges(); } //Fin de actualizar } }