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")); } }
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)); }
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)); }
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")); }
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)); }
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")); }