public ActionResult CreateAdjustmentVoucher(string voucherId) { List <AdjustmentVoucherDetailsDTO> detailsList = new List <AdjustmentVoucherDetailsDTO>(); if (voucherId != null) { AdjustmentVoucherEF voucher = stockService.FindAdjustmentVoucherById(voucherId); var baseDetailsList = stockService.FindAdjustmentDetailsById(voucherId); foreach (var d in baseDetailsList) { AdjustmentVoucherDetailsDTO toAdd = new AdjustmentVoucherDetailsDTO(); toAdd.ItemCode = d.ItemCode; toAdd.Quantity = d.Quantity; toAdd.Reason = d.Reason; toAdd.Description = d.Stock.Description; toAdd.Remove = false; detailsList.Add(toAdd); } detailsList = stockService.GetPricesForVoucherDetails(detailsList); ViewData["voucher"] = voucher; } List <StockEF> itemList = stockService.FindAllStocks().OrderBy(x => x.ItemCode).ToList(); ViewData["itemList"] = itemList; return(View(detailsList)); }
public string SaveAdjustmentVoucherAndDetails(StaffEF requester, AdjustmentVoucherEF voucher, List <AdjustmentVoucherDetailsDTO> detailsList, string approvalLevel) { var existing = stockEFF.FindAdjustmentVoucherById(voucher.VoucherId); if (existing == null) { int year = DateTime.Now.Year; string prefix = "VO/" + year + "/"; int num = stockEFF.FindLastAdjustmentVoucher(prefix) + 1; voucher.VoucherId = prefix + num; long unixTimestamp = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; voucher.DateIssued = unixTimestamp; voucher.RequesterId = requester.StaffId; if (approvalLevel == "Manager") { voucher.Status = "Pending Manager Approval"; } else if (approvalLevel == "Supervisor") { voucher.Status = "Pending Approval"; } stockEFF.AddNewAdjustmentVoucherAndDetails(voucher, detailsList); //return stockEFF.AddNewAdjustmentVoucherAndDetails(voucher, detailsList); } else { stockEFF.FindAndReplaceAdjustmentVoucherDetails(voucher.VoucherId, detailsList); } //return false; return(voucher.VoucherId); }
public ActionResult ViewAdjustmentDetails(string voucherId, string choice) { AdjustmentVoucherEF voucher = stockService.FindAdjustmentVoucherById(voucherId); List <AdjustmentVoucherDetailsEF> voucherDetailsList = stockService.FindAdjustmentDetailsById(voucherId); List <AdjustmentVoucherDetailsDTO> convertedList = stockService.ConvertAdjVoucherDetailsToDTO(voucherDetailsList); StaffEF staff = staffService.GetStaff(); bool needsManagerAuthority = stockService.VoucherExceedsSetValue(voucherDetailsList); ViewData["needsManagerAuthority"] = needsManagerAuthority; ViewData["adjustmentVoucher"] = voucher; ViewData["voucherDetailsList"] = convertedList; ViewData["staffRole"] = staff.Role.Description; ViewData["staffId"] = staff.StaffId; if (choice != null && (voucher.Status == "Pending Approval" || voucher.Status == "Pending Manager Approval")) { if (choice == "Edit") { return(RedirectToAction("CreateAdjustmentVoucher", "ManageAdjustmentVoucher", new { voucherId = voucherId })); } if (choice == "Approve" || choice == "Reject") { stockService.UpdateAdjustmentVoucherStatus(staff, voucherId, choice); SendEmailToStaffOnDecision(voucher.Requester, voucher); } } return(View()); }
private void SendEmailToStaffOnDecision(StaffEF staff, AdjustmentVoucherEF voucher) { string email = staff.Email; Email.SendEmail(email, "Adjustment Voucher #" + voucher.VoucherId + " : has been " + voucher.Status.ToLower() + ".", "Adjustment Voucher #" + voucher.VoucherId + " has been " + voucher.Status.ToLower() + " by " + voucher.Approver.Name + "."); }
public bool UpdateAdjustmentVoucher(AdjustmentVoucherEF voucher) { var existingRecord = context.AdjustmentVouchers.Find(voucher.VoucherId); if (existingRecord != null) { context.Entry(existingRecord).CurrentValues.SetValues(voucher); context.SaveChanges(); return(true); } return(false); }
public bool UpdateAdjustmentVoucherStatus(StaffEF decisionMaker, string voucherId, string status) { AdjustmentVoucherEF voucher = FindAdjustmentVoucherById(voucherId); if (status == "Approve") { voucher.Status = "Approved"; voucher.ApproverId = decisionMaker.StaffId; //change status to Approved, update the stock card stockEFF.UpdateAdjustmentVoucher(voucher); LogTransactionsForAdjustmentVoucher(voucherId); return(true); } if (status == "Reject") { voucher.Status = "Rejected"; voucher.ApproverId = decisionMaker.StaffId; stockEFF.UpdateAdjustmentVoucher(voucher); } return(false); }
public bool AddNewAdjustmentVoucherAndDetails(AdjustmentVoucherEF voucher, List <AdjustmentVoucherDetailsDTO> voucherDetailsList) { var existingRecord = context.AdjustmentVouchers.Find(voucher.VoucherId); if (existingRecord == null) { context.AdjustmentVouchers.Add(voucher); foreach (AdjustmentVoucherDetailsDTO newItem in voucherDetailsList) { AdjustmentVoucherDetailsEF d = new AdjustmentVoucherDetailsEF(); d.ItemCode = newItem.ItemCode; d.Quantity = newItem.Quantity; d.Reason = newItem.Reason; d.VoucherId = voucher.VoucherId; context.AdjustmentVouchersDetails.Add(d); } context.SaveChanges(); return(true); } return(false); }
public ActionResult CreateAdjustmentVoucher(string itemToAdd, string removalItem, string choice, string voucherId, List <AdjustmentVoucherDetailsDTO> detailsList) { List <StockEF> itemList = stockService.FindAllStocks().OrderBy(x => x.ItemCode).ToList(); ViewData["itemList"] = itemList; AdjustmentVoucherEF voucher = new AdjustmentVoucherEF(); if (voucherId == null) { voucher = new AdjustmentVoucherEF(); } else { voucher = stockService.FindAdjustmentVoucherById(voucherId); } ViewData["voucher"] = voucher; if (detailsList == null) { detailsList = new List <AdjustmentVoucherDetailsDTO>(); } if (choice == "Add Item") { StockEF item = new StockEF(); bool isValid = false; string description = ""; //check if in the existing stock foreach (var v in itemList) { if (v.ItemCode == itemToAdd) { description = v.Description; isValid = true; } } if (isValid) { AdjustmentVoucherDetailsDTO newVoucherDetails = new AdjustmentVoucherDetailsDTO(); newVoucherDetails.ItemCode = itemToAdd; newVoucherDetails.Description = description; newVoucherDetails.Quantity = 1; newVoucherDetails.Remove = false; detailsList.Add(newVoucherDetails); } } if (choice == "Remove" && detailsList.Count > 0) { for (int i = 0; i < detailsList.Count; i++) { if (detailsList[i].Remove == true) { detailsList.RemoveAt(i); i--; } } } if (choice == "Submit") { StaffEF requester = staffService.GetStaff(); string newId = ""; List <AdjustmentVoucherDetailsDTO> QOHValid = stockService.checkQuantityOnHand(detailsList); if (QOHValid.Count == 0) { if (stockService.VoucherExceedsSetValue(detailsList)) { newId = stockService.SaveAdjustmentVoucherAndDetails(requester, voucher, detailsList, "Manager"); Debug.Print("Pending appr sent to manager email"); SendEmailToAuthorityOnRequest(voucher.VoucherId, "Manager"); } else if (!stockService.VoucherExceedsSetValue(detailsList)) { newId = stockService.SaveAdjustmentVoucherAndDetails(requester, voucher, detailsList, "Supervisor"); Debug.Print("Pending appr sent to supervisor email"); SendEmailToAuthorityOnRequest(voucher.VoucherId, "Supervisor"); } return(RedirectToAction("ViewAdjustmentDetails", "ManageAdjustmentVoucher", new { voucherId = newId })); } else { ViewData["invalidItems"] = QOHValid; } } if (choice == "Cancel") { return(RedirectToAction("Index", "ManageAdjustmentVoucher", new { page = 1 })); } //get prices for each item detailsList = stockService.GetPricesForVoucherDetails(detailsList); ModelState.Clear(); return(View(detailsList)); }