Пример #1
0
        /// <summary>
        /// 画面が表示された後のイベント処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Window_Loaded(object sender, RoutedEventArgs e)
        {
            #region 画面初期設定(権限設定等)
            ucfg   = AppCommon.GetConfig(this);
            frmcfg = (ConfigDLY01020)ucfg.GetConfigValue(typeof(ConfigDLY01020));

            // 権限設定を呼び出す(ucfgを取得した後のに入れる)
            ccfg = (CommonConfig)ucfg.GetConfigValue(typeof(CommonConfig));
            // 登録ボタン設定
            if (!権限Get.Authority_Update_Button(ccfg, this.GetType().Name))
            {
                DataUpdateVisible = System.Windows.Visibility.Hidden;
            }

            if (frmcfg == null)
            {
                frmcfg = new ConfigDLY01020();
                // 画面サイズをタスクバーをのぞいた状態で表示させる
                //this.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Height - this.Top;
            }
            else
            {
                this.Top    = frmcfg.Top;
                this.Left   = frmcfg.Left;
                this.Height = frmcfg.Height;
                this.Width  = frmcfg.Width;
            }

            #endregion

            base.MasterMaintenanceWindowList.Add("M01_TOK", new List <Type> {
                typeof(MST01010), typeof(SCHM01_TOK)
            });
            base.MasterMaintenanceWindowList.Add("M09_HIN", new List <Type> {
                typeof(MST02010), typeof(SCHM09_HIN)
            });
            base.MasterMaintenanceWindowList.Add("M11_TEK", new List <Type> {
                typeof(MST08010), typeof(SCHM11_TEK)
            });
            base.MasterMaintenanceWindowList.Add("M70_JIS", new List <Type> {
                typeof(MST16010), typeof(SCHM70_JIS)
            });

            AppCommon.SetutpComboboxList(this.c仕入区分, false);
            gridCtl = new GcSpreadGridController(gcSpreadGrid);

            ScreenClear();
            ChangeKeyItemChangeable(true);

            // ログインユーザの自社区分によりコントロール状態切換え
            this.c会社名.Text1     = ccfg.自社コード.ToString();
            this.c会社名.IsEnabled = ccfg.自社販社区分.Equals((int)自社販社区分.自社);

            gridCtl.SetCellFocus(0, (int)GridColumnsMapping.自社品番);
            this.c伝票番号.Focus();
        }
Пример #2
0
        /// <summary>
        /// 取得データの取り込み
        /// </summary>
        /// <param name="message"></param>
        public override void OnReceivedResponseData(CommunicationObject message)
        {
            try
            {
                this.ErrorMessage = string.Empty;

                base.SetFreeForInput();

                var       data = message.GetResultData();
                DataTable tbl  = (data is DataTable) ? (data as DataTable) : null;

                switch (message.GetMessageName())
                {
                case GET_LIST_SEARCH:
                    if (tbl == null)
                    {
                        this.sp確定データ一覧.ItemsSource = null;
                        this.ErrorMessage          = "システムエラーが発生しました。サポートにお問い合わせください。";
                        return;
                    }
                    else
                    {
                        if (tbl.Rows.Count > 0)
                        {
                            SearchList = tbl;

                            // 確定ボタンを連結
                            var spanList = tbl.AsEnumerable()
                                           .GroupBy(g => new{
                                jis      = g.Field <string>("自社名"),
                                kbn      = g.Field <int>("確定区分"),
                                closeDay = g.Field <int>("締日")
                            })
                                           .Select(s => new
                            {
                                day   = s.Key,
                                count = s.Count()
                            }).ToList();

                            int rowNo = 0;
                            int cnt   = 1;
                            var brsh  = new BrushConverter();

                            foreach (var span in spanList)
                            {
                                // 連結
                                sp確定データ一覧[rowNo, (int)GridColumnsMapping.締日].RowSpan    = span.count;
                                sp確定データ一覧[rowNo, (int)GridColumnsMapping.確定日].RowSpan   = span.count;
                                sp確定データ一覧[rowNo, (int)GridColumnsMapping.確定ボタン].RowSpan = span.count;

                                // 背景色設定
                                if (cnt % 2 == 0)
                                {
                                    sp確定データ一覧[rowNo, (int)GridColumnsMapping.締日].Background    = new SolidColorBrush(Colors.White);
                                    sp確定データ一覧[rowNo, (int)GridColumnsMapping.確定日].Background   = new SolidColorBrush(Colors.White);
                                    sp確定データ一覧[rowNo, (int)GridColumnsMapping.確定ボタン].Background = new SolidColorBrush(Colors.White);
                                }
                                else
                                {
                                    sp確定データ一覧[rowNo, (int)GridColumnsMapping.締日].Background    = (SolidColorBrush)brsh.ConvertFrom("#FFEAF1DD");
                                    sp確定データ一覧[rowNo, (int)GridColumnsMapping.確定日].Background   = (SolidColorBrush)brsh.ConvertFrom("#FFEAF1DD");;
                                    sp確定データ一覧[rowNo, (int)GridColumnsMapping.確定ボタン].Background = (SolidColorBrush)brsh.ConvertFrom("#FFEAF1DD");
                                }
                                rowNo += span.count;
                                cnt++;
                            }

                            gridCtl.SetCellFocus(0, 0);
                            gridCtl.ScrollShowCell(0, 0);
                        }
                        else
                        {
                            SearchList        = null;
                            this.ErrorMessage = "指定された条件の請求データはありません。";
                        }
                    }
                    break;

                case UPDATE:
                    MessageBoxResult result =
                        MessageBox.Show(
                            "登録が完了しました。",
                            "メッセージ",
                            MessageBoxButton.OK,
                            MessageBoxImage.Information);

                    if (result == MessageBoxResult.OK)
                    {
                        gridCtl.SetCellFocus(0, 0);
                    }

                    break;
                }
            }
            catch (Exception ex)
            {
                this.ErrorMessage = ex.Message;
            }
        }
Пример #3
0
        /// <summary>
        /// データ受信処理
        /// </summary>
        /// <param name="message"></param>
        public override void OnReceivedResponseData(CommunicationObject message)
        {
            try
            {
                this.ErrorMessage = string.Empty;
                var       data = message.GetResultData();
                DataTable tbl  = (data is DataTable) ? (data as DataTable) : null;

                switch (message.GetMessageName())
                {
                case UpdateData_StockCheck:
                    // No-222 Add Start
                    // 在庫数チェック結果受信
                    Dictionary <string, string> updateList = data as Dictionary <string, string>;
                    string zaiUpdateMessage = AppConst.CONFIRM_UPDATE;
                    var    zaiMBImage       = MessageBoxImage.Question;

                    foreach (DataRow row in SearchDetail.Select("", "", DataViewRowState.CurrentRows))
                    {
                        if (updateList.Count > 0)
                        {
                            zaiMBImage       = MessageBoxImage.Warning;
                            zaiUpdateMessage = "在庫がマイナスになる品番が存在しますが、\r\n登録してもよろしいでしょうか?";
                            break;
                        }
                    }

                    if (MessageBox.Show(zaiUpdateMessage,
                                        "登録確認",
                                        MessageBoxButton.YesNo,
                                        zaiMBImage,
                                        MessageBoxResult.Yes) == MessageBoxResult.No)
                    {
                        return;
                    }

                    // No-222 Add End

                    Update();

                    // 致命的なエラーの場合、以降の処理を中止する
                    if (blnCloseFlg == false)
                    {
                        return;
                    }

                    // 警告がない場合、当該画面を終了する
                    if (blnWarningFlg == true)
                    {
                        // 処理続行確認メッセージを表示する
                        var yesno = MessageBox.Show("警告がありますが処理を続行しますか?", "確認", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
                        if (yesno == MessageBoxResult.No)
                        {
                            return;
                        }
                        CloseDataEdited();
                    }
                    else
                    {
                        CloseDataEdited();
                    }

                    break;

                case SearchTableToShin:
                    // セット品で検索された場合
                    SetHin = tbl.Copy();
                    break;

                case MasterCode_MyProduct:
                    #region 自社品番手入力時
                    DataTable ctbl = data as DataTable;

                    int columnIdx = gridDtb.ActiveColumnIndex;
                    int rIdx      = gridDtb.ActiveRowIndex;

                    // フォーカス移動後の項目が異なる場合または編集行が異なる場合は処理しない。
                    if ((columnIdx != (int)GridColumnsMapping.色コード) || _編集行 != rIdx)
                    {
                        return;
                    }

                    if (ctbl == null || ctbl.Rows.Count == 0)
                    {
                        // 対象データなしの場合
                        gridDtb.SetCellValue((int)GridColumnsMapping.品番コード, 0);
                        gridDtb.SetCellValue((int)GridColumnsMapping.自社品番, string.Empty);
                        gridDtb.SetCellValue((int)GridColumnsMapping.自社品名, string.Empty);
                        gridDtb.SetCellValue((int)GridColumnsMapping.数量, 0m);
                        gridDtb.SetCellValue((int)GridColumnsMapping.単位, string.Empty);
                        gridDtb.SetCellValue((int)GridColumnsMapping.商品分類, (int)商品分類.その他);
                        gridDtb.SetCellValue((int)GridColumnsMapping.色コード, string.Empty);
                        gridDtb.SetCellValue((int)GridColumnsMapping.色名称, string.Empty);

                        // フォーカス位置の設定
                        gridDtb.SetCellFocus(rIdx, (int)GridColumnsMapping.自社品番);                   // No.425 Add
                    }
                    else if (tbl.Rows.Count > 1)
                    {
                        int cIdx   = gcInnerSpreadGrid.ActiveColumnIndex;
                        var colVal = gridDtb.GetCellValueToString((int)GridColumnsMapping.自社品番);

                        int code = int.Parse(SearchHeader["外注先コード"].ToString());
                        int eda  = int.Parse(SearchHeader["外注先枝番"].ToString());

                        // 自社品番の場合
                        SCHM09_MYHIN myhin = new SCHM09_MYHIN(code, eda);
                        myhin.TwinTextBox          = new UcLabelTwinTextBox();
                        myhin.txtCode.Text         = colVal;
                        myhin.txtCode.IsEnabled    = false;
                        myhin.TwinTextBox.LinkItem = 2;

                        if (myhin.ShowDialog(this) == true)
                        {
                            gridDtb.SetCellValue((int)GridColumnsMapping.品番コード, myhin.SelectedRowData["品番コード"]);
                            gridDtb.SetCellValue((int)GridColumnsMapping.自社品番, myhin.SelectedRowData["自社品番"]);
                            gridDtb.SetCellValue((int)GridColumnsMapping.自社品名, myhin.SelectedRowData["自社品名"]);
                            gridDtb.SetCellValue((int)GridColumnsMapping.数量, 1m);
                            gridDtb.SetCellValue((int)GridColumnsMapping.単位, myhin.SelectedRowData["単位"]);
                            gridDtb.SetCellValue((int)GridColumnsMapping.商品分類, myhin.SelectedRowData["商品分類"]);
                            gridDtb.SetCellValue((int)GridColumnsMapping.色コード, myhin.SelectedRowData["自社色"]);
                            gridDtb.SetCellValue((int)GridColumnsMapping.色名称, myhin.SelectedRowData["自社色名"]);

                            // フォーカス位置の設定
                            gridDtb.SetCellFocus(rIdx, (int)GridColumnsMapping.自社品名);                 // No.425 Add
                        }
                        else
                        {
                            // フォーカス位置の設定
                            gridDtb.SetCellFocus(rIdx, (int)GridColumnsMapping.自社品番);                 // No.425 Add
                        }
                    }
                    else
                    {
                        // 対象データありの場合
                        DataRow drow = ctbl.Rows[0];
                        gcInnerSpreadGrid.BeginEdit();
                        gridDtb.SetCellValue((int)GridColumnsMapping.品番コード, drow["品番コード"]);
                        gridDtb.SetCellValue((int)GridColumnsMapping.自社品番, drow["自社品番"]);
                        gridDtb.SetCellValue((int)GridColumnsMapping.自社品名, drow["自社品名"]);
                        gridDtb.SetCellValue((int)GridColumnsMapping.数量, 1m);
                        gridDtb.SetCellValue((int)GridColumnsMapping.単位, drow["単位"]);
                        gridDtb.SetCellValue((int)GridColumnsMapping.商品分類, drow["商品分類"]);
                        gridDtb.SetCellValue((int)GridColumnsMapping.色コード, drow["自社色"]);
                        gridDtb.SetCellValue((int)GridColumnsMapping.色名称, drow["色名称"]);

                        // 自社品番のセルをロック
                        // 数量以外はロック
                        gridDtb.SetCellLocked((int)GridColumnsMapping.品番コード, true);
                        gridDtb.SetCellLocked((int)GridColumnsMapping.自社品番, true);
                        gridDtb.SetCellLocked((int)GridColumnsMapping.自社品名, false);                   // No.391 Add
                        gridDtb.SetCellLocked((int)GridColumnsMapping.単位, true);
                        gridDtb.SetCellLocked((int)GridColumnsMapping.商品分類, true);
                        gridDtb.SetCellLocked((int)GridColumnsMapping.色コード, true);
                        gridDtb.SetCellLocked((int)GridColumnsMapping.色名称, true);

                        // フォーカス位置の設定
                        gridDtb.SetCellFocus(rIdx, (int)GridColumnsMapping.自社品名);                     // No.425 Add
                    }

                    InnerDetail.Rows[rIdx].EndEdit();

                    #endregion

                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                ErrorMessage = ex.Message;
            }
        }
Пример #4
0
        /// <summary>
        /// ロードイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Window_Loaded(object sender, RoutedEventArgs e)
        {
            #region 設定項目取得
            ucfg = AppCommon.GetConfig(this);
            ccfg = (CommonConfig)ucfg.GetConfigValue(typeof(CommonConfig));

            #region "権限関係"

            // 登録ボタン設定
            if (!権限Get.Authority_Update_Button(ccfg, this.GetType().Name))
            {
                // RibbonWindowViewBaseのプロパティに設定
                DataUpdateVisible = System.Windows.Visibility.Hidden;
            }

            frmcfg = (ConfigDLY02011)ucfg.GetConfigValue(typeof(ConfigDLY02011));

            #endregion

            if (frmcfg == null)
            {
                frmcfg = new ConfigDLY02011();
                ucfg.SetConfigValue(frmcfg);
                //画面サイズをタスクバーをのぞいた状態で表示させる
                //this.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Height;
            }
            else
            {
                //表示できるかチェック
                var WidthCHK = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - frmcfg.Left;
                if (WidthCHK > 10)
                {
                    this.Left = frmcfg.Left;
                }
                //表示できるかチェック
                var HeightCHK = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height - frmcfg.Top;
                if (HeightCHK > 10)
                {
                    this.Top = frmcfg.Top;
                }
                this.Width  = frmcfg.Width;
                this.Height = frmcfg.Height;
            }

            #endregion

            // 検索画面情報を設定
            base.MasterMaintenanceWindowList.Add("M01_TOK", new List <Type> {
                typeof(MST01010), typeof(SCHM01_TOK)
            });
            base.MasterMaintenanceWindowList.Add("M09_HIN_SET", new List <Type> {
                typeof(MST02010), typeof(SCHM09_HIN)
            });
            base.MasterMaintenanceWindowList.Add("M11_TEK", new List <Type> {
                typeof(MST08010), typeof(SCHM11_TEK)
            });
            base.MasterMaintenanceWindowList.Add("M70_JIS", new List <Type> {
                typeof(MST16010), typeof(SCHM70_JIS)
            });

            // グリッドコントローラ設定
            gridDtl = new GcSpreadGridController(gcDetailSpreadGrid);
            gridDtb = new GcSpreadGridController(gcInnerSpreadGrid);

            // セット品情報を取得
            sendSearchForShin(SearchDetail.Rows[0]["品番コード"].ToString());

            // 画面初期化 
            ScreenClear();

            // 入力可否切り替え
            ChangeKeyItemChangeable(false);

            gcDetailSpreadGrid.IsEnabled = false;

            if (this.MaintenanceMode == AppConst.MAINTENANCEMODE_EDIT)
            {
                // ボタン押下不可
                SetDispRibbonEnabled(false);
                // Spread入力不可
                SetDispInnerSpreadGridLocked(true);
            }
            else if (this.MaintenanceMode == AppConst.MAINTENANCEMODE_ADD)
            {
                // Spread入力不可
                SetDispInnerSpreadGridLocked(false);                // No.424 Add
            }

            // フォーカス設定
            gcInnerSpreadGrid.Focus();                              // No.425 Add
            gridDtl.SetCellFocus(0, 0);
        }
Пример #5
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);
        }
Пример #6
0
        /// <summary>
        /// 取得内容を各コントロールに設定
        /// </summary>
        /// <param name="ds"></param>
        private void SetTblData(DataSet ds)
        {
            // 売上ヘッダ情報設定
            DataTable tblHd = ds.Tables[T02_HEADER_TABLE_NAME];

            SearchHeader = tblHd.Rows[0];
            SearchHeader.AcceptChanges();

            // 売上明細情報設定
            DataTable tblDtl = ds.Tables[T02_DETAIL_TABLE_NAME];

            SearchDetail = tblDtl;
            SearchDetail.AcceptChanges();

            // 消費税情報保持
            taxCalc = new TaxCalculator(ds.Tables[M73_ZEI_TABLE_NAME]);

            // 自社区分取得
            DataTable dtJis = ds.Tables[M70_JIS_TABLE_NAME];

            if (dtJis.Rows.Count > 0)
            {
                _自社区分 = dtJis.Rows[0].Field <int>("自社区分");
            }
            else
            {
                _自社区分 = (int)自社販社区分.販社;  // データが取得できなかった場合は販社として扱う
            }
            // データ状態から編集状態を設定
            if (bool.Parse(SearchHeader["データ状態"].ToString()))
            {
                // 取得データを元に編集する為、RowStatusをAddedとする
                foreach (DataRow row in SearchDetail.Rows)
                {
                    row.SetAdded();
                }

                this.MaintenanceMode = AppConst.MAINTENANCEMODE_ADD;

                this.cmb伝票要否.SelectedIndex = 0;

                // No-94 Add Start
                foreach (var row in gcSpreadGrid.Rows)
                {
                    row.Cells[(int)GridColumnsMapping.税区分].Locked = true;
                }
                // No-94 Add End

                this.txt返品日.Focus();
            }
            else
            {
                this.MaintenanceMode = AppConst.MAINTENANCEMODE_EDIT;

                // 取得明細の自社品番をロック(編集不可)に設定
                foreach (var row in gcSpreadGrid.Rows)
                {
                    row.Cells[(int)GridColumnsMapping.自社品番].Locked  = true;
                    row.Cells[(int)GridColumnsMapping.得意先品番].Locked = true;
                    row.Cells[(int)GridColumnsMapping.税区分].Locked   = true;             // No-94 Add
                }

                gridCtl.SetCellFocus(0, (int)GridColumnsMapping.自社品番);
            }

            // グリッド内容の再計算を実施
            summaryCalculation();
        }