Exemplo n.º 1
0
 public void CreateFicha(DatosBono ficha)
 {
     using (var db = new ApplicationDbContext())
     {
         db.DatosBono.Add(ficha);
         db.SaveChanges();
     }
 }
Exemplo n.º 2
0
      public ActionResult DeleteConfirmed(int id)
      {
          DatosBono datosBono = db.DatosBono.Find(id);

          db.DatosBono.Remove(datosBono);
          db.SaveChanges();
          return(RedirectToAction("Index"));
      }
Exemplo n.º 3
0
      // 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));
      }
Exemplo n.º 4
0
      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));
      }
Exemplo n.º 5
0
      //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));
      }
Exemplo n.º 6
0
      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));
      }
Exemplo n.º 7
0
      // 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));
      }
Exemplo n.º 8
0
        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
            }
        }