Ejemplo n.º 1
0
        public ActionResult EditReceipt(DTOEditReceipt r)
        {
            if (ModelState.IsValid)
            {
                var identity = (ClaimsIdentity)User.Identity;
                var sid      = identity.Claims.Where(c => c.Type == ClaimTypes.Sid).Select(c => c.Value).SingleOrDefault();
                //var deliveryNoteCreted = false;

                var existingDeliveryNote = db.DeliveryNotes.Find(r.Id);

                //DELIVERYNOTE UPDATE
                existingDeliveryNote.DeliveryNoteDate = (DateTime)r.DeliveryNote.DeliveryNoteDate;
                existingDeliveryNote.Customer_Id      = r.DeliveryNote.Customer_Id;
                existingDeliveryNote.Number           = r.DeliveryNote.Number;
                existingDeliveryNote.Remark           = r.DeliveryNote.Remark;
                existingDeliveryNote.IsActive         = r.DeliveryNote.IsActive;
                existingDeliveryNote.ChangedBy        = Convert.ToInt32(sid);
                existingDeliveryNote.ChangedDate      = DateTime.Now;

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


                for (int x = 0; x < r.DeliveryNote.DeliveryNoteItems.Count; x++)
                {
                    //INGREDIENTMOVEMENT UPDATE
                    var currentIndex              = x;
                    var currentIngredientId       = r.DeliveryNote.DeliveryNoteItems[currentIndex].Ingredient_Id;
                    var currentWarehouseId        = r.DeliveryNote.DeliveryNoteItems[currentIndex].Warehouse_Id;
                    var currentIngredientQuantity = r.DeliveryNote.DeliveryNoteItems[currentIndex].Quantity;

                    if (r.DeliveryNote.DeliveryNoteItems[currentIndex].IngredientMovementIsActive || r.DeliveryNote.DeliveryNoteItems[currentIndex].Id == 0)
                    {
                        //HA VAN MÁR INGREDIENT MOVEMENT -- UPDATE
                        if (r.DeliveryNote.DeliveryNoteItems[currentIndex].IngredientMovement_Id != null)
                        {
                            var existingIngredientMovement =
                                db.IngredientMovements.Find(r.DeliveryNote.DeliveryNoteItems[currentIndex].IngredientMovement_Id);
                            var originalQuantity = existingIngredientMovement.Quantity;
                            //HA NEM EGYEZNEK A MENNYISÉGEK VAGY A RAKTÁR, UPDATE
                            if (
                                existingIngredientMovement.Quantity != r.DeliveryNote.DeliveryNoteItems[currentIndex].Quantity ||
                                existingIngredientMovement.Warehouse_Id != r.DeliveryNote.DeliveryNoteItems[currentIndex].Warehouse_Id
                                )
                            {
                                existingIngredientMovement.Quantity =
                                    (decimal)r.DeliveryNote.DeliveryNoteItems[currentIndex].Quantity;
                                existingIngredientMovement.Warehouse_Id = (int)r.DeliveryNote.DeliveryNoteItems[currentIndex].Warehouse_Id;
                                existingIngredientMovement.IsActive     = r.DeliveryNote.DeliveryNoteItems[currentIndex]
                                                                          .IngredientMovementIsActive;
                                existingIngredientMovement.ChangedBy       = Convert.ToInt32(sid);
                                existingIngredientMovement.ChangedDate     = DateTime.Now;
                                db.Entry(existingIngredientMovement).State = EntityState.Modified;

                                var quantityDifference = originalQuantity -
                                                         (decimal)r.DeliveryNote.DeliveryNoteItems[currentIndex].Quantity;

                                //HA VAN MENNYISÉG VÁLTOZÁS, INGREDIENTSTOCK MÓDOSÍTÁSA
                                if (quantityDifference != 0)
                                {
                                    var currentIngredientStock = db.CurrentIngredientStocks.SingleOrDefault(c => c.Ingredient_Id == currentIngredientId && c.Warehouse_Id == currentWarehouseId);
                                    currentIngredientStock.Quantity        = currentIngredientStock.Quantity - quantityDifference;
                                    currentIngredientStock.ChangedBy       = Convert.ToInt32(sid);
                                    currentIngredientStock.ChangedDate     = DateTime.Now;
                                    db.Entry(currentIngredientStock).State = EntityState.Modified;
                                }
                            }
                        }
                        //HA MÉG NINCS INGREDIENT MOVEMENT -- CREATE
                        else
                        {
                            var ingredientMovement = new IngredientMovement
                            {
                                Ingredient_Id   = (int)r.DeliveryNote.DeliveryNoteItems[currentIndex].Ingredient_Id,
                                MovementType_Id = db.MovementTypes.SingleOrDefault(c => c.MovementKey == "receipt").Id,
                                Warehouse_Id    = (int)r.DeliveryNote.DeliveryNoteItems[currentIndex].Warehouse_Id,
                                Quantity        = (decimal)r.DeliveryNote.DeliveryNoteItems[currentIndex].Quantity,
                                Remark          = r.DeliveryNote.Remark,
                                IsActive        = true,
                                CreatedDate     = DateTime.Now,
                                CreatedBy       = Convert.ToInt32(sid)
                            };
                            db.IngredientMovements.Add(ingredientMovement);

                            //CURRENTINGREDIENTSTOCK MÓDOSÍTÁSA
                            var ingredientexists = db.CurrentIngredientStocks.Where(i => i.Ingredient_Id == currentIngredientId);
                            //HA NINCS AZ ALAPANYAGBÓL, HOZZÁADJUK
                            if (!ingredientexists.Any())
                            {
                                db.CurrentIngredientStocks.Add(new CurrentIngredientStock
                                {
                                    CreatedDate   = DateTime.Now,
                                    CreatedBy     = Convert.ToInt32(sid),
                                    IsActive      = true,
                                    Ingredient_Id = (int)r.DeliveryNote.DeliveryNoteItems[currentIndex].Ingredient_Id,
                                    Warehouse_Id  = (int)r.DeliveryNote.DeliveryNoteItems[currentIndex].Warehouse_Id,
                                    Quantity      = (decimal)r.DeliveryNote.DeliveryNoteItems[currentIndex].Quantity,
                                });
                            }
                            //HA VAN AZ ALAPANYAGBÓL, UPDATE
                            else
                            {
                                var ingredienttoupdate         = db.CurrentIngredientStocks.First(i => i.Ingredient_Id == currentIngredientId);
                                var originalingredientquantity = db.CurrentIngredientStocks.First(i => i.Ingredient_Id == currentIngredientId).Quantity;
                                ingredienttoupdate.Quantity        = (decimal)(originalingredientquantity + currentIngredientQuantity);
                                ingredienttoupdate.ChangedDate     = DateTime.Now;
                                ingredienttoupdate.ChangedBy       = Convert.ToInt32(sid);
                                db.Entry(ingredienttoupdate).State = EntityState.Modified;
                            }

                            //SZÁLLÍTÓLEVÉL TÉTELEK HOZZÁADÁSA
                            var existingDeliveryNoteId = r.DeliveryNote.Id;
                            var deliveryNoteItem       = new DeliveryNoteItem
                            {
                                DeliveryNote_Id    = existingDeliveryNoteId,
                                IngredientMovement = ingredientMovement
                            };
                            db.DeliveryNoteItems.Add(deliveryNoteItem);
                        }
                    }
                    else
                    {
                        //HA TÖRÖLTEK SORT A SZÁLLÍTÓLEVÉLRŐL

                        //DELIVERYNOTEITEM TÖRLÉSE
                        var deliveryNoteItemToDelete     = db.DeliveryNoteItems.Find(r.DeliveryNote.DeliveryNoteItems[currentIndex].Id);
                        var affectedIngredientMovementId = deliveryNoteItemToDelete.IngredientMovement_Id;

                        db.Entry(deliveryNoteItemToDelete).State = EntityState.Deleted;

                        //INGREDIENTMOVEMENT ISACTIVE=0
                        var ingredientMovementToDelete = db.IngredientMovements.Find(affectedIngredientMovementId);
                        var affectedIngredientId       = ingredientMovementToDelete.Ingredient_Id;
                        ingredientMovementToDelete.IsActive    = false;
                        ingredientMovementToDelete.ChangedBy   = Convert.ToInt32(sid);
                        ingredientMovementToDelete.ChangedDate = DateTime.Now;

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

                        //CURRENTINGREDIENTSTOCK MÓDOSÍTÁSA
                        var affectedCurrentIngredientStock = db.CurrentIngredientStocks.First(c => c.Ingredient_Id == affectedIngredientId);
                        affectedCurrentIngredientStock.Quantity =
                            (decimal)(affectedCurrentIngredientStock.Quantity - r.DeliveryNote.DeliveryNoteItems[currentIndex].Quantity);
                        affectedCurrentIngredientStock.ChangedBy   = Convert.ToInt32(sid);
                        affectedCurrentIngredientStock.ChangedDate = DateTime.Now;

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

                if (db.SaveChanges() > 0)
                {
                    TempData["Operation"] = "success";
                }
                else
                {
                    TempData["Operation"] = "danger";
                }
                return(RedirectToAction("Index", "CurrentIngredientStocks"));
            }
            return(View(r));
        }
Ejemplo n.º 2
0
        public ActionResult EditReceipt(int id)
        {
            var existingDnote = db.DeliveryNotes.Find(id);

            var ret = new DTOEditReceipt()
            {
                Id = existingDnote.Id,
                MovementType_Id  = "receipt",
                MovementTypeName = "Bevételezés",
                RowId            = -1
            };

            foreach (var mt in db.MovementTypes)
            {
                ret.MovementType.Add(mt);
            }

            var dNote = new DTODeliveryNote()
            {
                Id = existingDnote.Id,
                DeliveryNoteDate = existingDnote.DeliveryNoteDate,
                Customer_Id      = existingDnote.Customer_Id,
                CustomerName     = db.Customers?.First(c => c.Id == existingDnote.Customer_Id).Name,
                Type             = existingDnote.Type,
                Number           = existingDnote.Number,
                Remark           = existingDnote.Remark,
                CreatedBy        = existingDnote.CreatedBy,
                CreatedDate      = existingDnote.CreatedDate,
                CreatedByName    = db.SystemUsers?.Find(existingDnote.CreatedBy)?.Username,
                ChangedBy        = existingDnote.ChangedBy,
                ChangedDate      = existingDnote.ChangedDate,
                ChangedByName    = db.SystemUsers?.Find(existingDnote.ChangedBy)?.Username,
            };

            foreach (var cu in db.Customers)
            {
                dNote.Customer.Add(cu);
            }

            foreach (var item in existingDnote.DeliveryNoteItems.Where(c => c.IngredientMovement.IsActive))
            {
                var im = db.IngredientMovements.First(c => c.Id == item.IngredientMovement_Id);

                var dni = new DTODeliveryNoteItem()
                {
                    Id = item.Id,
                    DeliveryNote_Id          = item.DeliveryNote_Id,
                    IngredientMovement_Id    = item.IngredientMovement_Id,
                    IngredientMovementRemark = im.Remark,
                    Ingredient_Id            = im.Ingredient_Id,
                    IngredientName           = db.Ingredients.Find(im.Ingredient_Id).Name,
                    Quantity      = im.Quantity,
                    Warehouse_Id  = im.Warehouse_Id,
                    WarehouseName = im.Warehouse.Name,
                    IngredientMovementIsActive = im.IsActive
                };
                ret.RowId++;
                foreach (var wh in db.Warehouses)
                {
                    dni.Warehouse.Add(wh);
                }
                foreach (var ing in db.Ingredients)
                {
                    dni.Ingredient.Add(ing);
                }

                dNote.DeliveryNoteItems.Add(dni);
            }
            ret.DeliveryNote = dNote;
            return(View(ret));
        }