Ejemplo n.º 1
0
        /// <summary>
        /// 入力内容の検証をおこなう
        /// </summary>
        /// <returns></returns>
        private bool isFormValidation()
        {
            bool isResult = false;

            // 【ヘッダ】必須入力チェック
            // 仕入日
            if (string.IsNullOrEmpty(this.c仕入日.Text))
            {
                base.ErrorMessage = string.Format("仕入日が入力されていません。");
                this.c仕入日.Focus();
                return(isResult);
            }

            // 仕入区分
            if (this.c仕入区分.SelectedValue == null)
            {
                base.ErrorMessage = string.Format("仕入区分が選択されていません。");
                this.c仕入区分.Focus();
                return(isResult);
            }

            // 仕入先
            if (string.IsNullOrEmpty(this.c仕入先.Text1) || string.IsNullOrEmpty(this.c仕入先.Text2))
            {
                base.ErrorMessage = string.Format("仕入先が入力されていません。");
                this.c仕入先.Focus();
                return(isResult);
            }

            // 入荷先
            if (string.IsNullOrEmpty(this.c入荷先.Text1))
            {
                base.ErrorMessage = string.Format("入荷先が入力されていません。");
                this.c入荷先.Focus();
                return(isResult);
            }

            // 【明細】詳細データが1件もない場合はエラー
            if (SearchDetail == null || SearchDetail.Rows.Count == 0)
            {
                base.ErrorMessage = string.Format("明細情報が1件もありません。");
                gridCtl.SpreadGrid.Focus();
                return(isResult);
            }

            // 【明細】品番の商品分類が食品(1)の場合は賞味期限が必須
            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;
                }

                // エラー情報をクリア
                gridCtl.ClearValidationErrors(rIdx);

                if (string.IsNullOrEmpty(row["数量"].ToString()))
                {
                    gridCtl.AddValidationError(rIdx, (int)GridColumnsMapping.数量, "数量が入力されていません。");
                    if (!isDetailErr)
                    {
                        gridCtl.SetCellFocus(rIdx, (int)GridColumnsMapping.数量);
                    }

                    isDetailErr = true;
                }

                if (string.IsNullOrEmpty(row["単価"].ToString()))
                {
                    gridCtl.AddValidationError(rIdx, (int)GridColumnsMapping.単価, "単価が入力されていません。");
                    if (!isDetailErr)
                    {
                        gridCtl.SetCellFocus(rIdx, (int)GridColumnsMapping.単価);
                    }

                    isDetailErr = true;
                }

                int      type = Convert.ToInt32(row["商品分類"]);
                DateTime date;
                if (!DateTime.TryParse(row["賞味期限"].ToString(), out date))
                {
                    // 変換に失敗かつ商品分類が「食品」の場合はエラー
                    if (type.Equals(商品分類.食品.GetHashCode()))
                    {
                        gridCtl.AddValidationError(rIdx, (int)GridColumnsMapping.賞味期限, "商品分類が『食品』の為、賞味期限の設定が必要です。");
                        isDetailErr = true;
                    }
                }

                rIdx++;
            }

            if (isDetailErr)
            {
                return(isResult);
            }

            isResult = true;

            return(isResult);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 入力内容の検証をおこなう
        /// </summary>
        /// <returns></returns>
        private bool isFormValidation()
        {
            bool isResult = false;

            #region 【ヘッダ】必須入力チェック

            // 伝票要否
            if (this.cmb伝票要否.SelectedValue == null)
            {
                this.cmb伝票要否.Focus();
                base.ErrorMessage = string.Format("伝票要否が選択されていません。");
                return(isResult);
            }

            // 返品日
            if (string.IsNullOrEmpty(this.txt返品日.Text))
            {
                this.txt返品日.Focus();
                base.ErrorMessage = string.Format("返品日が入力されていません。");
                return(isResult);
            }

            // 売上区分
            if (this.cmb売上区分.SelectedValue == null)
            {
                this.cmb売上区分.Focus();
                base.ErrorMessage = string.Format("売上区分が選択されていません。");
                return(isResult);
            }

            string salesKbn = this.cmb売上区分.SelectedValue.ToString();
            if (salesKbn.Equals("3") || salesKbn.Equals("4"))
            {
                // 3:メーカー直送または4:メーカー販社商流直送の場合、仕入先は必須
                if (string.IsNullOrEmpty(this.txt仕入先.Text1) || string.IsNullOrEmpty(this.txt仕入先.Text2))
                {
                    this.txt仕入先.Focus();
                    base.ErrorMessage = string.Format("仕入先が入力されていません。");
                    return(isResult);
                }

                if (!txt仕入先.CheckValidation())
                {
                    this.txt仕入先.Focus();
                    base.ErrorMessage = txt仕入先.GetValidationMessage();
                    return(isResult);
                }
            }

            #endregion

            #region 【明細】入力チェック

            // 【明細】詳細データが1件もない場合はエラー
            if (SearchDetail == null || SearchDetail.Rows.Count == 0)
            {
                base.ErrorMessage = string.Format("明細情報が1件もありません。");
                this.gcSpreadGrid.Focus();
                return(isResult);
            }

            // 【明細】品番の商品分類が食品(1)の場合は賞味期限が必須
            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;
                }

                // エラー情報をクリア
                gridCtl.ClearValidationErrors(rIdx);

                if (string.IsNullOrEmpty(row["数量"].ToString()))
                {
                    gridCtl.AddValidationError(rIdx, (int)GridColumnsMapping.数量, "数量が入力されていません。");
                    if (!isDetailErr)
                    {
                        gridCtl.SetCellFocus(rIdx, (int)GridColumnsMapping.数量);
                    }

                    isDetailErr = true;
                }

                if (string.IsNullOrEmpty(row["単価"].ToString()))
                {
                    gridCtl.AddValidationError(rIdx, (int)GridColumnsMapping.単価, "単価が入力されていません。");
                    if (!isDetailErr)
                    {
                        gridCtl.SetCellFocus(rIdx, (int)GridColumnsMapping.単価);
                    }

                    isDetailErr = true;
                }

                int      type = Convert.ToInt32(row["商品分類"]);
                DateTime date;
                if (!DateTime.TryParse(row["賞味期限"].ToString(), out date))
                {
                    // 変換に失敗かつ商品分類が「食品」の場合はエラー
                    if (type.Equals((int)商品分類.食品))
                    {
                        gridCtl.AddValidationError(rIdx, (int)GridColumnsMapping.賞味期限, "商品分類が『食品』の為、賞味期限の設定が必要です。");
                        isDetailErr = true;
                    }
                }

                rIdx++;
            }

            if (isDetailErr)
            {
                return(isResult);
            }

            #endregion

            return(true);
        }