Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        /// <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
        }
Esempio n. 3
0
        //========================================================================================
        // 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);
        }
Esempio n. 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="exc"></param>

        public SmartException(Exception exc)
            : base("iTuner Exception", exc)
        {
            this.root  = exc;
            this.inner = null;
        }
Esempio n. 5
0
        //========================================================================================
        // Constructors
        //========================================================================================

        /// <summary>
        ///
        /// </summary>

        public SmartException()
        {
            this.root  = null;
            this.inner = null;
        }
Esempio n. 6
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);
        }
Esempio n. 7
0
        /// <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
            }));
        }
Esempio n. 8
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="exc"></param>
 public SmartException(Exception exc)
     : base("iTuner Exception", exc)
 {
     this.root = exc;
     this.inner = null;
 }
Esempio n. 9
0
 //========================================================================================
 // Constructors
 //========================================================================================
 /// <summary>
 /// 
 /// </summary>
 public SmartException()
 {
     this.root = null;
     this.inner = null;
 }
Esempio n. 10
0
        //========================================================================================
        // 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;
        }