Esempio n. 1
0
        /// <summary>
        /// Reserverar en orderrad och lägg även till plockorder, sparas direkt i db.
        /// </summary>
        /// <param name="orderProduct"></param>
        public void ReserveItem(OrderProduct orderProduct)
        {
            // This assume that there is only 1 warehouse!!!
            int remainAmount  = orderProduct.OrderedAmount - orderProduct.PickList.Sum(x => x.ReservedAmount);
            var storagePlaces = storageRepo.GetItems().Where(x => x.ProductId == orderProduct.ProductId).ToArray();
            var pickList      = new List <PickingOrder>();
            var updatedSP     = new List <StoragePlace>();

            foreach (var storage in storagePlaces)
            {
                int reserveAmount = Math.Min(storage.AvailableAmount, remainAmount);
                if (reserveAmount > 0)
                {
                    storage.ReservedAmount += reserveAmount;
                    updatedSP.Add(storage);
                    remainAmount -= reserveAmount;
                    pickList.Add(new PickingOrder {
                        OrderProductId = orderProduct.Id, StoragePlaceId = storage.Id, ReservedAmount = reserveAmount
                    });
                }
                if (remainAmount < 1)
                {
                    break;
                }
            }
            storageRepo.UpdateItems(updatedSP);
            pickingOrderRepo.CreateItems(pickList);
            return;
        }
Esempio n. 2
0
        public ActionResult Delete(int id, Warehouse model)
        {
            if (id != model.Id)
            {
                ModelState.AddModelError("Name", "Bad request");
                return(View(model));
            }
            warehouseRepo.DeleteItem(id);
            var places = storageRepo.GetItems().Where(x => x.WarehouseId == id);

            foreach (var place in places)
            {
                storageRepo.DeleteItem(place.Id);
            }
            return(RedirectToAction("Index"));
        }
Esempio n. 3
0
 // GET: PickingOrders/Create
 public ActionResult Create()
 {
     ViewBag.OrderProductId = new SelectList(orderProductRepo.GetItems(), "Id", "Id");
     ViewBag.StoragePlaceId = new SelectList(storageRepo.GetItems(), "Id", "Id");
     return(View());
 }