//回傳值 true.通過驗證 false.未通過驗證,會把值還原 protected override bool WfItemCheck(object sender, ItemCheckInfo e) { vw_taxi020 masterModel = null; vw_taxi020s detailModel = null; List <vw_taxi020s> detailList = null; UltraGrid uGrid = null; tba_tb tbaModel = null; int begNo, endNo, chkBegNo, chkEndNo; int ChkCnts = 0; try { masterModel = DrMaster.ToItem <vw_taxi020>(); #region 單頭-vw_taxi020 if (e.Row.Table.Prefix.ToLower() == "vw_taxi020") { switch (e.Column.ToLower()) { case "tbe01": if (GlobalFn.isNullRet(e.Value, "") == "") { return(true); } if (Convert.ToInt32(e.Value) <= 0) { WfShowErrorMsg("不可為0或負數!"); return(false); } break; case "tbe11": //申報別 if (GlobalFn.isNullRet(e.Value, "") == "") { return(true); } if (BoTax.OfChkTbaPKExists(GlobalFn.isNullRet(e.Value, "")) == false) { WfShowErrorMsg("無此申報別"); return(false); } tbaModel = BoTax.OfGetTbaModel(e.Value.ToString()); DrMaster["tbe11_c"] = tbaModel.tba04; break; case "tbe02": if (GlobalFn.isNullRet(e.Value, "") == "") { return(true); } if (Convert.ToInt32(e.Value) <= 0) { WfShowErrorMsg("不可為0或負數!"); return(false); } if (masterModel.tbe03 != 0 && Convert.ToInt32(e.Value) > masterModel.tbe03) { WfShowErrorMsg("發票年月起不得大於迄月!"); return(false); } break; case "tbe03": if (GlobalFn.isNullRet(e.Value, "") == "") { return(true); } if (Convert.ToInt32(e.Value) <= 0) { WfShowErrorMsg("不可為0或負數!"); return(false); } if (masterModel.tbe02 != 0 && Convert.ToInt32(e.Value) < masterModel.tbe02) { WfShowErrorMsg("發票年月起不得大於迄月!"); return(false); } break; } } #endregion #region 單身-vw_taxi020s if (e.Row.Table.Prefix.ToLower() == "vw_taxi020s") { uGrid = sender as UltraGrid; detailModel = e.Row.ToItem <vw_taxi020s>(); detailList = e.Row.Table.ToList <vw_taxi020s>(); switch (e.Column.ToLower()) { case "tbe04": //發票別 if (GlobalFn.varIsNull(e.Value)) { return(true); } if (!GlobalFn.varIsNull(e.Value) && !GlobalFn.varIsNull(detailModel.tbe05) && detailModel.tbe06 > 0 && detailList.Count > 1 ) { if (WfChktbe04tbe05tbe06(e.Value.ToString(), detailModel.tbe05, detailModel.tbe06) == false) { return(false); } } break; case "tbe05": //聯數 if (GlobalFn.varIsNull(e.Value)) { return(true); } if (!GlobalFn.varIsNull(detailModel.tbe04) && !GlobalFn.varIsNull(e.Value) && detailModel.tbe06 > 0 && detailList.Count > 1 ) { if (WfChktbe04tbe05tbe06(detailModel.tbe04, e.Value.ToString(), detailModel.tbe06) == false) { return(false); } } break; case "tbe06": //簿號 if (GlobalFn.varIsNull(e.Value)) { return(true); } if (!GlobalFn.varIsNull(detailModel.tbe04) && !GlobalFn.varIsNull(detailModel.tbe05) && Convert.ToInt32(detailModel.tbe06) > 0 && detailList.Count > 1 ) { if (WfChktbe04tbe05tbe06(detailModel.tbe04, e.Value.ToString(), detailModel.tbe06) == false) { return(false); } } break; case "tbe07": //起始發票號碼 if (GlobalFn.varIsNull(e.Value)) { return(true); } if (GlobalFn.varIsNull(detailModel.tbe05)) { return(true); } if (e.Value.ToString().Length != 10) { WfShowErrorMsg("發票號碼應為10碼!"); return(false); } if (!GlobalFn.isEnglishLettrs(e.Value.ToString().Substring(0, 2))) { WfShowErrorMsg("發票前兩碼僅能輸入英文字母!"); return(false); } if (!GlobalFn.isNumberCharachter(e.Value.ToString().Substring(2, 8))) { WfShowErrorMsg("發票後八碼僅能輸入數字!"); return(false); } if (!GlobalFn.varIsNull(detailModel.tbe08)) { begNo = Convert.ToInt32(e.Value.ToString().Substring(2, 8)); endNo = Convert.ToInt32(detailModel.tbe08.Substring(2, 8)); if (e.Value.ToString().Substring(0, 2) != detailModel.tbe08.Substring(0, 2)) { WfShowErrorMsg("發票字軌應相同,請檢核!"); return(false); } if (begNo > endNo) { WfShowErrorMsg("發票號碼,起不得大於迄!"); return(false); } //檢查明細中是否有發票重疊 ChkCnts = detailList.Where(p => !GlobalFn.varIsNull(p.tbe07) && !GlobalFn.varIsNull(p.tbe08) && p.tbe07.Substring(0, 2).ToUpper() == detailModel.tbe07.Substring(0, 2).ToUpper() && !(endNo <Convert.ToInt32(p.tbe07.Substring(2, 8)) || begNo> Convert.ToInt32(p.tbe08.Substring(2, 8))) ).Count(); if (ChkCnts > 1) { WfShowErrorMsg("輸入發票有重覆,請檢核!"); return(false); } } WfSetTotalCnts(e.Row); break; case "tbe08": //截止發票號碼 if (GlobalFn.varIsNull(e.Value)) { return(true); } if (GlobalFn.varIsNull(detailModel.tbe05)) { return(true); } if (e.Value.ToString().Length != 10) { WfShowErrorMsg("發票號碼應為10碼!"); return(false); } if (!GlobalFn.isEnglishLettrs(e.Value.ToString().Substring(0, 2))) { WfShowErrorMsg("發票前兩碼僅能輸入英文字母!"); return(false); } if (!GlobalFn.isNumberCharachter(e.Value.ToString().Substring(2, 8))) { WfShowErrorMsg("發票後八碼僅能輸入數字!"); return(false); } if (!GlobalFn.varIsNull(detailModel.tbe08)) { begNo = Convert.ToInt32(detailModel.tbe08.Substring(2, 8)); endNo = Convert.ToInt32(e.Value.ToString().Substring(2, 8)); if (e.Value.ToString().Substring(0, 2) != detailModel.tbe07.Substring(0, 2)) { WfShowErrorMsg("發票字軌應相同,請檢核!"); return(false); } if (begNo > endNo) { WfShowErrorMsg("發票號碼,起不得大於迄!"); return(false); } //檢查明細中是否有發票重疊 ChkCnts = detailList.Where(p => !GlobalFn.varIsNull(p.tbe07) && !GlobalFn.varIsNull(p.tbe08) && p.tbe07.Substring(0, 2).ToUpper() == detailModel.tbe07.Substring(0, 2).ToUpper() && !(endNo <Convert.ToInt32(p.tbe07.Substring(2, 8)) || begNo> Convert.ToInt32(p.tbe08.Substring(2, 8))) ).Count(); if (ChkCnts > 1) { WfShowErrorMsg("輸入發票有重覆,請檢核!"); return(false); } } WfSetTotalCnts(e.Row); break; } } #endregion return(true); } catch (Exception ex) { throw ex; } }