Example #1
0
        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"));
        }
Example #2
0
        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"));
        }