public ActionResult Create() { var compraNueva = new ProductoSucursal(); ViewBag.Productos = db.Productos.OrderBy(p => p.Nombre); ViewBag.Sucursales = db.Sucursales.OrderBy(s => s.Nombre); return View(compraNueva); }
public ActionResult Create(ProductoSucursal newPS) { ViewBag.Productos = db.Productos.OrderBy(p => p.Nombre); ViewBag.Sucursales = db.Sucursales.OrderBy(s => s.Nombre); if (ModelState.IsValid) { db.ProductosSucursal.Add(newPS); db.SaveChanges(); return RedirectToAction("Index"); } return RedirectToAction("Http://www.google.com"); }
// // GET: /DefaultData/ public ActionResult Index() { Cliente Cliente = new Cliente { CalleReceptor = "Cerrada Alvaro Obregon", CodigoPostalReceptor = "72760", ColoniaReceptor = "Fraccionamiento Horizontal El Campanario", Contacto = "Mane", Email = "*****@*****.**", EstadoReceptor = "Puebla", MunicipioReceptor = "San Pedro Cholula", NoExteriorReceptor = "2", NombreCliente = "Jose Manuel Heredia Hidalgo", NombreReceptor = "Jose Manuel Heredia Hidalgo", PaisReceptor = "México", RfcReceptor = "HEHM880429QG7", Telefono = "2222474817" }; db.Clientes.Add(Cliente); Sucursal Sucursal = new Sucursal { Cuenta ="SEG0809151GA", DomicilioFiscal = "Blvd. Forjadores de Puebla #8A Colonia Manantiales. San Pedro Cholula, Puebla. CP 72760", Nombre = "Forjadores", Password ="******", RFC = "SEG0809151GA", Telefono = "22224847474" }; db.Sucursales.Add(Sucursal); TryUpdateModel(Sucursal); Categoria Cat1 = new Categoria { Nombre = "Gases" }; Categoria Cat2 = new Categoria { Nombre = "Soldadura" }; db.Categorias.Add(Cat1); db.Categorias.Add(Cat2); Unidad u1 = new Unidad { Nombre = "Kg" }; Unidad u2 = new Unidad { Nombre = "M3" }; db.Unidades.Add(u1); db.Unidades.Add(u2); TryUpdateModel(Cat1); TryUpdateModel(Cat2); TryUpdateModel(u1); TryUpdateModel(u2); Producto p1 = new Producto { Activo = true, Clave = "SEGOX2011", Descripcion = "Oxigeno Industrial de 8.5", FotoUrl = "", IdCategoria = 1, IdUnidad = 1, Nombre = "Oxigeno Industrial de 8.5", PrecioLista = 88.9M }; Producto p2 = new Producto { Activo = true, Clave = "SEGSOL2011", Descripcion = "Soldadura Grinox", FotoUrl = "", IdCategoria = 2, IdUnidad = 2, Nombre = "Soldadura Grinox", PrecioLista = 55.00M, }; db.Productos.Add(p1); db.Productos.Add(p2); db.SaveChanges(); ProductoSucursal ps1 = new ProductoSucursal { cantidad = 100.00M, IdProducto = 1, IdSucursal = 1, Producto = db.Productos.Find(1), Sucursal = db.Sucursales.Find(1) }; ProductoSucursal ps2 = new ProductoSucursal { cantidad = 100.00M, IdProducto = 2, IdSucursal = 1, Producto = db.Productos.Find(2), Sucursal = db.Sucursales.Find(1) }; db.ProductosSucursal.Add(ps1); db.ProductosSucursal.Add(ps2); db.SaveChanges(); TryUpdateModel(p1); TryUpdateModel(p2); return View(); }
public ActionResult Details(int id, int x = 1) { var orden = db.OrdenesDeCompra.Find(id); if (permisoSucursal(orden.IdSucursal) == 0) { return RedirectToAction("Error", new { Error = "No puede aceptar el traslado ya que no cuenta con los permisos necesarios" }); } //Actualizamos la orden de compra de acuerdo a la información dada foreach (var item in orden.Productos) { string label = "cantidad" + item.IdProducto; try { decimal cantidad = decimal.Parse(Request.Form[label]); item.cantidad = cantidad; } catch { ViewBag.Sucursal = db.Sucursales.Find(orden.IdSucursal); ViewBag.Proveedor = db.Proveedores.Find(orden.IdProveedor); return View(orden); } } orden.Activa = false; orden.usuario = HttpContext.User.Identity.Name; OrdenDeCompra Orden = orden; /* Relacionamos al proveedor con el producto */ foreach (ProductoOrden prod in Orden.Productos) { /*Buscamos si el producto ya había sido vendido por el proveedor*/ List<Proveedor> Prove = db.Proveedores.Where(p => p.ID == Orden.ID && p.Productos.Any(pp => pp.ID == prod.ID)).ToList(); if (Prove.Count == 0) { //Creamos insertamos un proveedor a la lista de productos var provedor = db.Proveedores.Find(Orden.IdProveedor); var prodI = db.Productos.Find(prod.IdProducto); if (provedor.Productos == null) provedor.Productos = new List<Producto>(); if (prodI.Proveedores == null) prodI.Proveedores = new List<Proveedor>(); provedor.Productos.Add(prodI); prodI.Proveedores.Add(provedor); } } db.SaveChanges(); //Ahora damos de alta los productos en el inventario foreach (var item in Orden.Productos) { try { var Prod = db.ProductosSucursal.Single(p => p.IdProducto == item.IdProducto && p.IdSucursal == Orden.IdSucursal); Prod.cantidad += item.cantidad; //Generamos el movimiento var Movimiento = new MovimientoAlmacen { Count = item.cantidad, DescripcionMovimiento = "Alta por Orden de compra número " + Orden.ID, FechaMovimiento = DateTime.Now, IdOrednCompra = Orden.ID, IdProducto = item.IdProducto, IdSucursal = Orden.IdSucursal, IdVenta = 0, OrdenDeCompra = Orden, Producto = item.Producto, TipoMovimiento = "Ingreso" }; db.MovimientosAlmacen.Add(Movimiento); db.SaveChanges(); } catch { var Prod = new ProductoSucursal { cantidad = item.cantidad, IdProducto = item.IdProducto, IdSucursal = Orden.IdSucursal, Producto = item.Producto }; db.ProductosSucursal.Add(Prod); //Generamos el movimiento var Movimiento = new MovimientoAlmacen { Count = item.cantidad, DescripcionMovimiento = "Alta por Orden de compra número " + Orden.ID, FechaMovimiento = DateTime.Now, IdOrednCompra = Orden.ID, IdProducto = item.IdProducto, IdSucursal = Orden.IdSucursal, IdVenta = 0, OrdenDeCompra = Orden, Producto = item.Producto, TipoMovimiento = "Ingreso", username = HttpContext.User.Identity.Name }; db.MovimientosAlmacen.Add(Movimiento); db.SaveChanges(); } } return RedirectToAction("Index"); }
public ActionResult InventarioSatelite() { string line; Sucursal suc = db.Sucursales.Single(s => s.Nombre.ToLower().Equals("satelite")); // Read the file and display it line by line. System.IO.StreamReader file = new System.IO.StreamReader(@"c:\INVENTARIO_SATELITE.CSV"); while ((line = file.ReadLine()) != null) { if (line.Equals("") || line == null) continue; //Parseamos la cadena string[] words = line.Split(','); string Clave = words[0]; string Nombre = words[1]; decimal existencia = decimal.Parse(words[2]); List<Producto> prods = db.Productos.Where(p => p.Clave.Trim().Equals(Clave.Trim()) || p.Nombre.Trim().Equals(Nombre.Trim())).ToList(); if (prods.Count == 0 || prods == null) continue; Producto prod = prods.First(); var producto = new ProductoSucursal { cantidad = existencia, IdProducto = prod.ID, IdSucursal = suc.ID, Producto = prod, Sucursal = suc }; db.ProductosSucursal.Add(producto); db.SaveChanges(); } file.Close(); // Suspend the screen. return RedirectToAction("Google.com"); }
public ActionResult Create(OrdenTraslado orden) { int IdSucursalOrigen = int.Parse(Request.Form["IdSucursalOrigen"]); int IdSucursalDestino = int.Parse(Request.Form["IdSucursalDestino"]); int noProductos = int.Parse(Request.Form["noProductos"]); if (IdSucursalOrigen == 0 || IdSucursalDestino == 0) { return RedirectToAction("Error", new { Error = "Debes indicar las sucursales involucradas en el traslado" }); } orden.IdSucursalDestino = IdSucursalDestino; orden.IdSucursalOrigen = IdSucursalOrigen; orden.FechaGenerada = DateTime.Now; orden.Activa = true; if (ModelState.IsValid) { //Guardamos la orden db.Traslados.Add(orden); db.SaveChanges(); int IdOrden = orden.ID; orden = db.Traslados.Find(IdOrden); int i = 0; /* * Guardamos cada uno de los productos */ orden.Productos = new List<ProductoTraslado>(); for (i = 1; i <= noProductos; i++) { string labelId = "IdProducto" + i; string labelCantidad = "CantidadProducto" + i; int idProd = int.Parse(Request.Form[labelId]); decimal cantidad = decimal.Parse(Request.Form[labelCantidad]); /*Checamos que haya en existencia para la sucursal origen el producto a trasladar*/ try { var ProdSuc = db.ProductosSucursal.Single(p => p.IdProducto == idProd && p.IdSucursal == IdSucursalOrigen); if (ProdSuc.cantidad < cantidad) { db.Traslados.Remove(orden); return RedirectToAction("Error", new { Error = "No existe la suficiente cantidad de productos para ser trasladada" }); } } catch { db.Traslados.Remove(orden); return RedirectToAction("Error", new { Error = "No hay existencia de el producto " + idProd + " - No se guardará el traslado" }); } /**/ var PO = new ProductoTraslado { cantidad = cantidad, IdProducto = idProd, Producto = db.Productos.Find(idProd), IdTraslado = IdOrden }; orden.Productos.Add(PO); db.ProductosTraslado.Add(PO); db.SaveChanges(); } return RedirectToAction("Index"); } return View(orden); } public ActionResult Details(int id) { var orden = db.Traslados.Find(id); ViewBag.SucursalOrigen = db.Sucursales.Find(orden.IdSucursalOrigen); Sucursal s = db.Sucursales.Find(orden.IdSucursalDestino); ViewBag.SucursalDestino = s ; ViewBag.Permiso = permisoSucursal(s.ID); return View(orden); } [HttpPost] public ActionResult Details(int id, int x = 1) { var orden = db.Traslados.Find(id); if (permisoSucursal(orden.IdSucursalDestino) == 0) { return RedirectToAction("Error", new { Error = "No puede aceptar el traslado ya que no cuenta con los permisos necesarios" }); } //Actualizamos la orden de traslado de acuerdo a la información dada foreach (var item in orden.Productos) { string label = "cantidad" + item.IdProducto; try { decimal cantidad = decimal.Parse(Request.Form[label]); item.cantidad = cantidad; } catch { ViewBag.SucursalOrigen = db.Sucursales.Find(orden.IdSucursalOrigen); ViewBag.SucursalOrigen = db.Sucursales.Find(orden.IdSucursalDestino); ViewBag.Proveedor = db.Proveedores.Find(orden.IdProveedor); return View(orden); } } /*Registramos como procesada la orden*/ orden.Activa = false; orden.usuario = HttpContext.User.Identity.Name; OrdenTraslado Orden = orden; db.SaveChanges(); //Ahora damos de alta los productos en el inventario de sucursal destino y de baja en la sucursal origen foreach (var item in Orden.Productos) { /*Verificamos la existencia en el origen*/ try { //Averiguamos la existencia en la sucursal de origen var existencia = db.ProductosSucursal.Single(p => p.IdProducto == item.IdProducto && p.IdSucursal == Orden.IdSucursalOrigen); if (existencia.cantidad < item.cantidad) { orden.Activa = true; db.SaveChanges(); return RedirectToAction("Error", new { Error = "No existe la suficiente cantidad de productos para ser trasladada" }); } } catch { orden.Activa = true; db.SaveChanges(); return RedirectToAction("Error", new { Error = "No existe la suficiente cantidad de productos para ser trasladada" }); } /****************************************/ try { //Esta parte de ty se ejecutara si solo hay que actualizar cantidad var ProdD = db.ProductosSucursal.Single(p => p.IdProducto == item.IdProducto && p.IdSucursal == Orden.IdSucursalDestino); ProdD.cantidad += item.cantidad; //Generamos el movimiento var Movimiento = new MovimientoAlmacen { Count = item.cantidad, DescripcionMovimiento = "Alta por Traslado desde sucursal " + Orden.IdSucursalOrigen, FechaMovimiento = DateTime.Now, IdOrednCompra = 0, IdProducto = item.IdProducto, IdSucursal = Orden.IdSucursalDestino, IdVenta = 0, Producto = item.Producto, TipoMovimiento = "Ingreso" }; db.MovimientosAlmacen.Add(Movimiento); var ProdO = db.ProductosSucursal.Single(p => p.IdProducto == item.IdProducto && p.IdSucursal == Orden.IdSucursalOrigen); ProdO.cantidad -= item.cantidad; //Generamos el movimiento Movimiento = new MovimientoAlmacen { Count = item.cantidad, DescripcionMovimiento = "Baja por Traslado hacia sucursal " + Orden.IdSucursalDestino, FechaMovimiento = DateTime.Now, IdOrednCompra = 0, IdProducto = item.IdProducto, IdSucursal = Orden.IdSucursalOrigen, IdVenta = 0, Producto = item.Producto, TipoMovimiento = "Salida" }; db.SaveChanges(); } catch { //Creamos un nuevo producto Sucursal, para darlo de alta en el inventario de la sucursal var ProdD = new ProductoSucursal { cantidad = item.cantidad, IdProducto = item.IdProducto, IdSucursal = Orden.IdSucursalDestino, Producto = db.Productos.Find(item.IdProducto), Sucursal = db.Sucursales.Find(Orden.IdSucursalDestino) }; db.ProductosSucursal.Add(ProdD); //Generamos el movimiento var Movimiento = new MovimientoAlmacen { Count = item.cantidad, DescripcionMovimiento = "Alta por Traslado desde sucursal " + Orden.IdSucursalOrigen, FechaMovimiento = DateTime.Now, IdOrednCompra = 0, IdProducto = item.IdProducto, IdSucursal = Orden.IdSucursalDestino, IdVenta = 0, Producto = item.Producto, TipoMovimiento = "Ingreso" }; db.MovimientosAlmacen.Add(Movimiento); //Damos de baja en el Origen var ProdO = db.ProductosSucursal.Single(p => p.IdProducto == item.IdProducto && p.IdSucursal == Orden.IdSucursalOrigen); ProdO.cantidad -= item.cantidad; //Generamos el movimiento Movimiento = new MovimientoAlmacen { Count = item.cantidad, DescripcionMovimiento = "Baja por Traslado hacia sucursal " + Orden.IdSucursalDestino, FechaMovimiento = DateTime.Now, IdOrednCompra = 0, IdProducto = item.IdProducto, IdSucursal = Orden.IdSucursalOrigen, IdVenta = 0, Producto = item.Producto, TipoMovimiento = "Salida" }; db.MovimientosAlmacen.Add(Movimiento); db.SaveChanges(); } } return RedirectToAction("Index"); }