public ActionResult Disbursements(int id)
        {
            Disbursement d = DisbursementDao.GetDisbursement(id);

            ViewData["Disbursement"] = d;
            return(View("DeliveryDetail"));
        }
コード例 #2
0
        public ActionResult GetDeliveredDisbursementsMobile()
        {
            int departmentId = Convert.ToInt32(RouteData.Values["departmentId"]);
            int userId       = Convert.ToInt32(RouteData.Values["userId"]);
            List <Disbursement> disbursements    = DisbursementDao.GetDisbursementsByDepartmentAndMonth(userId, departmentId, DateTime.Now.Month, (int)DisbursementStatus.Delivered);
            List <object>       disbursementList = new List <object>();

            foreach (Disbursement d in disbursements)
            {
                List <object> dDetailsList = new List <object>();
                foreach (var disbursementDetail in d.DisbursementDetails)
                {
                    dDetailsList.Add(new
                    {
                        DisbursementDetailId = disbursementDetail.DisbursementDetailId,
                        ItemName             = disbursementDetail.Item.Description,
                        ItemId   = disbursementDetail.Item.ItemId,
                        Quantity = disbursementDetail.Quantity
                    });
                }
                var temp = new
                {
                    DepartmentName      = d.Department.DepartmentName,
                    DisbursementId      = d.DisbursementId,
                    DisbursementDetails = dDetailsList
                };
                disbursementList.Add(temp);
            }
            return(Json(disbursementList, JsonRequestBehavior.AllowGet));
        }
コード例 #3
0
        public ActionResult GetDeliveredDisbursementDetailByIdMobile(int disbursementId)
        {
            int          departmentId = Convert.ToInt32(RouteData.Values["departmentId"]);
            Disbursement d            = DisbursementDao.GetDeliveredDisbursementById(disbursementId);

            return(Json(d, JsonRequestBehavior.AllowGet));
        }
コード例 #4
0
        public ActionResult DeliveriesMobile()
        {
            int userId = Convert.ToInt32(RouteData.Values["userId"]);
            List <Disbursement> retrievedList    = DisbursementDao.GetPreparedDisbursementsForMobile(userId);
            List <object>       disbursementList = new List <object>();

            foreach (Disbursement d in retrievedList)
            {
                List <object> dDetailsList = new List <object>();
                foreach (var disbursementDetail in d.DisbursementDetails)
                {
                    dDetailsList.Add(new
                    {
                        DisbursementDetailId = disbursementDetail.DisbursementDetailId,
                        ItemName             = disbursementDetail.Item.Description,
                        ItemId   = disbursementDetail.Item.ItemId,
                        Quantity = disbursementDetail.Quantity
                    });
                }
                var temp = new
                {
                    DisbursementId      = d.DisbursementId,
                    Representative      = d.Department.Representative.Name,
                    DepartmentName      = d.Department.DepartmentName,
                    DisbursementDetails = dDetailsList
                };
                disbursementList.Add(temp);
            }
            return(Json(disbursementList, JsonRequestBehavior.AllowGet));
        }
コード例 #5
0
        public ActionResult Retrieval()
        {
            List <RetrievalItem> items = DisbursementDao.GetAllItemsForRetrieval();

            ViewData["RetrievalItems"] = items;
            return(View());
        }
コード例 #6
0
        public async static Task SendEmailForItemsPickUp()
        {
            var        senderEmail = new MailAddress("*****@*****.**");
            List <int> deptIds     = await DisbursementDao.GetDepartmentIdWithPreparedDisbursement();

            List <User> reps = UserDao.FindRepresentativeByDepartmentIds(deptIds);



            var smtp = new SmtpClient()
            {
                Host                  = "smtp.gmail.com",
                Port                  = 587,
                EnableSsl             = true,
                DeliveryMethod        = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials           = new NetworkCredential(senderEmail.Address, "spottybottyhotty")
            };

            foreach (var u in reps)
            {
                if (u.Email != null || u.Email != "")
                {
                    var receiverEmail = new MailAddress(u.Email);
                    var msg           = new MailMessage(senderEmail, receiverEmail)
                    {
                        Subject = "Items Pick Up",
                        Body    = "The store side has prepared for disbursements. Please check it on items pick up tab."
                    };

                    smtp.Send(msg);
                }
            }
        }
        public ActionResult GetAllDisbursementByDepartment()
        {
            int departmentId = Convert.ToInt32(RouteData.Values["departmentId"]);
            List <Disbursement> disbursements = DisbursementDao.GetAllDisbursementsByDepartment(departmentId);

            ViewData["Disbursements"] = disbursements;
            return(View("DepartmentDisbursements"));
        }
        public ActionResult ApprovedDisbursements(int disbursementId)
        {
            Disbursement d = DisbursementDao.GetDisbursementDetailById(disbursementId);

            ViewData["Disbursement"] = d;

            return(View("ApprovedDisbursementDetail"));
        }
        public ActionResult GetDeliveredDisbursementDetailById(int disbursementId)
        {
            int          departmentId = Convert.ToInt32(RouteData.Values["departmentId"]);
            Disbursement d            = DisbursementDao.GetDeliveredDisbursementById(disbursementId);

            ViewData["Disbursement"] = d;
            return(View("DisbursementDetail"));
        }
        public ActionResult Deliveries()
        {
            int userId = Convert.ToInt32(RouteData.Values["userId"]);
            List <Disbursement> disbursements = DisbursementDao.GetPreparedDisbursements(userId);

            ViewData["Disbursements"] = disbursements;
            return(View("Deliveries"));
        }
        public ActionResult GetPreparedDisbursementsByDepartment()
        {
            int departmentId = Convert.ToInt32(RouteData.Values["departmentId"]);
            int userId       = Convert.ToInt32(RouteData.Values["userId"]);
            List <Disbursement> disbursements = DisbursementDao.GetPreparedDisbursements(departmentId, userId);

            ViewData["Disbursements"] = disbursements;
            return(View("PickUpDisbursements"));
        }
        public ActionResult GetDeliveredDisbursements()
        {
            int departmentId = Convert.ToInt32(RouteData.Values["departmentId"]);
            int userId       = Convert.ToInt32(RouteData.Values["userId"]);
            List <Disbursement> disbursements = DisbursementDao.GetDisbursementsByDepartmentAndMonth(userId, departmentId, DateTime.Now.Month, (int)DisbursementStatus.Delivered);

            ViewData["Disbursements"] = disbursements;
            return(View("DeliveredDisbursements"));
        }
        public ActionResult Disbursements(List <RetrievalItem> items)
        {
            List <AdjustmentDetail> adjustmentDetails = new List <AdjustmentDetail>();
            bool valid = true;

            foreach (var i in items)
            {
                if (i.AllocatedQuantity > i.ActualQuantity)
                {
                    AdjustmentDetail detail = new AdjustmentDetail()
                    {
                        Count = (i.StockQuantity - i.ActualQuantity),
                        Item  = new Item()
                        {
                            ItemId = i.ItemId
                        }
                    };

                    adjustmentDetails.Add(detail);
                }
                else if (i.AllocatedQuantity == i.ActualQuantity)
                {
                }
                else
                {
                    valid = false;
                    break;
                }
            }
            if (valid != false)
            {
                if (adjustmentDetails.Count > 0)
                {
                    int  userId = Convert.ToInt32(RouteData.Values["userId"]);
                    User u      = new User()
                    {
                        UserId = userId
                    };
                    Adjustment ad = AdjustmentDao.InsertAdjustment(adjustmentDetails, u);
                    AdjustmentDao.CalculateAdjustmentCost(ad);
                    ItemDao.UpdateStockForAdjustment(adjustmentDetails);
                }

                DisbursementDao.GenerateDisbursements(items);
                Task.Run(() => EmailUtility.SendEmailForItemsPickUp());
                return(RedirectToAction("Retrieval", "Stationery"));
            }
            else
            {
                return(RedirectToAction("Retrieval", "Stationery"));
            }
        }
 public ActionResult GenerateInvoice(int requestedDepartmentId, int month)
 {
     try
     {
         Debug.WriteLine("Department Id is " + requestedDepartmentId);
         DisbursementDao.GenerateInvoiceByDepartmentAndMonth(requestedDepartmentId, month);
         return(RedirectToAction("GenerateInvoices"));
     }
     catch (Exception e)
     {
         return(RedirectToAction("GenerateInvoices"));
     }
 }
コード例 #15
0
        public ActionResult ReceiveItemsByDepartment(List <DisbursementDetail> details, int id)
        {
            Dictionary <int, DisbursementDetail> dDict = DisbursementDao.GetDisbursementDetailDictByDisbursementId(id);

            //generate adjustment if items are missing
            List <AdjustmentDetail> adjustmentDetails = new List <AdjustmentDetail>();

            foreach (var d in details)
            {
                DisbursementDetail disDetail = dDict[d.DisbursementDetailId];
                if (disDetail.Quantity != d.Quantity && d.Quantity < disDetail.Quantity)
                {
                    AdjustmentDetail adDetail = new AdjustmentDetail()
                    {
                        Item = new Item()
                        {
                            ItemId = d.Item.ItemId
                        },
                        Count = disDetail.Quantity - d.Quantity
                    };

                    adjustmentDetails.Add(adDetail);
                }
            }

            if (adjustmentDetails.Count > 0)
            {
                int  userId = Convert.ToInt32(RouteData.Values["userId"]);
                User u      = new User()
                {
                    UserId = userId
                };
                Adjustment ad = AdjustmentDao.InsertAdjustment(adjustmentDetails, u);
                AdjustmentDao.CalculateAdjustmentCost(ad);
            }


            Disbursement dis = DisbursementDao.DeliverDisbursement(id, details);

            //need to update the request such as status, delivered Qty
            RequestDao.UpdateRequestById(dis.Request.RequestId);

            return(RedirectToAction("Deliveries"));
        }
        public ActionResult GetDisbursementListWithMonth(int requestedDepartmentId, int month)
        {
            Debug.WriteLine("Department Id is " + requestedDepartmentId + " month is " + month);
            List <Disbursement> disbursements = DisbursementDao.GetDisbursementsByDepartmentAndMonth(requestedDepartmentId, month, (int)DisbursementStatus.Approved);
            List <object>       data          = new List <object>();

            if (disbursements != null)
            {
                foreach (var d in disbursements)
                {
                    data.Add(new
                    {
                        DisbursementId = d.DisbursementId,
                        Total          = d.DisbursementDetails.Sum(dd => dd.Item.Price * dd.Quantity)
                    });
                }
            }

            return(Json(new { results = data }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult ApproveDisbursementById(int disbursementId)
        {
            int departmentId = Convert.ToInt32(RouteData.Values["departmentId"]);
            int userId       = Convert.ToInt32(RouteData.Values["userId"]);

            Department d = new Department()
            {
                DepartmentId = departmentId
            };
            User u = new User()
            {
                UserId = userId
            };

            u.Department = d;

            DisbursementDao.ApproveDisubrsementById(u, disbursementId);

            return(RedirectToAction("GetDeliveredDisbursements"));
        }
コード例 #18
0
        public bool ProcessDisbursement(int disbId, string key, int receivedBy, List <Tuple <int, int> > itemQtys)
        {
            bool result = true;
            LogicUniStoreModel dbContext = new LogicUniStoreModel();

            dbContext.Database.Connection.Open();
            using (var txn = dbContext.Database.BeginTransaction())
            {
                DisbursementDao disbDao = new DisbursementDao(dbContext);

                if (disbDao.ValidateDisbKey(disbId, key))
                {
                    disbDao.AcceptDisbursement(disbId, receivedBy);
                    disbDao.UpdateDisbusedQuantity(disbId, itemQtys);
                }
                else
                {
                    result = false;
                }
                txn.Commit();
            }
            dbContext.Database.Connection.Close();
            return(result);
        }
コード例 #19
0
        public ActionResult ReceivingMobile(List <DisbursementDetail> details)
        {
            int ddid = details[0].DisbursementDetailId;
            int id   = DisbursementDao.GetDisbursementByDetailId(ddid).DisbursementId;

            Disbursement d = DisbursementDao.GetDisbursement(id);

            foreach (var item in d.DisbursementDetails)
            {
                foreach (var detail in details)
                {
                    Console.WriteLine("Before: " + item.DisbursementDetailId + "----" + item.Quantity);
                    if (detail.DisbursementDetailId == item.DisbursementDetailId)
                    {
                        item.Quantity = detail.Quantity;
                    }
                    Console.WriteLine("After: " + item.DisbursementDetailId + "----" + item.Quantity);
                }
            }

            ReceiveItemsByDepartment(d.DisbursementDetails, d.DisbursementId);

            return(Json(details, JsonRequestBehavior.AllowGet));
        }
        public ActionResult ReceiveItemsByDepartment(List <DisbursementDetail> details, int id)
        {
            Dictionary <int, DisbursementDetail> dDict = DisbursementDao.GetDisbursementDetailDictByDisbursementId(id);

            //generate adjustment if items are missing
            List <AdjustmentDetail> adjustmentDetails = new List <AdjustmentDetail>();
            //if detail drop to 0 , it should be removed
            List <DisbursementDetail> disDetails = new List <DisbursementDetail>();

            foreach (var d in details)
            {
                DisbursementDetail disDetail = dDict[d.DisbursementDetailId];
                if (disDetail.Quantity != d.Quantity && d.Quantity < disDetail.Quantity)
                {
                    AdjustmentDetail adDetail = new AdjustmentDetail()
                    {
                        Item = new Item()
                        {
                            ItemId = d.Item.ItemId
                        },
                        Count = disDetail.Quantity - d.Quantity
                    };
                    if (d.Quantity == 0)
                    {
                        disDetails.Add(disDetail);
                    }
                    adjustmentDetails.Add(adDetail);
                }
            }

            if (adjustmentDetails.Count > 0)
            {
                int  userId = Convert.ToInt32(RouteData.Values["userId"]);
                User u      = new User()
                {
                    UserId = userId
                };
                Adjustment ad = AdjustmentDao.InsertAdjustment(adjustmentDetails, u);
                AdjustmentDao.CalculateAdjustmentCost(ad);
            }



            Disbursement dis       = DisbursementDao.GetDisbursement(id);
            int          requestId = dis.Request.RequestId;

            dis = DisbursementDao.DeliverDisbursement(id, details);

            //remove disbursement detail with quantity of zero
            if (disDetails.Count > 0)
            {
                DisbursementDao.RemoveDisbursementDetails(disDetails);
                //details have been removed, need to remove disbursement if disbursement got no details
                //removedDisbursement = DisbursementDao.RemoveDisbursementWithoutDetails(id);
            }

            dis = DisbursementDao.GetDeliveredDisbursement(id);
            if (dis != null)
            {
                //need to update the request such as status, delivered Qty
                RequestDao.UpdateRequestById(requestId);
            }
            else
            {
                //if disbursement is removed, change disbursement status of request back to not prepared
                RequestDao.UpdateRequestDisbursementStatus(requestId);
            }


            return(RedirectToAction("Deliveries"));
        }
コード例 #21
0
        public ActionResult GetPriorityItemsForReOrder()
        {
            List <RequestDetail> unfulfilledRequestDetails = RequestDao.GetUnfulfilledRequestDetails();

            //need to consider which requests are prepared but not delivered yet
            List <int> requestIdWithPreparedDisbursement = unfulfilledRequestDetails.Where(rd => rd.Request.DisbursementStatus == (int)RequestRetrievalStatus.Prepared)
                                                           .Select(rd => rd.Request.RequestId).Distinct().ToList();

            //get prepared disbursement details
            List <DisbursementDetail> disbursementDetails = DisbursementDao.GetPreparedDisbursementByRequestIds(requestIdWithPreparedDisbursement);

            //get prepared item id as key and prepared amount as value in dictionary
            Dictionary <int, int> preparedItemsDict = disbursementDetails.GroupBy(dd => dd.Item.ItemId)
                                                      .ToDictionary(cl => cl.Key, cl => cl.Sum(dd => dd.Quantity));

            //item id as key and required amount as dictionary value
            Dictionary <int, int> requiredItemDict = unfulfilledRequestDetails.GroupBy(rd => rd.Item.ItemId)
                                                     .ToDictionary(cl => cl.Key, cl => cl.Sum(rd => (rd.Quantity - rd.DeliveredQuantity)));
            //get item key to pass as an argument to finding item instock info
            List <int> itemIds = requiredItemDict.Keys.ToList();

            List <Item>   currentStockItems = ItemDao.GetCurrentStockInfoByIds(itemIds);
            List <object> requiredItemsInfo = new List <object>();

            foreach (var i in currentStockItems)
            {
                int unfulfilledAmount = requiredItemDict[i.ItemId];
                if (i.Quantity == 0 || i.Quantity <= unfulfilledAmount)
                {
                    int preparedAmount = 0;
                    int requiredQty    = 0;
                    int suggestedQty   = 0;
                    if (preparedItemsDict.ContainsKey(i.ItemId))
                    {
                        preparedAmount = preparedItemsDict[i.ItemId];
                        requiredQty    = unfulfilledAmount;
                        if (requiredQty == preparedAmount)
                        {
                            suggestedQty = 0;
                        }
                        else
                        {
                            suggestedQty = requiredQty - preparedAmount + 10;
                        }
                    }
                    else
                    {
                        requiredQty = unfulfilledAmount - i.Quantity;
                        if (requiredQty == 0)
                        {
                            suggestedQty = 0;
                        }
                        else
                        {
                            suggestedQty = requiredQty + 10;
                        }
                    }

                    if (suggestedQty != 0)
                    {
                        var itemInfo = new
                        {
                            Description  = i.Description,
                            ItemId       = i.ItemId,
                            Category     = i.Category,
                            SuggestedQty = suggestedQty,
                            UOM          = i.UnitOfMeasure
                        };
                        requiredItemsInfo.Add(itemInfo);
                    }
                }
            }

            return(Json(requiredItemsInfo, JsonRequestBehavior.AllowGet));
        }
コード例 #22
0
        public ActionResult RetrievalMobile()
        {
            List <RetrievalItem> items = DisbursementDao.GetAllItemsForRetrieval();

            return(Json(items, JsonRequestBehavior.AllowGet));
        }
コード例 #23
0
 public DisbursementController()
 {
     userDao = new UserDao();
     disbDao = new DisbursementDao();
 }