예제 #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string IsManualSingle = "F";
            string chute_label    = string.Empty;

            this.Master.Reset();

            this.Master.RegisterStandardScript = true;

            decimal I_chute_id      = decimal.Parse(Request.QueryString["chuteID"].ToString());
            string  I_chute_barcode = Request.QueryString["chutebarcode"].ToString();
            string  I_user          = Request.QueryString["userlogon"].ToString();
            decimal I_trolley_id    = decimal.Parse(Request.QueryString["trolleyid"].ToString());
            decimal I_chute_type    = decimal.Parse(Request.QueryString["chutetype"].ToString());
            decimal I_chute_area    = decimal.Parse(Request.QueryString["chutearea"] == null?"0":Request.QueryString["chutearea"].ToString());


            //string I_terminal = this.Master.HostName;
            string I_terminal = null;


            UserActivity   setclass = new UserActivity();
            ActivityLogDAO actlog   = new ActivityLogDAO();

            if (!IsPostBack)
            {
                // on page load display this message
                this.Master.MessageBoard = "Scan SKU Barcode";
            }
            else
            {
                string sku_barcode = this.Master.BarcodeValue;
                if (sku_barcode == string.Empty)
                {
                    this.Master.ErrorMessage   = "Invalid Scan. Please scan again";
                    this.Master.DisplayMessage = true;
                    this.Master.BarcodeValue   = string.Empty;
                }
                else
                {
                    if (sku_barcode.Length > 50)
                    {
                        sku_barcode = sku_barcode.Substring(0, 50);
                    }

                    LocateDAO locdao = new LocateDAO();

                    decimal item_id       = 0;
                    string  location_name = null;

                    // the user can either scan a sku or another chute


                    // check if it is a chute or sku barcode

                    if (sku_barcode.Length < 2)
                    {
                        this.Master.ErrorMessage   = "Invalid Barcode";
                        this.Master.DisplayMessage = true;
                        this.Master.BarcodeValue   = string.Empty;
                    }
                    else
                    {
                        string chk_barcode = sku_barcode.Substring(0, 2).ToUpper();


                        if (chk_barcode.ToUpper() == "CH")
                        {
                            // user has scanned the chute

                            decimal   chute_id      = 0;
                            decimal   chute_type    = 0;
                            LocateDAO locdaoch      = new LocateDAO();
                            string    chute_barcode = sku_barcode;

                            string barcodetype_ch = "Chute";
                            try
                            {
                                // logoff user from previous session


                                /************ commented out for time being ************/
                                //locdaoch.Log_off_Chute(I_chute_id, I_user);


                                // activity logging

                                setclass.AppSystem           = (Int32)ActivityLogEnum.AppSystem.IHF;
                                setclass.ApplicationId       = (Int32)ActivityLogEnum.ApplicationID.AttachAndLocate;
                                setclass.ModuleId            = (Int32)ActivityLogEnum.ModuleID.AttachAndlocate;
                                setclass.EventType           = (Int32)EventType.LogOffChuteForLocate;
                                setclass.ResultCode          = (Int32)ActivityLogEnum.ResultCd.Success;
                                setclass.ExpectedBarcodeType = barcodetype_ch;
                                setclass.Barcode             = chute_barcode;
                                setclass.TerminalId          = I_terminal;
                                setclass.UserId  = I_user;
                                setclass.ChuteId = decimal.ToInt32(chute_id);



                                actlog.SaveUserActivity(setclass);
                                /************ commented out for time being ************/



                                // validate chute using oms_attach_trolley.p_validate_chute

                                chute_id = locdaoch.Validate_Chute(chute_barcode, I_user, I_terminal);

                                // Log user to chute using p_log_on_to_chute


                                /************ commented out for time being ************/
                                //locdaoch.Log_on_to_Chute(chute_barcode, I_user);
                                /************ commented out for time being ************/


                                // find the chute type if it is singles = 1 or multi = 2

                                chute_type = locdaoch.Get_chute_type(chute_id);

                                if (chute_type == 2)
                                {
                                    I_chute_area = locdao.Get_Chute_Area(chute_id);
                                }


                                // find the trolley attached p_chute_trolley

                                decimal trolley_id_ch = locdaoch.Chute_Trolley(chute_barcode, I_user, I_terminal);

                                if (trolley_id_ch == 0)
                                {
                                    // if the trolley id is null then ask user to scan trolley
                                    // redirect to attach trolley

                                    // no trolley attached to chute
                                    if (chute_type == 1) // singles
                                    {
                                        // redirect to scan trolley page
                                        Response.Redirect("LocateTrolleyAttach.aspx?chuteID=" + chute_id + "&chutebarcode=" + chute_barcode + "&userlogon=" + I_user + "&chutetype=" + chute_type + "&chutearea =" + I_chute_area);
                                    }
                                    else if (chute_type == 2) // multi
                                    {
                                        // redirect to scan trolley page
                                        Response.Redirect("LocateTrolleyAttach.aspx?chuteID=" + chute_id + "&chutebarcode=" + chute_barcode + "&userlogon=" + I_user + "&chutetype=" + chute_type + "&chutearea =" + I_chute_area);
                                    }
                                }
                                else
                                {
                                    // trolley is already attached
                                    if (chute_type == 1) // singles
                                    {
                                        // redirect to scan trolley page
                                        Response.Redirect("LocateTrolleyAttach.aspx?chuteID=" + chute_id + "&chutebarcode=" + chute_barcode + "&userlogon=" + I_user + "&chutetype=" + chute_type + "&chutearea =" + I_chute_area);
                                    }
                                    else if (chute_type == 2) // multi
                                    {
                                        // redirect to scan sku

                                        Response.Redirect("LocateScanSku.aspx?chuteID=" + chute_id + "&chutebarcode=" + chute_barcode + "&userlogon=" + I_user + "&trolleyid=" + trolley_id_ch + "&chutetype=" + chute_type + "&chutearea =" + I_chute_area);
                                    }
                                    else
                                    {
                                        this.Master.ErrorMessage   = "Wrong Chute Type";
                                        this.Master.DisplayMessage = true;
                                        this.Master.BarcodeValue   = string.Empty;
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                // activity logging


                                setclass.AppSystem           = (Int32)ActivityLogEnum.AppSystem.IHF;
                                setclass.ApplicationId       = (Int32)ActivityLogEnum.ApplicationID.AttachAndLocate;
                                setclass.ModuleId            = (Int32)ActivityLogEnum.ModuleID.AttachAndlocate;
                                setclass.EventType           = (Int32)EventType.ScanChuteForAttach;
                                setclass.ResultCode          = (Int32)ActivityLogEnum.ResultCd.ChuteScanFailed;
                                setclass.ExpectedBarcodeType = barcodetype_ch;
                                setclass.Barcode             = chute_barcode;
                                setclass.TerminalId          = I_terminal;
                                setclass.UserId  = I_user;
                                setclass.ChuteId = decimal.ToInt32(chute_id);


                                actlog.SaveUserActivity(setclass);


                                this.Master.ErrorMessage   = ex.Message.Substring(ex.Message.IndexOf(" ", 0), (ex.Message.IndexOf("ORA", 1) - ex.Message.IndexOf(" ", 0)));
                                this.Master.DisplayMessage = true;
                                this.Master.BarcodeValue   = string.Empty;
                            }
                        }
                        else
                        {
                            // user has scanned a SKU
                            // Validate SKU
                            // find item using p_find_chute_item
                            string barcodetype = "SKU";
                            try
                            {
                                item_id = locdao.Find_item(I_chute_id, sku_barcode, I_user, I_terminal, I_chute_area);


                                if (item_id > 0)
                                {
                                    IsManualSingle = locdao.OrderForManualArea(I_chute_area, I_chute_id, item_id);

                                    if (IsManualSingle.ToUpper() != "F")
                                    {
                                        string[] T_chute_Val;


                                        T_chute_Val = IsManualSingle.Split('-');


                                        Response.Redirect("LocateManualAreaChute.aspx?chuteID=" + I_chute_id + "&chutebarcode=" + I_chute_barcode + "&userlogon=" + I_user + "&trolleyid=" + I_trolley_id + "&chutetype=" + I_chute_type + "&itemid=" + item_id + "&skubarcode=" + sku_barcode + "&chutearea=" + I_chute_area + "&tchutelabel=" + T_chute_Val[1] + "&tchuteid=" + T_chute_Val[0]);
                                    }
                                }


                                if (item_id == 0)
                                {
                                    // if item not found
                                    this.Master.ErrorMessage   = "Item not for this chute";
                                    this.Master.DisplayMessage = true;
                                    this.Master.BarcodeValue   = string.Empty;
                                    this.Master.MessageBoard   = "Please Scan the SKU Barcode";
                                }
                                else
                                {
                                    // else display trolley location using p_location_name_for_item



                                    location_name = locdao.Find_location_name(item_id);
                                    if (location_name == null)
                                    {
                                        this.Master.ErrorMessage   = "Location not found for Item";
                                        this.Master.DisplayMessage = true;

                                        this.Master.MessageBoard = "Scan SKU Barcode";
                                    }
                                    else
                                    {
                                        // display location label

                                        // redirect to scan trolley location
                                        //this.Master.MessageBoard = "location is " + location_name;
                                        Response.Redirect("LocateScanLocation.aspx?chuteID=" + I_chute_id + "&chutebarcode=" + I_chute_barcode + "&userlogon=" + I_user + "&trolleyid=" + I_trolley_id + "&chutetype=" + I_chute_type + "&itemid=" + item_id + "&skubarcode=" + sku_barcode + "&locationname=" + location_name + "&chutearea=" + I_chute_area);
                                    }
                                }
                            }
                            catch (Exception ex1)
                            {
                                // activity logging
                                setclass.AppSystem           = (Int32)ActivityLogEnum.AppSystem.IHF;
                                setclass.ApplicationId       = (Int32)ActivityLogEnum.ApplicationID.AttachAndLocate;
                                setclass.ModuleId            = (Int32)ActivityLogEnum.ModuleID.AttachAndlocate;
                                setclass.EventType           = (Int32)EventType.ScanItemForLocate;
                                setclass.ResultCode          = (Int32)ActivityLogEnum.ResultCd.ItemvalidationFailed;
                                setclass.ExpectedBarcodeType = barcodetype;
                                setclass.Barcode             = sku_barcode;
                                setclass.TerminalId          = I_terminal;
                                setclass.UserId     = I_user;
                                setclass.ChuteId    = decimal.ToInt32(I_chute_id);
                                setclass.TrolleyId  = decimal.ToInt32(I_trolley_id);
                                setclass.ItemNumber = decimal.ToInt32(item_id);



                                actlog.SaveUserActivity(setclass);

                                this.Master.ErrorMessage   = ex1.Message.Substring(ex1.Message.IndexOf(" ", 0), (ex1.Message.IndexOf("ORA", 1) - ex1.Message.IndexOf(" ", 0)));
                                this.Master.DisplayMessage = true;
                                this.Master.BarcodeValue   = string.Empty;
                            }
                        } // sku
                    }     // barcode length greater than 2
                }         // barcode not empty
            }             //end of else
        }
예제 #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Master.Reset();

            this.Master.RegisterStandardScript = true;

            if (!IsPostBack)
            {
                {
                    // on page load display this message
                    ShowMessage("Scan Chute", MessageType.NormalMessage);
                    this.step.Value = RemoveForPackStep.Initial.ToString();
                }
            }
            else
            {
                _barcode = (this.Master.BarcodeValue.Length > 50) ?  this.Master.BarcodeValue.Substring(0, 50) : this.Master.BarcodeValue;

                if (_barcode != string.Empty)
                {
                    _barcode = _barcode.ToUpper();

                    switch (this.step.Value)
                    {
                    // Initial - scan chute to attach to chute
                    case "Initial":
                    {
                        /* Scan Chute and attach to chute  for session */
                        try
                        {
                            validatechute(_barcode);

                            string itemsInChute = "F";

                            _removepackdao.itemsinchute(decimal.Parse(this.chuteid.Value), ref itemsInChute);

                            if (itemsInChute == "F")
                            {
                                ShowMessage("No orders for this chute, please scan another chute", MessageType.NormalMessage);
                                this.step.Value = RemoveForPackStep.Initial.ToString();
                            }
                            else
                            {
                                this.Master.MessageBoard = "Scan SKU barcode";
                                this.step.Value          = RemoveForPackStep.ScanSku.ToString();
                            }
                        }
                        catch (Exception ex)
                        {
                            string exceptionMessage = ex.Message;
                            if (isErrorMessage(ref exceptionMessage))
                            {
                                ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                            }
                            else
                            {
                                // There aren't really messages passed back for non error conditions in this back end proc
                                ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                            }
                        }

                        break;
                    }

                    case "ScanSku":
                    {
                        // If a chute bacode has been scanned
                        if (_barcode.Substring(0, 2) == "CH")
                        {
                            this.step.Value = RemoveForPackStep.Initial.ToString();
                            validatechute(_barcode);
                            string itemsInChute = "F";

                            _removepackdao.itemsinchute(decimal.Parse(this.chuteid.Value), ref itemsInChute);

                            if (itemsInChute == "F")
                            {
                                ShowMessage("No orders for this chute, please scan another chute", MessageType.NormalMessage);
                                this.step.Value = RemoveForPackStep.Initial.ToString();
                            }
                            else
                            {
                                this.Master.MessageBoard = "Scan SKU barcode";
                                this.step.Value          = RemoveForPackStep.ScanSku.ToString();
                            }
                        }
                        else
                        {
                            try
                            {
                                itemid.Value = _locatedao.Find_item(decimal.Parse(this.chuteid.Value), _barcode, User.Identity.Name, string.Empty, decimal.Parse(this.areaid.Value)).ToString();

                                if (decimal.Parse(itemid.Value) > 0)
                                {
                                    this.singleschutelabel.Value = string.Empty;
                                    this.singleschuteid.Value    = string.Empty;

                                    string IsManualSingle = "F";
                                    IsManualSingle = _locatedao.OrderForManualArea(decimal.Parse(this.areaid.Value), decimal.Parse(this.chuteid.Value), decimal.Parse(itemid.Value));

                                    if (IsManualSingle.ToUpper() != "F")
                                    {
                                        string[] singleschuteval;

                                        singleschuteval = IsManualSingle.Split('-');

                                        this.singleschuteid.Value    = singleschuteval[0];
                                        this.singleschutelabel.Value = singleschuteval[1];
                                        this.step.Value = RemoveForPackStep.ScanSinglesChute.ToString();

                                        string msg = "Scan " + singleschuteval[1];
                                        ShowMessage(msg, MessageType.NormalMessage);
                                    }
                                    else
                                    {
                                        try
                                        {
                                            string location_name = _locatedao.Find_location_name(decimal.Parse(itemid.Value));
                                            if (location_name == null)
                                            {
                                                ShowMessage("Location not found for Item", MessageType.ErrorConfirm);
                                                this.Master.MessageBoard = "Scan SKU Barcode";
                                            }

                                            try
                                            {
                                                // if last item then pre-warn user to remove the order
                                                decimal itemCount = 0;
                                                _removepackdao.itemsnotlocated(decimal.Parse(itemid.Value), ref itemCount);

                                                string removeOrderStr = "";

                                                if (itemCount < 2)
                                                {
                                                    removeOrderStr = ", then remove order";
                                                }

                                                string locstr = LocationMessage(location_name, removeOrderStr);

                                                // if (itemCount < 2) locstr += ", then remove order";

                                                this.step.Value = RemoveForPackStep.ScanLocation.ToString();
                                                ShowMessage(locstr, MessageType.NormalMessage);
                                            }
                                            catch
                                            {
                                                ShowMessage("Error getting location details", MessageType.ErrorConfirm);
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            string exceptionMessage = ex.Message;
                                            if (isErrorMessage(ref exceptionMessage))
                                            {
                                                ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                            }
                                            else
                                            {
                                                // There aren't really messages passed back for non error conditions in this back end proc
                                                ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    if (itemid.Value == "0")
                                    {
                                        // if item not found
                                        ShowMessage("Item not for this chute", MessageType.ErrorConfirm);
                                        this.Master.BarcodeValue = string.Empty;
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                string exceptionMessage = ex.Message;
                                if (isErrorMessage(ref exceptionMessage))
                                {
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                                else
                                {
                                    // There aren't really messages passed back for non error conditions in this back end proc
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                            }
                        }
                        break;
                    }

                    case "ScanLocation":
                    {
                        //This could be a overflow tote or a trolley location
                        if (_barcode.Substring(0, 2) == "LC")
                        {
                            try
                            {
                                _locationid = _locatedao.Validate_Location(_barcode, decimal.Parse(itemid.Value), User.Identity.Name, null);

                                if (_locationid == 0)
                                {
                                    ShowMessage("Location Validation Failed", MessageType.ErrorConfirm);
                                }
                            }
                            catch (Exception ex)
                            {
                                string exceptionMessage = ex.Message;
                                if (isErrorMessage(ref exceptionMessage))
                                {
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                                else
                                {
                                    // There aren't really messages passed back for non error conditions in this back end proc
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                            }
                        }
                        else if (_barcode.Substring(0, 2) == "OT")
                        {
                            try
                            {
                                _overflowtoteid = _locatedao.Validate_Tote(_barcode, decimal.Parse(itemid.Value), User.Identity.Name, null);

                                if (_overflowtoteid == 0)
                                {
                                    ShowMessage("Overflow Tote Validation Failed", MessageType.ErrorConfirm);
                                }
                            }
                            catch (Exception ex)
                            {
                                string exceptionMessage = ex.Message;
                                if (isErrorMessage(ref exceptionMessage))
                                {
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                                else
                                {
                                    // There aren't really messages passed back for non error conditions in this back end proc
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                            }
                        }
                        else
                        {
                            ShowMessage("Invalid location or overflow tote barcode", MessageType.ErrorConfirm);
                            this.Master.BarcodeValue = string.Empty;
                        }

                        if (_locationid > 0 || _overflowtoteid > 0)
                        {
                            string  fullyLocatedInd   = "F";
                            decimal ordernumber       = 0;
                            decimal ordervolume       = 0;
                            string  toteService       = string.Empty;
                            string  toteBarcodePrefix = string.Empty;
                            string  toteTypeName      = string.Empty;
                            decimal currLocId         = 0;
                            string  currLocBarcode    = string.Empty;
                            string  currLocLabel      = string.Empty;
                            decimal numItems          = 0;


                            try
                            {
                                _removepackdao.locateitem(decimal.Parse(itemid.Value),
                                                          _locationid, _overflowtoteid,
                                                          decimal.Parse(this.trolleyid.Value),
                                                          User.Identity.Name, null, ref ordernumber,
                                                          ref fullyLocatedInd, ref ordervolume, ref toteService,
                                                          ref toteBarcodePrefix, ref toteTypeName, ref currLocId,
                                                          ref currLocBarcode, ref currLocLabel, ref numItems);

                                if (fullyLocatedInd == "T")
                                {
                                    this.Master.MessageBoard = "<embed id='snd' src='" + ConfigurationManager.AppSettings["SuccessSound"] + "' autostart='true' hidden='true'></embed>" +
                                                               "Remove " + numItems.ToString() + " item(s) from " + currLocLabel + " to a " + toteTypeName +
                                                               "<br />Scan location barcode";
                                    this.step.Value = RemoveForPackStep.ReScanLocation.ToString();

                                    this.locationbarcode.Value = currLocBarcode;
                                    this.totetype.Value        = toteTypeName;
                                    this.toteservice.Value     = toteService;
                                }
                                else
                                {
                                    this.step.Value = RemoveForPackStep.ScanSku.ToString();
                                    ShowMessage("Scan SKU barcode", MessageType.NormalMessage);
                                }
                            }
                            catch (Exception ex)
                            {
                                string exceptionMessage = ex.Message;
                                if (isErrorMessage(ref exceptionMessage))
                                {
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                                else
                                {
                                    // There aren't really messages passed back for non error conditions in this back end proc
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                            }
                        }

                        break;
                    }

                    case "ReScanLocation":
                    {
                        if (_barcode == this.locationbarcode.Value)
                        {
                            // log the activity - success
                            _useract.AppSystem     = (int)ActivityLogEnum.AppSystem.IHF;
                            _useract.ApplicationId = (int)ActivityLogEnum.ApplicationID.RemoveForPack;
                            _useract.ModuleId      = (int)ActivityLogEnum.ModuleID.RemoveForPack;
                            _useract.EventType     = (int)EventType.RescanLocation;
                            _useract.UserId        = Shared.CurrentUser;
                            _useract.Barcode       = _barcode;
                            _useract.Value1        = this.locationbarcode.Value;
                            _useract.ResultCode    = (Int32)ActivityLogEnum.ResultCd.Success;

                            _uadao.SaveUserActivity(_useract);

                            // set step and show message
                            this.step.Value = RemoveForPackStep.ScanTote.ToString();

                            String msgStr = "Scan " + this.toteservice.Value + " to ";
                            if (this.totelabel.Value == string.Empty)
                            {
                                msgStr += "a " + this.totetype.Value + ".";
                            }
                            else
                            {
                                msgStr += "tote " + this.totelabel.Value + ".";
                            }

                            ShowMessage(msgStr, MessageType.NormalMessage);
                        }
                        else
                        {
                            // log the activity - failure
                            _useract.AppSystem     = (int)ActivityLogEnum.AppSystem.IHF;
                            _useract.ApplicationId = (int)ActivityLogEnum.ApplicationID.RemoveForPack;
                            _useract.ModuleId      = (int)ActivityLogEnum.ModuleID.RemoveForPack;
                            _useract.EventType     = (int)EventType.RescanLocation;
                            _useract.UserId        = Shared.CurrentUser;
                            _useract.Barcode       = _barcode;
                            _useract.Value1        = this.locationbarcode.Value;
                            _useract.ResultCode    = (Int32)ActivityLogEnum.ResultCd.LocationValidationFailed;

                            _uadao.SaveUserActivity(_useract);


                            // show the error message
                            ShowMessage("Incorrect Location", MessageType.ErrorConfirm);
                        }
                        break;
                    }

                    case "ScanTote":
                    {
                        if (this.totebarcode.Value != string.Empty && this.totebarcode.Value != _barcode)
                        {
                            ShowMessage("Scan to tote: " + this.totelabel.Value, MessageType.ErrorConfirm);
                        }
                        else
                        {
                            decimal nextlocid      = 0;
                            string  nextlocbarcode = string.Empty;
                            string  nextloclabel   = string.Empty;
                            decimal itemcount      = 0;
                            string  totelabel      = string.Empty;

                            try
                            {
                                _removepackdao.movetotote(locationbarcode.Value, _barcode, User.Identity.Name, null, ref nextlocid, ref nextlocbarcode, ref nextloclabel, ref totelabel, ref itemcount);

                                if (nextlocid == 0)
                                {
                                    // no more items for this order
                                    // need to see if there are any more orders left in this chute

                                    string msg          = this.toteservice.Value + " in tote";
                                    string itemsInChute = "F";

                                    _removepackdao.itemsinchute(decimal.Parse(this.chuteid.Value), ref itemsInChute);

                                    if (itemsInChute == "F")
                                    {
                                        msg            += ". No more orders in this chute, please scan another chute";
                                        this.step.Value = RemoveForPackStep.Initial.ToString();
                                    }
                                    else
                                    {
                                        msg            += ", scan next item for locate";
                                        this.step.Value = RemoveForPackStep.ScanSku.ToString();
                                    }

                                    ShowMessage(msg, MessageType.NormalMessage);

                                    // ShowMessage(this.toteservice.Value + " in tote, scan next item for locate", MessageType.NormalMessage);
                                    this.totebarcode.Value = string.Empty;
                                    this.totelabel.Value   = string.Empty;
                                    // this.step.Value = RemoveForPackStep.ScanSku.ToString();
                                }
                                else
                                {
                                    ShowMessage("Remove " + itemcount.ToString() + " item(s) from " + nextloclabel + " to " + totelabel + "<br />Scan location barcode", MessageType.NormalMessage);
                                    this.totebarcode.Value     = _barcode;
                                    this.totelabel.Value       = totelabel;
                                    this.locationbarcode.Value = nextlocbarcode;
                                    this.step.Value            = RemoveForPackStep.ReScanLocation.ToString();
                                }
                            }
                            catch (Exception ex)
                            {
                                string exceptionMessage = ex.Message;
                                if (isErrorMessage(ref exceptionMessage))
                                {
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                                else
                                {
                                    // There aren't really messages passed back for non error conditions in this back end proc
                                    ShowMessage(exceptionMessage, MessageType.ErrorConfirm);
                                }
                            }
                        }
                        break;
                    }

                    case "ScanSinglesChute":
                    {
                        string  singleschutelabel = this.singleschutelabel.Value;
                        decimal singleschuteid    = decimal.Parse(this.singleschuteid.Value);

                        if (_barcode == string.Empty)
                        {
                            ShowMessage("Invalid scan. Please scan again.", MessageType.ErrorConfirm);
                            this.Master.MessageBoard = "Scan " + singleschutelabel;
                        }
                        else
                        {
                            LocateDAO locadao = new LocateDAO();

                            // check if scanned chute is the same as the one passed in

                            decimal scannedchuteid = 0;

                            try
                            {
                                scannedchuteid = locadao.PreValidateChute(_barcode);
                            }
                            catch (Exception ex)
                            {
                                // activity logging
                                _useract.AppSystem           = (int)ActivityLogEnum.AppSystem.IHF;
                                _useract.ApplicationId       = (int)ActivityLogEnum.ApplicationID.RemoveForPack;
                                _useract.ModuleId            = (int)ActivityLogEnum.ModuleID.RemoveForPack;
                                _useract.EventType           = (int)EventType.ScanLocation;
                                _useract.ResultCode          = (Int32)ActivityLogEnum.ResultCd.LocationValidationFailed;
                                _useract.ExpectedBarcodeType = "Chute barcode";
                                _useract.Barcode             = _barcode;
                                _useract.UserId     = Shared.CurrentUser;
                                _useract.ChuteId    = (int)singleschuteid;
                                _useract.ItemNumber = Int32.Parse(this.itemid.Value);

                                _uadao.SaveUserActivity(_useract);


                                // display error
                                string msg = ex.Message.Substring(ex.Message.IndexOf(" ", 0), ex.Message.IndexOf("ORA", 1) - ex.Message.IndexOf(" ", 0));
                                ShowMessage(msg, MessageType.ErrorConfirm);
                                this.Master.BarcodeValue = string.Empty;
                            }

                            if (scannedchuteid != 0)
                            {
                                if (scannedchuteid == singleschuteid)
                                {
                                    // chute id is correct - move on to next SKU
                                    this.step.Value = RemoveForPackStep.ScanSku.ToString();
                                    ShowMessage("Scan SKU barcode", MessageType.NormalMessage);
                                    this.singleschutelabel.Value = string.Empty;
                                    this.singleschuteid.Value    = string.Empty;
                                }
                                else
                                {
                                    ShowMessage("Invalid scan. Please scan again.", MessageType.ErrorConfirm);

                                    // activity logging
                                    _useract.AppSystem           = (int)ActivityLogEnum.AppSystem.IHF;
                                    _useract.ApplicationId       = (int)ActivityLogEnum.ApplicationID.RemoveForPack;
                                    _useract.ModuleId            = (int)ActivityLogEnum.ModuleID.RemoveForPack;
                                    _useract.EventType           = (int)EventType.LogOffChuteForLocate;
                                    _useract.ResultCode          = (Int32)ActivityLogEnum.ResultCd.InvalidChuteType;
                                    _useract.ExpectedBarcodeType = "Chute";
                                    _useract.Barcode             = _barcode;
                                    _useract.UserId             = Shared.CurrentUser;
                                    _useract.ChuteId            = (int)singleschuteid;
                                    _useract.ItemNumber         = Int32.Parse(this.itemid.Value);
                                    _useract.SessionEndDateTime = DateTime.Now;

                                    _uadao.SaveUserActivity(_useract);
                                }
                            }
                            else
                            {
                                ShowMessage("Invalid scan. Please scan again.", MessageType.ErrorConfirm);

                                // activity logging
                                _useract.AppSystem           = (int)ActivityLogEnum.AppSystem.IHF;
                                _useract.ApplicationId       = (int)ActivityLogEnum.ApplicationID.RemoveForPack;
                                _useract.ModuleId            = (int)ActivityLogEnum.ModuleID.RemoveForPack;
                                _useract.EventType           = (int)EventType.LogOffChuteForLocate;
                                _useract.ResultCode          = (Int32)ActivityLogEnum.ResultCd.InvalidChuteType;
                                _useract.ExpectedBarcodeType = "Chute";
                                _useract.Barcode             = _barcode;
                                _useract.UserId             = Shared.CurrentUser;
                                _useract.ChuteId            = (int)singleschuteid;
                                _useract.ItemNumber         = Int32.Parse(this.itemid.Value);
                                _useract.SessionEndDateTime = DateTime.Now;

                                _uadao.SaveUserActivity(_useract);
                            }
                        }
                        break;
                    }
                    }
                }
            }
            this.Master.BarcodeValue = string.Empty;
        }