/// <summary> /// 入力内容の検証をおこなう /// </summary> /// <returns></returns> private bool isFormValidation() { bool isResult = false; #region 【ヘッダ】必須入力チェック // 入金日 if (string.IsNullOrEmpty(this.txt入金日.Text)) { this.txt入金日.Focus(); base.ErrorMessage = string.Format("入金日が入力されていません。"); return(isResult); } // 得意先・入金元販社 // REMARKS:どちらかの設定が必要 if ((string.IsNullOrEmpty(this.txt得意先.Text1) || string.IsNullOrEmpty(txt得意先.Text2)) && string.IsNullOrEmpty(txt入金元販社.Text1)) { this.txt得意先.Focus(); base.ErrorMessage = string.Format("得意先または入金元販社が入力されていません。"); return(isResult); } else if ((!string.IsNullOrEmpty(this.txt得意先.Text1) || !string.IsNullOrEmpty(txt得意先.Text2)) && !string.IsNullOrEmpty(txt入金元販社.Text1)) { this.txt得意先.Focus(); base.ErrorMessage = string.Format("得意先または入金元販社のどちらかしか設定できません。"); return(isResult); } #endregion #region 【明細】入力チェック // 【明細】詳細データが1件もない場合はエラー // No-271 Mod Start // 金種コード入力件数取得 int intInpCnt = SearchDetail.AsEnumerable() .Where(w => w.Field <string>("金種コード") != null && !w.Field <string>("金種コード").Equals("0")) .Count(); // 明細件数チェック if (SearchDetail == null || SearchDetail.Rows.Count == 0 || intInpCnt == 0) // No-271 Mod End { base.ErrorMessage = string.Format("明細情報が1件もありません。"); return(isResult); } int rIdx = 0; bool isDetailErr = false; foreach (DataRow row in SearchDetail.Rows) { // 削除行は検証対象外 if (row.RowState == DataRowState.Deleted) { continue; } // 追加行未入力レコードはスキップ if (row["金種コード"] == null || string.IsNullOrEmpty(row["金種コード"].ToString()) || row["金種コード"].ToString().Equals("0")) { continue; } // エラー情報をクリア gcSpreadGrid.Rows[rIdx].ValidationErrors.Clear(); // 金額の未入力チェック if (string.IsNullOrEmpty(row["金額"].ToString())) { gcSpreadGrid.Rows[rIdx] .ValidationErrors.Add(new SpreadValidationError("金額が入力されていません。", null, rIdx, GridColumnsMapping.金額.GetHashCode())); if (!isDetailErr) { gcSpreadGrid.ActiveCellPosition = new CellPosition(rIdx, GridColumnsMapping.金額.GetHashCode()); } isDetailErr = true; } // 金種が「手形」の場合は期日が必須 if (string.IsNullOrEmpty(row["期日"].ToString())) { if (int.Parse(row["金種コード"].ToString()).Equals(金種Dic.FirstOrDefault(x => x.Value.Equals("手形")).Key)) // No.145 Mod { gcSpreadGrid.Rows[rIdx] .ValidationErrors.Add(new SpreadValidationError("金種が「手形」の場合は期日の設定が必要です。", null, rIdx, GridColumnsMapping.期日.GetHashCode())); if (!isDetailErr) { gcSpreadGrid.ActiveCellPosition = new CellPosition(rIdx, GridColumnsMapping.期日.GetHashCode()); } isDetailErr = true; } } rIdx++; } if (isDetailErr) { return(isResult); } #endregion return(true); }
/// <summary> /// 手形情報の期日、金額チェックをおこなう /// </summary> /// <param name="dt">得意先情報</param> /// <returns>true:チェックOK / false:NG </returns> private bool CheckTegata(DataTable dt) { // 手形入力確認 var tegata = SearchDetail.AsEnumerable() .Where(w => w.Field <string>("金種コード") != null && w.Field <string>("金種コード").Equals(金種Dic.FirstOrDefault(x => x.Value.Equals("手形")).Key.ToString())).FirstOrDefault(); if (tegata == null) { return(true); } // 請求条件チェック var cond = dt.AsEnumerable() .Where(w => w.Field <int?>("Tサイト2") == null || w.Field <int?>("T入金日2") == null); if (cond.Any() && (SearchHeader["得意先コード"].ToString() != "1" && string.IsNullOrEmpty(SearchHeader["入金元販社コード"].ToString()))) { MessageBox.Show("取引先マスタに手形条件が設定されていません。\n請求条件(サイト、入金日)を設定してください。", "請求条件未登録", MessageBoxButton.OK, MessageBoxImage.Asterisk); return(false); } else { if (MessageBox.Show("取引先マスタに手形条件が設定されていません。\r\n" + AppConst.CONFIRM_UPDATE, "請求条件未登録", MessageBoxButton.YesNo, MessageBoxImage.Asterisk) != MessageBoxResult.Yes) { return(false); } else { return(true); } } // 手形内容チェック int rIdx = 0; bool isCheckErr = true; foreach (DataRow row in SearchDetail.Rows) { // 削除行はチェック対象外 if (row.RowState == DataRowState.Deleted) { continue; } // 追加行未入力レコードはスキップ if (row["金種コード"] == null || string.IsNullOrEmpty(row["金種コード"].ToString()) || row["金種コード"].ToString().Equals("0")) { continue; } // エラー情報をクリア gcSpreadGrid.Rows[rIdx].ValidationErrors.Clear(); if (int.Parse(row["金種コード"].ToString()).Equals(金種Dic.FirstOrDefault(x => x.Value.Equals("手形")).Key)) { // 手形期日チェック //DateTime tagataDateMonth = ((DateTime)SearchHeader["入金日"]).AddMonths(-(int)dt.Rows[0].Field<int?>("Tサイト1")).AddMonths((int)dt.Rows[0].Field<int?>("Tサイト2")); //int サイト日 = (int)dt.Rows[0].Field<int?>("T入金日2"); //if(サイト日 == 31) //{ // サイト日 = DateTime.DaysInMonth(tagataDateMonth.Year, tagataDateMonth.Month); //} //DateTime limitDate = new DateTime(tagataDateMonth.Year, tagataDateMonth.Month, サイト日); ////バッファとして5日後に設定 //limitDate = limitDate.AddDays(5); //if (row.Field<DateTime>("期日") > limitDate) //{ // gcSpreadGrid.Rows[rIdx] // .ValidationErrors.Add(new SpreadValidationError(string.Format("期日が異なります。\n{0}の期日は{1}です。", // dt.Rows[0].Field<string>("略称名"), limitDate.ToString("yyyy/MM/dd")), // null, rIdx, GridColumnsMapping.期日.GetHashCode())); // if (isCheckErr) // { // gcSpreadGrid.ActiveCellPosition = new CellPosition(rIdx, GridColumnsMapping.期日.GetHashCode()); // } // isCheckErr = false; //} // 手形金額チェック // 請求区分.以上の場合 if (dt.Rows[0].Field <int>("T請求区分") == (int)請求区分.以上) { if (row.Field <int>("金額") < dt.Rows[0].Field <int>("T請求条件")) { gcSpreadGrid.Rows[rIdx] .ValidationErrors.Add(new SpreadValidationError(string.Format("手形発行金額が異なります。\n{0:#,0}円以上で手形を入力してください。", dt.Rows[0].Field <int>("T請求条件")), null, rIdx, GridColumnsMapping.金額.GetHashCode())); if (isCheckErr) { gcSpreadGrid.ActiveCellPosition = new CellPosition(rIdx, GridColumnsMapping.金額.GetHashCode()); } isCheckErr = false; } } // 請求区分.以下の場合 else { if (row.Field <int>("金額") > dt.Rows[0].Field <int>("T請求条件")) { gcSpreadGrid.Rows[rIdx] .ValidationErrors.Add(new SpreadValidationError(string.Format("手形発行金額が異なります。\n{0:#,0}円以下で手形を入力してください。", dt.Rows[0].Field <int>("T請求条件")), null, rIdx, GridColumnsMapping.金額.GetHashCode())); if (isCheckErr) { gcSpreadGrid.ActiveCellPosition = new CellPosition(rIdx, GridColumnsMapping.金額.GetHashCode()); } isCheckErr = false; } } } rIdx++; } if (isCheckErr == false) { return(isCheckErr); } //登録確認メッセージPopUp表示 if (MessageBox.Show(AppConst.CONFIRM_UPDATE, "登録確認", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes) != MessageBoxResult.Yes) { return(false); } }