//[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
        public ActionResult ListadoParaSeleccionar(ProductoSeleccionarModel productoSeleccionarModel)
        {
            var productos = Uow.Productos.Listado(p => p.Rubro, p => p.Marca, p => p.CodigosProductos)
                .Where(p => string.IsNullOrEmpty(productoSeleccionarModel.Descripcion)
                            || (productoSeleccionarModel.BuscarPorDescripcion && p.Descripcion.ToLower().Contains(productoSeleccionarModel.Descripcion.ToLower()))
                            || (!productoSeleccionarModel.BuscarPorDescripcion && p.CodigosProductos.Any(cp => cp.Codigo.StartsWith(productoSeleccionarModel.Descripcion))));

            if (productoSeleccionarModel.BuscarPorDescripcion)
                productos = productos.OrderBy(p => p.Descripcion);
            else
                productos = productos.OrderBy(p => p.CodigosProductos.Select(c => c.Codigo).FirstOrDefault());

            productos = productos.Take(10);

            return PartialView(productos);
        }
 public ActionResult Seleccionar()
 {
     ProductoSeleccionarModel productoSeleccionarModel = new ProductoSeleccionarModel();
     productoSeleccionarModel.BuscarPorDescripcion = true;
     return PartialView(productoSeleccionarModel);
 }
        //[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
        public ActionResult ListadoParaSeleccionar(ProductoSeleccionarModel productoSeleccionarModel)
        {
            Expression<Func<Producto, object>>[] expressions;

            if (productoSeleccionarModel.MostrarStockMaxikioscoId.HasValue)
            {
                expressions = new Expression<Func<Producto, object>>[]
                              {
                                  p => p.Rubro,
                                  p => p.Marca, p => p.CodigosProductos,
                                  p => p.Stocks.Select(x => x.StockTransacciones)
                              };
            }
            else
            {
                expressions = new Expression<Func<Producto, object>>[]
                              {
                                  p => p.Rubro,
                                  p => p.Marca, p => p.CodigosProductos
                              };
            }

            var productos = Uow.Productos.Listado(expressions)
                .Where(p => !p.EsPromocion &&
                    (string.IsNullOrEmpty(productoSeleccionarModel.Descripcion)
                            || (productoSeleccionarModel.BuscarPorDescripcion && p.Descripcion.ToLower().Contains(productoSeleccionarModel.Descripcion.ToLower()))
                            || (!productoSeleccionarModel.BuscarPorDescripcion && p.CodigosProductos.Any(cp => cp.Codigo.StartsWith(productoSeleccionarModel.Descripcion)))));

            if (productoSeleccionarModel.BuscarPorDescripcion)
                productos = productos.OrderBy(p => p.Descripcion);
            else
                productos = productos.OrderBy(p => p.CodigosProductos.Select(c => c.Codigo).FirstOrDefault());

            productos = productos.Take(10);

            ViewBag.MostrarStockMaxikioscoId = productoSeleccionarModel.MostrarStockMaxikioscoId;

            return PartialView(productos);
        }