public ActionResult Index()
        {
            using (var DB = new LibreriaDB())
            {
                DB.Configuration.LazyLoadingEnabled = false;
                var Car = DB.Carrito.Include("Producto").Where(P => P.SessionID == Session.SessionID & P.Transaccion == true & P.Activo == true).ToList();

                List <SelectListItem> Productos = new List <SelectListItem>();
                Productos.Add(new SelectListItem()
                {
                    Value    = "0",
                    Text     = "Seleccione un producto",
                    Selected = true
                });
                foreach (var Item in DB.PROListarProductos().ToList())
                {
                    Productos.Add(new SelectListItem()
                    {
                        Value    = Item.IdProducto.ToString(),
                        Text     = Item.Nombre,
                        Selected = false
                    });
                }

                ViewData["Productos"] = Productos;
                ViewData["Totales"]   = Car.Sum(P => P.CostoTotal).ToString("#,#0.00");
                return(View(Car));
            }
        }
        //public ActionResult Catalogo()
        //{
        //    using (var DB = new LibreriaDB())
        //    {
        //        var Pros = DB.PROListarProductos().ToList();

        //        return View(Pros);
        //    }
        //}

        public ActionResult Catalogo(string filtro)
        {
            if (!String.IsNullOrEmpty(filtro))
            {
                using (var DB = new LibreriaDB())
                {
                    var Pros = DB.PROListarProductos().ToList().FindAll(p => p.Nombre.ToLower().Contains(filtro.ToLower()));

                    return(View(Pros));
                }
            }
            else
            {
                using (var DB = new LibreriaDB())
                {
                    var Pros = DB.PROListarProductos().ToList();
                    return(View(Pros));
                }
            }
        }
        public ActionResult Agregar(FormCollection Col)
        {
            if (Col.Count > 0)
            {
                using (var DB = new LibreriaDB())
                {
                    string   data  = Col["Codigo"];
                    string[] lista = data.Split('-');
                    var      Pros  = DB.PROListarProductos().SingleOrDefault(P => P.Codigo == lista[0]);
                    bool     res   = DB.Database.SqlQuery <bool>(String.Format(@"select dbo.fnControlStock({0},{1})", Pros.IdProducto, int.Parse(Col["txtCantidad"]))).FirstOrDefault <bool>();
                    if (res == true)
                    {
                        decimal precio = DB.Database.SqlQuery <decimal>(String.Format(@"select dbo.fnDescuento({0})", Pros.IdProducto)).FirstOrDefault <decimal>();
                        int     total  = DB.Carrito.Where(P => P.IdProducto == Pros.IdProducto & P.Transaccion == true & P.Activo == true).Count();

                        if (total == 0)
                        {
                            Carrito Car = new Carrito();
                            Car.SessionID   = Session.SessionID;
                            Car.IdProducto  = Pros.IdProducto;
                            Car.Cantidad    = short.Parse(Col["txtCantidad"]);
                            Car.CostoUnidad = precio; //Pros.CostoVenta;
                            Car.CostoTotal  = (Car.Cantidad * Car.CostoUnidad);
                            Car.FechaREG    = DateTime.Now;
                            Car.Transaccion = true;
                            Car.Activo      = true;
                            DB.Carrito.Add(Car);
                            DB.SaveChanges();
                        }
                        else
                        {
                            Carrito Car = DB.Carrito.First(P => P.IdProducto == Pros.IdProducto & P.Transaccion == true & P.Activo == true);
                            Car.Cantidad   = (short)(Car.Cantidad + short.Parse(Col["txtCantidad"]));
                            Car.CostoTotal = (Car.Cantidad * Car.CostoUnidad);
                            Car.FechaREG   = DateTime.Now;
                            DB.SaveChanges();
                        }

                        //Se Cargan los datos para la vista.
                        DB.Configuration.LazyLoadingEnabled = false;
                        var Cars = DB.Carrito.Include("Producto").Where(P => P.SessionID == Session.SessionID & P.Transaccion == true & P.Activo == true).ToList();

                        List <SelectListItem> Productos = new List <SelectListItem>();
                        Productos.Add(new SelectListItem()
                        {
                            Value    = "0",
                            Text     = "Seleccione un producto",
                            Selected = true
                        });
                        foreach (var Item in DB.PROListarProductos().ToList())
                        {
                            Productos.Add(new SelectListItem()
                            {
                                Value    = Item.IdProducto.ToString(),
                                Text     = Item.Nombre,
                                Selected = false
                            });
                        }
                        ViewData["Productos"] = Productos;
                        ViewData["Totales"]   = Cars.Sum(P => P.CostoTotal).ToString("#,#0.00");

                        return(View("Index", Cars));
                    }
                    else
                    {
                        ViewBag.ErrorMessage = "No hay el stock requerido!!!";
                        //Se Cargan los datos para la vista.
                        DB.Configuration.LazyLoadingEnabled = false;
                        var Cars = DB.Carrito.Include("Producto").Where(P => P.SessionID == Session.SessionID & P.Transaccion == true & P.Activo == true).ToList();

                        List <SelectListItem> Productos = new List <SelectListItem>();
                        Productos.Add(new SelectListItem()
                        {
                            Value    = "0",
                            Text     = "Seleccione un producto",
                            Selected = true
                        });
                        foreach (var Item in DB.PROListarProductos().ToList())
                        {
                            Productos.Add(new SelectListItem()
                            {
                                Value    = Item.IdProducto.ToString(),
                                Text     = Item.Nombre,
                                Selected = false
                            });
                        }
                        ViewData["Productos"] = Productos;
                        ViewData["Totales"]   = Cars.Sum(P => P.CostoTotal).ToString("#,#0.00");

                        return(View("Index", Cars));
                    }
                }
            }
            else
            {
                return(HttpNotFound());
            }
        }