/// <summary>
        /// 支払締チェック
        /// </summary>
        /// <param name="companyId"></param>
        /// <param name="db"></param>
        /// <param name="customerId"></param>
        /// <param name="ipAdress"></param>
        /// <param name="userId"></param>
        public static bool IsPaymentClose(string companyId,
                                          ExMySQLData db,
                                          string purchaseId,
                                          string ymd)
        {
            StringBuilder sb = new StringBuilder();
            DataTable     dt;

            if (ymd.Length != 10)
            {
                throw new Exception();
            }
            if (!ExCast.IsDate(ymd))
            {
                throw new Exception();
            }

            try
            {
                sb.Length = 0;
                sb.Append("SELECT T.NO " + Environment.NewLine);
                sb.Append("  FROM T_PAYMENT AS T" + Environment.NewLine);
                sb.Append(" WHERE T.COMPANY_ID = " + companyId + Environment.NewLine);
                sb.Append("   AND T.DELETE_FLG = 0 " + Environment.NewLine);
                sb.Append("   AND T.PAYMENT_KBN = 0 " + Environment.NewLine);       // 支払区分:締処理
                sb.Append("   AND T.PAYMENT_YYYYMMDD >= " + ExEscape.zRepStr(ymd) + Environment.NewLine);
                if (purchaseId != "")
                {
                    sb.Append("   AND T.PURCHASE_ID = " + ExEscape.zRepStr(ExCast.zNumZeroNothingFormat(purchaseId)) + Environment.NewLine);
                }
                sb.Append(" LIMIT 0, 1");

                dt = db.GetDataTable(sb.ToString());
                if (dt.DefaultView.Count > 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                CommonUtl.ExLogger.Error(CLASS_NM + ".IsPaymentClose", ex);
                throw;
            }
        }
        // 入力チェック
        public override void InputCheckUpdate()
        {
            #region Field

            string  errMessage     = "";
            string  warnMessage    = "";
            int     _selectIndex   = 0;
            int     _selectColumn  = 0;
            bool    IsDetailExists = false;
            Control errCtl         = null;
            bool    _flg           = false;

            #endregion

            try
            {
                #region チェック処理

                switch (this.proceeKbn)
                {
                case eProccessKbn.None:
                    return;

                case eProccessKbn.Delete:

                    #region 削除チェック

                    if (this._entity == null)
                    {
                        ExMessageBox.Show("削除対象データがありません。");
                        return;
                    }

                    if (this._entity.Count == 0)
                    {
                        ExMessageBox.Show("削除対象データがありません。");
                        return;
                    }

                    _flg = false;
                    for (int i = 0; i <= _entity.Count - 1; i++)
                    {
                        if (_entity[i]._exec_flg == true)
                        {
                            _flg = true;
                        }
                    }
                    if (_flg == false)
                    {
                        ExMessageBox.Show("削除対象データが選択されていません。");
                        return;
                    }

                    _flg = false;
                    for (int i = 0; i <= _entity.Count - 1; i++)
                    {
                        if (_entity[i]._exec_flg == true && _entity[i]._no != "未")
                        {
                            _flg = true;
                        }
                    }
                    if (_flg == false)
                    {
                        ExMessageBox.Show("削除対象データは締切がされていません。");
                        return;
                    }

                    UpdateData(Common.geUpdateType.Delete);
                    return;

                    #endregion

                case eProccessKbn.Total:

                    #region 必須チェック

                    // 支払締日
                    if (string.IsNullOrEmpty(this._entityPrm._payment_yyyymmdd))
                    {
                        errMessage += "支払締日が入力されていません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.datPaymentYmd;
                        }
                    }

                    #endregion

                    #region 入力チェック

                    // 締区分
                    if ((!string.IsNullOrEmpty(this._entityPrm._summing_up_group_id)) && string.IsNullOrEmpty(this._entityPrm._summing_up_group_nm))
                    {
                        errMessage += "締区分が適切に入力(選択)されていません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.utlSummingUp.txtID;
                        }
                    }

                    // 仕入先
                    if ((!string.IsNullOrEmpty(this._entityPrm._purchase_id)) && string.IsNullOrEmpty(this._entityPrm._purchase_nm))
                    {
                        errMessage += "仕入先が適切に入力(選択)されていません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.utlPurchase.txtID;
                        }
                    }

                    #endregion

                    #region 日付チェック

                    // 支払締日
                    if (string.IsNullOrEmpty(_entityPrm._payment_yyyymmdd) == false)
                    {
                        if (ExCast.IsDate(_entityPrm._payment_yyyymmdd) == false)
                        {
                            errMessage += "支払締日の形式が不正です。(yyyy/mm/dd形式で入力(選択)して下さい)" + Environment.NewLine;
                            if (errCtl == null)
                            {
                                errCtl = this.datPaymentYmd;
                            }
                        }
                    }

                    // 支払予定日
                    if (string.IsNullOrEmpty(_entityPrm._payment_plan_yyyymmdd) == false)
                    {
                        if (ExCast.IsDate(_entityPrm._payment_plan_yyyymmdd) == false)
                        {
                            errMessage += "支払予定日の形式が不正です。(yyyy/mm/dd形式で入力(選択)して下さい)" + Environment.NewLine;
                            if (errCtl == null)
                            {
                                errCtl = this.datPaymentPlanDay;
                            }
                        }
                    }

                    #endregion

                    #region 日付変換

                    // 支払締日
                    if (string.IsNullOrEmpty(_entityPrm._payment_yyyymmdd) == false)
                    {
                        _entityPrm._payment_yyyymmdd = ExCast.zConvertToDate(_entityPrm._payment_yyyymmdd).ToString("yyyy/MM/dd");
                    }

                    // 支払予定日
                    if (string.IsNullOrEmpty(_entityPrm._payment_plan_yyyymmdd) == false)
                    {
                        _entityPrm._payment_plan_yyyymmdd = ExCast.zConvertToDate(_entityPrm._payment_plan_yyyymmdd).ToString("yyyy/MM/dd");
                    }

                    #endregion

                    #region 正数チェック

                    //if (ExCast.zCLng(this.txtSummingUpDay.Text.Trim()) < 0)
                    //{
                    //    errMessage += "締日には正の整数を入力して下さい。" + Environment.NewLine;
                    //}

                    #endregion

                    #region 範囲チェック

                    //if (this.datPaymentYmd.SelectedDate != null && !string.IsNullOrEmpty(this.txtSummingUpDay.Text.Trim()))
                    //{
                    //    string _ym = this.datPaymentYmd.SelectedDate.ToString();
                    //    _ym = _ym.Substring(0, 7);
                    //    _ym = _ym.Replace("/", "");

                    //    string yyyymm = "";
                    //    string _now = DateTime.Now.ToString("yyyyMMdd");
                    //    int _now_day = ExCast.zCInt(_now.Substring(5, 2));

                    //    if (ExCast.zCInt(_ym) != 0)
                    //    {
                    //        string _invoice_yyyymm = _ym + ExCast.zCInt(this.txtSummingUpDay.Text.Trim()).ToString("00");
                    //        if (ExCast.zCInt(_now) < ExCast.zCInt(_invoice_yyyymm))
                    //        {
                    //            errMessage += "支払締日に明日以降は指定できません。" + Environment.NewLine;
                    //        }
                    //    }
                    //}


                    //if (!(ExCast.zCLng(this.txtSummingUpDay.Text.Trim()) <= 31 && ExCast.zCLng(this.txtSummingUpDay.Text.Trim()) >= 1))
                    //{
                    //    errMessage += "締日には1日から31日を入力して下さい。" + Environment.NewLine;
                    //}

                    #endregion

                    break;

                case eProccessKbn.Close:

                    #region データ存在チェック

                    if (this._entity == null)
                    {
                        errMessage += "締切対象データが存在しません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.utlSummingUp.txtID;
                        }
                    }

                    if (this._entity.Count == 0)
                    {
                        errMessage += "締切対象データが存在しません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.utlSummingUp.txtID;
                        }
                    }

                    _flg = false;
                    for (int i = 0; i <= _entity.Count - 1; i++)
                    {
                        if (_entity[i]._exec_flg == true)
                        {
                            _flg = true;
                        }
                    }
                    if (_flg == false)
                    {
                        errMessage += "締切対象データが選択されていません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.utlSummingUp.txtID;
                        }
                    }

                    #endregion

                    break;
                }

                #endregion

                #region エラー or 警告時処理

                bool flg = true;

                if (!string.IsNullOrEmpty(errMessage))
                {
                    ExMessageBox.Show(errMessage, Dlg.MessageBox.MessageBoxIcon.Error);
                    flg = false;
                }
                else
                {
                    //if (!string.IsNullOrEmpty(warnMessage))
                    //{
                    //    warnMessage += "このまま登録を続行してもよろしいですか?" + Environment.NewLine;
                    //    if (ExMessageBox.ResultShow(warnMessage) == MessageBoxResult.Cancel)
                    //    {
                    //        flg = false;
                    //    }
                    //}
                }

                this.txtDummy.IsTabStop = false;

                if (flg == false)
                {
                    if (errCtl != null)
                    {
                        switch (errCtl.Name)
                        {
                        case "dg":
                            errCtl.Focus();
                            this.dg.SelectedIndex = _selectIndex;
                            dg.CurrentColumn      = dg.Columns[_selectColumn];
                            break;

                        default:
                            ExBackgroundWorker.DoWork_Focus(errCtl, 10);
                            break;
                        }
                    }
                    return;
                }

                #endregion

                #region 各処理

                switch (this.proceeKbn)
                {
                case eProccessKbn.Total:
                    GetData();
                    break;

                case eProccessKbn.Close:
                    UpdateData(Common.geUpdateType.Insert);
                    break;

                case eProccessKbn.None:
                    break;
                }

                #endregion
            }
            finally
            {
                Common.gblnBtnProcLock          = false;
                Common.gblnBtnDesynchronizeLock = false;
            }
        }
        // 入力チェック
        public override void InputCheckUpdate()
        {
            string  errMessage = "";
            Control errCtl     = null;

            try
            {
                switch (this.ProcKbn)
                {
                case eProcKbn.Search:
                case eProcKbn.Report:

                    #region 検索時チェック

                    #region 必須チェック

                    #endregion

                    #region 入力チェック

                    // 商品
                    if (this.utlCommodity_F.txtID.Text.Trim() != "" && string.IsNullOrEmpty(this.utlCommodity_F.txtNm.Text.Trim()))
                    {
                        errMessage += "商品が適切に入力(選択)されていません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.utlCommodity_F.txtID;
                        }
                    }
                    if (this.utlCommodity_T.txtID.Text.Trim() != "" && string.IsNullOrEmpty(this.utlCommodity_T.txtNm.Text.Trim()))
                    {
                        errMessage += "商品が適切に入力(選択)されていません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.utlCommodity_T.txtID;
                        }
                    }

                    #endregion

                    #region 範囲チェック

                    // 商品
                    if ((ExCast.IsNumeric(this.utlCommodity_F.txtID.Text.Trim()) && ExCast.IsNumeric(this.utlCommodity_T.txtID.Text.Trim())) &&
                        (!string.IsNullOrEmpty(this.utlCommodity_F.txtID.Text.Trim()) && !string.IsNullOrEmpty(this.utlCommodity_T.txtID.Text.Trim())))
                    {
                        if (ExCast.zCLng(this.utlCommodity_F.txtID.Text.Trim()) > ExCast.zCLng(this.utlCommodity_T.txtID.Text.Trim()))
                        {
                            errMessage += "商品の範囲指定が不正です。" + Environment.NewLine;
                            if (errCtl == null)
                            {
                                errCtl = this.utlCommodity_F.txtID;
                            }
                        }
                    }

                    #endregion

                    #region 日付チェック

                    #endregion

                    #endregion

                    break;

                case eProcKbn.Update:

                    #region 更新チェック

                    #region 必須チェック

                    //if (this.datIssueYmd.SelectedDate == null)
                    //{
                    //    errMessage += "出力発行日が入力されていません。" + Environment.NewLine;
                    //    if (errCtl == null) errCtl = this.datIssueYmd;
                    //}

                    // 棚卸日
                    if (string.IsNullOrEmpty(this.datYmd.Text.Trim()))
                    {
                        errMessage += "棚卸日を入力(選択)して下さい" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.datYmd;
                        }
                    }

                    #endregion

                    #region 日付チェック

                    // 棚卸日
                    if (string.IsNullOrEmpty(this.datYmd.Text.Trim()) == false)
                    {
                        if (ExCast.IsDate(this.datYmd.Text.Trim()) == false)
                        {
                            errMessage += "棚卸日の形式が不正です。(yyyy/mm/dd形式で入力(選択)して下さい)" + Environment.NewLine;
                            if (errCtl == null)
                            {
                                errCtl = this.datYmd;
                            }
                        }
                    }

                    #endregion

                    #region 選択チェック

                    if (this.entityList == null)
                    {
                        errMessage += "表示データがありません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.datYmd;
                        }
                    }
                    if (this.entityList.Count == 0)
                    {
                        errMessage += "表示データがありません。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.datYmd;
                        }
                    }

                    bool _exec_flg = false;
                    for (int i = 0; i <= this.entityList.Count - 1; i++)
                    {
                        if (this.entityList[i]._exec_flg == true)
                        {
                            _exec_flg = true;
                        }
                    }
                    if (_exec_flg == false)
                    {
                        errMessage += "登録対象データを選択して下さい。" + Environment.NewLine;
                        if (errCtl == null)
                        {
                            errCtl = this.datYmd;
                        }
                    }

                    if (_exec_flg == true)
                    {
                        _exec_flg = false;
                        for (int i = 0; i <= this.entityList.Count - 1; i++)
                        {
                            if (this.entityList[i]._exec_flg == true && this.entityList[i]._diff_number != 0)
                            {
                                _exec_flg = true;
                            }
                        }
                        if (_exec_flg == false)
                        {
                            errMessage += "差異0以外のデータがありません。" + Environment.NewLine;
                            if (errCtl == null)
                            {
                                errCtl = this.datYmd;
                            }
                        }
                    }

                    #endregion

                    #endregion

                    break;
                }

                #region エラー or 警告時処理

                bool flg = true;

                if (!string.IsNullOrEmpty(errMessage))
                {
                    ExMessageBox.Show(errMessage, Dlg.MessageBox.MessageBoxIcon.Error);
                    flg = false;
                }
                this.txtDummy.IsTabStop = false;

                if (flg == false)
                {
                    if (errCtl != null)
                    {
                        ExBackgroundWorker.DoWork_Focus(errCtl, 10);
                    }
                    return;
                }

                #endregion

                if (this.ProcKbn == eProcKbn.Search)
                {
                    GetListData();
                }
                else
                {
                    if (this.ProcKbn == eProcKbn.Update)
                    {
                        //ExMessageBox.ResultShow(this, null, "処理対象となる仕入先のすべての請求データの残高が更新されます。" + Environment.NewLine + "このまま登録を続行してもよろしいですか?");

                        #region 更新処理

                        UpdateData(Common.geUpdateType.Update);

                        #endregion

                        return;
                    }

                    this.utlReport.utlParentFKey = this.utlFKey;

                    //switch (Common.gWinGroupType)
                    //{
                    //    case Common.geWinGroupType.InpListReport:
                    //        this.utlReport.pgId = DataPgEvidence.PGName.SalesManagement.InvoiceBalancePrint;
                    //        break;
                    //    default:
                    //        break;
                    //}

                    //this.utlReport.sqlWhere = GetSQLWhere();
                    //this.utlReport.sqlOrderBy = GetSQLOrderBy();
                    //this.utlReport.ReportStart();
                }
            }
            finally
            {
                Common.gblnBtnProcLock          = false;
                Common.gblnBtnDesynchronizeLock = false;
            }
        }