예제 #1
0
 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);
     }
 }
    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);
        }
    }