public string CerrarPedido(string NumeroPedido, List <DetalleNotaSalida> Detalle) { //Nota de salida NotaSalida ns = new NotaSalida(); var ultimo = db.NotaSalida.OrderByDescending(x => x.NumeroSalida).Take(1).FirstOrDefault(); double numero = 1; if (ultimo != null) { numero = double.Parse(ultimo.NumeroSalida.Replace("NS-", "")) + 1; } ns.NumeroSalida = "NS-" + double.Parse(numero.ToString()).ToString("#000000"); ns.NumeroPedido = NumeroPedido; ns.FechaSalida = DateTime.Now.ToShortDateString(); //ns.idAlmacen = 1; var usuario = (LoginEntity)Session["Usuario"]; if (usuario != null) { ns.UsuarioPicking = usuario.Usuario; } db.NotaSalida.Add(ns); //Detalle Nota de salida List <DetalleNotaSalida> detalleSalida = new List <DetalleNotaSalida>(); DetalleNotaSalida objDetalle; //Kardex Kardex objKardex; List <DetalleKardex> detalleKardex = new List <DetalleKardex>(); DetalleKardex dKardex; foreach (var item in Detalle) { //Detalle de la nota de salida objDetalle = new DetalleNotaSalida(); objDetalle.NumeroSalida = ns.NumeroSalida; objDetalle.IdProducto = item.IdProducto; objDetalle.Cantidad = item.Cantidad; detalleSalida.Add(objDetalle); //Detalle del kardex objKardex = db.Kardex.FirstOrDefault(x => x.IdProducto == item.IdProducto); //&& x.IdAlmacen == IdAlmacen if (objKardex != null) { dKardex = new DetalleKardex(); dKardex.NumeroKardex = objKardex.NumeroKardex; dKardex.NumeroDocumento = NumeroPedido; dKardex.TipodeMovimiento = 2; dKardex.NumeroSalida = ns.NumeroSalida; dKardex.Fecha = DateTime.Now; dKardex.Cantidad = item.Cantidad; detalleKardex.Add(dKardex); } } //Detalle de Nota de Salida db.DetalleNotaSalida.AddRange(detalleSalida); //Kardex db.DetalleKardex.AddRange(detalleKardex); //Actualizamos el estado del pedido var pedido = db.Pedido.Find(NumeroPedido); if (pedido != null) { pedido.Estado = 3; //Atendido } db.SaveChanges(); return(ns.NumeroSalida); }
public string GuardarNota(NotaIngreso nota) { if (nota.NumeroNotaIngreso == null) { var ultimo = db.NotaIngreso.OrderByDescending(x => x.NumeroNotaIngreso).Take(1).FirstOrDefault(); double numero = 1; if (ultimo != null) { numero = double.Parse(ultimo.NumeroNotaIngreso.Replace("NI-", "")) + 1; } nota.NumeroNotaIngreso = "NI-" + double.Parse(numero.ToString()).ToString("#000000"); db.NotaIngreso.Add(nota); //Agregamos un movimiento al Kardex Kardex objKardex; List <DetalleKardex> detalleKardex = new List <DetalleKardex>(); DetalleKardex dKardex; foreach (var item in nota.DetalleNotaIngreso) { //Detalle del kardex objKardex = db.Kardex.FirstOrDefault(x => x.IdProducto == item.IdProducto); //&& x.IdAlmacen == IdAlmacen if (objKardex != null) { dKardex = new DetalleKardex(); dKardex.NumeroKardex = objKardex.NumeroKardex; dKardex.NumeroDocumento = nota.NumeroOrdenCompra; dKardex.TipodeMovimiento = 1; dKardex.NumeroNotaIngreso = nota.NumeroNotaIngreso; dKardex.Fecha = DateTime.Now; dKardex.Cantidad = item.Cantidad; detalleKardex.Add(dKardex); } } db.DetalleKardex.AddRange(detalleKardex); } else { var original = db.NotaIngreso.Find(nota.NumeroNotaIngreso); if (original != null) { db.Entry(original).CurrentValues.SetValues(nota); ////Ya no actualiza los items, porque tendría que modificar el kardex también //db.DetalleNotaIngreso.RemoveRange(db.DetalleNotaIngreso.Where(x => x.NumeroNotaIngreso == nota.NumeroNotaIngreso)); //db.SaveChanges(); //DetalleNotaIngreso obj; //foreach (var item in nota.DetalleNotaIngreso) //{ // obj = new DetalleNotaIngreso(); // obj.Cantidad = item.Cantidad; // obj.IdProducto = item.IdProducto; // obj.NumeroNotaIngreso = item.NumeroNotaIngreso; // db.DetalleNotaIngreso.Add(obj); //} } } db.SaveChanges(); return(nota.NumeroNotaIngreso); }