Exemplo n.º 1
0
        public int FindDisbursedQuantityByItemCodeAndTimePeriod(string itemCode, long startMonth, long endMonth)
        {
            int itemCount = -1;

            List <StationeryDisbursementEF> disbursedList = context.StationeryDisbursements
                                                            .Where(a => a.DateDisbursed >= startMonth && a.DateDisbursed <= endMonth)
                                                            .ToList <StationeryDisbursementEF>();

            if (disbursedList.Count > 0)
            {
                int disbursedQty = 0;

                foreach (StationeryDisbursementEF disbursement in disbursedList)
                {
                    StationeryDisbursementDetailsEF disbursedDetails = context.StationeryDisbursementDetails
                                                                       .Where(a => a.DisbursementId == disbursement.DisbursementId && a.ItemCode == itemCode)
                                                                       .FirstOrDefault();

                    if (disbursedDetails != null)
                    {
                        disbursedQty += disbursedDetails.DisbursedQuantity;
                    }
                }

                if (disbursedQty > 0)
                {
                    itemCount = disbursedQty;
                }
            }

            return(itemCount);
        }
Exemplo n.º 2
0
        public void SaveDisbursementDetails(StationeryDisbursementDetailsEF details)
        {
            var existingDisbursementDetails = context.StationeryDisbursementDetails.Find(details.DisbursementDetailsId);

            if (existingDisbursementDetails != null)
            {
                context.Entry(existingDisbursementDetails).CurrentValues.SetValues(details);
                context.SaveChanges();
            }
        }
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
0
        public void UpdateRetrievedQuantities(int retrievalId)
        {
            // get list of request details with status = processed
            List <StationeryRequestDetailsEF> processedRequests = rndEFF.FindAllRequestDetailsByStatus("Processed");
            // group them by department and itemcode
            var reqs = from r in processedRequests
                       group r by new
            {
                r.Request.Staff.DepartmentCode,
                r.ItemCode
            }
            into grp
                select new
            {
                grp.Key.DepartmentCode,
                grp.Key.ItemCode,
                RetrievedQuantity = grp.Sum(r => r.RetrievedQuantity)
            };

            // update disbursement status to Retrieved
            List <StationeryDisbursementEF>        disbursements       = rndEFF.FindDisbursementsByRetrievalId(retrievalId);
            List <StationeryDisbursementDetailsEF> disbursementDetails = rndEFF.FindDisbursementDetailsByRetrievalId(retrievalId);

            foreach (StationeryDisbursementEF disburse in disbursements)
            {
                //get sum
                var sum = reqs.Where(x => x.DepartmentCode == disburse.DepartmentCode).Sum(x => x.RetrievedQuantity);
                if (sum == 0)
                {
                    // nothing to disburse
                    disburse.Status          = "Cancelled";
                    disburse.CollectionRepId = disburse.Department.DepartmentRepresentativeId;
                    rndEFF.SaveDisbursement(disburse);
                    // update the request details
                    List <StationeryRequestDetailsEF> requests = rndEFF.FindAllProcessedRequestDetailsByDepartmentCode("Processed", disburse.DepartmentCode);
                    foreach (StationeryRequestDetailsEF r in requests)
                    {
                        r.FulfilmentStatus  = "Outstanding";
                        r.RetrievedQuantity = null;
                        rndEFF.SaveRequestDetails(r);
                    }
                }
                else
                {
                    disburse.Status          = "Retrieved";
                    disburse.CollectionRepId = disburse.Department.DepartmentRepresentativeId;
                    rndEFF.SaveDisbursement(disburse);
                }
            }

            // insert retrieved quantity into disbursement details
            foreach (var req in reqs)
            {
                // use departmentCode to find disbursementId
                int disbursementId = disbursements.SingleOrDefault(x => x.DepartmentCode == req.DepartmentCode).DisbursementId;
                // use disbursementId, itemCode to find the disbursement details
                StationeryDisbursementDetailsEF d = disbursementDetails.SingleOrDefault(y => y.DisbursementId == disbursementId && y.ItemCode == req.ItemCode);
                // update the disbursement retrieved quantity
                d.RetrievedQuantity = (int)req.RetrievedQuantity;
                rndEFF.SaveDisbursementDetails(d);
            }
        }
Exemplo n.º 5
0
 public void CreateDisbursementDetails(StationeryDisbursementDetailsEF details)
 {
     rndEFF.AddToDisbursementDetails(details);
 }
Exemplo n.º 6
0
 public void AddToDisbursementDetails(StationeryDisbursementDetailsEF details)
 {
     context.StationeryDisbursementDetails.Add(details);
     context.SaveChanges();
 }