Esempio n. 1
0
        public async Task <ActionResult> Create(DevolucionViewModel model, IEnumerable <HttpPostedFileBase> Files)
        {
            //var f = await UploadFiles(0, Files);

            if (ModelState.IsValid)
            {
                //Save Return
                model.Devolucion.Estado        = EstadoFormatoPQRS.Open;
                model.Devolucion.FechaCreacion = DateTime.Now;
                db.Devoluciones.Add(model.Devolucion);
                await db.SaveChangesAsync();

                //Genera HASHNroTracking
                string HASHNroTracking = Fn.HASH("D" + model.Devolucion.Id);
                HASHNroTracking = "D" + model.Devolucion.Id + HASHNroTracking;
                model.Devolucion.NroTracking = HASHNroTracking.Substring(0, 10).ToUpper();

                db.Entry(model.Devolucion).State = EntityState.Modified;
                await db.SaveChangesAsync();

                //Save Items
                if (model.Items != null)
                {
                    int i = 1;
                    foreach (var item in model.Items)
                    {
                        item.DevolucionId = model.Devolucion.Id;
                        item.Id           = i++;

                        db.DevolucionItems.Add(item);
                    }

                    await db.SaveChangesAsync();
                }

                //Save Files
                if (Files != null)
                {
                    await UploadFiles(model.Devolucion.Id, Files, 1);
                }

                //Generar HASH y actualiza Formato


                AddLog("", model.Devolucion.Id, model);
                return(RedirectToAction("Index", GetReturnSearch()));
            }

            Seguridadcll seguridadcll = (Seguridadcll)Session["seguridad"];

            ViewBag.UsuarioNombre = seguridadcll.Usuario.UsuarioId + " - " + seguridadcll.Usuario.UsuarioNombre;
            ViewBag.UsuarioId     = seguridadcll.Usuario.UsuarioId;
            ViewBag.MotivoPQRS    = await db.MotivosPQRS.Where(m => m.TipoPQRS == TipoPQRS.Devolucion && m.Activo == true).ToListAsync();

            return(View(model));
        }
Esempio n. 2
0
        public async Task <ActionResult> Edit(DevolucionViewModel model, IEnumerable <HttpPostedFileBase> Files)
        {
            if (ModelState.IsValid)
            {
                //Guardar Cabecera
                db.Entry(model.Devolucion).State = EntityState.Modified;
                await db.SaveChangesAsync();

                //si es null ponerle el valor en 1


                //int idx = await db.Database.SqlQuery<int>($"SELECT ISNULL(MAX(Id),0) FROM DevolucionItem WHERE DevolucionId = {model.Devolucion.Id} ").FirstOrDefaultAsync();

                //Elimina los items Delete
                if (await DeleteItems(model.Devolucion.Id, model.ItemsDelete, true))
                {
                    int idx          = 0;
                    var currentItems = await db.DevolucionItems.Where(i => i.DevolucionId == model.Devolucion.Id).ToListAsync();

                    if (currentItems.Count > 0)
                    {
                        idx = currentItems.Select(i => i.Id).Max();
                    }
                    //Actualiza  los items actuales
                    foreach (var item in currentItems)
                    {
                        var modelItem = model.Items.Where(i => i.Id == item.Id).FirstOrDefault();
                        if (modelItem != null)
                        {
                            item.ItemId                    = modelItem.ItemId;
                            item.Cantidad                  = modelItem.Cantidad;
                            item.Precio                    = modelItem.Precio;
                            item.NroFactura                = modelItem.NroFactura;
                            item.NroGuia                   = modelItem.NroGuia;
                            item.MotivoPQRSId              = modelItem.MotivoPQRSId;
                            item.CausaPQRSId               = ((modelItem.CausaPQRSId ?? 0) != 0) ? modelItem.CausaPQRSId : null;
                            item.Estado                    = modelItem.Estado;
                            item.ComentarioAdicional       = modelItem.ComentarioAdicional;
                            item.CantidadRecibida          = modelItem.CantidadRecibida;
                            item.CantidadSubida            = modelItem.CantidadSubida;
                            item.ComentarioEstadoMercancia = modelItem.ComentarioEstadoMercancia;
                            item.DocSoporte                = modelItem.DocSoporte;
                            item.PrecioAsumido             = modelItem.PrecioAsumido;

                            db.Entry(item).State = EntityState.Modified;
                        }
                    }


                    //Agregar los nuevos items
                    if (model.Items != null)
                    {
                        foreach (var item in model.Items.Where(i => i.Id == 0))
                        {
                            if (item.Id == 0)
                            {
                                item.DevolucionId = model.Devolucion.Id;
                                item.Id           = ++idx;
                                db.DevolucionItems.Add(item);
                            }
                        }
                    }

                    await db.SaveChangesAsync();



                    //Archivos
                    var currentFiles = await db.DevolucionArchivos
                                       .Where(da => da.DevolucionId == model.Devolucion.Id)
                                       .ToListAsync();


                    if (model.DevolucionArchivos != null)
                    {
                        var FilesId = model.DevolucionArchivos.Select(a => a.Order).ToArray();


                        var itemsToDelete = currentFiles.Where(a => !FilesId.Contains(a.Order)).ToList();

                        if (itemsToDelete.Count > 0)
                        {
                            db.DevolucionArchivos.RemoveRange(itemsToDelete);
                            await db.SaveChangesAsync();
                        }
                    }
                    else
                    {
                        var itemsToDelete = currentFiles.ToList();

                        if (itemsToDelete.Count > 0)
                        {
                            db.DevolucionArchivos.RemoveRange(itemsToDelete);
                            await db.SaveChangesAsync();
                        }
                    }


                    //Save Files
                    int order = 1;
                    if (currentFiles.Count > 0)
                    {
                        order = currentFiles.Select(i => i.Order).Max() + 1;
                    }

                    if (Files != null)
                    {
                        await UploadFiles(model.Devolucion.Id, Files, order);
                    }



                    AddLog("", model.Devolucion.Id, model);
                    return(RedirectToAction("Index", GetReturnSearch()));
                }
                else
                {
                    ModelState.AddModelError("", "Error Deleting Detail (DevolucionItems)");
                }
            }

            return(await GetView(model.Devolucion.Id));
        }