protected override bool WfFormCheck() { vw_glat300_1 masterModel = null; vw_glat300_1s detailModel = null; List <vw_glat300_1s> detailList = null; UltraGrid uGrid; string msg; Control chkControl; string chkColName; int iChkDetailTab; try { masterModel = DrMaster.ToItem <vw_glat300_1>(); detailList = TabDetailList[0].DtSource.ToList <vw_glat300_1s>(); #region 單頭資料檢查 chkColName = "gfb07"; //本幣金額 chkControl = ute_gfb07; var sumDetailGfb07 = detailList.Sum(p => p.gfh09); if (masterModel.gfb07 != sumDetailGfb07) { msg = "沖帳金額加總不相同,請檢核!"; errorProvider.SetError(chkControl, msg); WfShowErrorMsg(msg); return(false); } #endregion return(true); } catch (Exception ex) { throw ex; } }
protected override void WfSetDetailDisplayMode(int pCurTabDetail, UltraGridRow pUgr, DataRow pDr) { string columnName; vw_glat300_1s glat300_1 = null; try { switch (pCurTabDetail) { case 0: glat300_1 = pDr.ToItem <vw_glat300_1s>(); foreach (UltraGridCell ugc in pUgr.Cells) { columnName = ugc.Column.Key.ToLower(); //先控可以輸入的 if ( columnName == "is_pick" ) { WfSetControlReadonly(ugc, false); continue; } if (columnName == "gfh09" ) { if (glat300_1.is_pick == "Y") { WfSetControlReadonly(ugc, false); } else { WfSetControlReadonly(ugc, true); } continue; } WfSetControlReadonly(ugc, true); //其餘的都關閉 } break; } } catch (Exception ex) { throw ex; } }
//回傳值 true.通過驗證 false.未通過驗證,會把值還原 protected override bool WfItemCheck(object sender, ItemCheckInfo e) { int iChkCnts = 0; vw_glat300_1 masterModel = null; vw_glat300_1s detailModel = null; List <vw_glat300_1s> detailList = null; gba_tb gbaModel = null; UltraGrid uGrid = null; UltraGridRow uGridRow = null; int ChkCnts = 0; string sql = ""; List <SqlParameter> sqlParmList = null; try { masterModel = DrMaster.ToItem <vw_glat300_1>(); #region 單身-vw_glat300_1s if (e.Row.Table.Prefix.ToLower() == "vw_glat300_1s") { uGrid = sender as UltraGrid; uGridRow = uGrid.ActiveRow; detailModel = e.Row.ToItem <vw_glat300_1s>(); detailList = e.Row.Table.ToList <vw_glat300_1s>(); var bb = TabDetailList[0].DtSource.ToList <vw_glat300_1s>(); switch (e.Column.ToLower()) { case "is_pick": //項次 e.Row["gfh09"] = 0; if (e.Value.ToString() == "Y") { WfSetControlReadonly(uGridRow.Cells["gfh09"], false); } else { WfSetControlReadonly(uGridRow.Cells["gfh09"], true); WfSetSumGfb09(); } break; case "gfh09": //沖帳金額 if (GlobalFn.varIsNull(e.Value)) { WfShowErrorMsg("請輸入數字!"); return(false); } if (GlobalFn.isNullRet(e.Value, 0) < 0) { WfShowErrorMsg("金額不可小於0!"); return(false); } var sumGfh09 = detailList.Where(p => p.is_pick == "Y" && p.gfh09 >= 0) .Sum(p => p.gfh09); if (masterModel.gfb07 < sumGfh09) { var bekModel = BoBas.OfGetBekModel(BaaModel.baa04); WfShowErrorMsg(string.Format("輸入金額加總已超過{0},請檢核!", GlobalFn.Round(masterModel.gfb07, bekModel.bek03).ToString()) ); return(false); } //檢查 已沖+暫沖(DB)+輸入金額 是否有超過立帳金額 var availableMaxAmt = 0m; //可輸入最高金額 var glat300aList = _dtGlat300a.ToList <vw_glat300a>(); //可輸入金額=資料庫(立帳金額-暫沖) availableMaxAmt = detailModel.gfg07 - detailModel.gfg08; //可輸人金額 再減掉此傳票但不屬於該項次的金額加總 availableMaxAmt -= glat300aList.Where(p => p.gfh01 == detailModel.gfg01 && p.gfh02 == detailModel.gfg02 && p.gfh04 != masterModel.gfb02) .Sum(p => p.gfh09) ; //可輸入金額 再減掉資料庫中不屬於該傳票未過帳的金額加總 if (!GlobalFn.varIsNull(masterModel.gfb01)) { sql = @"SELECT SUM(gfh09) FROM gfh_tb WHERE gfhconf='N' AND gfh03<>@gfh03 AND gfh01=@gfh01 AND gfh02=@gfh02 "; sqlParmList = new List <SqlParameter>(); sqlParmList.Add(new SqlParameter("@gfh01", detailModel.gfg01)); sqlParmList.Add(new SqlParameter("@gfh02", detailModel.gfg02)); sqlParmList.Add(new SqlParameter("@gfh03", masterModel.gfb01)); var sumTempGfh09 = GlobalFn.isNullRet(BoGla.OfGetFieldValue(sql, sqlParmList.ToArray()), 0m); availableMaxAmt -= sumTempGfh09; } if (Convert.ToDecimal(e.Value) > availableMaxAmt) { var bekModel = BoBas.OfGetBekModel(BaaModel.baa04); WfShowErrorMsg(string.Format("可輸入最大沖帳金額為{0} !", GlobalFn.Round(availableMaxAmt, bekModel.bek03).ToString()) ); return(false); } DrMaster["sum_gfh09"] = sumGfh09; break; } } #endregion return(true); } catch (Exception ex) { throw ex; } }