public void actionCreateDisbursementDetailTable() { disbursementDetail = new DisbursementDetail(); disbursementDetail.disbursement = disbursementId; disbursementDetail.stationery = rf.stationery; disbursementDetail.requested_quantity = rf.requested_quantity; disbursementDetail.fulfilled_quantity = rf.fulfill_quantity; disbursementDetail.previous_unfulfilled_quantity = rf.unfulfill_quantity; data.DisbursementDetails.AddObject(disbursementDetail); data.SaveChanges(); }
public void Save_InstanceOfType() { // Arrange var disbursementDetail = new DisbursementDetail { DisbursementId = "DDREPOTEST", ItemCode = "P030" }; disbursementRepository.Save(new Disbursement() { DisbursementId = "DDREPOTEST", CreatedDateTime = DateTime.Now, }); // Act var saveResult = disbursementDetailRepository.Save(disbursementDetail); // Assert Assert.IsInstanceOfType(saveResult, typeof(DisbursementDetail)); }
protected void ReduceQuantity(ADProjectDb db, int disbursementDetailId, int disbursementStatusId) { DisbursementStatus disbursementStatus = db.DisbursementStatus .Where(ds => ds.DisbursementStatusId == disbursementStatusId) .SingleOrDefault(); if (disbursementStatus.Description != StatusEnums.DisbursementStatusEnum.COLLECTED.ToString()) { return; } DisbursementDetail disbursementDetail = db.DisbursementDetail .Where(dd => dd.DisbursementDetailId == disbursementDetailId) .SingleOrDefault(); StockInfo stockInfo = db.StockInfo .Where(stock => stock.ItemCatalogueId == disbursementDetail.ItemCatalogueId) .SingleOrDefault(); stockInfo.StockQuantity -= disbursementDetail.DisburseQuantity; db.SaveChanges(); }
/////////Voucher & UpdateDisbursement public string UpdateDisbursement(WCFDisbursementDetail[] input) { try { List <DisbursementDetail> detailList = new List <DisbursementDetail>(); foreach (WCFDisbursementDetail WCFdetail in input) { DisbursementDetail detail = new DisbursementDetail(); detail.ItemCode = WCFdetail.ItemCode; detail.QuantityRequested = Convert.ToInt32(WCFdetail.QuantityRequested); detail.QuantityCollected = Convert.ToInt32(WCFdetail.QuantityCollected); detail.Remarks = WCFdetail.Remarks; detailList.Add(detail); } Data.UpdateDisbursement(detailList); return("OK"); } catch (Exception e) { return(e.ToString()); } }
public void FindByIdTestNotNull() { // Arrange var expected = new DisbursementDetail() { DisbursementId = "DDREPOTEST", ItemCode = "E030", }; disbursementRepository.Save(new Disbursement() { DisbursementId = "DDREPOTEST", CreatedDateTime = DateTime.Now, }); disbursementDetailRepository.Save(expected); // Act var result = disbursementDetailRepository.FindById("DDREPOTEST", "E030"); // Assert Assert.IsInstanceOfType(result, typeof(DisbursementDetail)); }
public static DisbursementDetail AddDisbursementDetail(LussisEntities context, DisbursementDetail disbursementDetail) { // TODO : Put a filter for what kind of disbursement to edit DisbursementDetail detail = context.DisbursementDetails .Where(det => det.DisbursementNo.Equals(disbursementDetail.DisbursementNo) && det.ItemNo.Equals(disbursementDetail.ItemNo)) .FirstOrDefault(); if (detail != null) { // Append to existing if it already exists detail.Needed += disbursementDetail.Needed; detail.Promised += disbursementDetail.Promised; detail.Received += disbursementDetail.Received; } else { // Add new detail context.DisbursementDetails.Add(disbursementDetail); } context.SaveChanges(); return(disbursementDetail); }
//methods for departmentwise consolidation //moblie public void saveDisburseList(List <string> reqIdByDeptList, Dictionary <string, int> itemDic, Disbursement NewDisbursement) { using (InventorySysDBEntities context = new InventorySysDBEntities()) { context.Disbursements.Add(NewDisbursement); foreach (string reqId in reqIdByDeptList) { var q = from x in context.Requisitions where x.Requisition_ID == reqId select x; Requisition r = q.First(); r.Disbursement_ID = NewDisbursement.Disbursement_ID; } foreach (string itemID in itemDic.Keys) { DisbursementDetail disburementDetail = new DisbursementDetail(); disburementDetail.Disbursement_ID = NewDisbursement.Disbursement_ID; disburementDetail.Item_ID = itemID; disburementDetail.Quantity = itemDic[itemID]; context.DisbursementDetails.Add(disburementDetail); } context.SaveChanges(); } }
//public void ChangeDisbursementDisbursingToAllocating() //{ // List<Disbursement> dList = disbursementDAO.SearchDbmByStatus("disbursing"); // foreach (var item in dList) // { // item.Status = "allocating"; // item.DateCreated = null; // item.DatePlanToCollect = null; // disbursementDAO.UpdateDbmStatus(item); // } //} //public void ChangeDisbursementAllocatingToDisbursing() //{ // List<Disbursement> dList = disbursementDAO.SearchDbmByStatus("allocating"); // foreach (var item in dList) // { // item.Status = "disbursing"; // item.DateCreated = DateTime.Today; // item.CollectionPointCode = departmentDAO.GetDepartmentInfo(item.DepartmentCode).CollectionPointCode; // disbursementDAO.UpdateDbmStatus(item); // } //} public List <DisbursementDetail> GenerateDisbursementDetail() { List <RequestDetail> requestDetailList = this.GetNotDisbursedRequestDetailList(); List <DisbursementDetail> ddList = new List <DisbursementDetail>(); Dictionary <String, int> quantRetrievedRemained = new Dictionary <string, int>(); foreach (var item in this.GetCurrentRetrieval().RetrievalDetails) { quantRetrievedRemained.Add(item.ItemCode, (int)item.QuantityRetrieved); } requestDetailList.Sort(); foreach (var item in requestDetailList) { if (quantRetrievedRemained[item.ItemCode] > 0) { DisbursementDetail dd = new DisbursementDetail(); dd.RequestCode = item.RequestCode; dd.ItemCode = item.ItemCode; //requestDAO.GetRequest(item.RequestCode).DepartmentCode; if (quantRetrievedRemained[item.ItemCode] > item.RemainingQuant) { dd.Quantity = item.RemainingQuant; quantRetrievedRemained[item.ItemCode] -= (int)item.RemainingQuant; } else { dd.Quantity = quantRetrievedRemained[item.ItemCode]; quantRetrievedRemained[item.ItemCode] = 0; } ddList.Add(dd); } } return(ddList); }
public int AddDisbursementDetail(DisbursementDetail disbursementDetail) { se.DisbursementDetails.Add(disbursementDetail); return(se.SaveChanges()); }
public void TestInitialize() { context = new ApplicationDbContext(); disbursementRepository = new DisbursementRepository(context); disbursementdetailRepository = new DisbursementDetailRepository(context); disbursementService = new DisbursementService(context); itemRepository = new ItemRepository(context); retrievalRepository = new RetrievalRepository(context); requisitionRepository = new RequisitionRepository(context); requisitiondetailRepository = new RequisitionDetailRepository(context); departmentRepository = new DepartmentRepository(context); Retrieval retrieval = new Retrieval(); if (retrievalRepository.FindById("TEST") == null) { //save retrieval object into db retrieval.RetrievalId = "TEST"; retrieval.CreatedDateTime = DateTime.Now; retrievalRepository.Save(retrieval); } else { retrieval = retrievalRepository.FindById("TEST"); } //save disbursement object into db Disbursement disbursement = new Disbursement(); if (disbursementRepository.FindById("TEST") == null) { disbursement.DisbursementId = "TEST"; disbursement.CreatedDateTime = DateTime.Now; disbursement.Retrieval = retrieval; } else { disbursement = disbursementRepository.FindById("TEST"); } disbursementRepository.Save(disbursement); //save disbursement detail object into db DisbursementDetail detail = new DisbursementDetail() { Disbursement = disbursement, Item = context.Item.First(), PlanQuantity = 20, ActualQuantity = 20 }; disbursementdetailRepository.Save(detail); Requisition requisition = new Requisition() { RequisitionId = "TEST", Retrieval = retrieval, CreatedDateTime = DateTime.Now, Status = new StatusService(context).FindStatusByStatusId(8) }; requisitionRepository.Save(requisition); }
//public static void UpdateDisbursementsStatus() //{ // using(var ctx = new UniDBContext()) // { // List<Disbursement> disbursements = ctx.Disbursements.Include("DisbursementDetails").Include("DisbursementDetails.Item") // .Where(d => d.Status == (int)DisbursementStatus.Allocated && DbFunctions.TruncateTime(d.Date) < DbFunctions.TruncateTime(DateTime.Today)) // .ToList(); // if(disbursements != null) // { // foreach(var d in disbursements) // { // d.Status = (int)DisbursementStatus.Prepared; // } // ctx.SaveChanges(); // } // } //} public static void GenerateDisbursements(List <RetrievalItem> retrievalItems) { using (var ctx = new UniDBContext()) { List <int> requestStatus = new List <int>() { (int)RequestStatus.Approved, (int)RequestStatus.PartiallyDelivered }; List <int> itemIds = retrievalItems.Select(r => r.ItemId).ToList(); //item id key and its corresponding item Dictionary <int, Item> itemDict = ctx.Items.Where(i => itemIds.Contains(i.ItemId)).ToDictionary(i => i.ItemId); //get list of request which contins the requestdetail of item ids retrieved Dictionary <int, List <RequestDetail> > requestDetails = ctx.RequestDetails.Include("Request").Include("Item") .Where(rd => requestStatus.Contains(rd.Request.Status) && DbFunctions.TruncateTime(rd.Request.Date) < DbFunctions.TruncateTime(DateTime.Today) && itemIds.Contains(rd.Item.ItemId)) .GroupBy(rd => rd.Item.ItemId) .ToDictionary(c => c.Key, c => c.ToList()); foreach (var k in requestDetails.Keys) { foreach (var detail in requestDetails[k]) { Debug.WriteLine("Item Id {0} and Item Amount is {1}", detail.Item.ItemId, detail.Quantity); } } //key of request and disbursementdetail list for generating disbursement Dictionary <int, List <DisbursementDetail> > ddDict = new Dictionary <int, List <DisbursementDetail> >(); foreach (var itemId in itemIds) { Item i = itemDict[itemId]; var rDList = requestDetails[itemId]; foreach (var rd in rDList) { var allocatedAmount = 0; var requiredAmtForEachReq = rd.Quantity - rd.DeliveredQuantity; if (i.Quantity > requiredAmtForEachReq) { allocatedAmount = requiredAmtForEachReq; i.Quantity = i.Quantity - requiredAmtForEachReq; } else if (i.Quantity == requiredAmtForEachReq) { allocatedAmount = i.Quantity; i.Quantity = 0; } else { allocatedAmount = i.Quantity; i.Quantity = 0; } if (allocatedAmount != 0) { DisbursementDetail dd = new DisbursementDetail() { Item = i, Quantity = allocatedAmount }; ctx.DisbursementDetails.Add(dd); Request r = ctx.RequestDetails.Where(rDetail => rDetail.RequestDetailId == rd.RequestDetailId).Include("Request").Select(rDetail => rDetail.Request).SingleOrDefault(); r.DisbursementStatus = (int)RequestRetrievalStatus.Prepared; if (ddDict.ContainsKey(r.RequestId)) { ddDict[r.RequestId].Add(dd); } else { ddDict[r.RequestId] = new List <DisbursementDetail>(); ddDict[r.RequestId].Add(dd); } } if (i.Quantity == 0) { break; } } } ctx.SaveChanges(); foreach (KeyValuePair <int, List <DisbursementDetail> > k in ddDict) { Request r = ctx.Requests.Include("Department").Where(req => req.RequestId == k.Key).SingleOrDefault(); r.DisbursementStatus = (int)RequestRetrievalStatus.Prepared; Disbursement d = new Disbursement() { DisbursementDetails = k.Value, Date = DateTime.Now, Request = r, Department = r.Department }; ctx.Disbursements.Add(d); } ctx.SaveChanges(); } }
public void UpdateDisbursementDetail(DisbursementDetail detail) { LUSSISContext.Entry(detail).State = EntityState.Modified; LUSSISContext.SaveChanges(); }
public static bool SubmitRetrieval(int retrievalNo, List <string> deptCodeList, List <string> itemNoList, List <int> actualList) { LussisEntities context = new LussisEntities(); DateTime today = DateTime.Today; int daysUntilMonday = ((int)DayOfWeek.Monday - (int)today.DayOfWeek + 7) % 7; DateTime disbursementDate = today.Date.AddDays(daysUntilMonday); // Update RetrievalDate Retrieval retrieval = GetRetrieval(context, retrievalNo); retrieval.Date = DateTime.Now; // For each RetrievalDetail for (int i = 0; i < actualList.Count; i++) { string deptCode = deptCodeList[i]; string itemNo = itemNoList[i]; int actual = actualList[i]; // Update RetrievalDetail RetrievalDetail retrievalDetail = GetRetrievalDetail(context, retrievalNo, deptCode, itemNo); retrievalDetail.Actual = actual; // Update StationeryCatalogueCurrentyQty StationeryCatalogue stock = GetStock(context, itemNo); stock.CurrentQty -= actual; // Add StockTxnDetail StockTxnDetail txn = new StockTxnDetail(); txn.ItemNo = itemNo; txn.Date = retrieval.Date; txn.AdjustQty = -actual; txn.RecordedQty = stock.CurrentQty; txn.Remarks = GetDepartment(context, deptCode).DeptName; txn = AddStockTxn(context, txn); // Add Disbursement Disbursement disbursement = GetPendingDisbursement(context, deptCode, disbursementDate); if (disbursement == null) { disbursement = new Disbursement(); disbursement.DisbursementNo = int.MaxValue; disbursement.DeptCode = deptCode; disbursement.DisbursementDate = disbursementDate; disbursement.RepEmpNo = GetDepartment(context, deptCode).RepEmpNo; disbursement.CollectionPointNo = GetDepartment(context, deptCode).CollectionPointNo; disbursement.Pin = new Random().Next(10000, 99999); disbursement.Status = "Pending"; disbursement = AddDisbursement(context, disbursement); } // Add DisbursementDetail DisbursementDetail disbursementDetail = new DisbursementDetail(); disbursementDetail.DisbursementNo = disbursement.DisbursementNo; disbursementDetail.ItemNo = itemNo; disbursementDetail.Needed = retrievalDetail.Needed + retrievalDetail.BackLogQty; disbursementDetail.Promised = actual; disbursementDetail.Received = actual; disbursementDetail = AddDisbursementDetail(context, disbursementDetail); } context.SaveChanges(); return(true); }
public void updateDisbursementDetail(DisbursementDetail dd) { unitOfWork.GetRepository <DisbursementDetail>().Update(dd); unitOfWork.SaveChanges(); }
public void actionUpdateToDisbursement(int req_dept, int stationery) { FulfillmentController fc = new FulfillmentController(); rf=fc.actionGetFulfillmentByDepartmentAndStationery(req_dept, stationery); // -------------- Disbursement Table Process ---------- disbursement = actionGetDisbursementByDepartmentAndTodayDate(req_dept); if (disbursement == null) actionCreateDisbursementTable(req_dept, getDeptRept(req_dept)); disbursementId=actionGetDisbursementIdByDepartmentAndDate(req_dept, disbursement.distributed_date); // -------------- Disbursement Detail Table Process ---------- disbursementDetail = actionGetDisbursementDetailByDepartmentAndStationery(stationery); if (disbursementDetail == null) actionCreateDisbursementDetailTable(); else actionUpdateDisbursementDetailTable(); // -------------- Update Stationery Process ---------- new StationeryController().actionUpdateQty(rf.stationery, rf.fulfill_quantity); // -------------- Update StockTransaction Process ---------- new StockTransactionController().actionCreateStockTransaction(stationery, new StationeryController().actionGetQtyInStock(stationery), "Disbursement", "- "+rf.fulfill_quantity.ToString()); // -------------- Remaining Requisition Fulfillment Process ---------- unfulfillQty = rf.requested_quantity - rf.fulfill_quantity; if (unfulfillQty == 0) fc.actionDeleteFulfillmentByObject(rf); else fc.actionUpdateFulfillmentByObject(rf, unfulfillQty); // -------------- Update Requisition Status Process ---------- new RequisitionController().actionRequisitionStatusChangeToDistributedByDepartment(stationery, req_dept); }
string ProcessAndInsertDisbursment(XmlDocument doc, string criteria) { // creating object of CultureInfo CultureInfo cultures = new CultureInfo("en-US"); string referenceNumber; try { int deviceLocationInfoId = ParseDeviceLocationInfo.SaveInfo(doc); #region data fetched from xml string senderVirtialId, amountString; senderVirtialId = doc.GetElementsByTagName("SenderVID").Item(0).Attributes["value"].Value; amountString = doc.GetElementsByTagName("TxnAmount").Item(0).Attributes["value"].Value; referenceNumber = doc.GetElementsByTagName("ReferenceNo").Item(0).Attributes["value"].Value; var receiverList = doc.GetElementsByTagName("ReceiverVID"); #endregion double amount; amount = 0; double.TryParse(amountString, NumberStyles.Any, cultures, out amount); Disbursement disbursment = new Disbursement { SenderVID = senderVirtialId, Amount = amount, ReferenceNo = referenceNumber, DeviceLocationInfoId = deviceLocationInfoId, Criteria = criteria, CreatedOn = DateTime.Now, EntityState = EntityState.Added }; _businessLayer.AddDisbursment(disbursment); List <DisbursementDetail> disbursementDetails = new List <DisbursementDetail>(); for (int i = 0; i < receiverList.Count; i++) { DisbursementDetail disbursementDetail = new DisbursementDetail(); amountString = receiverList.Item(i).Attributes["amount"].Value; double.TryParse(amountString, NumberStyles.Any, cultures, out amount); disbursementDetail.ReceiverVID = receiverList.Item(i).Attributes["value"].Value; disbursementDetail.Amount = amount; disbursementDetail.DisbursementId = disbursment.Id; disbursementDetail.EntityState = EntityState.Added; disbursementDetails.Add(disbursementDetail); } _businessLayer.AddDisbursmentDetail(disbursementDetails.ToArray()); return(referenceNumber); } catch (Exception ex) { throw new Exception(ex.Message); //return ex.Message; } }
protected void btnConfirm_Click(object sender, EventArgs e) { Staff stf = (Staff)Session["LoginStaff"]; string DisId = (string)ViewState["DisID"]; List <DisbursementDetail> DDList = new List <DisbursementDetail>(); List <ReceivedItemModel> recItemList = new List <ReceivedItemModel>(); for (int i = 0; i < dgvDisbursmentItem.Rows.Count; i++) { string itemCode = dgvDisbursmentItem.Rows[i].Cells[0].Text; string itemName = dgvDisbursmentItem.Rows[i].Cells[1].Text; int needQty = Convert.ToInt32(dgvDisbursmentItem.Rows[i].Cells[2].Text); txtQty = (TextBox)dgvDisbursmentItem.Rows[i].Cells[3].FindControl("txtQty"); int recQty = Convert.ToInt32(txtQty.Text); string uom = dgvDisbursmentItem.Rows[i].Cells[4].Text; DisbursementDetail dd = new DisbursementDetail(); dd.Disbursement_ID = DisId; dd.Item_ID = itemCode; dd.Quantity = recQty; DDList.Add(dd); ReceivedItemModel recItem = new ReceivedItemModel(); recItem.itemCode = itemCode; recItem.itemName = itemName; recItem.needQty = needQty; recItem.recQty = recQty; recItem.restQty = needQty - recQty; recItem.uom = uom; recItemList.Add(recItem); } if (cbxReserved.Checked) { lblReqtype.Visible = true; dgvSpeRequisition.Visible = true; btnCreate.Visible = true; btnCancel.Visible = true; List <ReceivedItemModel> restItemList = new List <ReceivedItemModel>(); foreach (ReceivedItemModel recitem in recItemList) { if (recitem.restQty > 0) { restItemList.Add(recitem); } } Session["restItemList"] = restItemList; dgvSpeRequisition.DataSource = restItemList; dgvSpeRequisition.DataBind(); try { ConfirmReceivedController.ConfirmRecivedItems(DisId, DDList, stf.Dept_ID); } catch (Exception ex) { btnConfirm.Visible = false; ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Receive disbursement fail!')", true); } btnConfirm.Visible = false; ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Received success!')", true); } else { try { ConfirmReceivedController.ConfirmRecivedItems(DisId, DDList, stf.Dept_ID); } catch (Exception ex) { btnConfirm.Visible = false; ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Receive disbursement fail!')", true); initPage(); } btnConfirm.Visible = false; ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Received success!')", true); initPage(); } }
public void TestInitialize() { context = new ApplicationDbContext(); stockmovementService = new StockMovementService(context); itemService = new ItemService(context); stockmovementRepository = new StockMovementRepository(context); ddRepository = new DisbursementDetailRepository(context); sadRepository = new StockAdjustmentDetailRepository(context); dodRepository = new DeliveryOrderDetailRepository(context); disbursementRepository = new DisbursementRepository(context); doRepository = new DeliveryOrderRepository(context); saRepository = new StockAdjustmentRepository(context); //create new test object and save into db StockMovement sm = new StockMovement() { StockMovementId = IdService.GetNewStockMovementId(context), DisbursementId = "TEST", StockAdjustmentId = "TEST", DeliveryOrderNo = "TEST", Item = context.Item.Where(x => x.ItemCode == "C003").First(), CreatedDateTime = DateTime.Now, OriginalQuantity = 1, AfterQuantity = 2 }; stockmovementRepository.Save(sm); //create new disbursement object and save into db Disbursement disbursement = new Disbursement(); if (disbursementRepository.FindById("TEST") == null) { disbursement.DisbursementId = "TEST"; disbursement.CreatedDateTime = DateTime.Now; } else { disbursement = disbursementRepository.FindById("TEST"); } disbursementRepository.Save(disbursement); //create new DisbursementDetail object and save into db DisbursementDetail detail = new DisbursementDetail() { DisbursementId = "TEST", Item = context.Item.First(), PlanQuantity = 3, ActualQuantity = 3 }; ddRepository.Save(detail); //create new DO object and save into db DeliveryOrder d = new DeliveryOrder(); if (doRepository.FindById("TEST") == null) { d.DeliveryOrderNo = "TEST"; d.CreatedDateTime = DateTime.Now; } else { d = doRepository.FindById("TEST"); } doRepository.Save(d); //create new DO detail object and save into db DeliveryOrderDetail dod = new DeliveryOrderDetail() { DeliveryOrder = d, Item = context.Item.First(), PlanQuantity = 4, ActualQuantity = 4 }; dodRepository.Save(dod); //create new SA object and save into db StockAdjustment SA = new StockAdjustment(); if (saRepository.FindById("TEST") == null) { SA.StockAdjustmentId = "TEST"; SA.CreatedDateTime = DateTime.Now; } else { SA = saRepository.FindById("TEST"); } saRepository.Save(SA); //create new SA detail object and save into db StockAdjustmentDetail SADetail = new StockAdjustmentDetail() { StockAdjustment = SA, Item = context.Item.First(), OriginalQuantity = 2, AfterQuantity = 4 }; sadRepository.Save(SADetail); }
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")); }
/// <summary> /// CreateDisbursement /// </summary> /// <param name="EmpID">Employee ID(Clerk)</param> /// <returns></returns> public bool createDisbursement(string EmpID) { bool result = true; string[] deptId = new string[] { "ENGL", "CPSC", "COMM", "REGR", "ZOOL" }; for (int i = 0; i < deptId.Length; i++) { string deptID = deptId[i]; List <Requisition> reqList = ctx.Requisition.Where(x => x.StatusID == 3 && x.DeptID == deptID).ToList(); if (reqList.FirstOrDefault() != null) { Department dept = ctx.Department.Where(x => x.DeptID == deptID).FirstOrDefault(); Employee deptRep = ctx.Employee.Where(x => x.DeptID == deptID && x.RoleID == "DR").FirstOrDefault(); Disbursement disb = new Disbursement(); disb.Date = DateTime.Now; disb.EmpID = Convert.ToInt32(EmpID); disb.DeptID = deptID; disb.CPID = dept.CPID; disb.ReceivedBy = deptRep.EmpID; disb.Status = "PENDING"; ctx.Disbursement.Add(disb); ctx.SaveChanges(); Disbursement lastDisb = ctx.Disbursement.ToList().Last(); int DisID = 1; if (lastDisb != null) { DisID = lastDisb.DisID; } foreach (Requisition req in reqList) { req.DisID = DisID; List <RequisitionDetail> reqDetailList = ctx.RequisitionDetail.Where(x => x.ReqID == req.ReqID).ToList(); foreach (RequisitionDetail reqDetail in reqDetailList) { DisbursementDetail disbDetail = new DisbursementDetail(); disbDetail.DisID = DisID; disbDetail.ItemID = reqDetail.ItemID; disbDetail.Qty = reqDetail.IssueQty; ctx.DisbursementDetail.Add(disbDetail); } } } } try { ctx.SaveChanges(); } catch { result = false; } if (result == true) { if (EmpID == null) { EmpID = "0"; } List <Requisition> reqList = ctx.Requisition.Where(x => x.StatusID == 3).ToList(); foreach (Requisition req in reqList) { //send notification to req holders: NotificationController nt = new NotificationController(); nt.sendNotification(5, Convert.ToInt32(EmpID), Convert.ToString(req.ReqID)); } //send notification about collection one day after. NotificationController nt2 = new NotificationController(); DateTime d = DateTime.Now; nt2.sendNotification(11, Convert.ToInt32(EmpID), d.AddDays(1).ToString("dd'/'MM'/'yyyy")); } return(result); }
static void Main(string[] args) { //Console.WriteLine(requestDetailsDAO.SearchRequestbyStatus("proce").ToList().Count); Disbursement d = new Disbursement(); d.DisbursementCode = "DBM180101162312124"; d.DateCreated = DateTime.ParseExact("2018-01-02", "yyyy-MM-dd", null); d.DepartmentCode = "ENGL"; d.DateDisbursed = DateTime.ParseExact("2018-01-02", "yyyy-MM-dd", null); d.UserName = "******"; d.ReceivedBy = "*****@*****.**"; d.Notes = "Test2"; d.Status = "not disbursed"; d.DisbursementDetails = null; Disbursement dUpdate = GetDisbursementByCode(d.DisbursementCode); d.Notes = "Test Update disbursement."; Disbursement dUpdateDbmDetail = GetDisbursementByCode("DBMDisbDetailsTest"); PrintDisbursement(dUpdateDbmDetail); //dUpdateDbmDetail.DisbursementDetails = new List<DisbursementDetail>(); DisbursementDetail dd1 = new DisbursementDetail(); dd1.RequestCode = "RQ123456789"; dd1.ItemCode = "P010"; dd1.Quantity = 20; DisbursementDetail dd2 = new DisbursementDetail(); dd2.RequestCode = "RQ123456789"; dd2.ItemCode = "P011"; dd2.Quantity = 25; dUpdateDbmDetail.DisbursementDetails.Add(dd1); dUpdateDbmDetail.DisbursementDetails.Add(dd2); if (dUpdateDbmDetail.DisbursementDetails == null) { Console.WriteLine("Null"); } DateTime date1 = DateTime.ParseExact("2017-12-01", "yyyy-MM-dd", null); DateTime date2 = DateTime.ParseExact("2018-01-04", "yyyy-MM-dd", null); Department department = new DepartmentDAO().GetDepartmentInfo("ISS1"); Console.WriteLine("1. GetAllDisbursement"); Console.WriteLine("2. GetDisbursementByCode"); Console.WriteLine("3. SearchDisbursementByCode"); Console.WriteLine("4. SearchDbmByDateDisbursed"); Console.WriteLine("5. SearchDbmByPeriodDisbursed"); Console.WriteLine("6. SearchDbmByDateCreated"); Console.WriteLine("7. SearchDbmByPeriodCreated"); Console.WriteLine("8. SearchDbmByDepartment"); Console.WriteLine("9. SearchDbmByDepartmentCode"); Console.WriteLine("10. SearchDbmByStatus"); Console.WriteLine("11. UpdateDisbursement"); Console.WriteLine("12. UpdateDbmDisbursementDetail"); Console.WriteLine("13. AddDisbursement"); Console.WriteLine("14. Collection Point"); Console.WriteLine(); Console.Write("Please enter the test case: "); String test = Console.ReadLine(); switch (test) { case "1": PrintDisbursementList(GetAllDisbursement()); break; case "2": PrintDisbursement(GetDisbursementByCode("DBMDisbDetailsTest")); break; case "3": PrintDisbursementList(SearchDisbursementByCode("18")); break; case "4": PrintDisbursementList(SearchDbmByDateDisbursed(date2)); break; case "5": PrintDisbursementList(SearchDbmByPeriodDisbursed(date1, date2)); break; case "6": PrintDisbursementList(SearchDbmByDateCreated(date1)); break; case "7": PrintDisbursementList(SearchDbmByPeriodCreated(date1, date2)); break; case "8": PrintDisbursementList(SearchDbmByDepartment(department)); break; case "9": PrintDisbursementList(SearchDbmByDepartmentCode("ENGL")); break; case "10": PrintDisbursementList(SearchDbmByStatus("not disbursed")); break; case "11": Console.WriteLine(UpdateDisbursement(dUpdate)); break; case "12": Console.WriteLine(UpdateDbmDisbursementDetail(dUpdateDbmDetail)); break; case "13": Console.WriteLine(AddDisbursement(d)); break; case "14": Console.WriteLine(CheckCollectionPointDAO()); break; default: Console.WriteLine(UpdateDbmDisbursementDetail(dUpdateDbmDetail)); break; } }
private List <Disbursement> AddDisbursementDetailsForEachDisbursement(List <Disbursement> disbursementList, List <Requisition> requestList) { // Initialize inventory map Dictionary <string, int> inventory = new Dictionary <string, int>(); // create Disbursement Details, one for each item by department foreach (Disbursement d in disbursementList) { // prepare to populate DisbursementDetails d.DisbursementDetails = new List <DisbursementDetail>(); // populate them based on CreatedDate first foreach (Requisition rq in requestList.OrderBy(r => r.CreatedDateTime)) { if (rq.Department == d.Department) { foreach (RequisitionDetail rd in rq.RequisitionDetails) { var query = d.DisbursementDetails.Where(x => x.Item == rd.Item); // Use quantity in inventory map if available, else get current inventory level in context int currentQuantity; if (inventory.ContainsKey(rd.ItemCode)) { currentQuantity = inventory[rd.ItemCode]; } else { inventory[rd.ItemCode] = new ItemService(context).FindInventoryByItemCode(rd.ItemCode).Quantity; currentQuantity = inventory[rd.ItemCode]; } // if a DisbursementDetail has the same ItemCode as the RequisitionDetail if (query.Count() > 0) { DisbursementDetail existingDD = query.ToList().First(); existingDD.PlanQuantity += Math.Min(rd.Quantity, inventory[rd.ItemCode]); // Deduct quantity inventory[rd.ItemCode] -= existingDD.PlanQuantity; } else // Create a DD with the RD { DisbursementDetail newDD = new DisbursementDetail(); newDD.Item = rd.Item; newDD.ItemCode = rd.ItemCode; newDD.PlanQuantity = Math.Min(rd.Quantity, inventory[rd.ItemCode]); newDD.Bin = rd.Item.Bin; newDD.Status = statusRepository.FindById(17); // Deduct quantity inventory[rd.ItemCode] -= newDD.PlanQuantity; // Add to the Disbursement d.DisbursementDetails.Add(newDD); } } } } } return(disbursementList); }
protected void btnAddToRetrial_Click(object sender, EventArgs e) { AddNewRetrieval(); int retrId = myBz.FindRetrListByEmplIdAndStatus(storeClerkId, "In Progress").FirstOrDefault().RetrievalId; //Get all RequisitionDetails foreach (Requisition r in approvedReqList) { myBz.UpdateReqStatus(r.RequisitionId, "In Progress"); reqDetList.AddRange(myBz.FindAllReqDetByReqId(r.RequisitionId)); } //Use RequisitionDetails to Create Retrievals and Disbursement: //For Retrieval <----------Dictionary<ItemCode,TotalRequestedQty> Dictionary <string, int> retrItemQty = new Dictionary <string, int>(); //For Disbursement <----------Dictionary<DepartmentId, Dictionary<ItemCode,TotalRequestedQty>> Dictionary <string, Dictionary <String, int> > deptDisbList = new Dictionary <string, Dictionary <String, int> >(); foreach (RequisitionDetail reqDet in reqDetList) { //For retrieval if (!retrItemQty.Keys.Contains(reqDet.ItemCode)) { retrItemQty.Add(reqDet.ItemCode, reqDet.QuantityRequest); } else { retrItemQty[reqDet.ItemCode] += reqDet.QuantityRequest; } //For Disbursement string deptId = myBz.FindDeptByReqId(reqDet.RequisitionId).DeptId; if (!deptDisbList.Keys.Contains(deptId)) { Dictionary <string, int> a = new Dictionary <string, int>(); a.Add(reqDet.ItemCode, reqDet.QuantityRequest); deptDisbList.Add(deptId, a); } else { if (!deptDisbList[deptId].Keys.Contains(reqDet.ItemCode)) { deptDisbList[deptId].Add(reqDet.ItemCode, reqDet.QuantityRequest); } else { deptDisbList[deptId][reqDet.ItemCode] += reqDet.QuantityRequest; } } } //Create Disbursement for each Dept and DisbursementDetails foreach (KeyValuePair <string, Dictionary <string, int> > entry in deptDisbList) { if (!HaveExistingDisbursement(entry.Key)) { AddDisbursement(entry.Key); } Disbursement currentDisb = myBz.FindDisbursementsByStatus("Pending").Where(x => x.StoreClerkId == storeClerkId && x.DeptId == entry.Key).First(); if (currentDisb.Status == "Pending") { foreach (KeyValuePair <string, int> disItemQty in entry.Value) { DisbursementDetail disbDet = new DisbursementDetail(); disbDet.ItemCode = disItemQty.Key; disbDet.DisbursementId = currentDisb.DisbursementId; disbDet.QuantityRequested = disItemQty.Value; Stationery s = myBz.FindStationeryByItemCode(disItemQty.Key); if (disItemQty.Value <= s.QuantityInStock) { disbDet.QuantityReceived = disItemQty.Value; } else { disbDet.QuantityReceived = s.QuantityInStock; } myBz.AddDisbDetail(disbDet); } currentDisb.Status = "In Progress"; myBz.UpdateDisbursement(currentDisb); } } //Sorting retdet by location var newRetrDetList = retrItemQty.Keys.ToList(); newRetrDetList.Sort((x, y) => myBz.FindStationeryByItemCode(x).Bin.CompareTo(myBz.FindStationeryByItemCode(y).Bin)); //Create Retrieval foreach (var key in newRetrDetList) { Stationery s = myBz.FindStationeryByItemCode(key); if (retrItemQty[key] <= s.QuantityInStock) { myBz.AddNewRetrievalDetail(retrId, key, retrItemQty[key], retrItemQty[key]); } else { myBz.AddNewRetrievalDetail(retrId, key, retrItemQty[key], s.QuantityInStock); } } //Redirect to retrieval form Response.Redirect("~/Store/RetrievalNew.aspx"); }
public Department FindDeptByDisbDetId(int disbDetId) { DisbursementDetail disbDet = disbDetService.SearchDisbursementDetailById(disbDetId); return(FindDeptByDisbId(disbDet.DisbursementId)); }
public void saveDisbursementDetail(DisbursementDetail currDB) { unitOfWork.GetRepository <DisbursementDetail>().Insert(currDB); unitOfWork.SaveChanges(); }
//webAPI for Requisition List public int CreateDisbursementList(List <Requisition> approvedReqList, int storeClerkId) { try { //Get all RequisitionDetails List <RequisitionDetail> reqDetList = GetReqDetsByListReqs(approvedReqList); //Use RequisitionDetails to Create Retrievals and Disbursement: //For Disbursement <----------Dictionary<DepartmentId, Dictionary<ItemCode,TotalRequestedQty>> Dictionary <string, Dictionary <String, int> > deptDisbList = new Dictionary <string, Dictionary <String, int> >(); foreach (RequisitionDetail reqDet in reqDetList) { string deptId = FindDeptByReqId(reqDet.RequisitionId).DeptId; if (!deptDisbList.Keys.Contains(deptId)) { Dictionary <string, int> a = new Dictionary <string, int>(); a.Add(reqDet.ItemCode, reqDet.QuantityRequest); deptDisbList.Add(deptId, a); } else { if (!deptDisbList[deptId].Keys.Contains(reqDet.ItemCode)) { deptDisbList[deptId].Add(reqDet.ItemCode, reqDet.QuantityRequest); } else { deptDisbList[deptId][reqDet.ItemCode] += reqDet.QuantityRequest; } } } //Create Disbursement for each Dept and DisbursementDetails foreach (KeyValuePair <string, Dictionary <string, int> > entry in deptDisbList) { if (!HaveExistingDisbursement(storeClerkId, entry.Key)) { Disbursement disb = new Disbursement(); disb.DeptId = entry.Key; disb.StoreClerkId = storeClerkId; disb.RepresentativeId = FindDeptByDeptId(entry.Key).RepresentativeId; disb.DateCreated = DateTime.Now; disb.Status = "Pending"; return(AddDisbursement(disb)); } Disbursement currentDisb = FindDisbursementsByStatus("Pending").Where(x => x.StoreClerkId == storeClerkId && x.DeptId == entry.Key).First(); foreach (KeyValuePair <string, int> disItemQty in entry.Value) { DisbursementDetail disbDet = new DisbursementDetail(); disbDet.ItemCode = disItemQty.Key; disbDet.DisbursementId = currentDisb.DisbursementId; disbDet.QuantityRequested = disItemQty.Value; Stationery s = FindStationeryByItemCode(disItemQty.Key); if (disItemQty.Value <= s.QuantityInStock) { disbDet.QuantityReceived = disItemQty.Value; } else { disbDet.QuantityReceived = s.QuantityInStock; } AddDisbDetail(disbDet); } currentDisb.Status = "In Progress"; UpdateDisbursement(currentDisb); } return(1); } catch (Exception e) { return(0); } }
protected void gvDepartments_RowCommand(object sender, GridViewCommandEventArgs e) { GridViewRow row = (GridViewRow)((Button)e.CommandSource).NamingContainer; Button btnUpdate = (Button)row.FindControl("btnUpdateDisbQty"); Button btnChange = (Button)row.FindControl("btnChangeDisbQty"); Button btnCancel = (Button)row.FindControl("btnCancel"); Label lblDisbQty = (Label)row.FindControl("lblbDisbQty"); TextBox tbDisbQty = (TextBox)row.FindControl("tbDisbQty"); HiddenField hDDId = (HiddenField)row.FindControl("hDDId"); if (e.CommandName == "ChangeDisbQty") { btnChange.Visible = false; lblDisbQty.Visible = false; btnUpdate.Visible = true; btnCancel.Visible = true; tbDisbQty.Visible = true; } else { if (e.CommandName == "UpdateDisbQty") { DisbursementDetail dd = myBz.FindDisbursementDetailById(Int32.Parse(hDDId.Value)); Stationery currentStat = myBz.FindStationeryByItemCode(dd.ItemCode); GridView currentGridview = (GridView)row.Parent.Parent; GridViewRow rowParent = (GridViewRow)currentGridview.NamingContainer; Label totalRetrievedQty = (Label)rowParent.FindControl("lblRetrQty"); if (Int32.Parse(tbDisbQty.Text) > Int32.Parse(totalRetrievedQty.Text)) { lblNotification.Text = "Please make sure Updating Receiving Quantity is not more than Total Retrieved Quantity"; row.ForeColor = System.Drawing.Color.Red; return; } else { row.ForeColor = System.Drawing.Color.Black; List <DisbursementDetail> currentList = myBz.FindDisbDetsForNestedList(storeClerkId, "Allocating", dd.ItemCode); int amountChange = Int32.Parse(tbDisbQty.Text) - dd.QuantityReceived; //Find CurrentLocation of dd int currentDDLocation = 0; for (int i = 0; i < currentList.Count; i++) { if (currentList[i].DisbursementDetailsId == Int32.Parse(hDDId.Value)) { currentDDLocation = i; break; } } currentList[currentDDLocation].QuantityReceived = Int32.Parse(tbDisbQty.Text); myBz.UpdateDisbursementDetail(currentList[currentDDLocation]); if (currentDDLocation != currentList.Count - 1)// if not the last dd in currentList { for (int i = currentDDLocation + 1; i < currentList.Count; i++) { if (amountChange > 0) { if (currentList[i].QuantityReceived >= amountChange) { currentList[i].QuantityReceived -= amountChange; amountChange = 0; myBz.UpdateDisbursementDetail(currentList[i]); break; } else { currentList[i].QuantityReceived = 0; amountChange -= currentList[i].QuantityReceived; myBz.UpdateDisbursementDetail(currentList[i]); } } } if (amountChange > 0) { for (int i = currentDDLocation - 1; i >= 0; i--) { if (currentList[i].QuantityReceived >= amountChange) { currentList[i].QuantityReceived -= amountChange; amountChange = 0; break; } else { currentList[i].QuantityReceived = 0; amountChange -= currentList[i].QuantityReceived; } myBz.UpdateDisbursementDetail(currentList[i]); } } } else { if (amountChange > 0) { for (int i = currentDDLocation - 1; i >= 0; i--) { if (currentList[i].QuantityReceived >= amountChange) { currentList[i].QuantityReceived -= amountChange; amountChange = 0; } else { currentList[i].QuantityReceived = 0; amountChange -= currentList[i].QuantityReceived; } myBz.UpdateDisbursementDetail(currentList[i]); } } } currentGridview.DataSource = currentList; currentGridview.DataBind(); lblDisbQty.Text = tbDisbQty.Text; btnChange.Visible = true; lblDisbQty.Visible = true; btnUpdate.Visible = false; btnCancel.Visible = false; tbDisbQty.Visible = false; } } else if (e.CommandName == "CancelUpdate") { btnChange.Visible = true; lblDisbQty.Visible = true; btnUpdate.Visible = false; btnCancel.Visible = false; tbDisbQty.Visible = false; } } }
//Irene public ActionResult Detail(int id) { //EVERYPAGE if (Session["user"] == null) { return(RedirectToAction("Login")); } Employee e = (Employee)Session["user"]; if (e.RoleID != 3 && e.Authorization != "Representative" && e.RoleID != 2) { return(RedirectToAction("NotAuthorized")); } //EVERYPAGE ViewBag.user = e; if (Request.Form["save"] != null) { List <RequisitionDetail> rdList = BusinessLogic.GetRequisitionDetailItemList(id); String s = Request.Form["ItemCode"]; //DisbursementDetailID int dDetailItemID; int qty; bool canupdate = false; List <int> l1 = new List <int>(); List <int> l2 = new List <int>(); for (int i = 0; i < s.Split(',').Count(); i++) { dDetailItemID = Convert.ToInt32(s.Split(',')[i]); qty = Convert.ToInt32(Request.Form["ItemQty"].Split(',')[i]); DisbursementDetail dd = BusinessLogic.GetDisbursementDetail(dDetailItemID); for (int j = 0; j < rdList.Count; j++) { if (rdList[j].ItemCode == dd.ItemCode) { if (qty >= 0) { if (qty <= rdList[j].ItemQty && dd.TempQty == null) { l1.Add(dDetailItemID); l2.Add(qty); if (l1.Count == s.Split(',').Count()) { canupdate = true; } } else if (qty <= rdList[j].ItemQty && dd.TempQty != null) { if (qty <= (dd.ItemQty - dd.TempQty)) { l1.Add(dDetailItemID); l2.Add(qty); if (l1.Count == s.Split(',').Count()) { canupdate = true; } } else { canupdate = false; TempData["Notify"] = "Entered quantity should not be more than the quantity of the requisition item."; } } else if (qty > rdList[j].ItemQty) { canupdate = false; TempData["Notify"] = "Entered quantity should not be more than the quantity of the requisition item."; } } } } if (canupdate != false) { for (int j = 0; j < l1.Count; j++) { BusinessLogic.UpdateQty(l1[j], l2[j]); } return(RedirectToAction("Outstanding", "Disbursement")); } } } if (Request.Form["confirmed"] != null) { int disitem = Convert.ToInt32(Request.Form["DisbursementID"]); //DisbursementID int empid = Convert.ToInt32(Request.Form["empID"]); String s = Request.Form["ItemCode"]; String itemcode; for (int i = 0; i < s.Split(',').Count(); i++) { itemcode = s.Split(',')[i]; BusinessLogic.UpdateVerify(empid, disitem, itemcode); } List <DisbursementDetail> ddList = BusinessLogic.GetDisbursementDetailList(disitem); String itemCode, dept; int qty, bal; for (int i = 0; i < ddList.Count; i++) { itemCode = ddList[i].ItemCode; dept = ddList[i].Disbursement.DepartmentID; if (ddList[i].TempQty != null) { qty = (int)ddList[i].TempQty; } else { qty = (int)ddList[i].ItemQty; } Catalogue c = BusinessLogic.getCatalogueByID(itemCode); bal = (int)c.CurrentStockQty - qty; BusinessLogic.UpdateDisburseStockCard(itemCode, dept, qty, bal); BusinessLogic.UpdateCatalogue(itemCode, qty); } List <RequisitionDetail> rdlist = BusinessLogic.GetRequisitionDetailItemList(disitem); int quantity = 0; for (int i = 0; i < ddList.Count; i++) { if (ddList[i].ItemQty != ddList[i].TempQty) { itemCode = ddList[i].ItemCode; Catalogue c = BusinessLogic.getCatalogueByID(itemCode); if (ddList[i].TempQty != null) { quantity = (int)(ddList[i].ItemQty - ddList[i].TempQty); } else { quantity = (int)(ddList[i].ItemQty); } BusinessLogic.CreateAdjustmentForDisbursement(itemCode, quantity, (int)ddList[i].Disbursement.Clerk); } } } ViewBag.dlist = BusinessLogic.GetDisbursementById(id); ViewBag.delist = BusinessLogic.GetDisbursementDetailList(id); ViewBag.rlist = BusinessLogic.GetApprovedRequisition(); ViewBag.deptitem = BusinessLogic.GetDeptInfo(ViewBag.dlist.DepartmentID); ViewBag.rdList = BusinessLogic.GetRequisitionDetailItemList(id); return(View()); }
protected void lvDetails_ItemUpdating(object sender, ListViewUpdateEventArgs e) { if (!Page.IsValid) { return; } ListView listDetails = (ListView)sender; ListViewDataItem listItem = (ListViewDataItem)listDetails.Parent; HiddenField hfItemCode = (HiddenField)listItem.FindControl("hfItemCode"); List <DisbursementDetail> ddList = GetDisbursementDetailsPerItem(hfItemCode.Value); List <DisbursementDetail> sortedDDList = new List <DisbursementDetail>(); foreach (DisbursementDetail dd in ddList) { DateTime dateRequested = GetRequestDateFromDD(dd); bool isInserted = false; for (int i = 0; i < sortedDDList.Count; i++) { if (dateRequested < GetRequestDateFromDD(sortedDDList[i])) { //if earlier insert into index sortedDDList.Insert(i, dd); isInserted = true; break; } } if (!isInserted) { sortedDDList.Add(dd); } } int updatedQty = Convert.ToInt32(e.NewValues["Quantity"]); RetrievalDetail retrievalDetail = retrieval.RetrievalDetails.Where(rd => rd.ItemCode == hfItemCode.Value).FirstOrDefault(); int? retrievedQty = retrievalDetail.QuantityRetrieved; DisbursementDetail updatedDD = sortedDDList[e.ItemIndex]; updatedDD.Quantity = updatedQty; sClerkCtrl.UpdateDisbursementDetail(updatedDD); retrievedQty -= updatedQty; sortedDDList.Remove(updatedDD); for (int i = 0; i < sortedDDList.Count; i++) { DisbursementDetail sortedDD = sortedDDList[i]; RequestDetail requestDetail = GetRequestDetail(sortedDD.RequestCode, sortedDD.ItemCode); if (retrievedQty != 0) { if (requestDetail.RemainingQuant < retrievedQty) { sortedDD.Quantity = requestDetail.RemainingQuant; retrievedQty -= requestDetail.RemainingQuant; } else { sortedDD.Quantity = retrievedQty; retrievedQty -= retrievedQty; } } else { sortedDD.Quantity = 0; } sClerkCtrl.UpdateDisbursementDetail(sortedDD); } listDetails.EditIndex = -1; listDetails.DataSource = GetDisbursementDetailsPerItem(hfItemCode.Value); listDetails.DataBind(); }
//Disbursement Detail public int AddDisbDetail(DisbursementDetail disbursementDetail) { return(disbDetService.AddDisbursementDetail(disbursementDetail)); }
// mobile update retrieval list public void SaveRetrievalList(List <StationeryRetrievalUpdateList> deptItem) { //deptId itemId acutalquantity deptReqId foreach (var item in deptItem) { var itemId = context.Items.Where(i => i.ItemName == item.ItemName).FirstOrDefault().ItemId; var bal = GetStockCardBalance(itemId); // Stock Card StockCard sc = new StockCard(); sc.ItemId = itemId; sc.Update_Date = DateTime.Now; sc.Description = context.Departments.Where(d => d.DepartmentId == item.DepartmentId).FirstOrDefault().DepartmentName; sc.Quantity = item.ActualQuanity; sc.Balance = bal - sc.Quantity; context.StockCards.Add(sc); context.SaveChanges(); // departmentRequisition var deptReqRecord = context.DepartmentRequisitions.Where(d => d.DepartmentRequisitionId == item.DepartmentRequisitionId && d.ItemId == itemId).FirstOrDefault(); var previousActual = deptReqRecord.Actual; var currentNeeded = deptReqRecord.Needed - deptReqRecord.Actual; if (currentNeeded >= item.ActualQuanity) { deptReqRecord.Actual += item.ActualQuanity; item.ActualQuanity = 0; } else { deptReqRecord.Actual = deptReqRecord.Needed; item.ActualQuanity = item.ActualQuanity - currentNeeded; } if (deptReqRecord.Needed == deptReqRecord.Actual) { deptReqRecord.Status = StatusType.Completed.ToString(); } context.SaveChanges(); var nowActual = deptReqRecord.Actual; // staff requisition foreach (var deptReqId in context.DepartmentRequisitions.Select(dq => dq.DepartmentRequisitionId).Distinct()) { if (context.DepartmentRequisitions.Where(dq => dq.DepartmentRequisitionId == deptReqId && dq.Status != StatusType.Completed.ToString()).Count() == 0) { context.StaffRequisitions.Where(sq => sq.DepartmentRequisitionId == deptReqId) .ToList().ForEach(sq => sq.Status = StatusType.Completed.ToString()); } } context.SaveChanges(); // Disbursement var exist = from dq in context.DepartmentRequisitions join d in context.Disbursements on dq.DepartmentRequisitionId equals d.DepReqId where dq.DepartmentRequisitionId == item.DepartmentRequisitionId && dq.ItemId == itemId && dq.Actual == 0 select d; if (exist.Count() == 0) { var disbursement = new Disbursement(); String disbursementIdFormat = "DB-xxx"; var list = context.Disbursements.Select(a => a.DisbursementId).ToList(); String currentDisbursementId = "DB-100"; char[] chrArr = new char[] { '-' }; if (list.Count > 0) { var currentId = list .Select(a => a.Split(chrArr)[1]) .Select(a => Convert.ToInt32(a)).Max() + 1; currentDisbursementId = disbursementIdFormat.Replace("xxx", currentId.ToString()); } disbursement.DisbursementId = currentDisbursementId; disbursement.DepReqId = item.DepartmentRequisitionId; disbursement.Status = StatusType.Pending.ToString(); disbursement.DepartmentId = item.DepartmentId; disbursement.CreateDate = DateTime.Now; context.Disbursements.Add(disbursement); var disbursementDetail = new DisbursementDetail(); disbursementDetail.DisbursementId = currentDisbursementId; disbursementDetail.Disbursement = disbursement; disbursementDetail.ItemId = itemId; disbursementDetail.Quantity = nowActual - previousActual; context.DisbursementDetails.Add(disbursementDetail); context.SaveChanges(); } else { var disbursementDetail = new DisbursementDetail(); var disbursement = context.Disbursements.Where(d => d.DepReqId == item.DepartmentRequisitionId && d.DepartmentId == item.DepartmentId).FirstOrDefault(); disbursementDetail.DisbursementId = disbursement.DisbursementId; disbursementDetail.ItemId = itemId; disbursementDetail.Quantity = item.ActualQuanity; disbursementDetail.Disbursement = disbursement; context.DisbursementDetails.Add(disbursementDetail); context.SaveChanges(); } } }
public int UpdateDisbursementDetail(DisbursementDetail dd) { return(disbDetService.UpdateDisbursementDetail(dd)); }