Ejemplo n.º 1
0
        public static int GetShowQty(string ProductID)
        {
            //儲位所在地
            int          _areaId = int.Parse(Area.WmsAreaXml("Area"));
            ShelfProcess sp      = new ShelfProcess();
            var          Show    = sp.ShelfGroupList(ProductID, (int)EnumData.StorageType.展售儲位, _areaId, false).ToList().Sum(x => x.Quantity);

            return(Show);
        }
Ejemplo n.º 2
0
        public static int GetB1Qty(string ProductID)
        {
            //儲位所在地
            int          _areaId = int.Parse(Area.WmsAreaXml("Area"));
            ShelfProcess sp      = new ShelfProcess();

            int[] B1儲位 = { (int)EnumData.StorageType.標準儲位, (int)EnumData.StorageType.超散貨儲位 };
            var   B1   = sp.ShelfGroupList(ProductID, -1, _areaId, false).Where(x => B1儲位.Contains(x.StorageTypeId)).ToList().Sum(x => x.Quantity);

            return(B1);
        }
Ejemplo n.º 3
0
        protected void txt_Shelf_TextChanged(object sender, EventArgs e)
        {
            try
            {
                lbl_Message.Text = "";
                var sp        = new ShelfProcess();
                var input     = txt_Shelf.Text.Trim();
                int?shelfType = sp.CheckStorage(input, _areaId);
                if (shelfType != (int)Utility.StorageType.補貨儲位 && shelfType != (int)Utility.StorageType.展售儲位)
                {
                    lbl_Message.Text      = "此儲位只能為補貨/展售儲位!";
                    gv_product_id.Visible = false;
                    btnPrintShelf.Visible = false;
                }
                else
                {
                    var shipDa = new POS_Library.ShopPos.ShipInDA();
                    int xx     = 1;
                    var BLList = shipDa.GetShelfDetails(input).Select(x => new
                    {
                        序號   = xx++,
                        產品編號 = x.ProductId,
                        產品條碼 = x.Barcode,
                        數量   = x.Quantity,
                        價格   = x.Price
                    }).ToList();
                    if (BLList.Any())
                    {
                        gv_product_id.DataSource = BLList;
                        gv_product_id.DataBind();

                        for (var i = 0; i < BLList.Count; i++)
                        {
                            GridViewRow row = gv_product_id.Rows[i];
                            row.Cells[0].Text = BLList[i].序號.ToString();
                            row.Cells[1].Text = BLList[i].產品編號;
                            row.Cells[2].Text = BLList[i].產品條碼;
                            DropDownList ddl = row.Cells[3].FindControl("DDL_Quantity") as DropDownList;
                            ddl.SelectedValue = BLList[i].數量;
                            row.Cells[4].Text = BLList[i].價格;
                        }
                        gv_product_id.Visible = true;
                        btnPrintShelf.Visible = true;
                    }
                }
            }
            catch (Exception ex)
            {
                lbl_Message.Text      = "請輸入正確的資訊!";
                gv_product_id.Visible = false;
                btnPrintShelf.Visible = false;
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 寫入盤點紀錄
 /// </summary>
 /// <returns></returns>
 protected bool StartReport(DateTime date, string inventoryId)
 {
     try
     {
         ShelfProcess sp = new ShelfProcess();
         sp.SetInventoryLog(lbl_Storage_NO.Text, account, date, inventoryId, _areaId);
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// XLS
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnXls_Click(object sender, EventArgs e)
        {
            ShelfProcess sp           = new ShelfProcess();
            var          washName     = string.Format("{0}樓{1}區_空儲位", ddl_Floor.Text, ddl_Area.Text);
            var          storage      = sp.GetEmptyStorageNew(_areaId, ddl_Floor.Text, ddl_Area.Text).ToList();
            var          storageCount = string.Format("空儲位【{0}】", storage.Count());

            string[]     columns  = new string[] { storageCount };
            HSSFWorkbook workbook = new HSSFWorkbook();
            MemoryStream ms       = new MemoryStream();

            // 新增試算表。
            var sheet = workbook.CreateSheet("工作表1");
            //加Column
            Row row = sheet.CreateRow(0);

            for (int i = 0; i < columns.Length; i++)
            {
                Cell cell = row.CreateCell(i);
                cell.SetCellValue(columns[i]);
            }

            int a = 0;

            foreach (var item in storage)
            {
                a++;
                row = sheet.CreateRow(a);

                row.CreateCell(0).SetCellValue(CF.TransShelfIdToLabel(item));
            }
            workbook.Write(ms);

            Response.AddHeader("Content-Disposition", string.Format("attachment; filename=" + HttpUtility.UrlEncode(washName, System.Text.Encoding.UTF8) + ".xls"));
            Response.BinaryWrite(ms.ToArray());
            workbook = null;
            ms.Close();
            ms.Dispose();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 原js改寫
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void txt_VerifyCheck_NO_TextChanged(object sender, EventArgs e)
        {
            try
            {
                lbl_Message.Text = "";
                CheckFormat CF = new CheckFormat();
                LB_Product_Id1.ClearSelection();
                LB_Product_Id2.ClearSelection();
                //全過
                if (txt_VerifyCheck_NO.Text == "2")
                {
                    int total = LB_Product_Id1.Items.Count;
                    for (int i = 0; i < total; i++)
                    {
                        LB_Product_Id2.Items.Insert(0, LB_Product_Id1.Items[0]);
                        LB_Product_Id1.Items.Remove(LB_Product_Id1.Items[0]);
                    }
                }
                //還原一筆
                else if (txt_VerifyCheck_NO.Text == "0")
                {
                    if (LB_Product_Id2.Items.Count > 0)
                    {
                        LB_Product_Id1.Items.Insert(0, LB_Product_Id2.Items[0]);
                        LB_Product_Id2.Items.Remove(LB_Product_Id2.Items[0]);
                    }
                }
                else if (Regex.IsMatch(txt_VerifyCheck_NO.Text, "^\\d{8}$"))
                {
                    bool find = false;
                    for (int i = 0; i < LB_Product_Id1.Items.Count; i++)
                    {
                        if (LB_Product_Id1.Items[i].Value.Split(',')[0] == txt_VerifyCheck_NO.Text)
                        {
                            LB_Product_Id2.Items.Insert(0, LB_Product_Id1.Items[i]);
                            LB_Product_Id1.Items.Remove(LB_Product_Id1.Items[i]);

                            find = true;
                            break;
                        }
                    }

                    //如果不在清單中 顯示(多出)
                    if (!find)
                    {
                        lbl_Message.Text = "這個商品不是這張傳票的!";
                    }
                }
                //如果輸入的是儲位barcode 跳至差異清單
                else if (CF.CheckID(txt_VerifyCheck_NO.Text.Trim(), CheckFormat.FormatName.Storage))
                {
                    string       storage     = txt_VerifyCheck_NO.Text.Trim();
                    var          listLeft    = new List <string>();
                    var          listRight   = new List <string>();
                    int          areaId      = int.Parse(ViewState["areaId"].ToString());
                    var          flowType    = ViewState["flowType"].ToString();
                    var          importType  = ViewState["importType"].ToString();
                    var          ticketType  = ViewState["ticketType"].ToString();
                    ShelfProcess sp          = new ShelfProcess();
                    var          shelf       = sp.GetSearchStorage(storage, areaId);
                    var          storageType = EnumData.StorageType.標準暫存儲位;
                    //if (_flowType == (int)EnumData.FlowType.門市調回)
                    //{
                    //    storageType = EnumData.StorageType.調回暫存儲位;
                    //}
                    //else if (_flowType == (int)EnumData.FlowType.換貨)
                    //{
                    //    storageType = EnumData.StorageType.換貨暫存儲位;
                    //}
                    //else if (_flowType == (int)EnumData.FlowType.台組進貨)
                    //{
                    //    storageType = EnumData.StorageType.海運暫存儲位;
                    //}

                    if (shelf.Type != (int)storageType)
                    {
                        lbl_Message.Text = "這個儲位不屬於" + storageType.ToString() + "!";
                        return;
                    }

                    //串多少& 缺少的字串
                    for (int i = 0; i < LB_Product_Id1.Items.Count; i++)
                    {
                        listLeft.Add(LB_Product_Id1.Items[i].Text.Split('_')[0]);
                    }
                    var productDatas = new List <ImportClass.ProductData>();
                    for (int i = 0; i < LB_Product_Id2.Items.Count; i++)
                    {
                        var productData = new ImportClass.ProductData();
                        productData.Id       = LB_Product_Id2.Items[i].Value.Split(',')[4];
                        productData.Name     = LB_Product_Id2.Items[i].Text.Split('_')[0];
                        productData.Quantity = int.Parse(LB_Product_Id2.Items[i].Value.Split(',')[3]);
                        productData.Ticket   = LB_Product_Id2.Items[i].Value.Split(',')[1];
                        productDatas.Add(productData);

                        listRight.Add(LB_Product_Id2.Items[i].Text.Split('_')[0]);
                    }

                    if (listLeft.Any())
                    {
                        lbl_Message.Text        = "以下產品尚未驗完:" + string.Join(",", listLeft.Count);
                        txt_VerifyCheck_NO.Text = "";
                        return;
                    }

                    if (!listRight.Any())
                    {
                        lbl_Message.Text = "還沒驗到貨!請再次確認!";
                        return;
                    }

                    Session["ProductDatas"] = productDatas;
                    Session["storage"]      = storage;
                    Session["flowType"]     = flowType;
                    Session["pagekey"]      = lblbox.Text;
                    //------------------------------------------------------
                    //箱號驗貨
                    var url = "DiffList.aspx?storage=" + storage + "&ticketType=" + ticketType + "&flowType=" + flowType + "&pagekey=" + lblbox.Text + "&areaId=" + areaId + "&importType=" + importType;

                    //Response.Redirect(url);
                    Page.RegisterClientScriptBlock("checkinput", @"<script>window.open('" + url + "','_self');</script>");

                    txt_VerifyCheck_NO.Enabled = false;
                }
                else
                {
                    lbl_Message.Text = "這個商品不是這張傳票的!";
                }

                txt_VerifyCheck_NO.Text = "";

                //更新數量
                CheckNumToLabel();

                txt_VerifyCheck_NO.Focus();
            }
            catch (Exception ex)
            {
                Response.Write("系統發生錯誤 " + ex.Message);
            }
        }
Ejemplo n.º 7
0
        protected void txt_productId_TextChanged(object sender, EventArgs e)
        {
            try
            {
                var         sp             = new ShelfProcess();
                var         str_input      = txt_productId.Text.Trim().ToUpper();
                var         quantity       = int.Parse(DDL_Quantity.SelectedValue);
                var         productId      = string.Empty;
                var         productBarcode = string.Empty;
                CheckFormat CF             = new CheckFormat();
                //檢查輸入是否為條碼
                if (CF.CheckID(str_input, CheckFormat.FormatName.Product))
                {
                    //檢查是否為有效條碼
                    string chProduct = sp.GetProductNum(txt_productId.Text);
                    if (string.IsNullOrEmpty(chProduct))
                    {
                        lbl_Message.Text = "掃入條碼有誤!";
                        return;
                    }
                    else
                    {
                        productId = chProduct;
                        string chBarcode = sp.GetProductPriceBarcode(chProduct);
                        productBarcode = chBarcode;
                    }
                }
                else
                {
                    //檢查是否為有效產品
                    string chBarcode = sp.GetProductPriceBarcode(str_input);
                    if (string.IsNullOrEmpty(chBarcode))
                    {
                        lbl_Message.Text = "掃入條碼有誤!";
                        return;
                    }
                    else
                    {
                        productId      = str_input;
                        productBarcode = chBarcode;
                    }
                }
                for (int i = 0; i < quantity; i++)
                {
                    ListItem product = new ListItem();
                    product.Text  = productId;
                    product.Value = productBarcode;
                    lsbList.Items.Add(product);
                }

                txt_productId.Text      = "";
                lbl_Message.Text        = "";
                btnPrintProduct.Visible = true;

                txt_productId.Focus();
            }
            catch (Exception ex)
            {
                Response.Write("系統發生錯誤 " + ex.Message);
            }
        }
Ejemplo n.º 8
0
        protected void txt_Input_TextChanged(object sender, EventArgs e)
        {
            ShelfProcess sp = new ShelfProcess();

            string str_input = txt_Input.Text.Trim();

            //檢查儲位條碼
            if (CF.CheckID(str_input, CheckFormat.FormatName.Storage))
            {
                int?shelfType = sp.CheckStorage(str_input, _areaId);
                if (shelfType == null)
                {
                    lbl_Message.Text = str_input + " 不存在,請設定!";
                    return;
                }
                //第一次一定要刷入儲位,檢查來源儲位是否已填入
                if (string.IsNullOrEmpty(lbl_FromStorage_NO.Text))
                {
                    //檢查來源,不可為入庫暫存檢查 + 不良 + 打消
                    var fromType = shelfType.Value;
                    ViewState["fromType"] = fromType;
                    var strShelf = CF.CheckShelfType(fromType, "", (int)EnumData.MergeType.移動儲位);
                    if (string.IsNullOrEmpty(strShelf))
                    {
                        Session["ShelfList"]       = sp.GetStorageConfig(str_input, _areaId);
                        lbl_FromStorage_NO.Text    = str_input;
                        lbl_FromStage_NO_Type.Text = CF.TypeToName(shelfType);
                        lbl_Message.Text           = "";
                    }
                    else
                    {
                        lbl_Message.Text = strShelf;
                        return;
                    }
                }
                else
                {
                    if (str_input == lbl_FromStorage_NO.Text)
                    {
                        lbl_Message.Text = "不能和自己合併!";
                    }
                    //輸入目的儲位,不可為入庫暫存檢查
                    string From, Target;
                    From   = lbl_FromStorage_NO.Text;
                    Target = str_input;
                    //檢查目的不可為暫存,可為打消、不良
                    var fromType   = int.Parse(ViewState["fromType"].ToString());
                    var targetType = shelfType.Value;
                    var strShelf   = CF.CheckShelfType(fromType, targetType.ToString(), (int)EnumData.MergeType.移動儲位);
                    if (string.IsNullOrEmpty(strShelf))
                    {
                        lbl_TargetStorage_NO.Text      = str_input;
                        lbl_TargetStorage_NO_Type.Text = CF.TypeToName(shelfType);
                        btn_Submit.Visible             = true;
                    }
                    else
                    {
                        lbl_Message.Text = strShelf;
                        return;
                    }
                }
            }
            else if (string.IsNullOrEmpty(lbl_FromStorage_NO.Text))
            {
                lbl_Message.Text = "請先刷儲位條碼!";
            }
            else
            {
                //產編/條碼都可吃(2013-0426新增)------------
                String temp = "";

                if (CF.CheckID(str_input, CheckFormat.FormatName.Product))
                {
                    temp = sp.GetProductNum(str_input);
                }
                else
                {
                    String ttt = sp.GetProductBarcode(str_input);
                    if (!String.IsNullOrEmpty(ttt))
                    {
                        temp = str_input;
                    }
                }

                string productName = temp;

                if (!string.IsNullOrEmpty(productName))
                {
                    List <ShelfConfig> list = Session["ShelfList"] as List <ShelfConfig>;
                    var 撿貨未確認 = sp.GetTempStorageDetail(lbl_FromStorage_NO.Text, productName, _areaId);
                    if (list != null && list.Count > 0)
                    {
                        #region 判斷內容數量與輸入數量

                        //取內容數量與輸入數量
                        int qua           = (txt_Num.Text == "" || txt_Num.Text == "1") ? 1 : int.Parse(txt_Num.Text.Trim());
                        int NowProductNum = list.Where(x => x.ProductNumber == productName).Sum(x => x.Quantity);

                        //數量夠 = true
                        bool Numresult = (qua <= NowProductNum) ? true : false;

                        #endregion 判斷內容數量與輸入數量

                        //如果夠就扣數
                        if (Numresult)
                        {
                            bool result = false;

                            #region 輸入數量幾個就跑幾次(2013-0124修改)

                            //輸入數量幾個就跑幾次(2013-0121修改)
                            for (int i = 0; i < qua; i++)
                            {
                                result = false;

                                foreach (var data in list)
                                {
                                    if (data.ProductNumber == productName)
                                    {
                                        lbl_Product.Text = productName + "<br />" + lbl_Product.Text;
                                        //算目前件數
                                        lbl_CurrentNum.Text = (int.Parse(lbl_CurrentNum.Text) + 1).ToString();

                                        if (--data.Quantity == 0)
                                        {
                                            list.Remove(data);
                                        }

                                        lbl_Message.Text = "";
                                        result           = true;
                                        break;
                                    }
                                }

                                if (!result)
                                {
                                    lbl_Message.Text = "儲位無此商品!1";
                                }
                            }
                            //處理完再塞回去(2014-0110新增)
                            Session["ShelfList"] = list;

                            #endregion 輸入數量幾個就跑幾次(2013-0124修改)

                            #region ●顯示可再移,未確認數量

                            lbl_Message.Text = "此產品可再移:" + (NowProductNum - qua) + " , 撿貨中:" + 撿貨未確認.Count;

                            #endregion ●顯示可再移,未確認數量
                        }
                        else
                        {
                            lbl_Message.Text = "此商品剩餘數量為(" + NowProductNum + ")!" + " , 撿貨中:" + 撿貨未確認.Count;
                        }
                    }
                    else
                    {
                        if (撿貨未確認.Count > 0)
                        {
                            lbl_Message.Text = "此商品剩餘數量為(0)!" + " , 撿貨中:" + 撿貨未確認.Count;
                        }
                        else
                        {
                            lbl_Message.Text = "儲位無商品!3";
                        }
                    }
                }
                else
                {
                    lbl_Message.Text = "產品條碼錯誤!4";
                }
            }
            txt_Num.Text   = "";
            txt_Input.Text = "";
            txt_Input.Focus();
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 輸入txtbox
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void txt_VerifyCheck_NO_TextChanged(object sender, EventArgs e)
        {
            lbl_Message.Text = "";

            var          store  = int.Parse(ViewState["store"].ToString());
            var          areaId = int.Parse(ViewState["areaId"].ToString());
            ShelfProcess sp     = new ShelfProcess();
            CheckFormat  CF     = new CheckFormat();

            LB_Product_Id1.ClearSelection();
            LB_Product_Id2.ClearSelection();
            var 傳票ID = lbl_ticket_id.Text.Trim();

            //全過
            if (txt_VerifyCheck_NO.Text == "2")
            {
                int total = LB_Product_Id1.Items.Count;
                for (int i = 0; i < total; i++)
                {
                    LB_Product_Id2.Items.Insert(0, LB_Product_Id1.Items[0]);
                    LB_Product_Id1.Items.Remove(LB_Product_Id1.Items[0]);
                }
            }

            //還原一筆
            else if (txt_VerifyCheck_NO.Text == "0")
            {
                if (LB_Product_Id2.Items.Count > 0)
                {
                    LB_Product_Id1.Items.Insert(0, LB_Product_Id2.Items[0]);
                    LB_Product_Id2.Items.Remove(LB_Product_Id2.Items[0]);
                }
            }

            //確認
            else if (txt_VerifyCheck_NO.Text == "1")
            {
                if (LB_Product_Id1.Items.Count != 0)
                {
                    lbl_Message.Text = "部分商品未驗!";
                    return;
                }
                else if (string.IsNullOrEmpty(傳票ID))
                {
                    lbl_Message.Text = "傳票不可為空!";
                    return;
                }
                else
                {
                    var shipDa = new POS_Library.ShopPos.ShipOutDA();
                    var msg    = shipDa.LeaveWithVerify(int.Parse(傳票ID), account, store, DateTime.Now, areaId);
                    if (msg.Result == "1")
                    {
                        lbl_Message.Text           = "驗貨完成!";
                        txt_VerifyCheck_NO.Enabled = false;
                    }
                    else
                    {
                        lbl_Message.Text = msg.Reason;
                    }
                }
            }

            //產品編號
            else if (Regex.IsMatch(txt_VerifyCheck_NO.Text, "^\\d{8}$"))
            {
                bool find = false;

                for (int i = 0; i < LB_Product_Id1.Items.Count; i++)
                {
                    //if (LB_Product_Id1.Items[i].Value == txt_VerifyCheck_NO.Text)
                    //{
                    //lbl_Message.Text = LB_Product_Id1.Items[i].Value.Split(',')[4];
                    if (LB_Product_Id1.Items[i].Value.Split(',')[0] == txt_VerifyCheck_NO.Text)
                    {
                        LB_Product_Id2.Items.Insert(0, LB_Product_Id1.Items[i]);
                        LB_Product_Id1.Items.Remove(LB_Product_Id1.Items[i]);
                        find = true;
                        break;
                    }
                }

                if (!find)
                {
                    lbl_Message.Text = "這個商品不是這張傳票的!";

                    //LB_Product_Id2.Items.Insert(0, new ListItem(sp.GetProductNum(txt_VerifyCheck_NO.Text) + "(多出)", txt_VerifyCheck_NO.Text));
                }
            }
            else if (CF.CheckID(txt_VerifyCheck_NO.Text, CheckFormat.FormatName.Storage))
            {
                if (LB_Product_Id1.Items.Count == 0)
                {
                    int?type = sp.CheckStorage(txt_VerifyCheck_NO.Text, areaId);

                    if (type == 6 || type == 7)
                    {
                        string product = "";

                        for (int i = 0; i < LB_Product_Id2.Items.Count; i++)
                        {
                            product  = string.IsNullOrEmpty(product) ? product : product + ",";
                            product += LB_Product_Id2.Items[i].Text;
                        }

                        //Response.Redirect("~/DiffList.aspx?product=" + product + "&ticketId=" + lbl_ticket_id.Text + "&storage=" + txt_VerifyCheck_NO.Text.Trim());
                    }
                    else
                    {
                        lbl_Message.Text = "僅可為暫存儲位或不良暫存儲位!";
                    }
                }
                else
                {
                    lbl_Message.Text = "尚有產品未驗!";
                }
            }
            else
            {
                lbl_Message.Text = "這個商品不是這張傳票的!";
            }

            txt_VerifyCheck_NO.Text = "";
            txt_VerifyCheck_NO.Focus();
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 差異清單確認
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btn_Submit_Click(object sender, EventArgs e)
        {
            try
            {
                DateTime date = DateTime.Now;
                btn_Submit.Enabled = false;
                var inventoryId = POS_Library.Public.Utility.GetGuidMD5();
                StartReport(date, inventoryId);

                bool result = true;

                #region 多的產品處理

                string        more         = lbl_More.Text.Replace("多出:<br />", "");
                string[]      moreList     = more.Split('<');
                List <string> moreProducts = new List <string>();
                foreach (var data in moreList)
                {
                    string productId = data.Replace("br />", "");

                    if (!string.IsNullOrEmpty(productId))
                    {
                        if (result)
                        {
                            moreProducts.Add(productId.Trim());
                        }
                    }
                }

                #endregion 多的產品處理

                #region 少的產品處理

                string        lack         = lbl_Lack.Text.Replace("缺少:<br />", "");
                string[]      lackList     = lack.Split('<');
                List <string> lackProducts = new List <string>();
                foreach (var data in lackList)
                {
                    string productId = data.Replace("br />", "");

                    if (!string.IsNullOrEmpty(productId))
                    {
                        lackProducts.Add(productId.Trim());
                    }
                }

                #endregion 少的產品處理

                //有差異才可以進 for 績效(2013-0925修改)
                if (moreProducts.Count > 0 || lackProducts.Count > 0)
                {
                    if ((moreProducts.Count + lackProducts.Count) > 100)
                    {
                        lbl_Message.Text = "差異總數量請在100件以內!";
                        return;
                    }

                    ShelfProcess shelfProcess = new ShelfProcess();
                    var          msg          = shelfProcess.盤點儲位差異(lbl_Storage_NO.Text, moreProducts, lackProducts, account, date, inventoryId, _areaId);
                    if (msg.Result != "1")
                    {
                        result = false;
                    }
                }

                if (result)
                {
                    lbl_Message.Text = "成功!";
                }
            }
            catch (Exception ex)
            {
                Response.Write("系統發生錯誤 " + ex.Message);
            }
        }