public JsonResult ViewDisbursement(int staffId) { StationeryDisbursementEF stationeryDisbursement = rndService.FindDisbursementByStatusAndStaffId(staffId, "Disbursed"); List <StationeryDisbursementDetailsEF> stationeryDisbursementDetails = rndService.FindDisbursementDetailsByDisbursementId(stationeryDisbursement.DisbursementId); List <MobileStationeryDisbursementDetailsDTO> detailsDTO = new List <MobileStationeryDisbursementDetailsDTO>(); foreach (var item in stationeryDisbursementDetails) { detailsDTO.Add(new MobileStationeryDisbursementDetailsDTO { DisbursementDetailsId = item.DisbursementDetailsId, DisbursementId = item.DisbursementId, ItemCode = item.ItemCode, Stock = item.Stock, RequestQuantity = item.RequestQuantity, RetrievedQuantity = item.RetrievedQuantity, DisbursedQuantity = item.DisbursedQuantity } ); } MobileDisbursementItemDTO disbursementInfo = new MobileDisbursementItemDTO { DisbursementDetails = detailsDTO, DisbursementId = stationeryDisbursement.DisbursementId, ClerkId = stationeryDisbursement.StoreClerk.StaffId }; return(Json(disbursementInfo, JsonRequestBehavior.AllowGet)); }
public void SaveDisbursement(StationeryDisbursementEF disbursement) { var existingDisbursement = context.StationeryDisbursements.Find(disbursement.DisbursementId); if (existingDisbursement != null) { context.Entry(existingDisbursement).CurrentValues.SetValues(disbursement); context.SaveChanges(); } }
public void UpdateDisbursementStatus(StationeryDisbursementEF disbursement) { disbursement.Status = "Acknowledged"; if (disbursement.StoreClerk.Email != null) { string subject = "Acknowledgement for Disbursement#" + disbursement.DisbursementId; string body = disbursement.Staff.Name + " has acknowledged disbursement#" + disbursement.DisbursementId + "."; Email.SendEmail(disbursement.StoreClerk.Email, subject, body); } rndEFF.SaveDisbursement(disbursement); }
public JsonResult AcknowledgeDisbursement(int disbursementId) { StaffEF staff = staffService.GetStaff(); ViewBag.staff = staff; StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId); rndService.UpdateDisbursementStatus(disbursement); return(Json(new { status = "Delivery Acknowledged" })); }
public ActionResult ViewDisbursement(int disbursementId) { StaffEF staff = staffService.GetStaff(); ViewBag.staff = staff; StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId); List <StationeryDisbursementDetailsEF> disbursementDetails = rndService.FindDisbursementDetailsByDisbursementId(disbursementId); ViewBag.disbursement = disbursement; ViewBag.disbursementDetails = disbursementDetails; return(View()); }
public ActionResult ViewDisbursement(int disbursementId, string decision) { if (decision == "Back") { return(RedirectToAction("Index")); } StaffEF staff = staffService.GetStaff(); ViewBag.staff = staff; StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId); rndService.UpdateDisbursementStatus(disbursement); return(RedirectToAction("ViewDisbursement", new { disbursementId })); }
public ActionResult ViewDisbursement(int disbursementId) { StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId); ViewData["disbursement"] = disbursement; List <StationeryDisbursementDetailsEF> details = rndService.FindDisbursementDetailsByDisbursementId(disbursementId); // list of staff in that department List <StaffEF> deptStaff = staffService.FindAllEmployeeByDepartmentCode(disbursement.DepartmentCode); ViewData["deptStaff"] = deptStaff; StaffEF storeClerk = staffService.GetStaff(); ViewData["storeClerk"] = storeClerk; return(View(details)); }
public void GenerateDisbursementList(List <StationeryRequestDetailsEF> outstandingRequests, int retrievalId) { // Create Disbursement // Get list of distinct depts with outstanding requests DepartmentService deptService = new DepartmentService(); List <DepartmentEF> depts = deptService.FindDistinctDepartments(outstandingRequests); // Create disbursement for each department foreach (DepartmentEF dept in depts) { // get the department's outstanding request details List <StationeryRequestDetailsEF> reqByDept = outstandingRequests .Where(x => x.Request.Staff.Department == dept) .ToList <StationeryRequestDetailsEF>(); StationeryDisbursementEF disbursement = new StationeryDisbursementEF() { RetrievalId = retrievalId, DepartmentCode = dept.DepartmentCode, Status = "Processing", CollectionRepId = dept.DepartmentRepresentativeId }; CreateDisbursement(disbursement); //foreach item in the dept disbursement //create disbursement details var disbursementDetails = from d in reqByDept group d by d.ItemCode into grp select new { grp.Key, RequestQuantity = grp.Sum(d => d.RequestQuantity - d.FulfilledQuantity) }; List <StationeryDisbursementDetailsEF> detailsList = new List <StationeryDisbursementDetailsEF>(); foreach (var dis in disbursementDetails) { StationeryDisbursementDetailsEF det = new StationeryDisbursementDetailsEF() { DisbursementId = disbursement.DisbursementId, ItemCode = dis.Key, RequestQuantity = dis.RequestQuantity }; CreateDisbursementDetails(det); } } }
public void UpdateDisbursedQuantities(List <StationeryDisbursementDetailsEF> details, int disbursementId, int collectionRepId, int storeClerkId) { // update disbursement details' Disbursed Quantity foreach (StationeryDisbursementDetailsEF d in details) { rndEFF.SaveDisbursementDetails(d); } // set disbursement status to disbursed StationeryDisbursementEF disbursement = rndEFF.FindDisbursementById(disbursementId); disbursement.Status = "Disbursed"; disbursement.CollectionRepId = collectionRepId; disbursement.StoreClerkId = storeClerkId; rndEFF.SaveDisbursement(disbursement); }
//DISBURSE public void CreateDisbursement(StationeryDisbursementEF disbursement) { rndEFF.AddToDisbursement(disbursement); }
public void UpdateRequestAfterDisbursement(List <StationeryDisbursementDetailsEF> details, int disbursementId) { StationeryDisbursementEF disbursement = rndEFF.FindDisbursementById(disbursementId); foreach (StationeryDisbursementDetailsEF d in details) { // list of request in a specific disbursement by departmentCode & request details status & itemCode List <StationeryRequestDetailsEF> requests = rndEFF.FindAllRequestDetailsByStatusAndDepartmentCode("Processed", d.ItemCode, disbursement.DepartmentCode); if (d.DisbursedQuantity == 0) { foreach (StationeryRequestDetailsEF r in requests) { r.RetrievedQuantity = null; r.FulfilmentStatus = "Outstanding"; rndEFF.SaveRequestDetails(r); } } // d.disbursedQuantity != 0 else { if (d.RequestQuantity == d.DisbursedQuantity) { foreach (StationeryRequestDetailsEF r in requests) { if (r.RetrievedQuantity + r.FulfilledQuantity == r.RequestQuantity) { r.FulfilledQuantity = r.RequestQuantity; r.RetrievedQuantity = null; r.FulfilmentStatus = "Completed"; rndEFF.SaveRequestDetails(r); } else if (r.RetrievedQuantity + r.FulfilledQuantity < r.RequestQuantity) { r.FulfilledQuantity = (int)r.RetrievedQuantity + r.FulfilledQuantity; r.RetrievedQuantity = null; r.FulfilmentStatus = "Outstanding"; rndEFF.SaveRequestDetails(r); } } } //insufficient stock else if (d.RequestQuantity > d.DisbursedQuantity) { List <StationeryRequestDetailsEF> sortedRequests = requests.OrderBy(x => x.Request.RequestDate).ToList <StationeryRequestDetailsEF>(); int itemCount = d.DisbursedQuantity; foreach (StationeryRequestDetailsEF r in sortedRequests) { if (r.RetrievedQuantity <= itemCount && r.RetrievedQuantity != 0) { itemCount = itemCount - (int)r.RetrievedQuantity; if (r.RetrievedQuantity + r.FulfilledQuantity == r.RequestQuantity) { r.FulfilledQuantity = r.RequestQuantity; r.RetrievedQuantity = null; r.FulfilmentStatus = "Completed"; rndEFF.SaveRequestDetails(r); } else if (r.RetrievedQuantity + r.FulfilledQuantity < r.RequestQuantity) { r.FulfilledQuantity = r.FulfilledQuantity + (int)r.RetrievedQuantity; r.RetrievedQuantity = null; r.FulfilmentStatus = "Outstanding"; rndEFF.SaveRequestDetails(r); } } // insufficient stock for that request (outstandingQty > itemCount) else if (r.RetrievedQuantity > itemCount & itemCount != 0) { r.FulfilledQuantity = r.FulfilledQuantity + itemCount; r.RetrievedQuantity = null; r.FulfilmentStatus = "Outstanding"; rndEFF.SaveRequestDetails(r); itemCount = 0; } else if (itemCount == 0 || r.RetrievedQuantity == 0) { r.RetrievedQuantity = null; r.FulfilmentStatus = "Outstanding"; rndEFF.SaveRequestDetails(r); } } } } } }
//DISBURSEMENT public void AddToDisbursement(StationeryDisbursementEF disbursement) { context.StationeryDisbursements.Add(disbursement); context.SaveChanges(); }
// Send disbursement details to android public JsonResult GetDepartmentDisbursement(int disbursementId) { //Get Departments with active disbursements List <StationeryDisbursementEF> activeDisbursements = rndService.FindDisbursementsByStatus("Retrieved"); List <MobileActiveDepartmentDTO> activeDepartments = new List <MobileActiveDepartmentDTO>(); foreach (var item in activeDisbursements) { activeDepartments.Add( new MobileActiveDepartmentDTO { DisbursementId = item.DisbursementId, DepartmentCode = item.DepartmentCode, DepartmentName = item.Department.DepartmentName } ); } //Get items in the disbursement for the department //StationeryDisbursementDetailsEF stationeryDisbursement = rndService.FindDisbursementByDepartmentCode(departmentId); List <StationeryDisbursementDetailsEF> details = rndService.FindDisbursementDetailsByDisbursementId(disbursementId); List <MobileStationeryDisbursementDetailsDTO> detailsDTO = new List <MobileStationeryDisbursementDetailsDTO>(); foreach (var item in details) { detailsDTO.Add(new MobileStationeryDisbursementDetailsDTO { DisbursementDetailsId = item.DisbursementDetailsId, DisbursementId = item.DisbursementId, ItemCode = item.ItemCode, Stock = item.Stock, RequestQuantity = item.RequestQuantity, RetrievedQuantity = item.RetrievedQuantity, DisbursedQuantity = item.DisbursedQuantity } ); } // list of staff in that department StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId); List <StaffEF> deptStaff = staffService.FindAllEmployeeByDepartmentCode(disbursement.DepartmentCode); List <MobileStaffDTO> deptStaffDTO = new List <MobileStaffDTO>(); foreach (var staff in deptStaff) { deptStaffDTO.Add(new MobileStaffDTO { Name = staff.Name, StaffId = staff.StaffId } ); } // Create a DTO for disbursement which includes storeClerkId/Name and EmployeeId/Name MobileDisbursementItemDTO mobileDisbursementItem = new MobileDisbursementItemDTO { ActiveDepartments = activeDepartments, DisbursementDetails = detailsDTO, DisbursementId = disbursementId, DepartmentStaff = deptStaffDTO, CollectionRepId = (int)disbursement.CollectionRepId }; // send a list of disbursements return(Json(mobileDisbursementItem, JsonRequestBehavior.AllowGet)); }