Exemplo n.º 1
0
        public ActionResult Mover(int?id)
        {
            int id_producto;

            if (id != null)
            {
                try
                {
                    detalle_producto det = new detalle_producto();
                    det         = db.detalle_producto.Where(x => x.id_detalle_producto == id).SingleOrDefault();
                    id_producto = det.id_producto;
                    if (det.enexposicion == true)
                    {
                        det.enexposicion = false;
                    }
                    else
                    {
                        det.enexposicion = true;
                    }
                    string ID = Convert.ToString(id_producto);
                    db.SaveChanges();
                    return(Redirect("~/Productos/Detail/" + det.id_producto));
                }
                catch (Exception)
                {
                    throw;
                }
            }
            else
            {
                return(RedirectToAction("index"));
            }
        }
Exemplo n.º 2
0
        public JsonResult ObtenerIdProd(int id)
        {
            var detalle = new detalle_producto();

            detalle = db.detalle_producto.Where(x => x.id_detalle_producto == id).SingleOrDefault();
            int IdProducto = detalle.id_producto;

            return(Json(IdProducto, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 3
0
        public JsonResult BajarCantidad(bajar_producto bajar)
        {
            var respuesta = new ResponseModel
            {
                Respuesta      = true,
                Redirect       = "",
                Error          = "",
                ErrorAdicional = "",
                ErrorEntidad   = ""
            };
            int detalle_de_producto, detalle_stock;

            if (ModelState.IsValid == true)
            {
                //si es valido hacemos lo siguiente
                try
                {
                    if (bajar.cantidad > 0)
                    {
                        var obDetalleProd = new detalle_producto();
                        obDetalleProd = db.detalle_producto.Where(x => x.id_detalle_producto == bajar.id_detalle_producto).SingleOrDefault();

                        var    UserLogin = (usuario)Session["User"];
                        string rol       = Convert.ToString(UserLogin.rol.rol1);
                        int    idUser    = Convert.ToInt32(UserLogin.id_usuario);

                        detalle_de_producto = obDetalleProd.id_detalle_producto;
                        detalle_stock       = Convert.ToInt32(obDetalleProd.stock);

                        //baja la cantidad de la tabla de producto
                        var obtenerProd = new producto();
                        obtenerProd       = db.producto.Where(x => x.id_producto == obDetalleProd.id_producto).SingleOrDefault();
                        obtenerProd.stock = obtenerProd.stock - bajar.cantidad;
                        if (detalle_stock >= bajar.cantidad)
                        {
                            //bajemos el stock de ese detalle
                            obDetalleProd.stock = obDetalleProd.stock - Convert.ToDecimal(bajar.cantidad);

                            // var modelo = new bajar_producto();
                            bajar.fecha      = DateTime.Today;
                            bajar.id_usuario = idUser;

                            //añadimos a la base de datos todos los registro que vienen del objeto bajar
                            db.bajar_producto.Add(bajar);

                            db.SaveChanges();
                        }
                        else
                        {
                            //denegamos
                            respuesta.Respuesta = false;
                            respuesta.Error     = "La cantidad es mayor al stock del detalle que selecciono";
                        }
                    }
                    else
                    {
                        respuesta.Respuesta = false;
                        respuesta.Error     = "La cantidad no puede ser 0";
                    }
                }
                //catch (Exception)
                //{
                //    respuesta.Respuesta = false;
                //    respuesta.Error = "Ocurrio un erro al guardar";

                //    throw;
                //}
                catch (DbEntityValidationException ex)
                {
                    List <string> errorMessages = new List <string>();
                    //((System.Data.Entity.Validation.DbEntityValidationException)$dbEx).EntityValidationErrors;

                    foreach (DbEntityValidationResult validationResult in ex.EntityValidationErrors)
                    {
                        string entityName = validationResult.Entry.Entity.GetType().Name;
                        foreach (DbValidationError error in validationResult.ValidationErrors)
                        {
                            errorMessages.Add(entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                        }
                    }
                    respuesta.Respuesta  = false;
                    respuesta.ListaError = errorMessages;
                }
            }
            else
            {
                respuesta.Respuesta = false;
                respuesta.Error     = "Ocurrio un error al guardar, por favor verifique los datos";
            }

            return(Json(respuesta));
        }
Exemplo n.º 4
0
        public ActionResult Anular(int?id)
        {
            ViewBag.Error = "";
            if (id != null)
            {
                venta Venta = db.venta.Find(id);
                if (Venta != null)
                {
                    try
                    {
                        db.venta.Remove(Venta);
                        //primero debemos selecionar todos los detalles de compra para luego sacar el producto a reestaurar

                        var sale = (from detalle in db.detalle_venta
                                    where detalle.id_venta == id
                                    select new
                        {
                            id_detalle = detalle.id_detalle_venta
                        }).ToArray();
                        //instancias a las clases de prodcuto detalle venta y detalle producto que es quien nos interesa
                        detalle_venta    dv = new detalle_venta();
                        detalle_producto dp = new detalle_producto();

                        foreach (var item in sale)
                        {
                            dv = db.detalle_venta.Where(x => x.id_detalle_venta == item.id_detalle).SingleOrDefault();
                            //dp = db.detalle_producto.Where(x => x.id_producto == dv.id_producto).SingleOrDefault();
                            var detProd = (from table in db.detalle_producto
                                           where table.id_producto == dv.id_producto && table.stock < (table.numero_caja * table.undxcajas)
                                           select new
                            {
                                id_detalle_producto = table.id_detalle_producto               //ya obtuvimos los de detalle con stock y activos, para luegos restarlos
                            }).OrderByDescending(x => x.id_detalle_producto).ToArray();

                            int cantTemp = dv.cantidad; int stockAct, diferencia;
                            foreach (var d in detProd)
                            {
                                var detalle_productoreestar = db.detalle_producto.Where(x => x.id_detalle_producto == d.id_detalle_producto).SingleOrDefault();
                                stockAct = Convert.ToInt32(detalle_productoreestar.stock);
                                int stockLimit = Convert.ToInt32(detalle_productoreestar.numero_caja) * Convert.ToInt32(detalle_productoreestar.undxcajas);
                                diferencia = stockLimit - stockAct;
                                if (cantTemp == 0)
                                {
                                    break;
                                }
                                else
                                {
                                    if (cantTemp <= diferencia)
                                    {
                                        detalle_productoreestar.stock = detalle_productoreestar.stock + cantTemp;
                                        cantTemp = 0;
                                        //quiere decir de lo la cantidad alcanza en ese registro
                                        //if (diferencia!=0)//por que si diferencia es igual a 0 quiere decir que ese registro ya esta a tope
                                        //{
                                        //}
                                    }
                                    else
                                    {
                                        detalle_productoreestar.stock = detalle_productoreestar.stock + diferencia;
                                        cantTemp = cantTemp - diferencia;
                                    }
                                }
                            }
                        }
                        db.SaveChanges();
                    }
                    catch (Exception)
                    {
                        ViewBag.Error = "No se pudo eliminar la venta";
                        throw;
                    }
                }
                else
                {
                    //no se encontro la venta para elimnar
                }
            }
            else
            {
                //no se encontro la venta
            }

            return(RedirectToAction("index"));
        }
Exemplo n.º 5
0
        public JsonResult Create(int id_cliente, decimal subtotal, detalle_venta[] detalle)
        {
            ResponseModel result = new ResponseModel();

            result.Respuesta = false;
            detalle_producto detProducto = new detalle_producto();

            //string result = "Error! No se pudo guardar!";
            if (id_cliente != 0 && id_cliente >= 0 && subtotal != 0)
            {
                DateTime fecha_    = DateTime.Now;
                var      UserLogin = (usuario)Session["User"];
                int      idUser    = Convert.ToInt32(UserLogin.id_usuario);
                try
                {
                    var SaveVenta = new venta
                    {
                        id_usuario = idUser,
                        fecha      = fecha_,
                        total      = subtotal,
                        iva        = 0,
                        descuento  = 0,
                        id_cliente = id_cliente,
                        id_estado  = 3,
                    };
                    db.venta.Add(SaveVenta);

                    foreach (var item in detalle)
                    {
                        var Detalle = new detalle_venta
                        {
                            id_producto = item.id_producto,
                            cantidad    = item.cantidad,
                            precio      = item.precio,
                            subtotal    = item.cantidad * item.precio,
                            iva         = 0,
                            descuento   = 0
                        };
                        db.detalle_venta.Add(Detalle);
                        //debemos de bajar el stockdel detalle de producto correspondiente
                        //detProducto = db.detalle_producto.Where(x => x.id_producto == item.id_producto && x.estado==true && x.id_detalle_producto.min).SingleOrDefault();
                        var detProd = (from table in db.detalle_producto
                                       where table.id_producto == item.id_producto && table.stock != 0
                                       select new
                        {
                            id_detalle_producto = table.id_detalle_producto            //ya obtuvimos los de detalle con stock y activos, para luegos restarlos
                        }).ToArray();
                        int stockAct, comprobar = 0, reestante;
                        int CanTemp = item.cantidad;
                        ///vamos a ver cuanto tiene el primer registro con stock activo
                        ///var dp1= db.detalle_producto.Where(x=>x.id_detalle_producto==detProd[0]).
                        foreach (var d in detProd)
                        {
                            var detalle_productoreestar = db.detalle_producto.Where(x => x.id_detalle_producto == d.id_detalle_producto).SingleOrDefault();
                            stockAct = Convert.ToInt32(detalle_productoreestar.stock);
                            if (CanTemp == 0)
                            {
                                comprobar = 1;
                                break;
                            }
                            else
                            {//segui iterando
                                if (CanTemp <= stockAct)
                                {
                                    detalle_productoreestar.stock = detalle_productoreestar.stock - CanTemp;
                                    CanTemp = CanTemp - CanTemp;
                                }
                                else//quiere decir que la cantidad es mayor, para que luego itere al siguiente registro de detalleproducto
                                {
                                    CanTemp = CanTemp - stockAct;
                                    detalle_productoreestar.stock = 0;
                                }
                            }
                        }
                    }
                    db.SaveChanges();
                    result.Respuesta = true;
                    result.Error     = "Venta guardada con exito!";
                }
                catch (Exception)
                {
                    throw;
                    //result.Error = "La Venta no se pudo guardar.";
                }
            }
            else
            {
                result.Respuesta = false;
                result.Error     = "No se pudo guardar la venta";
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 6
0
        public ActionResult Anular(int?id)
        {
            if (id != null)
            {
                int comprobacion = 0;
                //seleccionamos los id del detalle de compra para darle de baja,posteriormente
                var shop = (from detalle in db.detalle_compra
                            where detalle.id_compra == id
                            select new
                {
                    id_detalle = detalle.id_detalle_compra
                }).ToArray();
                detalle_compra   dc = new detalle_compra();
                detalle_producto dp = new detalle_producto();
                int can_dc, can_dp;
                //solo para de baja a la compra pero no sirve de nada  porque por que al final lo elimino
                compra compra = db.compra.Where(x => x.id_compra == id).SingleOrDefault();
                compra.id_estado = 2;//doy de baja la compra
                foreach (var item in shop)
                {
                    dc     = db.detalle_compra.Where(x => x.id_compra == id && x.id_detalle_compra == item.id_detalle).SingleOrDefault();
                    dp     = db.detalle_producto.Where(x => x.id_compra == id && x.id_detalle_compra == item.id_detalle).SingleOrDefault();
                    can_dc = Convert.ToInt32(dc.total_und);
                    can_dp = Convert.ToInt32(dp.stock);
                    if (can_dc == can_dp)
                    {
                        //elimina la compra, pero si no son iguales entonnces quiere decir que ya se ha empezado a utilizar esa compra y no se puede eliminar por que causaria un conflito
                        var prod = new producto();
                        prod       = db.producto.Where(x => x.id_producto == dc.id_producto).SingleOrDefault(); ///seleciono el prod del detalle de compra
                        dp.estado  = false;                                                                     //pongo en falso el estado de detalle de producto
                        dc.estado  = false;                                                                     //pongo en falso el detalle de compra
                        prod.stock = prod.stock - can_dc;                                                       //resto la cantidad que se compro del stock que esta en producto

                        //db.Entry(dp).State = EntityState.Modified;
                        db.detalle_producto.Remove(dp);
                        db.detalle_compra.Remove(dc);
                        db.Entry(prod).State = EntityState.Modified;
                    }
                    else
                    {
                        comprobacion = 1;
                        break;
                    }
                }
                if (comprobacion == 0)
                {
                    db.compra.Remove(compra);
                    db.SaveChanges();
                    //guarda los cambios,,,     sino no guardes nada y manda un mensaje al usuario
                }
                else
                {
                    ViewBag.Error = "No se puedo anular la venta,por que ya se han empezado a vender";//aqui tendria que ir el viewbag para mandar el erro al usuario de que no se pudo anular esa compra
                }
            }
            else
            {
                ViewBag.Error = "No hay compra para anular";
                //no hay compra para eliminar
            }
            return(RedirectToAction("index"));
        }