示例#1
0
        public void ConfirmRetrievalList(List <RetrievalListModel> retrievalListModels, string clerkID)
        {
            DateTime    dateTime    = DateTime.Now;
            Requisition retCheckReq = db.Requisitions.Find(retrievalListModels.First().requisitionID);
            string      originalRet = retCheckReq != null ? retCheckReq.retrievalId : null;

            Retrieval retrieval = new Retrieval();

            if (originalRet == null)
            {
                //Create retrieval and edit params accordingly;
                retrieval.clerkId = clerkID;
                retrieval.retrievalCreationDate = dateTime;
                retrieval.retrievalId           = "RET-" + clerkID + "-" + dateTime.ToString("yyMMddhhmmssffff");
                retrieval.status = "Confirmed";
                db.Retrievals.Add(retrieval);
            }
            else
            {
                //change retrieval status for existing retrieval;
                RetrievalListModel rlm   = retrievalListModels.Where(x => !x.requisitionID.Contains("Special")).FirstOrDefault();
                string             reqID = rlm == null ? null : rlm.requisitionID;
                string             retID = reqID == null ? null : db.Requisitions.Find(reqID).retrievalId;
                if (retID != null)
                {
                    retrieval        = db.Retrievals.Find(retID);
                    retrieval.status = "Confirmed";
                }
            }
            //Find reqs for each line and change status + remarks + assign ID
            foreach (RetrievalListModel x in retrievalListModels)
            {
                Requisition requisition = db.Requisitions.Find(x.requisitionID);

                //creates retrievalID in req
                if (requisition.status == "Retrieval Pending")
                {
                    requisition.retrievalId = retrieval.retrievalId;
                    requisition.status      = "Retrieval Confirmed";
                    requisition.remark      = requisition.remark + " , Retrieval confirmed on" + dateTime;
                }
                else
                {
                    requisition.retrievalId = retrieval.retrievalId;
                    requisition.status      = "Retrieval Confirmed";
                    requisition.remark      = "Retrieval confirmed on" + dateTime;
                }

                foreach (RequisitionDetail y in requisition.RequisitionDetails)
                {
                    if (y.remark != null)
                    {
                        if (y.remark.Contains("Special"))
                        {
                            //itemID is unique in EACH Requistion, break once found to save iteration time
                            if (y.itemId == x.itemID)
                            {
                                y.retrieveQty = x.allocateQty;
                                //only do something if User amends qty
                                if (x.adjQty != null || x.adjQty == 0)
                                {
                                    y.adjustQty   = x.adjQty;
                                    y.retrieveQty = x.adjQty;
                                    y.remark      = "Adjusted";
                                }
                                else
                                {
                                    y.adjustQty = null;
                                    y.remark    = null;
                                }
                                break;
                            }
                        }
                    }
                    else
                    {
                        //itemID is unique in EACH Requistion, break once found to save iteration time
                        if (y.itemId == x.itemID)
                        {
                            y.retrieveQty = x.allocateQty;
                            //only do something if User amends qty
                            if (x.adjQty != null || x.adjQty == 0)
                            {
                                y.adjustQty   = x.adjQty;
                                y.retrieveQty = x.adjQty;
                                y.remark      = "Adjusted";
                            }
                            else
                            {
                                y.adjustQty = null;
                                y.remark    = null;
                            }
                            break;
                        }
                    }
                }
            }

            db.SaveChanges();
        }
示例#2
0
        // [Retrieval Generation ViewModel Creation Step 2]
        // The method will create the RetrievalListModel (which creates detail lines of Retrieval List items on the View)
        public List <RetrievalListModel> RetrievalListModelGeneration(List <Requisition> reqList)
        {
            if (!reqList.Any())
            {
                return(null);
            }
            List <RetrievalListModel> retrievalListModels = new List <RetrievalListModel>();

            foreach (Requisition req in reqList)
            {
                //revisits
                if (req.RequisitionDetails.Count == 0)
                {
                    foreach (RequisitionDetail prereqdet in db.RequisitionDetails)
                    {
                        if (prereqdet.requisitionId == req.requisitionId)
                        {
                            req.RequisitionDetails.Add(prereqdet);
                        }
                    }
                }
                foreach (RequisitionDetail reqdet in req.RequisitionDetails)
                {
                    RetrievalListModel tempRetModel = new RetrievalListModel();
                    tempRetModel.requisitionID = req.requisitionId;
                    tempRetModel.approvalDate  = (DateTime)req.approvalDate;
                    tempRetModel.department    = req.departmentId;
                    if (reqdet.remark != null)
                    {
                        //Specials are treated differently - And must always be fulfilled first
                        if (reqdet.remark == "Special")
                        {
                            tempRetModel.allocateQty = reqdet.requestQty;
                            tempRetModel.reqQty      = reqdet.requestQty;
                            tempRetModel.adjQty      = reqdet.requestQty;
                            tempRetModel.IsAdjusted  = true;
                            tempRetModel.remark      = "Special Requisition";
                        }
                        //Remark will contain "Adjusted" (due to Adjustment made to adjqty) once they are saved
                        else if (reqdet.remark.Contains("Adjusted"))
                        {
                            tempRetModel.allocateQty = (int)reqdet.retrieveQty;
                            tempRetModel.reqQty      = reqdet.requestQty;
                            tempRetModel.adjQty      = reqdet.adjustQty;
                            tempRetModel.IsAdjusted  = true;
                            tempRetModel.remark      = "Adjusted";
                        }
                        else if (reqdet.remark.Contains("Fulfilled"))
                        {
                            tempRetModel.allocateQty = (int)reqdet.retrieveQty;
                            tempRetModel.reqQty      = reqdet.requestQty;
                            tempRetModel.adjQty      = reqdet.adjustQty;
                            tempRetModel.IsAdjusted  = true;
                            tempRetModel.remark      = "Final";
                        }
                    }
                    // By design, remark is null if not the above two status. Disbursed/fulfilled requisitions do not come here
                    else
                    {
                        tempRetModel.IsAdjusted  = false;
                        tempRetModel.allocateQty = reqdet.requestQty;
                        tempRetModel.reqQty      = reqdet.requestQty;
                        tempRetModel.remark      = null;
                    }
                    Inventory tempInv = db.Inventories.Where(x => x.itemId == reqdet.itemId).First();
                    tempRetModel.stockQty = tempInv.storeQuantity;
                    tempRetModel.itemID   = reqdet.itemId;
                    tempRetModel.itemName = db.Catalogues.Where(x => x.itemId == reqdet.itemId).First().description;
                    tempRetModel.itemBin  = db.Catalogues.Where(x => x.itemId == reqdet.itemId).First().bin;
                    retrievalListModels.Add(tempRetModel);
                }
            }
            return(retrievalListModels);
        }