示例#1
0
    private void SRepMailNotification(String deptcode)
    {
        Employee newDeptRep = EFBroker_DeptEmployee.GetEmployeeListForDRepSelected(deptcode);
        String   newEmail   = newDeptRep.Email;

        Utility.sendMail(newEmail, "Change Department Rep", "Your Role have changed to Department Rep");
    }
示例#2
0
    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();
                //
            }
        }
    }
示例#3
0
    //
    static public void SendEmailToDepartmentRepresentative(string depCode, Disbursement d, string collectionPoint)
    {
        string departmentRepresentativeEmail = EFBroker_DeptEmployee.GetDRepresentativeEmailByDeptCode(depCode);
        string departmentRepresentativeName  = EFBroker_DeptEmployee.GetDRepresentativeNameByDeptCode(depCode);

        Utility.sendMail(departmentRepresentativeEmail, "New Collection Notification " + DateTime.Now.ToString(), "Dear " + departmentRepresentativeName + ", " + Environment.NewLine + Environment.NewLine + "Disbursement for items from your department is ready for collection. Your access code is " + d.AccessCode + ". Please go to " + collectionPoint + " on " + ((DateTime)d.CollectionDate).ToShortDateString() + " at " + d.CollectionTime + ". Thank you.");
    }
示例#4
0
    public static void UpdateActingDHead(string depcode, int empid, string sdate, string edate)
    {
        using (StationeryEntities smodel = new StationeryEntities())
        {
            try
            {
                if (EFBroker_DeptEmployee.GetEmployeeListForActingDHeadSelectedCount(depcode) <= 0)
                {
                    Employee emp = smodel.Employees.Where(p => p.DeptCode == depcode && p.EmpID == empid).First <Employee>();
                    emp.IsTempHead = "Y";

                    emp.StartDate = Convert.ToDateTime(sdate);
                    emp.EndDate   = Convert.ToDateTime(edate);
                    smodel.SaveChanges();
                }
                else
                {
                    Employee orgemp = smodel.Employees.Where(q => q.DeptCode == depcode && q.IsTempHead == "Y").First <Employee>();
                    orgemp.IsTempHead = "N";
                    orgemp.StartDate  = null;
                    orgemp.EndDate    = null;
                    Employee emp = smodel.Employees.Where(p => p.DeptCode == depcode && p.EmpID == empid).First <Employee>();
                    emp.IsTempHead = "Y";

                    emp.StartDate = Convert.ToDateTime(sdate);
                    emp.EndDate   = Convert.ToDateTime(edate);
                    smodel.SaveChanges();
                }
            }
            catch (Exception e)
            {
            }
        }
    }
示例#5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        //
        if (retCon.DisplayRetrievalList().Count == 0)
        {
            btnSearch.Visible    = false;
            btnDisplay.Visible   = false;
            txtSearchBox.Visible = false;
            lblCheckRetrievalListValidation.Text = "There is no pending Retrieval!";
        }
        else
        {
            //
            if (!IsPostBack)
            {
                // transfer from RetrievedBy(employee ID) to employee name
                List <Retrieval> retList = retCon.DisplayRetrievalList();
                Dictionary <Retrieval, string> retDisplay = new Dictionary <Retrieval, string>();
                foreach (Retrieval r in retList)
                {
                    retDisplay.Add(r, EFBroker_DeptEmployee.GetEmployeebyEmpID((int)r.RetrievedBy).EmpName);
                }

                gvReq.DataSource = retDisplay;
                gvReq.DataBind();
            }
        }
    }
示例#6
0
    protected void btnReGenReq_Click(object sender, EventArgs e)
    {
        DateTime date        = (DateTime)Session["RegenerateDate"];
        string   depName     = (string)Session["RegenerateDep"];;
        string   requestedBy = (string)Session["RequestedBy"];
        int      empID       = EFBroker_DeptEmployee.GetDeptRepEmpIDByDeptCode(depName);
        string   depCode     = EFBroker_DeptEmployee.GetDepartByEmpID(empID).DeptCode;

        List <RequestedItem> shortfallItem = (List <RequestedItem>)Session["RegenerateItems"];

        List <RequestedItem> regenerateItem = new List <RequestedItem>();

        foreach (GridViewRow r in gvRegenerate.Rows)
        {
            if (((CheckBox)r.FindControl("CheckBox")).Checked)
            {
                int i = r.RowIndex;
                regenerateItem.Add(shortfallItem[i]);
            }
        }

        RequisitionControl.addNewRequisitionItem(regenerateItem, date, status, empID, depCode);

        RedirectCheck();
    }
示例#7
0
    public void UpdateCollectionPoint(string deptcode, int cid)
    {
        EFBroker_DeptEmployee.UpdateCollectionPoint(deptcode, cid);
        ThreadStart emailThreadStart = new ThreadStart(CPMailNotification);
        Thread      emailThread      = new Thread(emailThreadStart);

        emailThread.Start();
    }
示例#8
0
    public CollectionPointItem CreateCollectionPointItemList(Disbursement d)
    {
        CollectionPoint     cp1                   = EFBroker_DeptEmployee.GetCollectionPointbyDeptCode(d.Department.DeptCode);
        string              collectionPoint       = cp1.CollectionPoint1;
        string              defaultCollectionTime = cp1.DefaultCollectionTime;
        CollectionPointItem c = new CollectionPointItem(collectionPoint, defaultCollectionTime);

        return(c);
    }
示例#9
0
    ////Set DisbursementListItem Details
    public DisbursementListItems CreateDisbursementListItem(Disbursement disb)
    {
        string depCode         = disb.DeptCode;
        string depName         = disb.Department.DeptName;
        string collectionDate  = disb.CollectionDate.Value.ToLongDateString();
        string collectionTime  = disb.CollectionTime.ToString();
        string collectionPoint = EFBroker_DeptEmployee.GetCollectionPointbyDeptCode(disb.DeptCode).CollectionPoint1;
        DisbursementListItems disbursementListItems = new DisbursementListItems(disb.DisbursementID, collectionDate, collectionTime, depCode, depName, collectionPoint);

        return(disbursementListItems);
    }
示例#10
0
    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);
    }
示例#11
0
    //FIND REQUISITION BY ID
    public static ReqisitionListItem getRequisitionForApprove(int id)
    {
        Requisition r = EFBroker_Requisition.GetRequisitionByID(id);

        date          = r.RequestDate.Value.ToLongDateString();
        requisitionNo = Convert.ToInt32(r.RequisitionID.ToString());
        status        = r.Status.ToString();
        int empCode = Convert.ToInt32(r.RequestedBy);

        employeeName = EFBroker_DeptEmployee.GetEmployeebyEmpID(empCode).EmpName;
        return(new ReqisitionListItem(date, requisitionNo, department, status, employeeName));
    }
示例#12
0
    public void UpdateDeptRep(string deptcode, int cid)
    {
        Thread emailThreadWithParamC = new Thread(() => CRepMailNotification(deptcode));

        emailThreadWithParamC.Start();


        EFBroker_DeptEmployee.UpdateDeptRep(deptcode, cid);
        Thread emailThreadWithParamS = new Thread(() => SRepMailNotification(deptcode));

        emailThreadWithParamS.Start();
    }
示例#13
0
 public void AddPurchaseOrder(Dictionary <PurchaseOrder, List <Item_PurchaseOrder> > orderItems)
 {
     try
     {
         EFBroker_PurchaseOrder.AddPurchaseOrder(orderItems);
         string supervisorEmail = EFBroker_DeptEmployee.GetEmployeeListByRole("Store Supervisor")[0].Email;
         Utility.sendMail(supervisorEmail, "Purchase order", "There  is a new purchase order created. Please review");
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
     }
 }
示例#14
0
    protected void BtnDisplay_Click(object sender, EventArgs e)
    {
        List <Retrieval> retList = retCon.DisplayRetrievalList();
        Dictionary <Retrieval, string> retDisplay = new Dictionary <Retrieval, string>();

        foreach (Retrieval r in retList)
        {
            retDisplay.Add(r, EFBroker_DeptEmployee.GetEmployeebyEmpID((int)r.RetrievedBy).EmpName);
        }

        gvReq.DataSource = retDisplay;
        gvReq.DataBind();
    }
示例#15
0
    protected void Page_Load(object sender, EventArgs e)
    {
        DeptController deptController = new DeptController();

        if (!IsPostBack)
        {
            GridViewDept.DataSource = EFBroker_DeptEmployee.GetDepartDetailInfoList();

            StationeryEntities smodel = new StationeryEntities();
            GridViewDept.DataSource = deptController.GetDepartDetailInfoList();

            GridViewDept.DataBind();
        }
    }
示例#16
0
 public static List <ReqisitionListItem> PopulateGridViewForDepartment(List <Requisition> rlist)
 {
     itemList = new List <ReqisitionListItem>();
     foreach (Requisition r in rlist)
     {
         date          = r.RequestDate.Value.ToLongDateString();
         requisitionNo = Convert.ToInt32(r.RequisitionID.ToString());
         status        = r.Status.ToString();
         int empCode = Convert.ToInt32(r.RequestedBy);
         employeeName = EFBroker_DeptEmployee.GetEmployeebyEmpID(empCode).EmpName;
         item         = new ReqisitionListItem(date, requisitionNo, department, status, employeeName);
         itemList.Add(item);
     }
     return(itemList);
 }
 private void DiscrepancyMailNotification()
 {
     try
     {
         if (informSupervisor)
         {
             string supervisorEmail = EFBroker_DeptEmployee.GetEmployeeListByRole("Store Supervisor")[0].Email;
             if (Session["monthly"] != null)
             {
                 if ((bool)Session["monthly"] == true)
                 {
                     Utility.sendMail(supervisorEmail, "Monthly Inventory Check Discrepancies Notification " + DateTime.Now.ToString(), "A monthly inventory check has been performed and new item discrepancies have been submitted. Please log in to the system to review them. Thank you.");
                 }
                 else
                 {
                     Utility.sendMail(supervisorEmail, "New Discrepancies Notification " + DateTime.Now.ToString(), "New item discrepancies have been submitted. Please log in to the system to review them. Thank you.");
                 }
             }
             else
             {
                 Utility.sendMail(supervisorEmail, "New Discrepancies Notification " + DateTime.Now.ToString(), "New item discrepancies have been submitted. Please log in to the system to review them. Thank you.");
             }
         }
         if (informManager)
         {
             string managerEmail = EFBroker_DeptEmployee.GetEmployeeListByRole("Store Manager")[0].Email;
             if (Session["monthly"] != null)
             {
                 if ((bool)Session["monthly"] == true)
                 {
                     Utility.sendMail(managerEmail, "Monthly Inventory Check Discrepancies Notification " + DateTime.Now.ToString(), "A monthly inventory check has been performed and new item discrepancies (worth at least $250) have been submitted. Please log in to the system to review them. Thank you.");
                 }
                 else
                 {
                     Utility.sendMail(managerEmail, "New Discrepancies Notification " + DateTime.Now.ToString(), "New item discrepancies (worth at least $250) have been submitted. Please log in to the system to review them. Thank you.");
                 }
             }
             else
             {
                 Utility.sendMail(managerEmail, "New Discrepancies Notification " + DateTime.Now.ToString(), "New item discrepancies (worth at least $250) have been submitted. Please log in to the system to review them. Thank you.");
             }
         }
     }
     catch (Exception ex)
     {
     }
 }
示例#18
0
    public static List <ReqisitionListItem> PopulateGridView(List <Requisition> rlist)
    {
        itemList = new List <ReqisitionListItem>();
        foreach (Requisition r in rlist)
        {
            date          = r.RequestDate.Value.ToLongDateString();
            requisitionNo = Convert.ToInt32(r.RequisitionID.ToString());
            status        = r.Status.ToString();

            requestedBy = Convert.ToInt32(r.RequestedBy.ToString());


            Department dep = EFBroker_DeptEmployee.GetDepartByEmpID(requestedBy);
            depCode = dep.DeptCode;

            department = dep.DeptName;
            item       = new ReqisitionListItem(date, requisitionNo, department, status, requestedBy.ToString());
            itemList.Add(item);
        }
        return(itemList);
    }
示例#19
0
    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);
    }
示例#20
0
    public bool SubmitDiscrepanciesWithItemUpdate(List <WCFDiscrepancy> wdList)
    {
        List <Discrepency> dList = new List <Discrepency>();
        bool informSupervisor    = false;
        bool informManager       = false;

        foreach (WCFDiscrepancy wd in wdList)
        {
            Discrepency d = new Discrepency();
            d.ItemCode      = wd.ItemCode;
            d.RequestedBy   = Int32.Parse(wd.RequestedBy);
            d.AdjustmentQty = Int32.Parse(wd.AdjustmentQty);
            d.Remarks       = wd.Remarks;
            d.Status        = wd.Status;
            d.Date          = DateTime.Now;

            //Code to determine the discrepancy amount
            List <PriceList> plHistory  = EFBroker_PriceList.GetPriceListByItemCode(d.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;
            d.TotalDiscrepencyAmount = d.AdjustmentQty * averageUnitPrice;

            //Set the approver based on discrepancy amount, and email notify them
            if (Math.Abs((decimal)d.TotalDiscrepencyAmount) < 250)
            {
                if (d.TotalDiscrepencyAmount < 250)
                {
                    d.ApprovedBy     = EFBroker_DeptEmployee.GetEmployeeListByRole("Store Supervisor")[0].EmpID;
                    informSupervisor = true;
                }
                else
                {
                    d.ApprovedBy  = EFBroker_DeptEmployee.GetEmployeeListByRole("Store Manager")[0].EmpID;
                    informManager = true;
                }
            }
            dList.Add(d);
        }
        bool successfullySent = sendDiscrepanciesToDatabaseWithItemUpdates(dList);

        if (successfullySent)
        {
            if (informSupervisor)
            {
                string supervisorEmail = EFBroker_DeptEmployee.GetEmployeeListByRole("Store Supervisor")[0].Email;
                Utility.sendMail(supervisorEmail, "New Discrepancies Notification " + DateTime.Now.ToString(), "New item discrepancies have been submitted. Please log in to the system to review them. Thank you.");
            }
            if (informManager)
            {
                string managerEmail = EFBroker_DeptEmployee.GetEmployeeListByRole("Store Manager")[0].Email;
                Utility.sendMail(managerEmail, "New Discrepancies Notification " + DateTime.Now.ToString(), "New item discrepancies (worth at least $250) have been submitted. Please log in to the system to review them. Thank you.");
            }
            return(true);
        }
        else
        {
            return(false);
        }
    }
示例#21
0
    //


    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);
        }
    }
示例#22
0
 public void UpdateActingDHead(string deptcode, int cid, string sdate, string edate)
 {
     EFBroker_DeptEmployee.UpdateActingDHead(deptcode, cid, sdate, edate);
 }
示例#23
0
 public List <Employee> GetEmployeeListForActingDHead(string deptcode, int id)
 {
     return(EFBroker_DeptEmployee.GetEmployeeListForActingDHead(deptcode, id));
 }
示例#24
0
 //Department Rep
 public Employee GetEmployeeListForDRepSelected(string deptcode)
 {
     return(EFBroker_DeptEmployee.GetEmployeeListForDRepSelected(deptcode));
 }
    protected void btnAck_Click(object sender, EventArgs e)
    {
        int disbId = (int)Session["SelectedDisb"];

        List <DisbursementDetailListItems> retrievedItem = new List <DisbursementDetailListItems>();

        retrievedItem = disbCon.GvDisbursementDetailPopulate(disbId);

        List <RequestedItem>   shortfallItem = new List <RequestedItem>();
        List <int>             actualQtyList = new List <int>();
        List <string>          disbRemark    = new List <string>();
        Dictionary <Item, int> discToUpdate  = new Dictionary <Item, int>();
        RequestedItem          reqItem;
        bool check = true;

        foreach (GridViewRow r in gvDisbDetail.Rows)
        {
            //get disbursement remarks for each items
            string remark;
            try
            {
                remark = (r.FindControl("txtremarks") as TextBox).Text;
            }
            catch
            {
                remark = "";
            }

            //add remarks to list to save to database
            disbRemark.Add(remark);


            //get retrieved item to compare
            int index        = r.RowIndex;
            int retrievedQty = retrievedItem[index].ActualQty;

            //get actual qty to verify
            int reqQty = Convert.ToInt32((r.FindControl("lblreqQty") as Label).Text);

            //get actual qty to verify
            int actualQty = Convert.ToInt32((r.FindControl("txtactualQty") as TextBox).Text);

            //make actual qty list to update database
            actualQtyList.Add(actualQty);

            //check if any shortfall
            if (actualQty < reqQty)
            {
                //make short fall item list
                string iCode        = (r.FindControl("hdnflditemCode") as HiddenField).Value;
                string iDesc        = (r.FindControl("lblitemDesc") as Label).Text;
                int    shortfallQty = reqQty - actualQty;
                string uom          = EFBroker_Item.GetUnitbyItemCode(iCode);
                reqItem = new RequestedItem(iCode, iDesc, shortfallQty, uom);
                shortfallItem.Add(reqItem);

                //check if any discrepancy
                if (actualQty < retrievedQty)
                {
                    //make discrepancy item list
                    int    disQty   = actualQty - retrievedQty;
                    Item   disItem  = EFBroker_Item.GetItembyItemCode(iCode);
                    string finalQty = (disItem.BalanceQty + disQty).ToString();
                    discToUpdate.Add(disItem, disQty);
                }
            }
            else if (actualQty > retrievedQty)
            {
                check = false;
                (r.FindControl("lblActualError") as Label).Text = "Actual cannot be more than retrieved quantity";
            }
        }
        if (check)
        {
            //check access code
            if (disbCon.CheckAccessCode(disbId, txtAccessCode.Text))
            {
                //update Disbursement table (actual qty + status)
                disbCon.UpdateDisbursement(disbId, actualQtyList, disbRemark);

                //redirect to Regenerate Request page if any shortfall
                if (shortfallItem.Count != 0)
                {
                    Session["discrepancyList"] = discToUpdate;
                    Session["RegenerateDate"]  = disbCon.GetRegenrateDate(disbId);
                    Session["RegenerateDep"]   = lblDepartment.Text;
                    Session["RequestedByName"] = EFBroker_DeptEmployee.GetDeptRepByDeptCode(lblDepartment.Text);
                    Session["RegenerateItems"] = shortfallItem;

                    Response.Redirect(LoginController.RegenerateRequestURI);
                }
                //redirect back to Disbursement List page if no shortfall
                else
                {
                    Session["SelectedDisb"]  = null;
                    Session["disbItemsList"] = null;
                    Response.Redirect(LoginController.DisbursementListURI);
                }
            }
            else
            {
                string message = "Incorrect Access Code!";
                ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + message + "');", true);
            }
        }
    }
示例#26
0
 public List <Employee> GetSupervisorList()
 {
     return(EFBroker_DeptEmployee.GetEmployeeListByRole("Store Supervisor"));
 }
示例#27
0
    //Department Head


    public Employee GetDHeadByDeptCode(string deptcode)
    {
        return(EFBroker_DeptEmployee.GetDHeadByDeptCode(deptcode));
    }
示例#28
0
 public void UpdateRevoke()
 {
     EFBroker_DeptEmployee.UpdateRevoke();
 }
    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);
        }
    }
示例#30
0
 public List <Employee> GetEmployeeListForDRep(string deptcode, int id)
 {
     return(EFBroker_DeptEmployee.GetEmployeeListForDRep(deptcode, id));
 }