private int GetAdjustmentSum(Item i) { Discrepency dMonthly = EFBroker_Discrepancy.GetPendingMonthlyDiscrepancyByItemCode(i.ItemCode); List <Discrepency> dList = EFBroker_Discrepancy.GetPendingDiscrepanciesByItemCode(i.ItemCode); int adjustment = 0; if (dMonthly == null) { foreach (Discrepency d in dList) { adjustment += (int)d.AdjustmentQty; } } else { adjustment = (int)dMonthly.AdjustmentQty; foreach (Discrepency d in dList) { if ((int)d.DiscrepencyID > dMonthly.DiscrepencyID) { adjustment += (int)d.AdjustmentQty; } } } return(adjustment); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { monthly = EFBroker_Discrepancy.GetMonthlyDiscrepancyList(); List <Discrepency> pending = EFBroker_Discrepancy.GetPendingDiscrepancyList(); Dictionary <Discrepency, Item> monthlySource = new Dictionary <Discrepency, Item>(); Dictionary <Discrepency, Item> pendingSource = new Dictionary <Discrepency, Item>(); foreach (Discrepency d in monthly) { Item i = EFBroker_Item.GetItembyItemCode(d.ItemCode); decimal discrepancyAmount = Math.Abs((decimal)d.TotalDiscrepencyAmount); if (Session["empRole"] != null) { string role = (string)Session["empRole"]; if (Session["empRole"].ToString() == "Store Manager" && discrepancyAmount >= 250) { monthlySource.Add(d, i); } else if (Session["empRole"].ToString() == "Store Supervisor" && discrepancyAmount < 250) { monthlySource.Add(d, i); } } } gvMonthly.DataSource = monthlySource; gvMonthly.DataBind(); foreach (Discrepency d in pending) { Item i = EFBroker_Item.GetItembyItemCode(d.ItemCode); decimal discrepancyAmount = Math.Abs((decimal)d.TotalDiscrepencyAmount); if (Session["empRole"] != null) { if (Session["empRole"].ToString() == "Store Manager" && discrepancyAmount >= 250) { pendingSource.Add(d, i); } else if (Session["empRole"].ToString() == "Store Supervisor" && discrepancyAmount < 250) { pendingSource.Add(d, i); } } else { Utility.logout(); } } gvPending.DataSource = pendingSource; gvPending.DataBind(); } }
private bool sendDiscrepanciesToDatabaseWithItemUpdates(List <Discrepency> dList) { try { EFBroker_Discrepancy.SaveDiscrepenciesWithItemUpdates(dList); return(true); } catch (Exception e) { return(false); } }
protected void BtnProcess_Click(object sender, EventArgs e) { try { foreach (GridViewRow row in gvActionSummary.Rows) { int discID = Int32.Parse((row.FindControl("lblDiscID") as Label).Text); string action = (row.FindControl("lblAction") as Label).Text; Discrepency d = EFBroker_Discrepancy.GetDiscrepancyById(discID); if (d.Status == "Monthly") { if (action == "Approved") { List <Discrepency> dList = EFBroker_Discrepancy.GetPendingDiscrepanciesByItemCode(d.ItemCode); foreach (Discrepency d2 in dList) { if (d2.DiscrepencyID < d.DiscrepencyID) { //Negating discrepancies reported before the monthly discrepancy after it is approved EFBroker_Discrepancy.ProcessDiscrepancy(d2.DiscrepencyID, "Resolved"); } } } } EFBroker_Discrepancy.ProcessDiscrepancy(discID, action); if (action == "Approved") { //only update stock card and item tables if discrepancy is approved StockCard sc = new StockCard(); StockCard lastEntry = EFBroker_StockCard.GetStockCardsByItemCode(d.ItemCode).Last(); sc.ItemCode = d.ItemCode; sc.TransactionType = "Adjustment"; sc.Qty = d.AdjustmentQty; sc.Balance = lastEntry.Balance + d.AdjustmentQty; sc.TransactionDetailID = d.DiscrepencyID; EFBroker_StockCard.ResolveDiscrepancy(sc, sc.ItemCode, (int)sc.Balance); } } Session["discrepancySummary"] = null; Utility.AlertMessageThenRedirect("Adjustments processed", "StockAdjustment.aspx"); } catch (Exception ex) { Session["discrepancySummary"] = null; Utility.AlertMessageThenRedirect("Failed to process adjustments, please try again", "StockAdjustment.aspx"); } }
private bool sendDiscrepanciesToDatabase(List <Discrepency> dList, bool monthly) { try { if (monthly) { EFBroker_Discrepancy.MonthlyInventoryCheck(dList); } else { EFBroker_Discrepancy.SaveDiscrepencies(dList); } return(true); } catch (Exception e) { return(false); } }
private void ProcessApprovalAndRejections(GridView gdv, Dictionary <KeyValuePair <Discrepency, Item>, String> summary) { foreach (GridViewRow row in gdv.Rows) { RadioButtonList rbl = row.FindControl("rblAction") as RadioButtonList; if (rbl.SelectedIndex == 0 || rbl.SelectedIndex == 1) { string itemCode = (row.FindControl("lblItemCode") as Label).Text; int discID = Int32.Parse((row.FindControl("lblDiscID") as Label).Text); Item i = EFBroker_Item.GetItembyItemCode(itemCode); Discrepency d = EFBroker_Discrepancy.GetDiscrepancyById(discID); KeyValuePair <Discrepency, Item> kvp = new KeyValuePair <Discrepency, Item>(d, i); if (rbl.SelectedIndex == 0) { summary.Add(kvp, "Approved"); } else if (rbl.SelectedIndex == 1) { summary.Add(kvp, "Rejected"); } } } }
private void ShowAll() { List <Item> iList = new List <Item>(); iList = EFBroker_Item.GetActiveItemList(); Dictionary <Item, String> displayItems = new Dictionary <Item, String>(); foreach (Item i in iList) { //If a monthly inventory check discrepancy is not yet approved, the sum of only //discrepancies starting from the monthly one will be displayed Discrepency dMonthly = EFBroker_Discrepancy.GetPendingMonthlyDiscrepancyByItemCode(i.ItemCode); List <Discrepency> dList = EFBroker_Discrepancy.GetPendingDiscrepanciesByItemCode(i.ItemCode); if (dMonthly == null) { string adjStr = GetAdjustmentsString(dList); displayItems.Add(i, adjStr); } else { string adjStr = GetPartialAdjustmentsString(dList, dMonthly); displayItems.Add(i, adjStr); } } gvItemList.DataSource = displayItems; gvItemList.DataBind(); foreach (GridViewRow row in gvItemList.Rows) { HyperLink link = row.FindControl("hlkDesc") as HyperLink; Label lbl = row.FindControl("lblItemCodeItem") as Label; string itemCode = lbl.Text; link.NavigateUrl = LoginController.AddItemDiscrepancyURI + "?itemCode=" + itemCode; } }
protected void BtnSearch_Click(object sender, EventArgs e) { //Search button Dictionary <Item, String> searchResults = new Dictionary <Item, String>(); string search = txtSearch.Text.ToLower(); List <Item> iList = EFBroker_Item.SearchItemsByItemCodeOrDesc(search); foreach (Item i in iList) { //If a monthly inventory check discrepancy is not yet approved, the sum of only //discrepancies starting from the monthly one will be displayed Discrepency dMonthly = EFBroker_Discrepancy.GetPendingMonthlyDiscrepancyByItemCode(i.ItemCode); List <Discrepency> dList = EFBroker_Discrepancy.GetPendingDiscrepanciesByItemCode(i.ItemCode); if (dMonthly == null) { string adjStr = GetAdjustmentsString(dList); searchResults.Add(i, adjStr); } else { string adjStr = GetPartialAdjustmentsString(dList, dMonthly); searchResults.Add(i, adjStr); } } gvItemList.DataSource = searchResults; gvItemList.DataBind(); foreach (GridViewRow row in gvItemList.Rows) { HyperLink link = row.FindControl("hlkDesc") as HyperLink; Label lbl = row.FindControl("lblItemCodeItem") as Label; string itemCode = lbl.Text; link.NavigateUrl = LoginController.AddItemDiscrepancyURI + "?itemCode=" + itemCode; } }
protected void BtnSubmit_Click(object sender, EventArgs e) { List <Discrepency> dList = new List <Discrepency>(); bool complete = true; bool monthly = false; foreach (GridViewRow row in gvDiscrepancies.Rows) { string itemCode = (row.FindControl("lblItemCode") as Label).Text; string stock = (row.FindControl("lblStock") as Label).Text; string actual = (row.FindControl("lblActual") as Label).Text; int adj = Int32.Parse(actual) - Int32.Parse(stock); string remarks = (row.FindControl("txtRemarks") as TextBox).Text; if (!ValidatorUtil.isEmpty(remarks)) { if (remarks.Length <= maxChars) { //update item table if any adjustment at disubrsement point if (Session["ItemToUpdate"] != null) { if ((bool)Session["ItemToUpdate"]) { Item i = EFBroker_Item.GetItembyItemCode(itemCode); i.BalanceQty = (adj * -1) + i.BalanceQty; EFBroker_Item.UpdateItem(i); } } List <PriceList> plHistory = EFBroker_PriceList.GetPriceListByItemCode(itemCode); List <PriceList> itemPrices = new List <PriceList>(); foreach (PriceList pl in plHistory) { //Get only currently active suppliers for an item if (pl.TenderYear == DateTime.Now.Year.ToString()) { itemPrices.Add(pl); } } decimal totalPrice = 0; foreach (PriceList pl in itemPrices) { totalPrice += (decimal)pl.Price; } decimal averageUnitPrice = totalPrice / itemPrices.Count; Discrepency d = new Discrepency(); d.ItemCode = itemCode; if (Session["empID"] != null) { int empID = (int)Session["empID"]; d.RequestedBy = empID; } else { Utility.logout(); } d.AdjustmentQty = adj; d.Remarks = remarks; d.Date = DateTime.Now; if (Session["monthly"] != null) { if ((bool)Session["monthly"] == true) { d.Status = "Monthly"; monthly = true; } else { d.Status = "Pending"; monthly = false; } } else { d.Status = "Pending"; } d.TotalDiscrepencyAmount = adj * averageUnitPrice; if (d.TotalDiscrepencyAmount < 250) { d.ApprovedBy = EFBroker_DeptEmployee.GetEmployeeListByRole("Store Supervisor")[0].EmpID; } else { d.ApprovedBy = EFBroker_DeptEmployee.GetEmployeeListByRole("Store Manager")[0].EmpID; } dList.Add(d); } else { lblErrorCharLimit.Text = "Make sure all remarks are under 100 characters long"; row.BackColor = Color.Yellow; complete = false; break; } } else { lblRequired.Text = "Please state the cause of discrepancies for all items in Remarks"; complete = false; break; } } if (complete) { if (monthly) { EFBroker_Discrepancy.MonthlyInventoryCheck(dList); } else { EFBroker_Discrepancy.SaveDiscrepencies(dList); } //bool informSupervisor = false; //bool informManager = false; informSupervisor = false; informManager = false; foreach (Discrepency d in dList) { if (Math.Abs((decimal)d.TotalDiscrepencyAmount) < 250) { informSupervisor = true; } else { informManager = true; } } Session["discrepancyList"] = null; Session["discrepancyDisplay"] = null; Session["RetrievalShortfallItemList"] = null; Session["RetrievalID"] = null; Session["monthly"] = null; Session["ItemToUpdate"] = null; ThreadStart emailThreadStart = new ThreadStart(DiscrepancyMailNotification); Thread emailThread = new Thread(emailThreadStart); emailThread.Start(); string destination = ""; if (Session["empRole"] != null) { string role = (string)Session["empRole"]; if (role == "Store Supervisor" || role == "Store Manager") { destination = "PurchaseOrderList.aspx"; } else if (role == "Store Clerk") { destination = "RequisitionListClerk.aspx"; } else { Utility.logout(); } } else { Utility.logout(); } Utility.AlertMessageThenRedirect("Discrepancies successfully reported", destination); } }
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); } }