示例#1
0
        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));
        }
示例#2
0
        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);
        }
示例#3
0
        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());
        }
示例#4
0
        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 + ".");
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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));
        }