Exemplo n.º 1
0
 public ActionResult LoadDataTable()
 {
     try
     {
         var contextoDB = new InventarioGammaEntities();
         var myList     = (from productos in contextoDB.Productos
                           where productos.Estatus == 1 || productos.Estatus == 2
                           select new
         {
             DT_RowId = productos.IdProducto,
             Clave = productos.Clave,
             Nombre = productos.Nombre,
             Marca = productos.Marca,
             Descripcion = productos.Descripcion,
             Presentacion = productos.Presentacion,
             Precio_Costo = productos.Precio_Costo,
             Importe_Inventario = productos.Importe_Inventario,
             Almacen = productos.Almacen,
             Ubicacion = productos.Ubicacion,
             Existencia = productos.Existencia
         }).ToList();
         return(Json(myList, JsonRequestBehavior.AllowGet));
     }
     catch (System.Data.EntityException ex)
     {
         logger.Error("Error:" + ex.InnerException);
         return(Json(""));
     }
 }
Exemplo n.º 2
0
        public ActionResult ResetUser(String usuario)
        {
            var    contexDBUser = new InventarioGammaEntities();
            var    newPass      = Convert.ToBase64String(Encoding.UTF8.GetBytes(usuario));
            String valueBack    = "";

            try
            {
                var thisUser = (from user in contexDBUser.Usuarios
                                where
                                user.NombreUsuario == usuario
                                select user).FirstOrDefault();


                thisUser.Llave = newPass;
                contexDBUser.SaveChanges();
                valueBack = "200";
                logger.Info("Done");
                Response.StatusCode = (int)System.Net.HttpStatusCode.OK;
            }
            catch (InvalidOperationException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                valueBack           = "Ocurrió un error durante registro, verifique los datos";
            }

            return(Content(valueBack));
        }
Exemplo n.º 3
0
        public ActionResult ActualizarDatos(Producto Product)
        {
            String ValueBack = "";
            int    resultado = -1;

            if (!Session["almacen"].Equals(Product.Almacen) && !Session["almacen"].Equals("Admin"))
            {
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                ValueBack           = "No pertenece al almacen, no es posible registrar producto";
                return(Content(ValueBack, MediaTypeNames.Text.Plain));
            }


            try
            {
                var contextoDB = new InventarioGammaEntities();
                //Actualiza producto
                var producto = (from prod in contextoDB.Productos
                                where prod.IdProducto == Product.IdProducto &&
                                (prod.Estatus == 1 || prod.Estatus == 2)
                                select prod).FirstOrDefault();
                producto.Almacen            = Product.Almacen;
                producto.Clave              = Product.Clave;
                producto.Descripcion        = Product.Descripcion;
                producto.Importe_Inventario = Product.Importe_Inventario;
                producto.Precio_Costo       = Product.Precio_Costo;
                producto.Presentacion       = Product.Presentacion;
                producto.Ubicacion          = Product.Ubicacion;
                resultado = contextoDB.SaveChanges();
                logger.Info("Producto actualizado");
                ///Crea registro de historial
                Historial hist = new Historial();
                hist.Producto          = producto.IdProducto;
                hist.Fecha_Movimiento  = DateTime.Parse(DateTime.Now.ToString("MM/dd/yyyy"));
                hist.Tipo_Movimiento   = "Modificacion";
                hist.Origen            = producto.Almacen;
                hist.Destino           = producto.Almacen;
                hist.Cantidad          = 0;
                hist.Cantidad_Anterior = producto.Existencia;
                hist.Cantidad_Actual   = producto.Existencia;
                contextoDB.Historials.Add(hist);
                contextoDB.SaveChanges();
                logger.Info("Historial creado");
                ValueBack = "Registro actualizado correctamente";
            }
            catch (System.Data.EntityException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                ValueBack           = "Ocurrió un error durante actualización, verifique los datos y vuelva a intentarlo";
                return(Content(ValueBack, MediaTypeNames.Text.Plain));
            }
            return(Content(ValueBack));
        }
Exemplo n.º 4
0
        public ActionResult Eliminar(int idProducto)
        {
            String ValueBack = "";
            int    resultado = -1;

            try
            {
                var contextoDB = new InventarioGammaEntities();
                //Elimina producto/baja
                var producto = (from prod in contextoDB.Productos
                                where prod.IdProducto == idProducto &&
                                prod.Estatus != 0
                                select prod).FirstOrDefault();


                if (!Session["almacen"].Equals(producto.Almacen) && !Session["almacen"].Equals("Admin"))
                {
                    Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                    ValueBack           = "No pertenece al almacen, no es posible registrar producto";
                    return(Content(ValueBack, MediaTypeNames.Text.Plain));
                }


                producto.Estatus = 0;
                resultado        = contextoDB.SaveChanges();
                ///Crea registro de historial
                Historial hist = new Historial();
                hist.Producto          = producto.IdProducto;
                hist.Fecha_Movimiento  = DateTime.Parse(DateTime.Now.ToString("MM/dd/yyyy"));
                hist.Tipo_Movimiento   = "Eliminacion";
                hist.Origen            = producto.Almacen;
                hist.Destino           = producto.Almacen;
                hist.Cantidad          = 0;
                hist.Cantidad_Anterior = 0;
                hist.Cantidad_Actual   = 0;
                contextoDB.Historials.Add(hist);
                contextoDB.SaveChanges();
                ValueBack = "Registro eliminado!";
            }
            catch (System.Data.EntityException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                ValueBack           = "Ocurrió un error durante eliminación, verifique los datos y vuelva a intentarlo";
                return(Json(new { mensaje = ValueBack }, JsonRequestBehavior.AllowGet));
            }
            Response.StatusCode = (int)System.Net.HttpStatusCode.OK;
            return(Json(new { mensaje = ValueBack }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 5
0
        public ActionResult ActualizarExistencia(int IdProducto, int Cantidad)
        {
            String ValueBack        = "";
            int    resultado        = -1;
            double CantidadAnterior = 0;


            try
            {
                var contextoDB = new InventarioGammaEntities();
                //Actualiza existencia/actualizacion
                var producto = (from prod in contextoDB.Productos
                                where prod.IdProducto == IdProducto &&
                                prod.Estatus != 0
                                select prod).FirstOrDefault();

                if (!Session["almacen"].Equals(producto.Almacen) && !Session["almacen"].Equals("Admin"))
                {
                    Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                    ValueBack           = "No pertenece al almacen, no es posible registrar producto";
                    return(Content(ValueBack, MediaTypeNames.Text.Plain));
                }

                CantidadAnterior    = producto.Existencia;
                producto.Existencia = producto.Existencia + Cantidad;
                resultado           = contextoDB.SaveChanges();
                ///Crea registro de historial
                Historial hist = new Historial();
                hist.Producto          = producto.IdProducto;
                hist.Fecha_Movimiento  = DateTime.Parse(DateTime.Now.ToString("MM/dd/yyyy"));
                hist.Tipo_Movimiento   = "Alta";
                hist.Origen            = "Distribuidor";
                hist.Destino           = producto.Almacen;
                hist.Cantidad          = Cantidad;
                hist.Cantidad_Anterior = CantidadAnterior;
                hist.Cantidad_Actual   = producto.Existencia;
                contextoDB.Historials.Add(hist);
                contextoDB.SaveChanges();
                ValueBack = "Actualizado";
            }
            catch (System.Data.EntityException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                ValueBack           = "Ocurrió un error durante alta de inventario, verifique los datos y vuelva a intentarlo";
                return(Content(ValueBack, MediaTypeNames.Text.Plain));
            }
            return(Content(ValueBack));
        }
Exemplo n.º 6
0
        public ActionResult nuevo(Producto producto)
        {
            var      contextoDB = new InventarioGammaEntities();
            String   valueBack  = "";
            Producto prod       = producto;

            prod.Estatus    = 1;
            prod.Existencia = 0;
            Historial hist = new Historial();

            if (!Session["almacen"].Equals(producto.Almacen) && !Session["almacen"].Equals("Admin"))
            {
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                valueBack           = "No pertenece al almacen, no es posible registrar producto";
                return(Content(valueBack, MediaTypeNames.Text.Plain));
            }
            try
            {
                //alta el producto
                contextoDB.Productos.Add(prod);
                contextoDB.SaveChanges();
                //genera historial
                hist.Producto          = prod.IdProducto;
                hist.Fecha_Movimiento  = DateTime.Parse(DateTime.Now.ToString("MM/dd/yyyy"));
                hist.Tipo_Movimiento   = "Registro";
                hist.Origen            = "Distribuidor";
                hist.Destino           = prod.Almacen;
                hist.Cantidad          = 0;
                hist.Cantidad_Anterior = 0;
                hist.Cantidad_Actual   = 0;
                contextoDB.Historials.Add(hist);
                contextoDB.SaveChanges();
                valueBack = "Alta exitosa!";
            }
            catch (System.Data.EntityException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                valueBack           = "Ocurrió un error durante registro, verifique los datos y vuelva a intentarlo";
                return(Content(valueBack, MediaTypeNames.Text.Plain));
            }

            return(Content(valueBack, MediaTypeNames.Text.Plain));
        }
Exemplo n.º 7
0
 public ActionResult ListaUsuarios()
 {
     try
     {
         var contextoDB = new InventarioGammaEntities();
         var myList     = (from usuarios in contextoDB.Usuarios
                           select new
         {
             Usuario = usuarios.NombreUsuario,
             Almacen = usuarios.Almacen,
         }).ToList();
         return(Json(myList, JsonRequestBehavior.AllowGet));
     }
     catch (System.Data.EntityException ex)
     {
         logger.Error("Error:" + ex.InnerException);
         return(Json(""));
     }
 }
        public ActionResult FilterDataTable(String periodo, String inputAlmacen)
        {
            var contextoDB = new InventarioGammaEntities();
            var myList     = (from historial in contextoDB.Historials
                              from productos in contextoDB.Productos
                              where historial.Producto == productos.IdProducto
                              select new
            {
                Clave = productos.Clave,
                Producto = productos.Nombre,
                Descripcion = productos.Descripcion,
                Fecha_Movimiento = historial.Fecha_Movimiento,
                Tipo_Movimiento = historial.Tipo_Movimiento,
                Origen = historial.Origen,
                Destino = historial.Destino,
                Cantidad_Anterior = historial.Cantidad_Anterior,
                Cantidad_Actual = historial.Cantidad_Actual
            }).ToList();

            return(Json(myList, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 9
0
        public ActionResult Actualizar(String Password, String newPassword)
        {
            var    usuario   = Session["usuario"];
            String ValueBack = "";


            try
            {
                var oldPass    = Convert.ToBase64String(Encoding.UTF8.GetBytes(Password));
                var newPass    = Convert.ToBase64String(Encoding.UTF8.GetBytes(newPassword));
                var contextoDB = new InventarioGammaEntities();
                var thisUser   = (from usuarios in contextoDB.Usuarios
                                  where
                                  usuario == usuarios.NombreUsuario && oldPass == usuarios.Llave
                                  select usuarios).FirstOrDefault();

                if (thisUser != null)
                {
                    thisUser.Llave = newPass;
                    contextoDB.SaveChanges();
                    ValueBack = "Contraeseña actualizada!";
                }
                else
                {
                    Response.StatusCode = (int)System.Net.HttpStatusCode.Forbidden;
                    ValueBack           = "La contraseña actual es incorrecta, verifique y vuelva a intentarlo";
                    return(Content(ValueBack, System.Net.Mime.MediaTypeNames.Text.Plain));
                }
            }
            catch (System.Data.EntityException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                ValueBack           = "Ocurrió un error durante la operación, verifique los datos y vuelva a intentarlo";
                return(Json(new { mensaje = ValueBack }, JsonRequestBehavior.AllowGet));
            }

            Response.StatusCode = (int)System.Net.HttpStatusCode.OK;
            return(Json(new { mensaje = ValueBack }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 10
0
        public ActionResult AltUser(Usuario user)
        {
            var     contexDBUser = new InventarioGammaEntities();
            String  valueBack    = "";
            Usuario users        = user;

            users.Llave = Convert.ToBase64String(Encoding.UTF8.GetBytes(user.Llave));
            try
            {
                contexDBUser.Usuarios.Add(users);
                contexDBUser.SaveChanges();
                valueBack = "Alta exitosa";
            }
            catch (InvalidOperationException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                valueBack           = "Ocurrió un error durante registro, verifique los datos";
            }

            return(Content(valueBack));
        }
Exemplo n.º 11
0
        public ActionResult IniciaSesion(String Usuario, String LLave)
        {
            String ValueBack = "";
            var    pass      = Convert.ToBase64String(Encoding.UTF8.GetBytes(LLave));

            try
            {
                var contextoDB = new InventarioGammaEntities();
                var usuario    = (from usuarios in contextoDB.Usuarios
                                  where
                                  Usuario == usuarios.NombreUsuario && pass == usuarios.Llave
                                  select new
                {
                    NombreUsuario = usuarios.NombreUsuario,
                    Almacen = usuarios.Almacen
                }).FirstOrDefault();
                if (usuario != null)
                {
                    Session["usuario"] = usuario.NombreUsuario;
                    Session["almacen"] = usuario.Almacen;


                    return(Redirect("consultas"));
                }
                else
                {
                    Response.StatusCode = (int)System.Net.HttpStatusCode.Forbidden;
                    ValueBack           = "Datos de acceso incorrectos";
                    return(Content(ValueBack, System.Net.Mime.MediaTypeNames.Text.Plain));
                }
            }
            catch (System.Data.EntityException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                ValueBack           = "Error interno, espere un momento y vuelva a intentar o contacte a su administrador del sistema";
                return(Content(ValueBack, System.Net.Mime.MediaTypeNames.Text.Plain));
            }
        }
Exemplo n.º 12
0
        public ActionResult DelUser(String usuario)
        {
            var    contexDBUser = new InventarioGammaEntities();
            String valueBack    = "";

            try
            {
                var user = new Usuario {
                    NombreUsuario = usuario
                };
                contexDBUser.Entry(user).State = System.Data.Entity.EntityState.Deleted;
                contexDBUser.SaveChanges();
                valueBack           = "200";
                Response.StatusCode = (int)System.Net.HttpStatusCode.OK;
            }
            catch (InvalidOperationException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                valueBack           = "Ocurrió un error durante registro, verifique los datos";
            }

            return(Content(valueBack));
        }
Exemplo n.º 13
0
        public ActionResult TransferenciaAlmacen(int idProducto, String Almacen, int Cantidad, String ClaveT)
        {
            String ValueBack = "";
            int    resultado = -1;


            try
            {
                var      contextoDB = new InventarioGammaEntities();
                Producto PodTrans   = new Producto();
                ///Realiza actualizacion/transferencia
                var producto = (from prod in contextoDB.Productos
                                where prod.IdProducto == idProducto &&
                                (prod.Estatus == 1 || prod.Estatus == 2)
                                select prod).FirstOrDefault();
                if (!Session["almacen"].Equals(producto.Almacen) && !Session["almacen"].Equals("Admin"))
                {
                    Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                    ValueBack           = "No pertenece al almacen, no es posible registrar producto";
                    return(Content(ValueBack, MediaTypeNames.Text.Plain));
                }
                if (!(producto.Existencia >= Cantidad))
                {
                    Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                    ValueBack           = "No hay cantidad suficiente para transferir";
                    return(Content(ValueBack, MediaTypeNames.Text.Plain));
                }
                if (producto.Almacen == Almacen)
                {
                    Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                    ValueBack           = "Ha seleccionado el mismo almacén, Debe seleccionar otro almacén de destino";
                    return(Content(ValueBack, MediaTypeNames.Text.Plain));
                }

                var productoD = (from prod in contextoDB.Productos
                                 where prod.Clave == ClaveT && prod.Almacen == Almacen &&
                                 (prod.Estatus == 1 || prod.Estatus == 2)
                                 select prod).FirstOrDefault();
                if (productoD != null)
                {
                    productoD.Existencia = productoD.Existencia + Cantidad;
                    ValueBack            = "El producto ya existía en esa sucursal, se actualizó existencia!";
                }
                else
                {
                    PodTrans.Almacen            = Almacen;
                    PodTrans.Clave              = producto.Clave;
                    PodTrans.Descripcion        = producto.Descripcion;
                    PodTrans.Estatus            = 2;
                    PodTrans.Existencia         = Cantidad;
                    PodTrans.Importe_Inventario = producto.Importe_Inventario;
                    PodTrans.Marca              = producto.Marca;
                    PodTrans.Nombre             = producto.Nombre;
                    PodTrans.Precio_Costo       = producto.Precio_Costo;
                    PodTrans.Presentacion       = producto.Presentacion;
                    PodTrans.Ubicacion          = "NA";
                    contextoDB.Productos.Add(PodTrans);
                    logger.Info("Transferencia realizada");
                    ValueBack = "Transferencia realizada!";
                }


                producto.Existencia = producto.Existencia - Cantidad;
                if (producto.Estatus == 2 && producto.Existencia == 0)
                {
                    producto.Estatus = 0;
                }


                resultado = contextoDB.SaveChanges();
                ///Crea registro de historial
                Historial hist = new Historial();
                hist.Producto          = producto.IdProducto;
                hist.Fecha_Movimiento  = DateTime.Parse(DateTime.Now.ToString("MM/dd/yyyy"));
                hist.Tipo_Movimiento   = "Transferencia entre sucursales";
                hist.Origen            = producto.Almacen;
                hist.Destino           = Almacen;
                hist.Cantidad          = 0;
                hist.Cantidad_Anterior = producto.Existencia;
                hist.Cantidad_Actual   = producto.Existencia;
                contextoDB.Historials.Add(hist);
                contextoDB.SaveChanges();
            }
            catch (System.Data.EntityException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                ValueBack           = "Ocurrió un error durante transferencia, verifique los datos y vuelva a intentarlo";
                return(Content(ValueBack, MediaTypeNames.Text.Plain));
            }
            return(Content(ValueBack));
        }
Exemplo n.º 14
0
        public ActionResult Venta(int IdProducto, int Cantidad)
        {
            String ValueBack = "";


            int resultado = -1;

            try
            {
                var      contextoDB = new InventarioGammaEntities();
                Producto PodTrans   = new Producto();
                ///Realiza actualizacion/transferencia
                var producto = (from prod in contextoDB.Productos
                                where prod.IdProducto == IdProducto &&
                                (prod.Estatus == 1 || prod.Estatus == 2)
                                select prod).FirstOrDefault();

                if (!Session["almacen"].Equals(producto.Almacen) && !Session["almacen"].Equals("Admin"))
                {
                    Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                    ValueBack           = "No pertenece al almacen, no es posible registrar producto";
                    return(Content(ValueBack, MediaTypeNames.Text.Plain));
                }

                if (!(producto.Existencia >= Cantidad))
                {
                    Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                    ValueBack           = "No hay cantidad suficiente para vender";
                    return(Content(ValueBack, MediaTypeNames.Text.Plain));
                }

                producto.Existencia = producto.Existencia - Cantidad;
                if (producto.Estatus == 2 && producto.Existencia == 0)
                {
                    producto.Estatus = 0;
                }
                resultado = contextoDB.SaveChanges();

                ValueBack = "Venta realizada!";
                ///Crea registro de historial
                Historial hist = new Historial();
                hist.Producto          = producto.IdProducto;
                hist.Fecha_Movimiento  = DateTime.Parse(DateTime.Now.ToString("MM/dd/yyyy"));
                hist.Tipo_Movimiento   = "Venta";
                hist.Origen            = producto.Almacen;
                hist.Destino           = producto.Almacen;
                hist.Cantidad          = Cantidad;
                hist.Cantidad_Anterior = producto.Existencia + Cantidad;
                hist.Cantidad_Actual   = producto.Existencia;
                contextoDB.Historials.Add(hist);
                contextoDB.SaveChanges();
            }
            catch (System.Data.EntityException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                ValueBack           = "Ocurrió un error durante la venta, verifique los datos y vuelva a intentarlo";
                return(Content(ValueBack, MediaTypeNames.Text.Plain));
            }
            return(Content(ValueBack));
        }
Exemplo n.º 15
0
        public ActionResult LoadDataTable(int sEcho, String sSearch, int iDisplayLength,
                                          int iDisplayStart, int iSortCol_0, String sSortDir_0, String Almacen, String Periodo, String InVentas)
        {
            double   totalV   = 0;
            DateTime FechaIn  = Convert.ToDateTime(Periodo.Split('-')[0].Trim());
            DateTime FechaFin = Convert.ToDateTime(Periodo.Split('-')[1].Trim());

            if (("true").Equals(InVentas))
            {
                sSearch = "Venta";
            }
            if (!("").Equals(Almacen))
            {
                sSearch = Almacen;
            }
            try
            {
                var contextoDB = new InventarioGammaEntities();
                var myList     = (from historial in contextoDB.Historials.AsEnumerable()
                                  from productos in contextoDB.Productos.AsEnumerable()
                                  where historial.Producto == productos.IdProducto &&
                                  (historial.Fecha_Movimiento > FechaIn && historial.Fecha_Movimiento < FechaFin) &&
                                  (productos.Nombre.IndexOf(sSearch, StringComparison.OrdinalIgnoreCase) >= 0 ||
                                   productos.Descripcion.IndexOf(sSearch, StringComparison.OrdinalIgnoreCase) >= 0 ||
                                   historial.Tipo_Movimiento.IndexOf(sSearch, StringComparison.OrdinalIgnoreCase) >= 0 ||
                                   historial.Fecha_Movimiento.ToString("dd/MM/yyyy").IndexOf(sSearch, StringComparison.OrdinalIgnoreCase) >= 0)
                                  select new
                {
                    Clave = productos.Clave,
                    Producto = productos.Nombre,
                    Descripcion = productos.Descripcion,
                    Fecha_Movimiento = historial.Fecha_Movimiento.ToString("dd/MM/yyyy"),
                    Tipo_Movimiento = historial.Tipo_Movimiento,
                    Origen = historial.Origen,
                    Destino = historial.Destino,
                    Cantidad = historial.Cantidad.ToString(),
                    Cantidad_Anterior = historial.Cantidad_Anterior.ToString(),
                    Cantidad_Actual = historial.Cantidad_Actual.ToString()
                }).ToList();
                if (("true").Equals(InVentas))
                {
                    var venta = (from historial in contextoDB.Historials.AsEnumerable()
                                 from productos in contextoDB.Productos.AsEnumerable()
                                 where historial.Producto == productos.IdProducto &&
                                 (historial.Fecha_Movimiento > FechaIn && historial.Fecha_Movimiento < FechaFin) &&
                                 (productos.Nombre.IndexOf(sSearch, StringComparison.OrdinalIgnoreCase) >= 0 ||
                                  productos.Descripcion.IndexOf(sSearch, StringComparison.OrdinalIgnoreCase) >= 0 ||
                                  historial.Tipo_Movimiento.IndexOf(sSearch, StringComparison.OrdinalIgnoreCase) >= 0 ||
                                  historial.Fecha_Movimiento.ToString("dd/MM/yyyy").IndexOf(sSearch, StringComparison.OrdinalIgnoreCase) >= 0)
                                 select new
                    {
                        Precio = productos.Importe_Inventario.ToString(),
                        Cantidad = historial.Cantidad.ToString()
                    }).ToList();
                    foreach (var x in venta)
                    {
                        totalV = totalV + (Convert.ToDouble(x.Cantidad) * Convert.ToDouble(x.Precio));
                    }
                }
                if (sSortDir_0.Equals("asc"))
                {
                    switch (iSortCol_0)
                    {
                    case 0:
                        myList = myList.OrderBy(x => x.Clave).ToList();
                        break;

                    case 1:
                        myList = myList.OrderBy(x => x.Producto).ToList();
                        break;

                    case 2:
                        myList = myList.OrderBy(x => x.Descripcion).ToList();
                        break;

                    case 3:
                        myList = myList.OrderBy(x => x.Fecha_Movimiento).ToList();
                        break;

                    case 4:
                        myList = myList.OrderBy(x => x.Tipo_Movimiento).ToList();
                        break;
                    }
                }
                else
                {
                    switch (iSortCol_0)
                    {
                    case 0:
                        myList = myList.OrderByDescending(x => x.Clave).ToList();
                        break;

                    case 1:
                        myList = myList.OrderByDescending(x => x.Producto).ToList();
                        break;

                    case 2:
                        myList = myList.OrderByDescending(x => x.Descripcion).ToList();
                        break;

                    case 3:
                        myList = myList.OrderByDescending(x => x.Fecha_Movimiento).ToList();
                        break;

                    case 4:
                        myList = myList.OrderByDescending(x => x.Tipo_Movimiento).ToList();
                        break;
                    }
                }
                var returnData = myList.Skip(iDisplayStart).Take(iDisplayLength).ToList();
                var result     = new
                {
                    sEcho                = sEcho,
                    Total                = totalV,
                    iTotalRecords        = myList.Count,
                    iTotalDisplayRecords = myList.Count,
                    aaData               = returnData
                };
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (System.Data.EntityException ex)
            {
                logger.Error("Error:" + ex.InnerException);
                return(Json(""));
            }
        }