public RedirectToRouteResult DiscardSelBackorders(string[] itemCodes, string[] formIds) { using (SSISdbEntities e = new SSISdbEntities()) { DAL.StaffRequisitionDetailsRepositoryImpl dal = new DAL.StaffRequisitionDetailsRepositoryImpl(e); DAL.StaffRequisitionRepositoryImpl dalHeader = new DAL.StaffRequisitionRepositoryImpl(e); int index = 0; foreach (string i in itemCodes) { string formId = formIds[index]; //update SRD StaffRequisitionDetail srd = new StaffRequisitionDetail(); srd = dal.GetStaffRequisitionDetailById(formId, itemCodes[index]); srd.CancelledBackOrdered = srd.QuantityBackOrdered; srd.QuantityBackOrdered = 0; dal.UpdateStaffRequisitionDetail(srd); //update SRH StaffRequisitionHeader srh = new StaffRequisitionHeader(); srh = dalHeader.GetStaffRequisitionHeaderById(formId); string stockRetrievalId = e.StockRetrievalReqForms.Where(x => x.ReqFormID == formId).Select(x => x.StockRetrievalID).FirstOrDefault(); byte? disbursedStatus = e.StockRetrievalHeaders.Where(x => x.ID == stockRetrievalId).Select(x => x.Disbursed).FirstOrDefault(); bool backOrderStatus = false; List <StaffRequisitionDetail> reqDetailsList = e.StaffRequisitionDetails.Where(x => x.FormID == formId).ToList(); foreach (StaffRequisitionDetail detail in reqDetailsList) { if (detail.QuantityBackOrdered > 0) { backOrderStatus = true; } } switch (backOrderStatus) { case true: //backorder exists for current SR break; case false: srh.Status = "Cancelled"; break; } dalHeader.UpdateStaffRequisitionHeader(srh); index++; e.SaveChanges(); } } Session["DeptReqTabIndex"] = "2"; return(RedirectToAction("Requisition", "Dept")); }
public RedirectToRouteResult ExitEditExistingOrderQty(object[] arr, string[] arr1) { if (arr.Count() == 0 || arr1.Count() == 0) { return(null); } else { try { string formId = Session["id"].ToString(); Session["existingReqEditMode"] = false; //update details of current req history using (SSISdbEntities m = new SSISdbEntities()) { m.Configuration.ProxyCreationEnabled = false; List <RequisitionHistoryDetail> reqDetailsList = m.RequisitionHistoryDetails.Where(x => x.FormID == formId).ToList <RequisitionHistoryDetail>(); DAL.StaffRequisitionDetailsRepositoryImpl dal = new DAL.StaffRequisitionDetailsRepositoryImpl(m); StaffRequisitionDetail srd = new StaffRequisitionDetail(); foreach (RequisitionHistoryDetail rhd in reqDetailsList) { string itemCode = m.Items.Where(x => x.Description == rhd.Description).Select(x => x.ItemCode).FirstOrDefault(); srd = m.StaffRequisitionDetails.Where(x => x.FormID == formId && x.ItemCode == itemCode).FirstOrDefault(); int index = reqDetailsList.IndexOf(rhd); srd.QuantityOrdered = Int32.Parse(arr1[index]); dal.UpdateStaffRequisitionDetail(srd); } m.SaveChanges(); } Session["ReqHistoryPage"] = "2"; } catch (FormatException) { TempData["ErrorMsg"] = "Invalid Quantity!"; return(null); } catch (Exception) { TempData["ErrorMsg"] = "An unexpected error has occured. Please try again."; return(null); } } return(RedirectToAction("RequisitionHistory", "Dept")); }
public RedirectToRouteResult ExitEditNewOrderQty(object[] arr, string[] arr1) { if (arr.Count() == 0 || arr1.Count() == 0) { TempData["ErrorMsg"] = "Fields cannot be empty!"; return(null); } else { try { using (SSISdbEntities e = new SSISdbEntities()) { //update temp list List <StaffRequisitionDetail> list = (List <StaffRequisitionDetail>)Session["newReqList"]; foreach (StaffRequisitionDetail srd in list.ToList()) { StaffRequisitionDetail srdTemp = srd; srdTemp.QuantityOrdered = Int32.Parse(arr1[list.IndexOf(srd)]); list[list.IndexOf(srd)] = srd; } Session["newReqList"] = list; Session["newReqEditMode"] = false; } } catch (FormatException) { TempData["ErrorMsg"] = "Invalid Quantity!"; return(null); } catch (Exception) { TempData["ErrorMsg"] = "An unexpected error has occured. Please try again."; return(null); } } return(RedirectToAction("Requisition", "Dept")); }
public RedirectToRouteResult AddNewReqItem(Item item1, StaffRequisitionDetail item2) { Item itemToAdd = new Item(); using (SSISdbEntities e = new SSISdbEntities()) { string itemCode = Request.Form["SelectItemDesc"].ToString(); itemToAdd = e.Items.Where(x => x.ItemCode == itemCode).FirstOrDefault(); List <StaffRequisitionDetail> list = new List <StaffRequisitionDetail>(); list = (List <StaffRequisitionDetail>)Session["newReqList"]; StaffRequisitionDetail srd = new StaffRequisitionDetail(); srd.ItemCode = itemToAdd.ItemCode; srd.FormID = Session["currentFormId"].ToString(); srd.QuantityOrdered = item2.QuantityOrdered; srd.QuantityDelivered = 0; srd.QuantityBackOrdered = item2.QuantityOrdered; srd.CancelledBackOrdered = 0; srd.Item = e.Items.Where(x => x.ItemCode == itemToAdd.ItemCode).FirstOrDefault(); srd.Item.Description = itemToAdd.Description; srd.Item.UoM = itemToAdd.UoM; list.Add(srd); Session["newReqList"] = list; //add to list meant for already added items List <String> tempList = (List <String>)Session["tempList"]; tempList.Add(itemToAdd.ItemCode); Session["tempList"] = tempList; List <Item> newItemList = new List <Item>(); return(RedirectToAction("Requisition", "Dept")); } }
public void UpdateStaffRequisitionDetail(StaffRequisitionDetail staffRequisitionDetail) { context.Entry(staffRequisitionDetail).State = EntityState.Modified; }
public void DeleteStaffRequisitionDetail(string formId, string itemCode) { StaffRequisitionDetail staffRequisitionDetail = context.StaffRequisitionDetails.Where(x => x.FormID == formId && x.ItemCode == itemCode).First(); context.StaffRequisitionDetails.Remove(staffRequisitionDetail); }
public void InsertStaffRequisitionDetail(StaffRequisitionDetail staffRequisitionDetail) { context.StaffRequisitionDetails.Add(staffRequisitionDetail); }
public RedirectToRouteResult DisburseItems() { using (SSISdbEntities m = new SSISdbEntities()) { m.Configuration.ProxyCreationEnabled = false; string id = (string)Session["RetrievalId"]; StockRetrievalHeader srh = m.StockRetrievalHeaders.Where(x => x.ID == id).First(); srh.Disbursed = 1; List <StockRetrievalDetail> itemsRetrieved = m.StockRetrievalDetails.Where(x => x.Id == id).ToList(); bool stockAdjustmentHeaderCreated = false; foreach (StockRetrievalDetail srd in itemsRetrieved) { DateTime localDate = DateTime.Now; if (srd.QuantityAdjusted > 0) { //To check whether there is stock adjustment header for the item if (!stockAdjustmentHeaderCreated) { //To Create Stock Adjustment Header stockAdjustmentHeaderCreated = true; StockAdjustmentHeader sah = new StockAdjustmentHeader(); int stockAdjustmentHeaderId = m.StockAdjustmentHeaders.Count() + 1; sah.RequestId = CommonLogic.SerialNo(stockAdjustmentHeaderId, "SA"); sah.DateRequested = localDate; sah.Requestor = (string)Session["LoginEmployeeID"]; sah.TransactionType = "Stock Adjustment"; m.StockAdjustmentHeaders.Add(sah); m.SaveChanges(); } //To Create Stock Adjustment Details int stockAdjustmentDetailId = m.StockAdjustmentHeaders.Count(); StockAdjustmentDetail sad = new StockAdjustmentDetail(); sad.RequestId = CommonLogic.SerialNo(stockAdjustmentDetailId, "SA"); sad.ItemCode = srd.ItemCode; sad.ItemQuantity = srd.QuantityAdjusted; float itemUnitCost = m.Items.Where(x => x.ItemCode == sad.ItemCode).Select(x => x.AvgUnitCost).FirstOrDefault(); sad.Amount = itemUnitCost * sad.ItemQuantity; sad.Remarks = srd.Remarks; sad.Status = "Pending"; m.StockAdjustmentDetails.Add(sad); //To add the item transactions ItemTransaction itemTransaction = new ItemTransaction(); itemTransaction.TransDateTime = localDate; itemTransaction.DocumentRefNo = sad.RequestId; itemTransaction.ItemCode = sad.ItemCode; itemTransaction.TransactionType = "Stock Adjustment"; itemTransaction.Quantity = sad.ItemQuantity; itemTransaction.UnitCost = itemUnitCost; itemTransaction.Amount = sad.Amount; m.ItemTransactions.Add(itemTransaction); //To update the quantity of the item table Item itemAdjusted = m.Items.Where(x => x.ItemCode == itemTransaction.ItemCode).FirstOrDefault(); itemAdjusted.Quantity -= itemTransaction.Quantity; m.SaveChanges(); } } //Creating list of new disbursements //To order by id so the earlier id will mean that the req form was submitted earlier List <String> reqFormIDList = m.StockRetrievalReqForms.OrderBy(x => x.Id).Where(x => x.StockRetrievalID == id).Select(x => x.ReqFormID).ToList <String>(); //Create distinct disbursement headers List <String> disbHeaderDeptCodes = new List <String>(); //Take from stock retrieval details List <StockRetrievalDetail> stockRetrievalDetails = m.StockRetrievalDetails.Where(x => x.Id == id).ToList <StockRetrievalDetail>(); foreach (StockRetrievalDetail srd in stockRetrievalDetails) { //To take care that in case stock adjustment makes the quantity retrieved to be 0 if (srd.QuantityRetrieved > 0) { String deptCode = m.DepartmentDetails.Where(x => x.CollectionPointID == srd.CollectionPointID).FirstOrDefault().DepartmentCode; disbHeaderDeptCodes.Add(deptCode); } } //Make it distinct so that only one disbursement header is created disbHeaderDeptCodes = disbHeaderDeptCodes.Distinct().ToList(); foreach (String deptCode in disbHeaderDeptCodes) { DisbursementHeader newDH = new DisbursementHeader(); int count = m.DisbursementHeaders.Count() + 1; string disId = CommonLogic.SerialNo(count, "DH"); newDH.Id = disId; newDH.Status = "Open"; newDH.Date = DateTime.Now; newDH.Amount = 0; //Put 0 first and then to be calculated after all the disbursement details is done newDH.StockRetrievalId = id; newDH.DepartmentCode = deptCode; newDH.CollectionPointID = m.DepartmentDetails.Where(x => x.DepartmentCode == deptCode).FirstOrDefault().CollectionPointID; newDH.RepresentativeID = m.DepartmentDetails.Where(x => x.DepartmentCode == newDH.DepartmentCode).FirstOrDefault().RepresentativeID; float totalAmount = 0f; //Create disbursement details, since one collection point is for one dept, then the entire stock retrieved would be assigned to that dept foreach (StockRetrievalDetail srd in stockRetrievalDetails) { String deptCodeDH = m.DepartmentDetails.Where(x => x.CollectionPointID == srd.CollectionPointID).Select(x => x.DepartmentCode).FirstOrDefault(); //Only disbursed if quantity retrieved is more than 0 if (srd.QuantityRetrieved > 0 && deptCodeDH.Equals(newDH.DepartmentCode)) { DisbursementDetail newDD = new DisbursementDetail(); newDD.Id = disId; newDD.ItemCode = srd.ItemCode; int quantityOrdered = 0; foreach (String reqF in reqFormIDList) { StaffRequisitionDetail staffReqDet = m.StaffRequisitionDetails.Where(x => x.FormID == reqF && x.ItemCode == newDD.ItemCode).FirstOrDefault(); StaffRequisitionHeader staffReqHeader = m.StaffRequisitionHeaders.Where(x => x.FormID == reqF).FirstOrDefault(); int reqQtyOrdered = 0; if (staffReqDet != null && staffReqHeader != null) { if (staffReqHeader.DepartmentCode.Equals(newDH.DepartmentCode)) { reqQtyOrdered = staffReqDet.QuantityOrdered; } } quantityOrdered = quantityOrdered + reqQtyOrdered; } newDD.QuantityOrdered = quantityOrdered; newDD.QuantityReceived = srd.QuantityRetrieved; float itemUnitCost = m.Items.Where(x => x.ItemCode == newDD.ItemCode).Select(x => x.AvgUnitCost).FirstOrDefault(); newDD.UnitCost = itemUnitCost; newDD.UoM = m.Items.Where(x => x.ItemCode == newDD.ItemCode).Select(x => x.UoM).FirstOrDefault(); newDD.QuantityAdjusted = 0; newDD.TransactionType = "Disbursement"; float amount = itemUnitCost * newDD.QuantityReceived; totalAmount += amount; m.DisbursementDetails.Add(newDD); //To add the item transactions DateTime localDate = DateTime.Now; ItemTransaction itemTransaction = new ItemTransaction(); itemTransaction.TransDateTime = localDate; itemTransaction.DocumentRefNo = newDD.Id; itemTransaction.ItemCode = newDD.ItemCode; itemTransaction.TransactionType = "Disbursement"; itemTransaction.Quantity = newDD.QuantityReceived; itemTransaction.UnitCost = itemUnitCost; itemTransaction.Amount = newDD.QuantityReceived * itemUnitCost; m.ItemTransactions.Add(itemTransaction); //To update the quantity of the item table Item itemDisbursed = m.Items.Where(x => x.ItemCode == itemTransaction.ItemCode).FirstOrDefault(); itemDisbursed.Quantity -= itemTransaction.Quantity; } } newDH.Amount = totalAmount; m.DisbursementHeaders.Add(newDH); m.SaveChanges(); } } return(RedirectToAction("Disbursements", "Store")); }