// need to reset ActualQty To Zero before += rsub.ActualQty;, because same item code from different department has same ActualQty now public void SaveActualQtyBreakdownByDepartment(int requisitionId, List <RetrievalShortfallItemSub> retrievalShortfallItemSubListOfList) { List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId); resetActualQtyToZero(retrievalShortfallItemSubListOfList, disbursementList); foreach (RetrievalShortfallItemSub rsub in retrievalShortfallItemSubListOfList) { foreach (Disbursement d in disbursementList) { if (rsub.DeptCode == d.DeptCode) { foreach (Disbursement_Item di in d.Disbursement_Item) { if (rsub.ItemCode == di.ItemCode) { //find the correct Disbursement_Item to save di.ActualQty += rsub.ActualQty; // di.ActualQty = rsub.ActualQty; EFBroker_Disbursement.UpdateDisbursementItem(di); } } } } } return; }
//populate shortfall data for sub gridview public List <RetrievalShortfallItemSub> DisplayRetrievalShortfallSubGridView(int requisitionId, string shortfallItemCode) { List <RetrievalShortfallItemSub> RetrievalShortfallItemSubGridViewList = new List <RetrievalShortfallItemSub>(); List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId); int i = 0; foreach (Disbursement d in disbursementList) { foreach (Requisition r in EFBroker_Requisition.GetRequisitionListByDisbursementID(d.DisbursementID)) { //if only one departmentName string departmentName = d.Department.DeptName.ToString(); string departmentCode = d.Department.DeptCode.ToString(); try { int requestedQty = EFBroker_Requisition.FindReqItemsByReqIDItemID(r.RequisitionID, shortfallItemCode).RequestedQty ?? 0; //if RequestedQty is null, assign to 0 //actualQty(0) bind with avialableQty(retrievedQty) RetrievalShortfallItemSub rsfs = new RetrievalShortfallItemSub((DateTime)r.RequestDate, departmentName, departmentCode, requestedQty, 0, shortfallItemCode); RetrievalShortfallItemSubGridViewList.Add(rsfs); i++; } catch (Exception e) { continue; } } } return(RetrievalShortfallItemSubGridViewList); }
public void SaveCollectionTimeAndDateToDisbursement(int requisitionId, string collectionPoint, DateTime date, string time) { EFBroker_Disbursement.UpdateRetrievalStatus(requisitionId, "Closed"); List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId); Random r = new Random(); foreach (Disbursement d in disbursementList) { string depCode = d.Department.DeptCode; if (EFBroker_DeptEmployee.GetCollectionPointbyDeptCode(depCode).CollectionPoint1 == collectionPoint)////////////////The ObjectContext instance has been disposed and can no longer be used for operations that require a connection."} { d.CollectionDate = date; d.CollectionTime = time; int value = r.Next(1000, 9999); d.AccessCode = value.ToString(); d.Status = "Ready"; EFBroker_Disbursement.UpdateDisbursement(d); //Thread,asynctask for email Thread emailThread = new Thread(() => SendEmailToDepartmentRepresentative(depCode, d, collectionPoint)); emailThread.Start(); // } } }
protected void BtnGenerate_Click(object sender, EventArgs e) { bool check = false; List <int> requisitionNo = new List <int>(); foreach (GridViewRow row in gvReq.Rows) { if (((CheckBox)row.FindControl("cbxCheckBox")).Checked == false) { lblCheckBoxValidation.Text = "Please select at least one requisition!"; } else if (((CheckBox)row.FindControl("cbxCheckBox")).Checked) { check = true; requisitionNo.Add(Convert.ToInt32((row.FindControl("lblrequisitionNo") as Label).Text)); } } if (check) { int empId = (int)Session["empID"];////////// int retrievalId = EFBroker_Disbursement.AddNewRetrieval(empId); Session["RetrievalID"] = retrievalId; reqCon.AddDisbursement(retrievalId, requisitionNo); Response.Redirect("~/Store/RetrievalListDetail.aspx"); } }
//in android //update actual qty for non-shortfall disbursement items when generate disbursement button clicked in RetrievalListDetail page at werehouse public List <RetrievalShortfallItem> UpdateRetrieval(int requisitionId, Dictionary <string, int> retrievedData) { //update retrieval status EFBroker_Disbursement.UpdateRetrievalStatus(requisitionId, "InProgress"); List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId); foreach (KeyValuePair <string, int> kvp in retrievedData) { string itemCode = kvp.Key; foreach (Disbursement d in disbursementList) { foreach (Disbursement_Item dI in d.Disbursement_Item) { if (dI.ItemCode.Equals(itemCode)) { dI.ActualQty = kvp.Value; EFBroker_Disbursement.UpdateDisbursementItem(dI); } } } } //call CheckShortfall method after button generate disbursement clicked in RetrievalListDetail page at werehouse return(CheckShortfall(requisitionId, retrievedData)); }
//update Disbursement Status public void UpdateDisbursementStatus(int disbId) { EFBroker_Disbursement.UpdateDisbursementStatus(disbId); List <Requisition> requisitionList = EFBroker_Requisition.GetRequisitionListByDisbursementID(disbId); requisitionList.ForEach(r => r.Status = "Closed"); EFBroker_Requisition.UpdateRequisitionList(requisitionList); }
//update Disbursement final actual quantity public void UpdateDisbursement(int disbId, List <int> actualQty, List <string> disbRemark) { //Update actual disbursement quantity EFBroker_Disbursement.UpdateDisbursementActualQty(disbId, actualQty, disbRemark); //Update Disbursement statu to "Closed" UpdateDisbursementStatus(disbId); //Add Disbursement transaction to StockCard AddStockCardTransaction(disbId); }
//discard invalid disbursement and set requisitioin status to PRORITY if all qty zero public bool CheckInvalidDisbursement(int rId) { List <Disbursement> disbList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(rId); Dictionary <Disbursement, bool> chkDisbStatus = new Dictionary <Disbursement, bool>(); bool valid = false; foreach (Disbursement d in disbList) { foreach (Disbursement_Item di in d.Disbursement_Item) { if (di.ActualQty != 0) { valid = true; } } chkDisbStatus.Add(d, valid); } if (!valid) { List <Requisition> reqList = new List <Requisition>(); foreach (Disbursement d in disbList) { Requisition r = EFBroker_Requisition.GetRequisitionByDisbID(d.DisbursementID); r.Status = "Priority"; r.DisbursementID = null; EFBroker_Requisition.UpdateRequisition(r); d.Status = "Invalid"; EFBroker_Disbursement.UpdateDisbursement(d); } } valid = false; foreach (KeyValuePair <Disbursement, bool> kvp in chkDisbStatus) { //if 1 of the disbursement is true => valid is true if (kvp.Value) { valid = true; } } if (!valid) // valid = false; { EFBroker_Disbursement.UpdateRetrievalStatus(rId, "Invalid"); } return(valid); }
//VERIFY ACCESS CODE public bool CheckAccessCode(int disbId, string accessCode) { if (EFBroker_Disbursement.GetAccessCodebyDisbID(disbId).Equals(accessCode)) { return(true); } else { return(false); } }
public WCFRegenerateRequest GetRegenerateDate(string disbId) { string reqDate = (disbCon.GetRegenrateDate(Convert.ToInt32(disbId))).ToLongDateString(); string depName = EFBroker_Disbursement.GetDisbursmentbyDisbID(Convert.ToInt32(disbId)).Department.DeptName; string reqBy = EFBroker_DeptEmployee.GetDeptRepByDeptCode(depName); WCFRegenerateRequest r = new WCFRegenerateRequest(); r = WCFRegenerateRequest.Make(reqDate, reqBy, depName); return(r); }
//Display retrieval by search keyword public List <Retrieval> DisplaySearch(string searchWord) { List <Retrieval> retrievalList = EFBroker_Disbursement.GetPendingAndProgressRetrievalList(); List <Retrieval> searchList = new List <Retrieval>(); foreach (Retrieval i in retrievalList) { searchList = retrievalList.Where(x => x.RetrievedDate.Value.ToLongDateString().ToLower().Contains(searchWord.ToLower()) || x.RetrievalID.ToString().Contains(searchWord) || x.Employee.EmpName.ToLower().Contains(searchWord.ToLower()) || x.RetrievalStatus.ToLower().Contains(searchWord.ToLower())).ToList(); } return(searchList); }
//udpate acuatal quantity if no shortfall public void UpdateAllActaulQty(int requisitionId) { List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId); foreach (Disbursement d in disbursementList) { foreach (Disbursement_Item dI in d.Disbursement_Item) { dI.ActualQty = dI.TotalRequestedQty; EFBroker_Disbursement.UpdateDisbursementItem(dI); } } }
public static void UpdateDisbursementActualQty(int disbID, List <int> actualQty, List <string> disbRemark) { int i = 0; using (StationeryEntities context = new StationeryEntities()) { Disbursement disbursement = GetDisbursmentbyDisbID(disbID); foreach (Disbursement_Item di in disbursement.Disbursement_Item) { di.ActualQty = actualQty[i]; di.Remarks = disbRemark[i]; EFBroker_Disbursement.UpdateDisbursementItem(di); i++; } } }
//GET DISBURSEMENT LIST TO DISPLAY public List <DisbursementListItems> GvDisbursementPopulate() { List <DisbursementListItems> disbursementListItemsList = new List <DisbursementListItems>(); //get all disbursement data List <Disbursement> disbursement = EFBroker_Disbursement.GetAllDisbursementList(); //get dep detail for each disbursement foreach (Disbursement d in disbursement) { //Set DisbursementListItem Details DisbursementListItems disbursementListItems = CreateDisbursementListItem(d); //add display data to list disbursementListItemsList.Add(disbursementListItems); } return(disbursementListItemsList); }
//Reset Actual Quantity to zero public void resetActualQtyToZero(List <RetrievalShortfallItemSub> retrievalShortfallItemSubListOfList, List <Disbursement> disbursementList) { foreach (RetrievalShortfallItemSub shortfallList in retrievalShortfallItemSubListOfList) { foreach (Disbursement d in disbursementList) { foreach (Disbursement_Item di in d.Disbursement_Item) { if (shortfallList.ItemCode == di.ItemCode) { di.ActualQty = 0; EFBroker_Disbursement.UpdateDisbursementItem(di); } } } } }
public void AddDisbursemen_Item(int disbursementID) { List <int> requisitionIDList = new List <int>(); requisitionIDList = EFBroker_Requisition.GetRequisitionIDListbyDisbID(disbursementID); foreach (int rL in requisitionIDList) { List <Requisition_Item> Requisition_ItemList = EFBroker_Requisition.GetRequisitionItemListbyReqID(rL); foreach (Requisition_Item r in Requisition_ItemList) { if (Disbursement_ItemList.Count != 0) { bool add = true; foreach (Disbursement_Item i in Disbursement_ItemList) { if (i.ItemCode == r.ItemCode && i.DisbursementID == r.Requisition.DisbursementID) { add = false; i.TotalRequestedQty += r.RequestedQty; EFBroker_Disbursement.UpdateDisbursementItem(i); } } if (add) { Disbursement_Item dItem1 = CreateDisbursementItemList(disbursementID, r); EFBroker_Disbursement.AddNewDisbursementItem(dItem1); Disbursement_ItemList.Add(dItem1); } } else { Disbursement_Item dItem2 = CreateDisbursementItemList(disbursementID, r); EFBroker_Disbursement.AddNewDisbursementItem(dItem2); Disbursement_ItemList.Add(dItem2); } } } }
public void RegenerateRequisition(List <WCFRequestedItem> regenList) { int disbId = 0; List <RequestedItem> requItemList = new List <RequestedItem>(); foreach (WCFRequestedItem r in regenList) { RequestedItem rItem = new RequestedItem(r.Code, r.Description, Convert.ToInt32(r.ShortfallQty), RequisitionControl.getUOM(r.Code)); disbId = r.DisbId; requItemList.Add(rItem); } DateTime date = (disbCon.GetRegenrateDate(disbId)); string depName = EFBroker_Disbursement.GetDisbursmentbyDisbID(Convert.ToInt32(disbId)).Department.DeptName; string reqBy = EFBroker_DeptEmployee.GetDeptRepByDeptCode(depName); int empID = EFBroker_DeptEmployee.GetDeptRepEmpIDByDeptCode(depName); string depCode = EFBroker_DeptEmployee.GetDepartByEmpID(empID).DeptCode; string status = "Priority"; RequisitionControl.addNewRequisitionItem(requItemList, date, status, empID, depCode); }
//GET DISBURSEMENT DETAIL LIST TO DISPLAY public List <DisbursementDetailListItems> GvDisbursementDetailPopulate(int disbId) { List <DisbursementDetailListItems> disbursementDetailListItemsList = new List <DisbursementDetailListItems>(); List <Disbursement_Item> disbursementDetail = new List <Disbursement_Item>(); disbursementDetail = EFBroker_Disbursement.GetDisbursement_ItemsbyDisbID(disbId); foreach (Disbursement_Item disbDetails in disbursementDetail) { string itemCode = disbDetails.ItemCode; string itemDesc = disbDetails.Item.Description; int actualQty = (int)disbDetails.ActualQty; string remarks = disbDetails.Remarks; int reqQty = (int)disbDetails.TotalRequestedQty; DisbursementDetailListItems disbursementDetailListItems = new DisbursementDetailListItems(itemCode, itemDesc, reqQty, actualQty, remarks); disbursementDetailListItemsList.Add(disbursementDetailListItems); } return(disbursementDetailListItemsList); }
// filter out different Department which has same collect point public List <CollectionPointItem> DisplayCollectionPoint(int requisitionId) { List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId); List <CollectionPointItem> collectionPointItemList = new List <CollectionPointItem>(); List <int> CollectionLocationIDList = new List <int>(); foreach (Disbursement d in disbursementList) { if (CollectionLocationIDList.Count != 0) { bool add = true; foreach (int cID in CollectionLocationIDList) { if (d.Department.CollectionLocationID == cID) { add = false; } } if (add) { CollectionLocationIDList.Add((int)d.Department.CollectionLocationID); CollectionPointItem c1 = CreateCollectionPointItemList(d); collectionPointItemList.Add(c1); } } else { CollectionLocationIDList.Add((int)d.Department.CollectionLocationID); CollectionPointItem c2 = CreateCollectionPointItemList(d); collectionPointItemList.Add(c2); } } return(collectionPointItemList); }
//Add disbursement transaction to Stockcard public void AddStockCardTransaction(int disbId) { string transactionType = "Disbursement"; List <Disbursement_Item> d = EFBroker_Disbursement.GetDisbursement_ItemsbyDisbID(disbId); string itemCode; int Qty; int balance; foreach (Disbursement_Item dI in d) { itemCode = dI.ItemCode; Qty = (int)dI.ActualQty; balance = (int)dI.Item.BalanceQty - Qty; StockCard sc = new StockCard(); sc.ItemCode = itemCode; sc.TransactionType = transactionType; sc.Qty = Qty; sc.Balance = balance; sc.TransactionDetailID = disbId; EFBroker_StockCard.AddStockTransaction(sc); } }
public List <RetrievalListDetailItem> DisplayRetrievalListDetail(int requisitionId) { List <RetrievalListDetailItem> retrievalListDetailItemDisplayList = new List <RetrievalListDetailItem>(); //get retrievalStatus by requisitionId string retrievalStatus = EFBroker_Disbursement.GetRetrievalStatusByRequisitionId(requisitionId); // dictionary with itemcode + totalrequestedQty Dictionary <string, int> itemcodeAndTotalRequestedQtyDictionary = new Dictionary <string, int>(); HashSet <String> uniqueItemcodeHashSet = new HashSet <string>(); List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId); // remove repeated itemcode in disbursementList foreach (Disbursement d in disbursementList) { foreach (Disbursement_Item dI in d.Disbursement_Item) { uniqueItemcodeHashSet.Add(dI.ItemCode); } } // accumulate totalRequestedQty if there is same itemCode in Disbursement, then foreach (string i in uniqueItemcodeHashSet) { string itemCode = i; int totalRequestedQty = 0; foreach (Disbursement d in disbursementList) { foreach (Disbursement_Item dI in d.Disbursement_Item) { if (dI.ItemCode == itemCode) { totalRequestedQty += (int)dI.TotalRequestedQty; } } } itemcodeAndTotalRequestedQtyDictionary.Add(itemCode, totalRequestedQty); } //create RetrievalListDetailItem to display in DisplayRetrievalListDetail base on retrievalStatus foreach (KeyValuePair <string, int> kvp in itemcodeAndTotalRequestedQtyDictionary) { int retrievedQty = 0; if (retrievalStatus == "Pending") { //default retrievedQty is same as totalRequestedQty retrievedQty = kvp.Value; } if (retrievalStatus == "InProgress") { //retrievedQty is same as value which inputted in warehouse retrievedQty = EFBroker_Disbursement.GetRetrievedQtyByRequisitionIdNItemCode(requisitionId, kvp.Key); } Item item = EFBroker_Item.GetItembyItemCode(kvp.Key); string bin = item.Bin; string description = item.Description; RetrievalListDetailItem retDetail = new RetrievalListDetailItem(bin, description, kvp.Value, kvp.Key, retrievedQty); retrievalListDetailItemDisplayList.Add(retDetail); } return(retrievalListDetailItemDisplayList); }
// public void AddDisbursement(int requisitionId, List <int> requisitionNo) { List <int> disbursementIDList = new List <int>(); Disbursement d = new Disbursement(); List <int> requestedByList = new List <int>(); //EmpID List <string> departmentCodeList = new List <string>(); foreach (int i in requisitionNo) { requestedByList.Add((int)(EFBroker_Requisition.GetRequisitionByID(i).RequestedBy)); } //foreach requestedByList get depcode foreach (int i in requestedByList) { string departmentCode = EFBroker_DeptEmployee.GetDepartByEmpID(i).DeptCode.ToString(); if (departmentCodeList.Count() != 0) { bool add = true; foreach (string s in departmentCodeList) { if (s == departmentCode) { add = false; } } if (add) { departmentCodeList.Add(departmentCode); } } else { departmentCodeList.Add(departmentCode); } } //foreach depcode add disbursement + disbDetail foreach (string i in departmentCodeList) { //add Disbursement d.RetrievalID = requisitionId; d.DeptCode = i; d.Status = "Pending"; int disbursementId = EFBroker_Disbursement.AddNewDisbursment(d); disbursementIDList.Add(disbursementId);//auto increasement disbursementIDList after SaveChanges } foreach (int i in disbursementIDList) { string departmentCode = EFBroker_Disbursement.GetDisbursmentbyDisbID(i).DeptCode; foreach (int no in requisitionNo) { //update requisition table Requisition r = new Requisition(); r = EFBroker_Requisition.GetRequisitionByID(no); string dep = EFBroker_DeptEmployee.GetDepartByEmpID(r.RequestedBy ?? 0).DeptCode;//if null, ==0 if (dep == departmentCode) { r.Status = "InProgress";///////////////////////////////////////////// r.DisbursementID = i; EFBroker_Requisition.UpdateRequisition(r); } } AddDisbursemen_Item(i); } }
//Get all Retrieval List public List <Retrieval> DisplayRetrievalList() { return(EFBroker_Disbursement.GetPendingAndProgressRetrievalList()); }
//GET DISBURSEMENT DETAIL OBJECT TO DISPLAY public DisbursementListItems DisbursementListItemsObj(int disbId) { Disbursement disb = EFBroker_Disbursement.GetDisbursmentbyDisbID(disbId); return(CreateDisbursementListItem(disb)); }
protected void Page_Load(object sender, EventArgs e) { string itemCode = Request.QueryString["itemCode"]; string adjustment = "Adjustment"; //strings for stock card transaction type string disbursement = "Disbursement"; string purchase = "Purchase"; if (!ValidatorUtil.isEmpty(itemCode)) { Item item = EFBroker_Item.GetItembyItemCode(itemCode); string currentYear = DateTime.Now.Year.ToString(); List <PriceList> plList = EFBroker_PriceList.GetPriceListByItemCode(itemCode).Where(c => c.TenderYear == currentYear).ToList(); if (item != null && plList.Count > 0) { lblItemCode.Text = item.ItemCode; lblItemName.Text = item.Description; lblBin.Text = item.Bin; lblUom.Text = item.UnitOfMeasure; foreach (PriceList pl in plList) { switch (pl.SupplierRank) { case 1: lblSupp1.Text = pl.SupplierCode; break; case 2: lblSupp2.Text = pl.SupplierCode; break; case 3: lblSupp3.Text = pl.SupplierCode; break; } } if (plList.Count < 3) // N/A on supplier labels if there are less than 3 suppliers { lblSupp3.Text = "N/A"; if (plList.Count < 2) { lblSupp2.Text = "N/A"; } } List <StockCard> scList = EFBroker_StockCard.GetStockCardsByItemCode(itemCode); List <StockCardDisplayRow> scDisplayList = new List <StockCardDisplayRow>(); foreach (StockCard sc in scList) { if (sc.TransactionType == adjustment || sc.TransactionType == disbursement || sc.TransactionType == purchase) { //Possible to display 3 types of stock card entries (each accessing different tables) StockCardDisplayRow scdr = new StockCardDisplayRow(); if (sc.TransactionType == adjustment) { Discrepency d = EFBroker_Discrepancy.GetDiscrepancyById((int)sc.TransactionDetailID); scdr.TransDate = ((DateTime)d.Date).ToShortDateString(); scdr.TransDetails = "Adjustment ID. " + sc.TransactionDetailID; scdr.Quantity = "ADJ " + GetQuantityString((int)sc.Qty); } else if (sc.TransactionType == purchase) { PurchaseOrder po = EFBroker_PurchaseOrder.GetPurchaseOrderById((int)sc.TransactionDetailID); scdr.TransDate = ((DateTime)po.ExpectedDate).ToShortDateString(); scdr.TransDetails = "Supplier - " + po.SupplierCode; Item_PurchaseOrder ipo = EFBroker_PurchaseOrder.GetPurchaseOrderItem(po.PurchaseOrderID, itemCode); scdr.Quantity = GetQuantityString((int)sc.Qty); } else if (sc.TransactionType == disbursement) { Disbursement db = EFBroker_Disbursement.GetDisbursmentbyDisbID((int)sc.TransactionDetailID); scdr.TransDate = ((DateTime)db.CollectionDate).ToShortDateString(); scdr.TransDetails = EFBroker_DeptEmployee.GetDepartByDepCode(db.DeptCode).DeptName; scdr.Quantity = GetQuantityString((int)sc.Qty); } scdr.Balance = (int)sc.Balance; scDisplayList.Add(scdr); } } gvTransactions.DataSource = scDisplayList; gvTransactions.DataBind(); } else //if item is not found or no entries found in price list table { Response.Redirect(LoginController.StationeryCatalogueURI); } } else //if there is no itemCode in querystring { Response.Redirect(LoginController.StationeryCatalogueURI); } }
//Get Current Disbursement public Disbursement GetCurrentDisbursement(int disbId) { return(EFBroker_Disbursement.GetDisbursmentbyDisbID(disbId)); }