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); }
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); }
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; } }
/// <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); } }
/// <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(); }
/// <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); } }
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); } }
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(); }
/// <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(); }
/// <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); } }