/// <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; }
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")); }
// GET: PickingOrders/Create public ActionResult Create() { ViewBag.OrderProductId = new SelectList(orderProductRepo.GetItems(), "Id", "Id"); ViewBag.StoragePlaceId = new SelectList(storageRepo.GetItems(), "Id", "Id"); return(View()); }