public void CompleteDisbursementProcess(Models.MobileDTOs.DisbursementDTO disbursement) { List <Models.MobileDTOs.RequisitionDetailDTO> requisitionDetails = disbursement.RequisitionDetails; List <RequisitionDetail> unfulfilledRds = new List <RequisitionDetail>(); foreach (Models.MobileDTOs.RequisitionDetailDTO rd in requisitionDetails) { if (rd.QuantityOrdered != rd.QuantityDelivered) { int qtyDifference = (int)rd.QuantityDelivered - rd.QuantityOrdered; AdjustmentVoucher targetAdjustmentVoucher = retrievalService.retrieveNewOrAvailableAdjustmentVoucherForClerk(disbursement.DeliveredEmployeeId); retrievalService.createNewAdjustmentVoucherDetail(targetAdjustmentVoucher, rd.StationeryId, qtyDifference); if (rd.QuantityDelivered > 0) { RequisitionDetail rd1 = requisitionDetailRepo.FindById(rd.Id); rd1.QuantityDelivered = rd.QuantityDelivered; rd1.Status = RequisitionDetailStatusEnum.COLLECTED.ToString(); requisitionDetailRepo.Update(rd1); int diff = rd.QuantityOrdered - (int)rd.QuantityDelivered; int availStockForUnfulfilled = requisitionCatalogueService.GetAvailStockForUnfulfilledRd(rd.StationeryId, rd.Id); if (availStockForUnfulfilled < diff) //insufficient stock { int waitlistCount = diff - availStockForUnfulfilled; requisitionCatalogueService.createNewRequisitionDetail(waitlistCount, rd.RequisitionId, rd.StationeryId, RequisitionDetailStatusEnum.WAITLIST_APPROVED); if (availStockForUnfulfilled > 0) { requisitionCatalogueService.createNewRequisitionDetail(availStockForUnfulfilled, rd.RequisitionId, rd.StationeryId, RequisitionDetailStatusEnum.PREPARING); } } else { requisitionCatalogueService.createNewRequisitionDetail(diff, rd.RequisitionId, rd.StationeryId, RequisitionDetailStatusEnum.PREPARING); } } } else { RequisitionDetail rd1 = requisitionDetailRepo.FindById(rd.Id); rd1.QuantityDelivered = rd.QuantityDelivered; rd1.Status = RequisitionDetailStatusEnum.COLLECTED.ToString(); requisitionDetailRepo.Update(rd1); } } requisitionCatalogueService.CheckRequisitionCompletenessAfterDisbursement(disbursement.Id, disbursement); }
private void CascadeToRequisitionDetails(string action, int requisitionId) { List <RequisitionDetail> rds = (List <RequisitionDetail>)requisitionDetailRepo.FindBy(x => x.RequisitionId == requisitionId); if (action.Equals("approve")) { foreach (RequisitionDetail rd in rds) { int rdId = rd.Id; RequisitionDetail reqDet = requisitionDetailRepo.FindById(rdId); if (rd.Status.Equals(RequisitionDetailStatusEnum.RESERVED_PENDING.ToString())) { //change from reserved pending to preparing //rd.Status = RequisitionDetailStatusEnum.PREPARING.ToString(); reqDet.Status = RequisitionDetailStatusEnum.PREPARING.ToString(); requisitionDetailRepo.Update(reqDet); } else if (rd.Status.Equals(RequisitionDetailStatusEnum.WAITLIST_PENDING.ToString())) { //any stock at present for them? //int availStock = GetAvailableStockForWaitlistApprovedItems(rd.StationeryId); //change waitlist pending to waitlist approved reqDet.Status = RequisitionDetailStatusEnum.WAITLIST_APPROVED.ToString(); requisitionDetailRepo.Update(reqDet); NotifyClerkAboutAnyShortFallInWaitlistApprovedStationery(rd.StationeryId, (int)rd.Requisition.Employee.Department.CollectionPoint.EmployeeId); } else { //throw new Exception("This RD shouldnt belong to a pending Requsition!"); } } } else { //rejected foreach (RequisitionDetail rd in rds) { rd.Status = RequisitionDetailStatusEnum.REJECTED.ToString(); requisitionDetailRepo.Update(rd); } } }
private void CascadeToRequisitionDetails(string action, int requisitionId) { //get all requisitiondetails belonging to this requisition if (action.Equals("cancel")) { List <RequisitionDetail> rds = (List <RequisitionDetail>)requisitionDetailRepo.FindBy(x => x.RequisitionId == requisitionId); foreach (RequisitionDetail rd in rds) { RequisitionDetail reqDet = requisitionDetailRepo.FindById(rd.Id); reqDet.Status = RequisitionDetailStatusEnum.CANCELLED.ToString(); requisitionDetailRepo.Update(reqDet); } } }