/// <summary> /// ApproveAdj /// </summary> /// <param name="AdjID">AdjustmentVoucher ID</param> /// <returns>true or false</returns> public bool approveAdj(string AdjID, string ApprovedBy) { bool result = true; //change status of adj voucher to approve AdjustmentVoucher adjvoucher = (from x in ctx.AdjustmentVoucher where x.AdjID == AdjID select x).First(); adjvoucher.Status = "APPROVED"; adjvoucher.ApprovedBy = Convert.ToInt32(ApprovedBy); List<AdjustmentDetail> adjDetailList = (from l in ctx.AdjustmentDetail where l.AdjID == AdjID select l).ToList(); foreach(AdjustmentDetail adjDetail in adjDetailList) { string itemID = adjDetail.ItemID; //update stock in item Item item = ctx.Item.Where(x => x.ItemID == itemID).FirstOrDefault(); item.Stock += adjDetail.Qty; //update stock card StockCard stockCard = new StockCard(); stockCard.ItemID = itemID; stockCard.Date = DateTime.Now; stockCard.Description = "Stock Adjustment " + AdjID; stockCard.Qty = adjDetail.Qty; stockCard.Balance = item.Stock + adjDetail.Qty; ctx.StockCard.Add(stockCard); } try { ctx.SaveChanges(); } catch { result = false; } if (result == true) { //send notification: NotificationController nt = new NotificationController(); nt.sendNotification(8, Convert.ToInt32(adjvoucher.ReportedBy), adjvoucher.AdjID); } return result; }
/// <summary> /// Restock /// </summary> /// <param name="PoDetailList">PoDetailList(PoID, ItemID, ActualQty)</param> /// <returns></returns> public bool restock(List<PurchaseOrderDetail> PoDetailList) { bool result = true; //search for purchase order to obtain supplier ID int poID = (int)PoDetailList.First().PoID; PurchaseOrder po = ctx.PurchaseOrder.Where(x => x.PoID == poID).FirstOrDefault(); foreach(PurchaseOrderDetail poDetail in PoDetailList) { //Update the actual qty for every poDetail PurchaseOrderDetail poDetailSearch = ctx.PurchaseOrderDetail .Where(x => x.PoID == poDetail.PoID && x.ItemID == poDetail.ItemID) .FirstOrDefault(); poDetailSearch.ActualQty = poDetail.ActualQty; //update stock in item Item item = ctx.Item.Where(x => x.ItemID == poDetail.ItemID).FirstOrDefault(); item.Stock += poDetail.ActualQty; //update stock card StockCard stockCard = new StockCard(); stockCard.ItemID = poDetail.ItemID; stockCard.Date = DateTime.Now; stockCard.Description = "Supplier - " + po.SupplierID; stockCard.Qty = poDetail.ActualQty; stockCard.Balance = item.Stock + poDetail.ActualQty; ctx.StockCard.Add(stockCard); } //change status of purchase order to "Delivered" po.Status = "DELIVERED"; try { ctx.SaveChanges(); } catch { result = false; } return result; }
/// <summary> /// confirmAllocation /// </summary> /// <param name="reqDetailList">RequisitionDetail List (ReqID, ItemID, IssueQty)</param> /// <returns></returns> public bool confirmAllocation(List<RequisitionDetail> reqDetailList) { bool result = true; foreach(RequisitionDetail reqDetail in reqDetailList) { //update requisition detail issue quantity RequisitionDetail reqDetailSearch = ctx.RequisitionDetail .Where(x => x.ReqID == reqDetail.ReqID && x.ItemID == reqDetail.ItemID) .FirstOrDefault(); reqDetailSearch.IssueQty = reqDetail.IssueQty; //search for requisition to obtain the DeptID Requisition req = ctx.Requisition.Where(x => x.ReqID == reqDetail.ReqID).FirstOrDefault(); //search for department name string deptName = ctx.Department.Where(x => x.DeptID == req.DeptID).FirstOrDefault().DeptName; //update stock in item Item item = ctx.Item.Where(x => x.ItemID == reqDetail.ItemID).FirstOrDefault(); item.Stock -= reqDetail.IssueQty; //update stock card StockCard stockCard = new StockCard(); stockCard.ItemID = reqDetail.ItemID; stockCard.Date = DateTime.Now; stockCard.Description = deptName; stockCard.Qty = 0 - reqDetail.IssueQty; stockCard.Balance = item.Stock - reqDetail.IssueQty; ctx.StockCard.Add(stockCard); } try { ctx.SaveChanges(); } catch { result = false; } //send notifications to relevant requisitions: if (result == true) { foreach (RequisitionDetail reqDetail in reqDetailList) { //send notification to alert low inventory bool checkedItemAlr = false; List<String> itemCodeChecked = new List<String>(); if (itemCodeChecked.Count > 0) { for (int i = 0; i < itemCodeChecked.Count; i++) { if (reqDetail.ItemID == itemCodeChecked[i]) { checkedItemAlr = true; } } } if (checkedItemAlr == false) { Item i = ctx.Item.Where(x => x.ItemID == reqDetail.ItemID).FirstOrDefault(); if (i.Stock < i.RoLvl) { NotificationController nt = new NotificationController(); nt.sendNotification(14, 0, i.ItemID); } } //send notification to req owners to notify change in status bool checkedReqIdAlr = false; List<int> reqIdChecked = new List<int>(); if (reqIdChecked.Count > 0) { for (int i = 0; i < reqIdChecked.Count; i++) { if(Convert.ToInt32(reqDetail.ReqID) == reqIdChecked[i]) { checkedReqIdAlr = true; } } } if(checkedReqIdAlr == false) { reqIdChecked.Add(Convert.ToInt32(reqDetail.ReqID)); List<RequisitionDetail> reqItems = ctx.RequisitionDetail.Where(x => x.ReqID == reqDetail.ReqID).ToList(); bool unfulfilledItemsFound = false; foreach (RequisitionDetail item in reqItems) { if (item.RequestQty < item.IssueQty) { unfulfilledItemsFound = true; } } if (unfulfilledItemsFound == true) { //send notification: NotificationController nt = new NotificationController(); nt.sendNotification(10, 0, Convert.ToString(reqDetail.ReqID)); } } } } return result; }