public async Task <ActionResult> Create([Bind(Include = "DespachoID,NombreDocumento,NumeroDocumento,ClienteID,DireccionDespacho,BodegaID,Fecha,BodegaOrigen,Linea,Status")] Despacho despacho, FormCollection post) { despacho.Fecha = Helpers.convertirFecha(post["Fecha"]); //Se obtiene el detalle: string[] productoID = Request.Form.GetValues("producto"); string[] cantidad = Request.Form.GetValues("cantidad"); string[] precioUnitario = Request.Form.GetValues("precioUnitario"); string[] costoVigente = Request.Form.GetValues("costoVigente"); string[] totalNetoLinea = Request.Form.GetValues("totalNetoLinea"); List <DetalleDespacho> detalleDespacho = new List <DetalleDespacho>(); for (int i = 0; i < productoID.Length; i++) { DetalleDespacho nuevo = new DetalleDespacho(); nuevo.Despacho = despacho; nuevo.productos = db.productos.Find(int.Parse(productoID[i])); nuevo.Cantidad = double.Parse(cantidad[i]); nuevo.CostoVigente = double.Parse(costoVigente[i]); nuevo.PrecioUnitario = double.Parse(precioUnitario[i]); nuevo.TotalNetoLinea = double.Parse(totalNetoLinea[i]); detalleDespacho.Add(nuevo); } db.Despachos.Add(despacho); db.DetalleDespacho.AddRange(detalleDespacho); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }
public async Task <ActionResult> Edit([Bind(Include = "DespachoID,NombreDocumento,NumeroDocumento,ClienteID,DireccionDespacho,BodegaID,Fecha,BodegaOrigen,Linea,Status")] Despacho despacho, FormCollection post) { despacho.Fecha = Helpers.convertirFecha(post["Fecha"]); //Se obtiene el detalle: string[] detalleID = Request.Form.GetValues("ID"); string[] productoID = Request.Form.GetValues("producto"); string[] cantidad = Request.Form.GetValues("cantidad"); string[] precioUnitario = Request.Form.GetValues("precioUnitario"); string[] costoVigente = Request.Form.GetValues("costoVigente"); string[] totalNetoLinea = Request.Form.GetValues("totalNetoLinea"); List <DetalleDespacho> detalleDespachoNuevo = new List <DetalleDespacho>(); List <DetalleDespacho> detalleExistente = new List <DetalleDespacho>(); for (int i = 0; i < productoID.Length; i++) { if (detalleID[i].Equals("-1")) { DetalleDespacho nuevo = new DetalleDespacho(); nuevo.Despacho = despacho; nuevo.productos = db.productos.Find(int.Parse(productoID[i])); nuevo.Cantidad = double.Parse(cantidad[i]); nuevo.CostoVigente = double.Parse(costoVigente[i]); nuevo.PrecioUnitario = double.Parse(precioUnitario[i]); nuevo.TotalNetoLinea = double.Parse(totalNetoLinea[i]); detalleDespachoNuevo.Add(nuevo); } else { DetalleDespacho nuevo = db.DetalleDespacho.Find(int.Parse(detalleID[i])); nuevo.Despacho = despacho; nuevo.productos = db.productos.Find(int.Parse(productoID[i])); nuevo.Cantidad = double.Parse(cantidad[i]); nuevo.CostoVigente = double.Parse(costoVigente[i]); nuevo.PrecioUnitario = double.Parse(precioUnitario[i]); nuevo.TotalNetoLinea = double.Parse(totalNetoLinea[i]); db.Entry(nuevo).State = EntityState.Modified; detalleExistente.Add(nuevo); } } foreach (DetalleDespacho detalle in db.DetalleDespacho.Where(s => s.DespachoID == despacho.DespachoID)) { if (!detalleExistente.Any(s => s.DetalleDespachoID == detalle.DetalleDespachoID)) { db.DetalleDespacho.Remove(detalle); } } db.Despachos.Add(despacho); db.DetalleDespacho.AddRange(detalleDespachoNuevo); db.Entry(despacho).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index")); }