private void SetBinding()
        {
            if (_entityH == null)
            {
                _entityH = new EntityPaymentCashH();
            }

            if (_entityListD == null)
            {
                _entityListD = new ObservableCollection<EntityPaymentCashD>();
            }

            // マスタコントロールPropertyChanged
            _entityH.PropertyChanged += this.utlPurchase.MstID_Changed;
            _entityH.PropertyChanged += this.utlPerson.MstID_Changed;
            _entityH.PropertyChanged += this.utlPaymentDivision.MstID_Changed;
            _entityH.PropertyChanged += this.utlSummingUp.MstID_Changed;
            _entityH.PropertyChanged += this._PropertyChanged;
            this.utlPurchase.ParentData = _entityH;
            this.utlPerson.ParentData = _entityH;

            NumberConverter nmConvDecm0 = new NumberConverter();
            NumberConverter nmConvDecm2 = new NumberConverter();
            nmConvDecm2.DecimalPlaces = 2;

            #region Bind

            // バインド
            Binding BindingPaymentCashYmd = new Binding("_payment_cash_ymd");
            BindingPaymentCashYmd.Mode = BindingMode.TwoWay;
            BindingPaymentCashYmd.Source = _entityH;
            this.datPaymentCashYmd.SetBinding(DatePicker.SelectedDateProperty, BindingPaymentCashYmd);

            if (string.IsNullOrEmpty(_entityH._payment_cash_ymd))
            {
                _entityH._payment_cash_ymd = DateTime.Now.ToString("yyyy/MM/dd");
            }
            
            Binding BindingPersonId = new Binding("_person_id");
            BindingPersonId.Mode = BindingMode.TwoWay;
            BindingPersonId.Source = _entityH;
            this.utlPerson.txtID.SetBinding(TextBox.TextProperty, BindingPersonId);

            Binding BindingPersonNm = new Binding("_person_name");
            BindingPersonNm.Mode = BindingMode.TwoWay;
            BindingPersonNm.Source = _entityH;
            this.utlPerson.txtNm.SetBinding(TextBox.TextProperty, BindingPersonNm);

            if (_entityH._person_id == 0)
            {
                // デフォルト担当の設定
                this.utlPerson.txtID.Text = Common.gintDefaultPersonId.ToString();
                _entityH._person_id = Common.gintDefaultPersonId;
                this.utlPerson.MstID_Changed(null, new PropertyChangedEventArgs("_person_id"));
            }

            Binding BindingPaymentNo = new Binding("_payment_no");
            BindingPaymentNo.Mode = BindingMode.TwoWay;
            BindingPaymentNo.Source = _entityH;
            this.utlPaymentNo.txtID.SetBinding(TextBox.TextProperty, BindingPaymentNo);

            Binding BindingPaymentPlanYmd = new Binding("_payment_plan_day");
            BindingPaymentPlanYmd.Mode = BindingMode.TwoWay;
            BindingPaymentPlanYmd.Source = _entityH;
            this.datPaymentPlanYmd.SetBinding(DatePicker.SelectedDateProperty, BindingPaymentPlanYmd);

            Binding BindingPaymentCloseYmd = new Binding("_payment_yyyymmdd");
            BindingPaymentCloseYmd.Mode = BindingMode.TwoWay;
            BindingPaymentCloseYmd.Source = _entityH;
            this.datPaymentCloseYmd.SetBinding(DatePicker.SelectedDateProperty, BindingPaymentCloseYmd);

            //Binding BindingInvoiceKbnNm = new Binding("_invoice_kbn_nm");
            //BindingInvoiceKbnNm.Mode = BindingMode.TwoWay;
            //BindingInvoiceKbnNm.Source = _entityH;
            //this.txtPaymentKbn.SetBinding(TextBox.TextProperty, BindingInvoiceKbnNm);

            Binding BindingPurchaseId = new Binding("_purchase_id");
            BindingPurchaseId.Mode = BindingMode.TwoWay;
            BindingPurchaseId.Source = _entityH;
            this.utlPurchase.txtID.SetBinding(TextBox.TextProperty, BindingPurchaseId);

            Binding BindingPurchaseNm = new Binding("_purchase_name");
            BindingPurchaseNm.Mode = BindingMode.TwoWay;
            BindingPurchaseNm.Source = _entityH;
            this.utlPurchase.txtNm.SetBinding(TextBox.TextProperty, BindingPurchaseNm);

            Binding BindingPaymentDivisionId = new Binding("_payment_division_id");
            BindingPaymentDivisionId.Mode = BindingMode.TwoWay;
            BindingPaymentDivisionId.Source = _entityH;
            this.utlPaymentDivision.txtID.SetBinding(TextBox.TextProperty, BindingPaymentDivisionId);

            Binding BindingPaymentDivisionNm = new Binding("_payment_division_nm");
            BindingPaymentDivisionNm.Mode = BindingMode.TwoWay;
            BindingPaymentDivisionNm.Source = _entityH;
            this.utlPaymentDivision.txtNm.SetBinding(TextBox.TextProperty, BindingPaymentDivisionNm);

            Binding BindingSummingUpId = new Binding("_summing_up_group_id");
            BindingSummingUpId.Mode = BindingMode.TwoWay;
            BindingSummingUpId.Source = _entityH;
            this.utlSummingUp.txtID.SetBinding(TextBox.TextProperty, BindingSummingUpId);

            Binding BindingSummingUpNm = new Binding("_summing_up_group_nm");
            BindingSummingUpNm.Mode = BindingMode.TwoWay;
            BindingSummingUpNm.Source = _entityH;
            this.utlSummingUp.txtNm.SetBinding(TextBox.TextProperty, BindingSummingUpNm);

            Binding BindingMemo = new Binding("_memo");
            BindingMemo.Mode = BindingMode.TwoWay;
            BindingMemo.Source = _entityH;
            this.txtMemo.SetBinding(TextBox.TextProperty, BindingMemo);

            Binding BindingPaymentPrice = new Binding("_payment_price");
            BindingPaymentPrice.Mode = BindingMode.TwoWay;
            BindingPaymentPrice.Source = _entityH;
            this.txtPaymentPrice.SetBinding(TextBox.TextProperty, BindingPaymentPrice);

            Binding BindingBeforePaymentPrice = new Binding("_before_payment_price");
            BindingBeforePaymentPrice.Mode = BindingMode.TwoWay;
            BindingBeforePaymentPrice.Source = _entityH;
            this.txtPaymentCashBeforePrice.SetBinding(TextBox.TextProperty, BindingBeforePaymentPrice);

            Binding BindingSumPrice = new Binding("_sum_price");
            BindingSumPrice.Mode = BindingMode.TwoWay;
            BindingSumPrice.Source = _entityH;
            this.txtPrice.SetBinding(TextBox.TextProperty, BindingSumPrice);

            Binding BindingCreditPrice = new Binding("_credit_price");
            BindingCreditPrice.Mode = BindingMode.TwoWay;
            BindingCreditPrice.Source = _entityH;
            this.txtCreditPrice.SetBinding(TextBox.TextProperty, BindingCreditPrice);

            DetailSumInvoicePrice();

            #endregion

            this.utlPaymentNo.txtID.SetZeroToNullString();
            this.utlPurchase.txtID.SetZeroToNullString();
            this.utlPerson.txtID.SetZeroToNullString();

            this.utlPaymentNo.txtID.OnFormatString();
            this.utlPurchase.txtID.OnFormatString();
            this.utlPaymentDivision.txtID.OnFormatString();
            this.utlSummingUp.txtID.OnFormatString();
        }
        // データ取得コールバック呼出
        public override void DataSelect(int intKbn, object objList)
        {
            switch ((ExWebService.geWebServiceCallKbn)intKbn)
            {
                #region 出金

                // ヘッダ
                case _GetHeadWebServiceCallKbn:
                    // 更新
                    if (objList != null)    
                    {
                        _entityH = (EntityPaymentCashH)objList;

                        // エラー発生時
                        if (_entityH._message != "" && _entityH._message != null)
                        {
                            webService.ProcessingDlgClose();
                            this.utlNo.txtID.Text = "";
                            return;
                        } 

                        // バインド反映
                        SetBinding();

                        // 明細データ取得
                        GetDetailData(_entityH._id);
                    }
                    // 新規
                    else
                    {
                        //// 明細追加
                        //this.btnF7_Click(null, null);

                        //this.dg.ItemsSource = _entityListD;
                        //webService.ProcessingDlgClose();
                        //this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.New;
                        //this.utlNo.txtID_IsReadOnly = true;

                        webService.ProcessingDlgClose();
                        this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.New;
                        SetDatePickerNotEnabled();
                        this.utlNo.txtID_IsReadOnly = false;
                    }
                    ExBackgroundWorker.DoWork_Focus(this.datPaymentCashYmd, 10);
                    break;
                // 明細
                case _GetDetailWebServiceCallKbn:
                    // 2回設定がかかりエラーになる為
                    try
                    {
                        this.dg.ItemsSource = null;
                    }
                    catch
                    {
                        return;
                    }

                    if (objList != null)
                    {
                        _entityListD = (ObservableCollection<EntityPaymentCashD>)objList;
                    }
                    else 
                    {
                        _entityListD = null;
                    }

                    // 明細追加
                    this.btnF7_Click(null, null);

                    this.dg.ItemsSource = _entityListD;

                    // 前回情報保持
                    ConvertBeforeData(_entityH, _before_entityH);

                    if (_entityH._lock_flg == 0)
                    {
                        this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.Upd;
                        SetDatePickerNotEnabled();
                    }
                    else
                    {
                        this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.Sel;
                        SetDatePickerNotEnabled();
                    }

                    // 明細再計算
                    DetailSumPrice();

                    // 支払番号指定時、仕入先は変更不可
                    if (!string.IsNullOrEmpty(this.utlPaymentNo.txtID.Text.Trim()))
                    {
                        this.utlPurchase.txtID.IsEnabled = false;
                    }

                    ExBackgroundWorker.DoWork_Focus(this.datPaymentCashYmd, 10);
                    this.utlNo.txtID_IsReadOnly = true;
                    //this.utlNo.IsEnabled = false;
                    break;

                #endregion

                #region 支払出金

                // 支払出金
                case ExWebService.geWebServiceCallKbn.GetPaymentCashOut:
                    // 更新
                    if (objList != null)
                    {
                        _entityPaymentCashOut = (EntityPaymentCashOut)objList;

                        // エラー発生時
                        if (_entityPaymentCashOut.message != "" && _entityPaymentCashOut.message != null)
                        {
                            webService.ProcessingDlgClose();
                            this.utlPaymentNo.txtID.Text = "";

                            _entityH._payment_no = 0;
                            _entityH._payment_kbn = 0;
                            _entityH._payment_kbn_nm = "";
                            _entityH._summing_up_group_id = "";
                            _entityH._summing_up_group_nm = "";
                            _entityH._payment_yyyymmdd = "";
                            _entityH._payment_plan_day = "";
                            _entityH._payment_price = 0;
                            _entityH._before_payment_cash_price = 0;

                            DetailSumPrice();

                            this.utlPurchase.txtID.IsEnabled = true;
                            ExBackgroundWorker.DoWork_Focus(this.utlPaymentNo.txtID, 10);
                            return;
                        }

                        // 2回設定がかかりエラーになる為
                        try
                        {
                            this.dg.ItemsSource = null;
                        }
                        catch
                        {
                            return;
                        }

                        _entityH._payment_no = _entityPaymentCashOut._no;

                        this.utlPurchase.txtID.Text = _entityPaymentCashOut._purchase_id;
                        _entityH._purchase_id = _entityPaymentCashOut._purchase_id;
                        _entityH._purchase_name = _entityPaymentCashOut._purchase_nm;
                        _entityH._payment_kbn = _entityPaymentCashOut._payment_kbn;
                        _entityH._payment_kbn_nm = _entityPaymentCashOut._payment_kbn_nm;
                        _entityH._summing_up_group_id = _entityPaymentCashOut._summing_up_group_id;
                        _entityH._summing_up_group_nm = _entityPaymentCashOut._summing_up_group_nm;
                        _entityH._payment_yyyymmdd = _entityPaymentCashOut._payment_close_yyyymmdd;
                        _entityH._payment_plan_day = _entityPaymentCashOut._payment_plan_day;
                        _entityH._payment_price = _entityPaymentCashOut._payment_price;
                        _entityH._before_payment_cash_price = _entityPaymentCashOut._before_payment_cash_price;
                        _entityH._before_credit_price = _entityPaymentCashOut._credit_price;
                        _entityH._credit_price = _entityPaymentCashOut._credit_price;
                        _entityH._payment_division_id = _entityPaymentCashOut._payment_division_id;
                        _entityH._payment_division_nm = _entityPaymentCashOut._payment_division_nm;

                        // バインド反映
                        SetBinding();

                        // 前回情報保持
                        ConvertBeforeData(_entityH, _before_entityH);

                        _entityListD = null;
                        _entityListD = new ObservableCollection<EntityPaymentCashD>();
                        EntityPaymentCashD entity = new EntityPaymentCashD();
                        entity._rec_no = 1;
                        entity._payment_cash_division_id = this._entityH._payment_division_id;
                        entity._payment_cash_division_nm = this._entityH._payment_division_nm;
                        _entityListD.Add(entity);

                        DetailSumPrice();
                        this._entityListD[0]._price = ExCast.zCDbl(this.txtPaymentZanPrice.Text);
                        this._entityListD[0]._payment_cash_division_id = _entityH._payment_division_id;
                        this._entityListD[0]._payment_cash_division_nm = _entityH._payment_division_nm;
                        this.dg.ItemsSource = null;
                        this.dg.ItemsSource = this._entityListD;
                        DetailSumPrice();

                        // 支払番号指定時、仕入先は変更不可
                        this.utlPurchase.txtID.IsEnabled = false;

                        ExBackgroundWorker.DoWork_Focus(this.txtMemo, 10);


                    }
                    else
                    {
                        MessageBox.Show("支払番号:" + this.utlPaymentNo.txtID.Text + " は存在しません。");
                        webService.ProcessingDlgClose();
                        this.utlPaymentNo.txtID.Text = "";

                        _entityH._payment_no = 0;
                        _entityH._payment_kbn = 0;
                        _entityH._payment_kbn_nm = "";
                        _entityH._summing_up_group_id = "";
                        _entityH._summing_up_group_nm = "";
                        _entityH._payment_yyyymmdd = "";
                        _entityH._payment_plan_day = "";
                        _entityH._payment_price = 0;
                        _entityH._before_payment_cash_price = 0;

                        DetailSumPrice();

                        ExBackgroundWorker.DoWork_Focus(this.utlPaymentNo.txtID, 10);
                        this.utlPurchase.txtID.IsEnabled = true;
                    }
                    break;

                #endregion

                default:
                    break;
            }
        }
        private void ConvertBeforeData(EntityPaymentCashH _prm_entityH,
                                       EntityPaymentCashH _prm_before_entityH)
        {
            #region Set Entity Detail

            //for (int i = 0; i <= _prm_entityListD.Count - 1; i++)
            //{
            //    _prm_before_entityListD.Clear();

            //    EntityPaymentCashD _entityD = new EntityPaymentCashD();

            //    _entityD._id = _prm_entityListD[i]._id;
            //    _entityD._rec_no = _prm_entityListD[i]._rec_no;
            //    _entityD._receipt_division_id = _prm_entityListD[i]._receipt_division_id;
            //    _entityD._receipt_division_nm = _prm_entityListD[i]._receipt_division_nm;
            //    _entityD._bill_site_day = _prm_entityListD[i]._bill_site_day;
            //    _entityD._price = _prm_entityListD[i]._price;
            //    _entityD._memo = _prm_entityListD[i]._memo;
            //    _entityD._lock_flg = _prm_entityListD[i]._lock_flg;
            //    _entityD._message = _prm_entityListD[i]._message;

            //    _prm_before_entityListD.Add(_entityD);
            //}

            #endregion

            #region Set Entity Head

            _prm_before_entityH._id = _prm_entityH._id;
            _prm_before_entityH._no = _prm_entityH._no;
            _prm_before_entityH._purchase_id = _prm_entityH._purchase_id;
            _prm_before_entityH._purchase_name = _prm_entityH._purchase_name;
            _prm_before_entityH._payment_yyyymmdd = _prm_entityH._payment_yyyymmdd;
            _prm_before_entityH._summing_up_day = _prm_entityH._summing_up_day;
            _prm_before_entityH._person_id = _prm_entityH._person_id;
            _prm_before_entityH._person_name = _prm_entityH._person_name;
            _prm_before_entityH._payment_cash_ymd = _prm_entityH._payment_cash_ymd;
            _prm_before_entityH._sum_price = _prm_entityH._sum_price;
            _prm_before_entityH._credit_price = _prm_entityH._credit_price;
            _prm_before_entityH._before_credit_price = _prm_entityH._before_credit_price;
            _prm_before_entityH._payment_close_flg = _prm_entityH._payment_close_flg;
            _prm_before_entityH._memo = _prm_entityH._memo;
            _prm_before_entityH._update_flg = _prm_entityH._update_flg;
            _prm_before_entityH._update_person_id = _prm_entityH._update_person_id;
            _prm_before_entityH._update_person_nm = _prm_entityH._update_person_nm;
            _prm_before_entityH._update_date = _prm_entityH._update_date;
            _prm_before_entityH._update_time = _prm_entityH._update_time;
            _prm_before_entityH._lock_flg = _prm_entityH._lock_flg;
            _prm_before_entityH._message = _prm_entityH._message;

            #endregion
        }
        // F2ボタン(クリア) クリック
        public override void btnF2_Click(object sender, RoutedEventArgs e)
        {
            this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.Init;
            SetDatePickerNotEnabled();

            // 先頭選択
            this.dg.SelectedFirst();

            // ヘッダ初期化
            _entityH = null;
            SetBinding();

            // 明細初期化
            _entityListD = null;
            _entityListD = new ObservableCollection<EntityPaymentCashD>();

            // 明細追加
            Common.gblnDesynchronizeLock = false;
            this.btnF7_Click(null, null);

            this.dg.ItemsSource = _entityListD;

            this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.Init;
            SetDatePickerNotEnabled();

            this.utlNo.txtID_IsReadOnly = false;
            //this.utlNo.IsEnabled = true;
            this.utlNo.txtID.Text = "";
            ExBackgroundWorker.DoWork_Focus(this.utlNo.txtID, 10);

            // ロック解除
            DataPgLock.gLockPg(PG_NM, "", (int)DataPgLock.geLockType.UnLock);

            Common.gblnDesynchronizeLock = false;
        }
 private void UpdatePaymentCash(int type, long PaymentCashNo, EntityPaymentCashH entityH, ObservableCollection<EntityPaymentCashD> entityD, EntityPaymentCashH before_entityH)
 {
     try
     {
         svcPaymentCashClient svc = new svcPaymentCashClient();
         svc.UpdatePaymentCashCompleted += new EventHandler<UpdatePaymentCashCompletedEventArgs>(this.UpdatePaymentCashCompleted);
         svc.UpdatePaymentCashAsync(Common.gstrSessionString, type, PaymentCashNo, entityH, entityD, before_entityH);
     }
     catch (Exception ex)
     {
         this.ProcessingDlgClose();
         ExMessageBox.Show(CLASS_NM + ".UpdatePaymentCash" + Environment.NewLine + ex.ToString(), "エラー確認");
     }
 }
        private void GetPaymentCashHCompleted(Object sender, GetPaymentCashHCompletedEventArgs e)
        {
            try
            {
                objPaymentCashH = e.Result;
                if (DialogCloseFlg == geDialogCloseFlg.Yes & win != null)
                {
                    win.Close();
                    win = null;
                }

                if (objPaymentCashH != null)
                {
                    if (objPaymentCashH._message != "" && objPaymentCashH._message != null)
                    {
                        // 認証失敗
                        ExMessageBox.Show(objPaymentCashH._message);
                        objPerent.DataSelect((int)geWebServiceCallKbn.GetPaymentCashListH, (object)objPaymentCashH);
                    }
                    else
                    {
                        // 認証成功
                        objPerent.DataSelect((int)geWebServiceCallKbn.GetPaymentCashListH, (object)objPaymentCashH);
                    }
                }
                else
                {
                    objPerent.DataSelect((int)geWebServiceCallKbn.GetPaymentCashListH, null);
                }

            }
            catch (Exception ex)
            {
                this.ProcessingDlgClose();
                ExMessageBox.Show(CLASS_NM + ".GetPaymentCashHCompleted" + Environment.NewLine + ex.ToString(), "エラー確認");
            }
            finally
            {
                if (DialogCloseFlg == geDialogCloseFlg.Yes & win != null)
                {
                    win.Close();
                    win = null;
                }
            }
        }
 private void GetPaymentCashH(long PaymentCashNo)
 {
     try
     {
         objPaymentCashH = null;   // 初期化
         svcPaymentCashClient svc = new svcPaymentCashClient();
         svc.GetPaymentCashHCompleted += new EventHandler<GetPaymentCashHCompletedEventArgs>(this.GetPaymentCashHCompleted);
         svc.GetPaymentCashHAsync(Common.gstrSessionString, PaymentCashNo);
     }
     catch (Exception ex)
     {
         this.ProcessingDlgClose();
         ExMessageBox.Show(CLASS_NM + ".GetPaymentCashH" + Environment.NewLine + ex.ToString(), "エラー確認");
     }
 }