/// <summary> /// SPREAD セル編集がコミットされた時の処理(手入力) CellEditEnadedイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gcInnerSpreadGrid_CellEditEnded(object sender, SpreadCellEditEndedEventArgs e) { GcSpreadGrid grid = sender as GcSpreadGrid; string targetColumn = grid.ActiveCellPosition.ColumnName; if (e.EditAction == SpreadEditAction.Cancel) { return; } //明細行が存在しない場合は処理しない if (InnerDetail == null) { return; } if (InnerDetail.Select("", "", DataViewRowState.CurrentRows).Count() == 0) { return; } _編集行 = e.CellPosition.Row; switch (targetColumn) { case "自社品番": var target = gridDtb.GetCellValueToString(); if (string.IsNullOrEmpty(target)) { return; } // 自社品番からデータを参照し、取得内容をグリッドに設定 base.SendRequest( new CommunicationObject( MessageType.RequestData, MasterCode_MyProduct, new object[] { target.ToString() , string.Empty, string.Empty })); break; case "数量": case "賞味期限": InnerDetail.Rows[gridDtl.ActiveRowIndex].EndEdit(); break; default: break; } }
/// <summary> /// F05 リボン 構成品行追加 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void OnF5Key(object sender, KeyEventArgs e) { // 画面初期状態の場合、以降の処理を中止する if (this.MaintenanceMode == null) { return; } // 行数の取得を行う int delRowCount = (InnerDetail.GetChanges(DataRowState.Deleted) == null) ? 0 : InnerDetail.GetChanges(DataRowState.Deleted).Rows.Count; DataRow dtlRow = InnerDetail.NewRow(); InnerDetail.Rows.Add(dtlRow); // 行追加後は追加行を選択させる int newRowIdx = InnerDetail.Rows.Count - delRowCount - 1; gridDtb.SetCellFocus(newRowIdx, (int)GridColumnsMapping.自社品番); // No.425 Mod }
//======================================================================================== // Helper Methods //======================================================================================== private InnerDetail GetInnerExceptionDetails() { Exception exc = root; InnerDetail detail = new InnerDetail(); InnerDetail child = detail; while (exc != null) { child.Detail = exc.GetType().FullName; child.Children.Add(new InnerDetail(exc.Message)); child.Children.Add(new InnerDetail(GetTargetMethodFormat(exc))); exc = exc.InnerException; if (exc != null) { InnerDetail inner = new InnerDetail(); child.Children.Add(inner); child = inner; } } return(detail); }
/// <summary> /// /// </summary> /// <param name="exc"></param> public SmartException(Exception exc) : base("iTuner Exception", exc) { this.root = exc; this.inner = null; }
//======================================================================================== // Constructors //======================================================================================== /// <summary> /// /// </summary> public SmartException() { this.root = null; this.inner = null; }
/// <summary> /// 入力内容の検証をおこなう /// </summary> /// <returns>bool</returns> private bool isFormValidation() { bool isResult = false; int intSyohinkeitaibunrui = 0; blnWarningFlg = false; // 揚り明細より情報を取得する foreach (DataRow row in SearchDetail.Rows) { intSyohinkeitaibunrui = int.Parse(row["商品形態分類"].ToString()); } // 現在の明細行を取得 var CurrentDetail = InnerDetail.Select("", "", DataViewRowState.CurrentRows).AsEnumerable(); // 【明細】詳細データが1件もない場合はエラー if (InnerDetail == null || CurrentDetail.Where(a => !string.IsNullOrEmpty(a.Field <string>("自社品番"))).Count() == 0) { gridDtb.SpreadGrid.Focus(); base.ErrorMessage = string.Format("明細情報が1件もありません。"); return(isResult); } // 【明細】品番の商品分類が食品(1)の場合は賞味期限が必須 int rIdx = 0; bool isDetailErr = false; foreach (DataRow row in InnerDetail.Rows) { // 削除行は検証対象外 if (row.RowState == DataRowState.Deleted) { continue; } // 追加行未入力レコードはスキップ if (row["品番コード"] == null || string.IsNullOrEmpty(row["品番コード"].ToString()) || row["品番コード"].ToString().Equals("0")) { rIdx++; continue; } // エラー情報をクリア gridDtb.ClearValidationErrors(rIdx); DateTime?row賞味期限 = DBNull.Value.Equals(row["賞味期限"]) ? (DateTime?)null : Convert.ToDateTime(row["賞味期限"]); int? row品番コード = DBNull.Value.Equals(row["品番コード"]) ? (int?)null : Convert.ToInt32(row["品番コード"]); if (CurrentDetail.Where(x => x.Field <int?>("品番コード") == row品番コード && x.Field <DateTime?>("賞味期限") == row賞味期限).Count() > 1) { gridDtb.SpreadGrid.Focus(); base.ErrorMessage = string.Format("同じ商品が存在するので、一つに纏めて下さい。"); gridDtb.AddValidationError(rIdx, (int)GridColumnsMapping.品番コード, "同じ商品が存在するので、一つに纏めて下さい。"); if (!isDetailErr) { gridDtb.SetCellFocus(rIdx, (int)GridColumnsMapping.品番コード); } isDetailErr = true; } if (string.IsNullOrEmpty(row["数量"].ToString())) { gridDtb.AddValidationError(rIdx, (int)GridColumnsMapping.数量, "数量が入力されていません。"); if (!isDetailErr) { gridDtb.SetCellFocus(rIdx, (int)GridColumnsMapping.数量); } isDetailErr = true; } int type = Convert.ToInt32(row["商品分類"]); DateTime date; if (!DateTime.TryParse(row["賞味期限"].ToString(), out date)) { // 変換に失敗かつ商品分類が「食品」かつ数量が0以外の場合はエラー if (type.Equals((int)商品分類.食品) && row["数量"].ToString().Equals("0.00") == false) { gridDtb.AddValidationError(rIdx, (int)GridColumnsMapping.賞味期限, "商品分類が『食品』の為、賞味期限の設定が必要です。"); isDetailErr = true; } } // 商品形態分類がセット品の場合、エラーチェックを行う if (intSyohinkeitaibunrui == 1) // No-279 Add { // セット品番マスタチェック(存在しない) if (DLY02010.isCheckShinNotExist(SetHin, row["品番コード"].ToString()) == false) { gridDtb.AddValidationError(rIdx, (int)GridColumnsMapping.品番コード, "製品を構成しない部材が入力されています。"); blnWarningFlg = true; } } rIdx++; } // 商品形態分類がセット品の場合、エラーチェックを行う if (intSyohinkeitaibunrui == 1) // No-279 Add { // セット品番マスタチェック(構成しない部材) if (DLY02010.isCheckShinUnnecessary(SetHin, InnerDetail) == false) { gridDtb.SpreadGrid.Focus(); base.ErrorMessage = string.Format("製品を構成する部材が入力されていません。"); blnWarningFlg = true; } // セット品番マスタチェック(数量) string strErrMsg = string.Empty; if (DLY02010.isCheckShinQuantity(SetHin, SearchDetail, InnerDetail, out strErrMsg) == false) { gridDtb.SpreadGrid.Focus(); base.ErrorMessage = string.Format(strErrMsg); blnWarningFlg = true; } } if (isDetailErr) { return(isResult); } isResult = true; return(isResult); }
/// <summary> /// F09 リボン 登録 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void OnF9Key(object sender, KeyEventArgs e) { // Spread編集内容を確定させる gcDetailSpreadGrid.CommitCellEdit(); gcInnerSpreadGrid.CommitCellEdit(); // 画面初期状態または揚り部材明細が未設定の場合、以降の処理を中止する if (MaintenanceMode == null || InnerDetail == null) { return; } // No.423 Add Start #region 空行削除 for (int rowIdx = gridDtb.SpreadGrid.Rows.Count - 1; rowIdx >= 0; rowIdx--) { // 品番コードがnullのデータは削除 if (gridDtb.SpreadGrid.Cells[rowIdx, "品番コード"].Value == null || (int)gridDtb.SpreadGrid.Cells[rowIdx, "品番コード"].Value == 0) { try { // フォーカスがない状態で削除するとエラーが発生するためフォーカスを設定 gridDtb.SpreadGrid.Focus(); gridDtb.SpreadGrid.Rows.Remove(rowIdx); } catch { InnerDetail.Rows.Remove(InnerDetail.Rows[rowIdx]); } if (gridDtb.SpreadGrid.Rows.Count != InnerDetail.Rows.Count) { try { InnerDetail.Rows.Remove(InnerDetail.Rows[rowIdx]); } catch { // エラー処理なし } } } } #endregion // No.423 Add End // 在庫チェックを行う DataSet ds = new DataSet(); ds.Tables.Add(SearchHeader.Table.Copy()); ds.Tables.Add(SearchDetail.Copy()); ds.Tables.Add(InnerDetail.Copy()); base.SendRequest( new CommunicationObject( MessageType.UpdateData, UpdateData_StockCheck, new object[] { ds, ccfg.ユーザID })); }
//======================================================================================== // Helper Methods //======================================================================================== private InnerDetail GetInnerExceptionDetails() { Exception exc = root; InnerDetail detail = new InnerDetail(); InnerDetail child = detail; while (exc != null) { child.Detail = exc.GetType().FullName; child.Children.Add(new InnerDetail(exc.Message)); child.Children.Add(new InnerDetail(GetTargetMethodFormat(exc))); exc = exc.InnerException; if (exc != null) { InnerDetail inner = new InnerDetail(); child.Children.Add(inner); child = inner; } } return detail; }