public ActionResult Edit(LiquidacionesViaje liquidacionesViaje)
 {
     if (ModelState.IsValid)
     {
         LiquidacionesViaje lv = db.LiquidacionesViaje.Where(a => a.IdLiquidacionViaje == liquidacionesViaje.IdLiquidacionViaje).Include(l => l.Viaje).Include(l => l.DetallesLiquidacion).SingleOrDefault();
         //LiquidacionesViaje lv = db.LiquidacionesViaje.Find(liquidacionesViaje.IdLiquidacionViaje);
         lv.IdMoneda   = liquidacionesViaje.IdMoneda;
         lv.TasaCambio = liquidacionesViaje.TasaCambio;
         Moneda mon = db.Moneda.Find(lv.IdMoneda);
         //if((mon.TasaCambio*0.9)>liquidacionesViaje.TasaCambio || (mon.TasaCambio * 1.1) < liquidacionesViaje.TasaCambio)
         //{
         //    Session["MyAlert"] = "<script type='text/javascript'>alertify.error('La tasa de cambio varía del + o - 10% de la registrada.');</script>";
         //    ViewBag.IdMoneda = new SelectList(db.Moneda.Where(m => m.Eliminado != true), "IdMoneda", "MonedaCambio", liquidacionesViaje.IdMoneda);
         //    return View("Index",lv);
         //}
         lv.UsuarioMod      = GetUserId(User);
         lv.FechaMod        = DateTime.Now;
         db.Entry(lv).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index", new { idviaje = lv.IdViaje }));
     }
     ViewBag.IdMoneda = new SelectList(db.Moneda.Where(m => m.Eliminado != true), "IdMoneda", "MonedaCambio", liquidacionesViaje.IdMoneda);
     ViewBag.idViaje  = new SelectList(db.Viajes, "IdViaje", "Viaje", liquidacionesViaje.IdViaje);
     return(View(liquidacionesViaje));
 }
        public ActionResult Create(DetallesLiquidacion detallesLiquidacion)
        {
            if (ModelState.IsValid)
            {
                var usrCeco = db.Users.Find(detallesLiquidacion.IdCeCo);
                detallesLiquidacion.CentroCosto = usrCeco.CentroCosto;
                detallesLiquidacion.UsuarioCrea = GetUserId(User);
                detallesLiquidacion.FechaCrea   = DateTime.Now;
                db.DetallesLiquidacion.Add(detallesLiquidacion);
                var via = ViewBag.idViaje;
                db.SaveChanges();
                LiquidacionesViaje lv = db.LiquidacionesViaje.Find(detallesLiquidacion.IdLiquidacionViaje);
                lv.TotalAsignado  += detallesLiquidacion.Monto;
                db.Entry(lv).State = EntityState.Modified;
                db.SaveChanges();
                Session["MyAlert"] = "<script type='text/javascript'>alertify.success('Gasto Agregado');</script>";
                return(RedirectToAction("Index", "LiquidacionesViajes", new { idViaje = lv.IdViaje }));
            }
            var lvj = db.LiquidacionesViaje.Find(detallesLiquidacion.IdLiquidacionViaje);

            ViewBag.idViaje            = lvj.IdViaje;
            ViewBag.IdCeCo             = new SelectList(db.Users.Where(u => u.Nombres != "Administrador" && u.Apellidos != "Administrador").OrderBy(u => u.Nombres), "Id", "FullName", detallesLiquidacion.IdCeCo);
            ViewBag.CuentaGasto        = new SelectList(db.CuentasGasto, "IdCuentaGasto", "cuenta", detallesLiquidacion.CuentaGasto);
            ViewBag.IdLiquidacionViaje = new SelectList(db.LiquidacionesViaje, "IdLiquidacionViaje", "UsuarioCrea", detallesLiquidacion.IdLiquidacionViaje);
            return(View(detallesLiquidacion));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            LiquidacionesViaje liquidacionesViaje = db.LiquidacionesViaje.Find(id);

            liquidacionesViaje.Eliminado       = true;
            liquidacionesViaje.FechaMod        = DateTime.Now;
            liquidacionesViaje.UsuarioMod      = GetUserId(User);
            db.Entry(liquidacionesViaje).State = EntityState.Modified;
            db.SaveChanges();
            Session["MyAlert"] = "<script type='text/javascript'>alertify.success('La solicitud se elimino con éxito.');</script>";
            return(RedirectToAction("Gestionar", "Viajes", new { id = liquidacionesViaje.IdViaje }));
        }
        public ActionResult Create([Bind(Include = "IdLiquidacionViaje,TotalAsignado,TotalViaticos,TasaCambio,TotalAnticipo,IdEstado,idViaje,UsuarioCrea,UsuarioMod,FechaCrea,FechaMod,Eliminado")] LiquidacionesViaje liquidacionesViaje)
        {
            if (ModelState.IsValid)
            {
                db.LiquidacionesViaje.Add(liquidacionesViaje);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.idViaje = new SelectList(db.Viajes, "IdViaje", "Viaje", liquidacionesViaje.IdViaje);
            return(View(liquidacionesViaje));
        }
        // GET: LiquidacionesViajes
        public ActionResult Index(int?idViaje)
        {
            if (idViaje == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            //var idusuario = GetUserId(User);
            //ViewBag.usuario = UserManager.Users.Where(u => u.Id == idusuario).SingleOrDefault();
            var liquidacionesViaje = db.LiquidacionesViaje.Where(a => a.IdViaje == idViaje && a.Eliminado != true).Include(l => l.Viaje.Usuario.Pais.Moneda).Include(l => l.DetallesLiquidacion).Include(l => l.Moneda).SingleOrDefault();

            if (liquidacionesViaje != null)
            {
                ViewBag.IdMoneda = new SelectList(db.Moneda.Where(m => m.Eliminado != true).DistinctBy(m => m.TasaCambio), "IdMoneda", "MonedaCambio", liquidacionesViaje.IdMoneda);
                return(View(liquidacionesViaje));
            }
            else
            {
                LiquidacionesViaje lv = new LiquidacionesViaje();
                lv.TotalAsignado = 0;
                var ant = db.Anticipos.Where(a => a.Eliminado != true && a.IdEstado == Estado.Finalizado && a.IdViaje == idViaje).SingleOrDefault();
                if (ant != null)
                {
                    lv.TotalAnticipo = ant.TotalAnticipar;
                }
                else
                {
                    lv.TotalAnticipo = 0;
                }
                var viaje = db.Viajes.Where(v => v.IdViaje == idViaje).Include(v => v.Destino.Moneda).Include(v => v.Usuario.Departamento).FirstOrDefault();
                foreach (var item in viaje.Destino.Moneda.Where(m => m.Eliminado != true))
                {
                    lv.IdMoneda   = item.IdMoneda;
                    lv.TasaCambio = item.TasaCambio;
                }
                lv.UsuarioCrea = GetUserId(User);
                var lvCorrelativo = db.LiquidacionesViaje.Where(ac => ac.Viaje.Usuario.Id == lv.UsuarioCrea).ToList().AsReadOnly();
                var corre         = "00000" + (lvCorrelativo.Count() + 1);
                lv.NoSolicitud     = corre.Substring(corre.Length - 5, 5);
                lv.UsuarioAutoriza = viaje.Usuario.Departamento.IdPersonaACargo;
                lv.Eliminado       = false;
                lv.IdViaje         = (int)idViaje;
                lv.IdEstado        = Estado.Creado;

                lv.FechaCrea       = DateTime.Now;
                db.Entry(lv).State = EntityState.Added;
                db.SaveChanges();
                Session["MyAlert"] = "<script type='text/javascript'>alertify.success('Se creó la solicitud exitosamente.');</script>";
                liquidacionesViaje = db.LiquidacionesViaje.Where(a => a.IdViaje == idViaje && a.Eliminado != true).Include(l => l.Viaje.Usuario.Pais.Moneda).Include(l => l.DetallesLiquidacion).Include(l => l.Moneda).SingleOrDefault();
                ViewBag.IdMoneda   = new SelectList(db.Moneda.Where(m => m.Eliminado != true), "IdMoneda", "MonedaCambio", liquidacionesViaje.IdMoneda);
                return(View(liquidacionesViaje));
            }
        }
        // GET: LiquidacionesViajes/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LiquidacionesViaje liquidacionesViaje = db.LiquidacionesViaje.Find(id);

            if (liquidacionesViaje == null)
            {
                return(HttpNotFound());
            }
            return(View(liquidacionesViaje));
        }
        // GET: LiquidacionesViajes/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LiquidacionesViaje liquidacionesViaje = db.LiquidacionesViaje.Find(id);

            if (liquidacionesViaje == null)
            {
                return(HttpNotFound());
            }
            ViewBag.idViaje = new SelectList(db.Viajes, "IdViaje", "Viaje", liquidacionesViaje.IdViaje);
            return(View(liquidacionesViaje));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            DetallesLiquidacion detallesLiquidacion = db.DetallesLiquidacion.Find(id);

            detallesLiquidacion.Eliminado       = true;
            detallesLiquidacion.UsuarioMod      = GetUserId(User);
            detallesLiquidacion.FechaMod        = DateTime.Now;
            db.Entry(detallesLiquidacion).State = EntityState.Modified;
            db.SaveChanges();
            LiquidacionesViaje lv = db.LiquidacionesViaje.Find(detallesLiquidacion.IdLiquidacionViaje);

            lv.TotalAsignado -= detallesLiquidacion.Monto;
            db.SaveChanges();
            Session["MyAlert"] = "<script type='text/javascript'>alertify.success('Gasto Eliminado');</script>";
            return(RedirectToAction("Index", "LiquidacionesViajes", new { idViaje = detallesLiquidacion.LiquidacionViaje.IdViaje }));
        }