private bool CheckPOSourceNO(string s_ChanNo, string s_Store, string s_StAcceptDate, string s_PoSourceNo, TextBox txt_POSourceNo, out string strErrMsg) { #region bool bResult = true; strErrMsg = ""; try { DataTable dtTemp = dtStorePOSetting; ALOModel.MaintainChainPO BCO = new ALOModel.MaintainChainPO(ConnectionDB); ALOModel.QueryALOCommon BCO2 = new ALOModel.QueryALOCommon(ConnectionDB); ArrayList ParameterList1 = new ArrayList(); if (dtTemp != null && dtTemp.Rows.Count > 0) { #region for (Int32 i = 0; i <= dtTemp.Rows.Count - 1; i++) { //1.根據[DI.群分類+大分類],由[dtStorePOSetting]過濾取得對應通路PO單號控制資訊。 if (s_ROOT_NO == dtTemp.Rows[i]["root_no"].ToString().Trim() && s_PMA == dtTemp.Rows[i]["pma"].ToString().Trim()) { if (dtTemp.Rows[i]["is_dis_bypo"].ToString().Trim() == "0") { if (s_PoSourceNo != "")//2.若查詢之IS_DIS_BYPO=否,則PO單號必須為空白,清空PO單號,並顯示訊息提示使用者。 { #region 不可輸入PO單號 strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不可輸入通路單號。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA); txt_POSourceNo.Text = ""; bResult = false; break; #endregion } } else if (dtTemp.Rows[i]["is_dis_bypo"].ToString().Trim() == "1") { if (s_PoSourceNo == "")//3.若IS_DIS_BYPO=是 =>PO單號為必填欄位,檢查是否正確輸入。異常則顯示錯誤訊息,提示使用者。 { #region PO單號為必填 strErrMsg = string.Format("『請輸入通路單號。』"); bResult = false; break; #endregion } #region old //if (dtTemp.Rows[i]["is_multipo"].ToString().Trim() == "0")//4.若IS_DIS_BYPO=是,且IS_MULTIPO=否,=>檢查同品號/期別/門市進貨日/門市是否存在不同PO,若存在則顯示錯誤訊息,不允許更新。 //{ // #region // if (bResult) // { // DataTable dtTempMD = dtDisStore; // for (Int32 k = 0; k <= dtTempMD.Rows.Count - 1; k++) // { // if (dtTempMD.Rows[k]["chan_no"].ToString().Trim() == s_ChanNo && // dtTempMD.Rows[k]["store"].ToString().Trim() == s_Store && // dtTempMD.Rows[k]["item"].ToString().Trim() == s_ITEM && // dtTempMD.Rows[k]["period"].ToString().Trim() == s_PERIOD && // //dtTempMD.Rows[k]["st_accept_date"].ToString().Trim() == s_StAcceptDate &&//todo need to check // dtTempMD.Rows[k]["po_source_no"].ToString().Trim() != s_PoSourceNo && // k != i_CurrentIndexInDisStore) // { // strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不允許多重PO。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA); // bResult = false; // break; // } // } // } // #endregion // #region // if (bResult) // { // ParameterList1.Clear(); // ParameterList1.Add(s_ChanNo); // ParameterList1.Add(s_Store); // ParameterList1.Add(s_ITEM); // ParameterList1.Add(s_PERIOD); // ParameterList1.Add(s_StAcceptDate); // ParameterList1.Add(null); // DataTable dtTempPoDetl = BCO.QueryChainPODetlByFind(ParameterList1); // if (dtTempPoDetl != null && dtTempPoDetl.Rows.Count > 0) // { // for (Int32 j = 0; j <= dtTempPoDetl.Rows.Count - 1; j++) // { // if (dtTempPoDetl.Rows[j]["po_source_no"].ToString().Trim() != s_PoSourceNo) // { // strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不允許多重PO。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA); // bResult = false; // break; // } // } // } // } // #endregion //} #endregion if (bResult) { #region DataTable dtTempMD = dtDisStore; for (Int32 k = 0; k <= dtTempMD.Rows.Count - 1; k++) { if (dtTempMD.Rows[k]["chan_no"].ToString().Trim() == s_ChanNo && dtTempMD.Rows[k]["store"].ToString().Trim() == s_Store && dtTempMD.Rows[k]["item"].ToString().Trim() == s_ITEM && dtTempMD.Rows[k]["period"].ToString().Trim() == s_PERIOD && dtTempMD.Rows[k]["po_source_no"].ToString().Trim() != s_PoSourceNo && k != i_CurrentIndexInDisStore) { ParameterList1.Clear(); ParameterList1.Add(s_StAcceptDate); ParameterList1.Add(dtTemp.Rows[i]["is_dis_bypo"].ToString().Trim()); ParameterList1.Add(dtTemp.Rows[i]["is_multipo"].ToString().Trim()); ParameterList1.Add(s_ROOT_NO); ParameterList1.Add(s_PMA); ParameterList1.Add(s_ITEM); ParameterList1.Add(s_PERIOD); ParameterList1.Add(s_ChanNo); ParameterList1.Add(s_Store); ParameterList1.Add(s_PoSourceNo); ParameterList1.Add(Session["UID"].ToString()); bResult = BCO2.CheckPODuplicate(ParameterList1, out strErrMsg); if (!bResult) break; } } #endregion } } } } #endregion } #region #region if (bResult) { DataTable dtTempMD = dtDisStore; for (Int32 k = 0; k <= dtTempMD.Rows.Count - 1; k++) { if (dtTempMD.Rows[k]["chan_no", DataRowVersion.Current].ToString().Trim() == s_ChanNo && dtTempMD.Rows[k]["store", DataRowVersion.Current].ToString().Trim() == s_Store && dtTempMD.Rows[k]["item", DataRowVersion.Current].ToString().Trim() == s_ITEM && dtTempMD.Rows[k]["period", DataRowVersion.Current].ToString().Trim() == s_PERIOD && //dtTempMD.Rows[k]["st_accept_date"].ToString().Trim() == s_StAcceptDate &&//todo need to check dtTempMD.Rows[k]["po_source_no", DataRowVersion.Current].ToString().Trim() == s_PoSourceNo && k != i_CurrentIndexInDisStore) { strErrMsg = string.Format("『PK重複(通路,門市,群分類,大分類,進貨日,PO單號)=({0},{1},{2},{3},{4},{5})。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA, s_StAcceptDate, s_PoSourceNo); bResult = false; break; } } } #endregion #region if (bResult) { ParameterList1.Clear(); ParameterList1.Add(s_ChanNo); ParameterList1.Add(s_Store); ParameterList1.Add(s_ITEM); ParameterList1.Add(s_PERIOD); ParameterList1.Add(s_StAcceptDate); ParameterList1.Add(s_PoSourceNo); bool bTemp = BCO.CheckChainPODetlIsExistedByFind(ParameterList1); if (bTemp) { strErrMsg = string.Format("『PK重複(通路,門市,群分類,大分類,進貨日,PO單號)=({0},{1},{2},{3},{4},{5})。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA, s_StAcceptDate, s_PoSourceNo); bResult = false; } } #endregion #endregion } catch (Exception ex) { ErrorMsgLabel.Text = ex.Message; } return bResult; #endregion }
private bool CheckPOSourceNO(ref string strErrMsg) { #region bool bResult = true; s_ChanNo = SLP_StoreChain1.Text; s_Store = SLP_Store2.Text; s_Item = SLP_SKU2.Text; s_Period = SLP_ItemPeriod1.Text; s_StAcceptDate = SLP_SLPDate2.Text; s_PoSourceNo = txt_POSourceNo.Text.Trim(); ArrayList ParameterList = new ArrayList();//20091113 ArrayList ParameterList1 = new ArrayList();//20091113 #region 比對是否 PK重複 #region 先比對頁面資料 DataTable dtTempMD = dtForMasterAndDetail; dtTempMD.PrimaryKey = new DataColumn[] { dtTempMD.Columns["chan_no"], dtTempMD.Columns["store"], dtTempMD.Columns["item"], dtTempMD.Columns["period"], dtTempMD.Columns["st_accept_date_show"], dtTempMD.Columns["data_source"] //,dtTempMD.Columns["po_source_no"] }; DataRow drFind_1 = dtTempMD.Rows.Find(new object[] { s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate, 1 //,s_PoSourceNo }); DataRow drFind_4 = dtTempMD.Rows.Find(new object[] { s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate, 4 //,s_PoSourceNo }); if (drFind_1 != null || drFind_4 != null) { //strErrMsg = string.Format("『PK重複,資料已存在於頁面(通路,門市,群分類,大分類,進貨日,PO單號)=({0},{1},{2},{3},{4},{5})。』", // s_ChanNo, s_Store, s_ROOT_NO, s_PMA, s_StAcceptDate, s_PoSourceNo); strErrMsg = string.Format("『PK重複,手動匯入或通路單號匯入資料已存在於頁面(通路,門市,品號,期別進貨日)=({0},{1},{2},{3},{4})。』", s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate); bResult = false; return bResult; } #endregion #region 比對待新增明細與實體資料庫 ALOModel.MaintainChainPO BCO = new ALOModel.MaintainChainPO(ConnectionDB); ParameterList1.Clear(); ParameterList1.Add(s_ChanNo); ParameterList1.Add(s_Store); ParameterList1.Add(s_Item); ParameterList1.Add(s_Period); ParameterList1.Add(s_StAcceptDate); ParameterList1.Add(s_PoSourceNo); bool bDataExist = BCO.CheckChainPODetlIsExistedByFind(ParameterList1); if (bDataExist) { strErrMsg = string.Format("『PK重複,資料已存在於實體資料表(通路,門市,品號,期別,進貨日,PO單號)=({0},{1},{2},{3},{4},{5})。』", s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate, s_PoSourceNo); bResult = false; return bResult; } #region 只檢查單店/品項/進貨日 ParameterList1.Clear(); ParameterList1.Add(s_ChanNo); ParameterList1.Add(s_Store); ParameterList1.Add(s_Item); ParameterList1.Add(s_Period); ParameterList1.Add(s_StAcceptDate); ParameterList1.Add(""); bDataExist = BCO.CheckChainPODetlIsExistedByFind(ParameterList1); if (bDataExist) { strErrMsg = string.Format("『PK重複,資料已存在於實體資料表(通路,門市,品號,期別,進貨日)=({0},{1},{2},{3},{4})。』", s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate); bResult = false; return bResult; } #endregion #endregion #endregion ALOModel.MaintainChainPOSetting BCO2 = new ALOModel.MaintainChainPOSetting(ConnectionDB); #region 依照品號取得所屬[群分類]、[大分類] ParameterList.Clear(); BCO_ITM.SQLHelper.SQLWhere(ref ParameterList, DbType.String, "MA.ITEM", s_Item, "=", "and"); BCO_ITM.MaintainSKU bco_itm = new BCO_ITM.MaintainSKU(ConnectionDB); DataTable dt_Return = bco_itm.QuerySKUByFind_1(ParameterList); if (dt_Return != null && dt_Return.Rows.Count > 0) { s_PMA = dt_Return.Rows[0]["PMA"].ToString();//大分類 s_ROOT_NO = dt_Return.Rows[0]["ROOT_NO"].ToString();//群分類 } #endregion #region 判斷 is_dis_bypo & is_multipo ParameterList1.Clear(); ParameterList1.Add(s_ChanNo); ParameterList1.Add(s_Store); DataTable dtChainPOSetting = BCO2.QueryStorPOSettingByFind(ParameterList1); if (dtChainPOSetting != null && dtChainPOSetting.Rows.Count > 0) { for (Int32 i = 0; i <= dtChainPOSetting.Rows.Count - 1; i++) { if (s_ROOT_NO == dtChainPOSetting.Rows[i]["root_no"].ToString().Trim() && s_PMA == dtChainPOSetting.Rows[i]["pma"].ToString().Trim()) { if (dtChainPOSetting.Rows[i]["is_dis_bypo"].ToString().Trim() == "0") { if (s_PoSourceNo != "")//1.當[IS_DIS_BYPO]=否時,PO單號應不可輸入。 { #region strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不可輸入通路單號。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA); bResult = false; rfv_POSourceNo.Enabled = false; break; #endregion } } else if (dtChainPOSetting.Rows[i]["is_dis_bypo"].ToString().Trim() == "1") { if (s_PoSourceNo == "")//2.當[IS_DIS_BYPO]=是時,允許輸入PO單號為必填欄位,應不可為空白。 { #region strErrMsg = string.Format("『請輸入通路單號。』"); bResult = false; break; #endregion } if (dtChainPOSetting.Rows[i]["is_multipo"].ToString().Trim() == "0")//3.當[IS_DIS_BYPO]=是且[IS_MULTIPO]=否時,代表(同門市/品號期別/門市進貨日)下,只能輸入一個PO單號。 { #region if (bResult) { //20090716 modified if (!bDetailEditing)//如果不是編輯狀態 { //檢查頁面暫存檔 //DataTable dtTempMD = dtForMasterAndDetail; DataRow[] dRows = dtTempMD.Select(string.Format("chan_no='{0}' and store='{1}' and item='{2}' and period = '{3}' and st_accept_date_show='{4}' ", s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate)); if (dRows.Length > 0) { strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時,只能輸入一個PO單號』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA); bResult = false; } //檢查資料庫 ParameterList1.Clear(); ParameterList1.Add(s_ChanNo); ParameterList1.Add(s_Store); ParameterList1.Add(s_Item); ParameterList1.Add(s_Period); ParameterList1.Add(s_StAcceptDate); ParameterList1.Add(null); bool bTemp = BCO.CheckChainPODetlIsExistedByFind(ParameterList1); if (bTemp) { strErrMsg = string.Format("『(通路,門市,群分類,大分類,進貨日)=({0},{1},{2},{3},{4})時,只能輸入一個PO單號』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA, s_StAcceptDate); bResult = false; } } } #endregion } else if (dtChainPOSetting.Rows[i]["is_multipo"].ToString().Trim() == "1")//3.當[IS_DIS_BYPO]=是且[IS_MULTIPO]=是時,代表(同門市/品號期別/門市進貨日)下,允許多重PO。 { #region if (bResult) { ParameterList1.Clear(); ParameterList1.Add(s_ChanNo); ParameterList1.Add(s_Store); ParameterList1.Add(s_Item); ParameterList1.Add(s_Period); ParameterList1.Add(s_StAcceptDate); ParameterList1.Add(s_PoSourceNo); DataTable dtTempPoDetl = BCO.QueryChainPODetlByFind(ParameterList1); if (dtTempPoDetl != null && dtTempPoDetl.Rows.Count > 0) { for (Int32 j = 0; j <= dtTempPoDetl.Rows.Count - 1; j++) { if (dtTempPoDetl.Rows[j]["po_source_no"].ToString().Trim() != s_PoSourceNo) { strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不允許多重PO。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA); bResult = false; break; } } } } #endregion } } } } } #endregion return bResult; #endregion }