public ActionResult ReceiveItemsByDepartment(List <DisbursementDetail> details, int id) { Dictionary <int, DisbursementDetail> dDict = DisbursementDao.GetDisbursementDetailDictByDisbursementId(id); //generate adjustment if items are missing List <AdjustmentDetail> adjustmentDetails = new List <AdjustmentDetail>(); foreach (var d in details) { DisbursementDetail disDetail = dDict[d.DisbursementDetailId]; if (disDetail.Quantity != d.Quantity && d.Quantity < disDetail.Quantity) { AdjustmentDetail adDetail = new AdjustmentDetail() { Item = new Item() { ItemId = d.Item.ItemId }, Count = disDetail.Quantity - d.Quantity }; adjustmentDetails.Add(adDetail); } } if (adjustmentDetails.Count > 0) { int userId = Convert.ToInt32(RouteData.Values["userId"]); User u = new User() { UserId = userId }; Adjustment ad = AdjustmentDao.InsertAdjustment(adjustmentDetails, u); AdjustmentDao.CalculateAdjustmentCost(ad); } Disbursement dis = DisbursementDao.DeliverDisbursement(id, details); //need to update the request such as status, delivered Qty RequestDao.UpdateRequestById(dis.Request.RequestId); return(RedirectToAction("Deliveries")); }
public ActionResult ReceiveItemsByDepartment(List <DisbursementDetail> details, int id) { Dictionary <int, DisbursementDetail> dDict = DisbursementDao.GetDisbursementDetailDictByDisbursementId(id); //generate adjustment if items are missing List <AdjustmentDetail> adjustmentDetails = new List <AdjustmentDetail>(); //if detail drop to 0 , it should be removed List <DisbursementDetail> disDetails = new List <DisbursementDetail>(); foreach (var d in details) { DisbursementDetail disDetail = dDict[d.DisbursementDetailId]; if (disDetail.Quantity != d.Quantity && d.Quantity < disDetail.Quantity) { AdjustmentDetail adDetail = new AdjustmentDetail() { Item = new Item() { ItemId = d.Item.ItemId }, Count = disDetail.Quantity - d.Quantity }; if (d.Quantity == 0) { disDetails.Add(disDetail); } adjustmentDetails.Add(adDetail); } } if (adjustmentDetails.Count > 0) { int userId = Convert.ToInt32(RouteData.Values["userId"]); User u = new User() { UserId = userId }; Adjustment ad = AdjustmentDao.InsertAdjustment(adjustmentDetails, u); AdjustmentDao.CalculateAdjustmentCost(ad); } Disbursement dis = DisbursementDao.GetDisbursement(id); int requestId = dis.Request.RequestId; dis = DisbursementDao.DeliverDisbursement(id, details); //remove disbursement detail with quantity of zero if (disDetails.Count > 0) { DisbursementDao.RemoveDisbursementDetails(disDetails); //details have been removed, need to remove disbursement if disbursement got no details //removedDisbursement = DisbursementDao.RemoveDisbursementWithoutDetails(id); } dis = DisbursementDao.GetDeliveredDisbursement(id); if (dis != null) { //need to update the request such as status, delivered Qty RequestDao.UpdateRequestById(requestId); } else { //if disbursement is removed, change disbursement status of request back to not prepared RequestDao.UpdateRequestDisbursementStatus(requestId); } return(RedirectToAction("Deliveries")); }