Exemplo n.º 1
0
        // GET: CenterProducts
        public ActionResult Details(int id)
        {
            CenterProductStockViewModel stockvm = new CenterProductStockViewModel();

            stockvm.ProductStockViewModels = new List <ProductStockViewModel>();
            stockvm.CenterId = id;
            Usuario usuario = db.Usuarios.Find(SessionHelper.GetUser());

            ViewBag.Title   = "Stock del Centro " + usuario.Center?.Descripcion;
            ViewBag.isAdmin = usuario.Rol.IsAdmin;
            List <Product>       products       = db.Products.Where(p => p.Enable).ToList();
            List <CenterProduct> centerProducts = db.CenterProducts.Where(x => x.CenterId == id).ToList();

            foreach (var item in products)
            {
                ProductStockViewModel productStockViewModel = new ProductStockViewModel();
                CenterProduct         centerProduct         = centerProducts.Where(x => x.ProductId == item.Id).FirstOrDefault();
                if (centerProducts.Any(x => x.ProductId == item.Id))
                {
                    productStockViewModel.Stock = centerProduct.Stock;
                }
                else
                {
                    productStockViewModel.Stock = 0;
                }

                productStockViewModel.ProductId = item.Id;
                productStockViewModel.Product   = item;

                stockvm.ProductStockViewModels.Add(productStockViewModel);
            }


            return(View(stockvm));
        }
Exemplo n.º 2
0
        private void CambiarEstadoLogic(CambiarEstaudoViewModel viewModel)
        {
            Order order       = db.Orders.Where(x => x.Id == viewModel.Id).Include(x => x.OrderProducts).FirstOrDefault();
            int   oldStatudId = order.StatusId;

            order.StatusId = viewModel.StatusId;
            bool esValidoElCambio = false;

            //Verifico si el cambio de estado es correcto
            switch (oldStatudId)
            {
            case (int)StatusOrder.Solicitado:
                //El solicitado Puede pasar a Aceptado, rechazado
                esValidoElCambio = (order.StatusId == (int)StatusOrder.Aceptado || order.StatusId == (int)StatusOrder.Rechazado);
                break;

            case (int)StatusOrder.Aceptado:
                //El entregado Puede pasar a Solicitado, Entregado o rechazado
                esValidoElCambio = (order.StatusId == (int)StatusOrder.Solicitado || order.StatusId == (int)StatusOrder.Entregado || order.StatusId == (int)StatusOrder.Rechazado);
                break;

            case (int)StatusOrder.Rechazado:
                //El solicitado Puede pasar a Aceptado
                esValidoElCambio = (order.StatusId == (int)StatusOrder.Aceptado);
                break;

            case (int)StatusOrder.Entregado:
                //El solicitado Puede pasar a Aceptado
                esValidoElCambio = (order.StatusId == (int)StatusOrder.Aceptado);
                break;

            default:
                esValidoElCambio = false;
                break;
            }

            //if (esValidoElCambio == false)
            //    return Json(new { responseCode = "-10" });


            //Si el estado es Entregado hace una actualizacion automatica del stock
            if (order.StatusId == (int)StatusOrder.Entregado)
            {
                //Recupero los que productos que tiene dados de alta
                var centerProducts = db.CenterProducts.Where(x => x.CenterId == order.CenterId).ToList();

                foreach (var item in order.OrderProducts)
                {
                    var prod = centerProducts.Where(x => x.ProductId == item.ProductId).FirstOrDefault();
                    if (prod != null)
                    {
                        //Ya axiste
                        prod.Stock = prod.Stock + item.QuantityDelivered;
                        //products_upd.Add(prod);
                        db.Entry(prod).State = EntityState.Modified;
                    }
                    else
                    {
                        //Si no existe, lo impacto
                        CenterProduct centerProduct = new CenterProduct
                        {
                            CenterId  = item.Order.CenterId,
                            ProductId = item.ProductId,
                            Stock     = item.QuantityDelivered
                        };

                        db.CenterProducts.Add(centerProduct);
                    }
                }
            }


            db.Entry(order).State = EntityState.Modified;

            OrderTracking tracking = new OrderTracking
            {
                Fecha         = DateTime.Now,
                OrderId       = viewModel.Id,
                ToStatusId    = oldStatudId,
                SinceStatusId = viewModel.StatusId,
                UsuarioId     = SessionHelper.GetUser(),
                Observation   = viewModel.Observation
            };

            db.OrderTrackings.Add(tracking);

            db.SaveChanges();

            AuditHelper.Auditar("Modificacion", order.Id.ToString(), className, ModuleDescription, WindowDescription);
        }
Exemplo n.º 3
0
        public JsonResult Create(CenterProductStockViewModel order)
        {
            var responseObject = new
            {
                responseCode = -1
            };

            if (order == null)
            {
                return(Json(new { responseCode = "-10" }));
            }

            try
            {
                int centerId = order.CenterId;
                List <CenterProduct> centerProducts_add = new List <CenterProduct>();
                List <CenterProduct> centerProducts_upd = new List <CenterProduct>();
                List <CenterProduct> centerProducts_dtl = new List <CenterProduct>();
                List <CenterProduct> centerProductsDB   = db.CenterProducts.Where(c => c.CenterId == centerId).ToList();

                //Estos son los que se modificaron o agregaron
                foreach (var item in order.ProductStockViewModels)
                {
                    var centerProductoDB = centerProductsDB.Where(x => x.ProductId == item.ProductId).FirstOrDefault();

                    CenterProduct centerProduct = new CenterProduct
                    {
                        CenterId  = centerId,
                        ProductId = item.ProductId,
                        Stock     = item.Stock
                    };

                    //Si el producto ya estaba dado de alta lo modifico
                    if (centerProductoDB != null)
                    {
                        centerProduct.Id = centerProductoDB.Id;
                        centerProducts_upd.Add(centerProduct);
                    }
                    else
                    {
                        //Sino lo doy de alta
                        centerProducts_add.Add(centerProduct);
                    }
                }
                //Ahora faltan los que ya no vienieron

                List <int> tempIdList = centerProducts_upd.Select(x => x.Id).ToList();

                centerProducts_dtl = centerProductsDB.Where(q => !tempIdList.Contains(q.Id)).ToList();

                foreach (var item in centerProducts_dtl)
                {
                    CenterProduct centerProduct = new CenterProduct
                    {
                        CenterId  = centerId,
                        ProductId = item.ProductId,
                        Stock     = 0,
                        Id        = item.Id
                    };
                    centerProducts_upd.Add(centerProduct);
                }


                db.CenterProducts.AddRange(centerProducts_add);

                foreach (var model in centerProducts_upd)
                {
                    CenterProduct centerProduct = db.CenterProducts.Find(model.Id);
                    centerProduct.Stock           = model.Stock;
                    db.Entry(centerProduct).State = EntityState.Modified;
                }

                db.SaveChanges();


                AuditHelper.Auditar("Modificacion", order.CenterId.ToString(), className, ModuleDescription, WindowDescription);

                responseObject = new
                {
                    responseCode = 0
                };
            }
            catch (Exception e)
            {
                responseObject = new
                {
                    responseCode = -1
                };
            }

            return(Json(responseObject));
        }