// データ取得コールバック呼出
        public override void DataSelect(int intKbn, object objList)
        {
            switch ((ExWebService.geWebServiceCallKbn)intKbn)
            {
                #region 発注

                // 発注ヘッダ
                case _GetHeadWebServiceCallKbn:
                    // 更新
                    if (objList != null)    
                    {
                        _entityH = (EntityPurchaseOrderH)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;
                        this.utlNo.txtID_IsReadOnly = false;
                    }
                    ExBackgroundWorker.DoWork_Focus(this.datPurchaseOrderYmd, 10);
                    break;
                // 発注明細
                case _GetDetailWebServiceCallKbn:
                    // 2回設定がかかりエラーになる為
                    try
                    {
                        this.dg.ItemsSource = null;
                    }
                    catch
                    {
                        return;
                    }

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

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

                    // 明細再計算
                    DataDetail.IsCalcPrice = false;
                    DataDetail.ReCalcDetail(_entityH, _entityListD);
                    DataDetail.IsCalcPrice = true;

                    this.dg.ItemsSource = _entityListD;

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

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

                    break;

                #endregion

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

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

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

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

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

            this.dg.ItemsSource = _entityListD;

            this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.Init;

            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);
        }
        private void SetBinding()
        {
            if (_entityH == null)
            {
                _entityH = new EntityPurchaseOrderH();
            }

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

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

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

            #region Bind

            // バインド
            Binding BindingOrderYmd = new Binding("_purchase_order_ymd");
            BindingOrderYmd.Mode = BindingMode.TwoWay;
            BindingOrderYmd.Source = _entityH;
            this.datPurchaseOrderYmd.SetBinding(DatePicker.SelectedDateProperty, BindingOrderYmd);

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

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

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

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

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

            Binding BindingTax = new Binding("_tax_change_id");
            BindingTax.Mode = BindingMode.TwoWay;
            BindingTax.Source = _entityH;
            this.utlTax.txtID.SetBinding(TextBox.TextProperty, BindingTax);

            Binding BindingTaxName = new Binding("_tax_change_name");
            BindingTaxName.Mode = BindingMode.TwoWay;
            BindingTaxName.Source = _entityH;
            this.utlTax.txtNm.SetBinding(TextBox.TextProperty, BindingTaxName);

            Binding BindingBusiness = new Binding("_business_division_id");
            BindingBusiness.Mode = BindingMode.TwoWay;
            BindingBusiness.Source = _entityH;
            this.utlBusiness.txtID.SetBinding(TextBox.TextProperty, BindingBusiness);

            Binding BindingBusinessName = new Binding("_business_division_name");
            BindingBusinessName.Mode = BindingMode.TwoWay;
            BindingBusinessName.Source = _entityH;
            this.utlBusiness.txtNm.SetBinding(TextBox.TextProperty, BindingBusinessName);

            Binding BindingSendKbnId = new Binding("_send_kbn_id");
            BindingSendKbnId.Mode = BindingMode.TwoWay;
            BindingSendKbnId.Source = _entityH;
            this.utlSendKbn.txtID.SetBinding(TextBox.TextProperty, BindingSendKbnId);

            Binding BindingSendKbnName = new Binding("_send_kbn_nm");
            BindingSendKbnName.Mode = BindingMode.TwoWay;
            BindingSendKbnName.Source = _entityH;
            this.utlSendKbn.txtNm.SetBinding(TextBox.TextProperty, BindingSendKbnName);

            if (_entityH._send_kbn_id == 0)
            {
                _entityH._send_kbn_id = 1;
            }

            Binding BindingCustomeNo = new Binding("_customer_id");
            BindingCustomeNo.Mode = BindingMode.TwoWay;
            BindingCustomeNo.Source = _entityH;
            this.utlCustomer.txtID.SetBinding(TextBox.TextProperty, BindingCustomeNo);

            Binding BindingCustomeName = new Binding("_customer_name");
            BindingCustomeName.Mode = BindingMode.TwoWay;
            BindingCustomeName.Source = _entityH;
            this.utlCustomer.txtNm.SetBinding(TextBox.TextProperty, BindingCustomeName);

            Binding BindingSupplyNo = new Binding("_supplier_id");
            BindingSupplyNo.Mode = BindingMode.TwoWay;
            BindingSupplyNo.Source = _entityH;
            this.utlSupplier.txtID2.SetBinding(TextBox.TextProperty, BindingCustomeNo);
            this.utlSupplier.txtID.SetBinding(TextBox.TextProperty, BindingSupplyNo);

            Binding BindingSupplyName = new Binding("_supplier_name");
            BindingSupplyName.Mode = BindingMode.TwoWay;
            BindingSupplyName.Source = _entityH;
            this.utlSupplier.txtNm.SetBinding(TextBox.TextProperty, BindingSupplyName);

            Binding BindingNokiYmd = new Binding("_supply_ymd");
            BindingNokiYmd.Mode = BindingMode.TwoWay;
            BindingNokiYmd.Source = _entityH;
            this.datNokiYmd.SetBinding(DatePicker.SelectedDateProperty, BindingNokiYmd);

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

            // 入数計
            Binding BindingEnterNumber = new Binding("_sum_enter_number");
            BindingEnterNumber.Mode = BindingMode.TwoWay;
            BindingEnterNumber.Source = _entityH;
            BindingEnterNumber.Converter = nmConvDecm0;
            this.txtEnterNumber.SetBinding(TextBox.TextProperty, BindingEnterNumber);
            
            // ケース数計
            Binding BindingCaseNumber = new Binding("_sum_case_number");
            BindingCaseNumber.Mode = BindingMode.TwoWay;
            BindingCaseNumber.Source = _entityH;
            BindingCaseNumber.Converter = nmConvDecm0;
            this.txtCaseNumber.SetBinding(TextBox.TextProperty, BindingCaseNumber);
            
            // 数量計
            Binding BindingNumber = new Binding("_sum_number");
            BindingNumber.Mode = BindingMode.TwoWay;
            BindingNumber.Source = _entityH;
            BindingNumber.Converter = nmConvDecm2;
            this.txtNumber.SetBinding(TextBox.TextProperty, BindingNumber);
            
            // 単価計
            Binding BindingUnitPrice = new Binding("_sum_unit_price");
            BindingUnitPrice.Mode = BindingMode.TwoWay;
            BindingUnitPrice.Source = _entityH;
            BindingUnitPrice.Converter = nmConvDecm2;
            this.txtUnitPrice.SetBinding(TextBox.TextProperty, BindingUnitPrice);
            
            // 消費税額計
            Binding BindingSumTax = new Binding("_sum_tax");
            BindingSumTax.Mode = BindingMode.TwoWay;
            BindingSumTax.Source = _entityH;
            BindingSumTax.Converter = nmConvDecm0;
            this.txtTax.SetBinding(TextBox.TextProperty, BindingSumTax);
            
            // 税抜金額計
            Binding BindingTaxNoPrice = new Binding("_sum_no_tax_price");
            BindingTaxNoPrice.Mode = BindingMode.TwoWay;
            BindingTaxNoPrice.Source = _entityH;
            BindingTaxNoPrice.Converter = nmConvDecm0;
            this.txtTaxNoPrice.SetBinding(TextBox.TextProperty, BindingTaxNoPrice);

            // 税込金額計
            this.txtSumPrice.Text = ExCast.zCStr(ExCast.zCDbl(_entityH._sum_no_tax_price) + ExCast.zCDbl(_entityH._sum_tax));
            this.txtSumPrice.OnFormatString();

            // 金額計
            Binding BindingPrice = new Binding("_sum_price");
            BindingPrice.Mode = BindingMode.TwoWay;
            BindingPrice.Source = _entityH;
            BindingPrice.Converter = nmConvDecm0;
            this.txtPrice.SetBinding(TextBox.TextProperty, BindingPrice);
            
            // 買掛残高
            Binding BindingSalesCreditPrice = new Binding("_payment_credit_price");
            BindingSalesCreditPrice.Mode = BindingMode.TwoWay;
            BindingSalesCreditPrice.Source = _entityH;
            BindingSalesCreditPrice.Converter = nmConvDecm0;
            this.txtPaymentLimitPrice.SetBinding(TextBox.TextProperty, BindingSalesCreditPrice);

            #endregion

            this.utlPurchase.txtID.SetZeroToNullString();
            this.utlCustomer.txtID.SetZeroToNullString();
            this.utlSupplier.txtID.SetZeroToNullString();
            this.utlPerson.txtID.SetZeroToNullString();
            this.utlTax.txtID.SetZeroToNullString();
            this.utlBusiness.txtID.SetZeroToNullString();
        }
        // For Purchase Order
        public static void ReCalcDetail(EntityPurchaseOrderH entityH, ObservableCollection<EntityPurchaseOrderD> entityD)
        {
            for (int i = 0; i <= entityD.Count - 1; i++)
            {
                // 明細計算
                CalcDetail(i, entityH, entityD);
            }

            // 明細合計計算
            CalcSumDetail(entityH, entityD);
        }
        // For Purchase Order
        public static void SetCommodityToDetail(int i, EntityPurchaseOrderH entityH, ObservableCollection<EntityPurchaseOrderD> entityD, svcMstData.EntityMstData mst)
        {
            if (i == -1) return;

            svcMstData.EntityMstData _mst = mst;

            EntityBaseH entityBaseH = null;
            ObservableCollection<EntityBaseD> entityBaseD = null;

            ConvertFrom(entityH, ref entityBaseH, entityD, ref entityBaseD);

            _SetCommodityToDetail(i, ref entityBaseH, ref entityBaseD, _mst, eKbn.Purchase);

            ConvertTo(entityBaseH, ref entityH, entityBaseD, ref entityD);

            // 明細計算
            CalcDetailNumber(i, entityH, entityD);
            CalcDetail(i, entityH, entityD);
        }
        // For Purchase Order
        public static void CalcDetailNumber(int i, EntityPurchaseOrderH entityH, ObservableCollection<EntityPurchaseOrderD> entityD)
        {
            EntityBaseH entityBaseH = null;
            ObservableCollection<EntityBaseD> entityBaseD = null;
            ConvertFrom(entityH, ref entityBaseH, entityD, ref entityBaseD);

            _CalcDetailNumber(i, ref entityBaseD);

            ConvertTo(entityBaseH, ref entityH, entityBaseD, ref entityD);

            // 明細計算
            CalcDetail(i, entityH, entityD);

            // 明細合計計算
            CalcSumDetail(entityH, entityD);
        }
        // For Purchase Order
        public static void CalcSumDetail(EntityPurchaseOrderH entityH, ObservableCollection<EntityPurchaseOrderD> entityD)
        {
            EntityBaseH entityBaseH = null;
            ObservableCollection<EntityBaseD> entityBaseD = null;
            ConvertFrom(entityH, ref entityBaseH, entityD, ref entityBaseD);

            _CalcSumDetail(ref entityBaseH, ref entityBaseD);

            ConvertTo(entityBaseH, ref entityH, entityBaseD, ref entityD);
        }
        // For Purchase Order
        public static void ConvertFrom(EntityPurchaseOrderH entityH, ref EntityBaseH entityBaseH, ObservableCollection<EntityPurchaseOrderD> entityD, ref ObservableCollection<EntityBaseD> entityBaseD)
        {
            entityBaseD = new ObservableCollection<EntityBaseD>();

            for (int i = 0; i <= entityD.Count - 1; i++)
            {
                EntityBaseD _entityBaseD = new EntityBaseD();

                #region Set Entity Detail

                _entityBaseD.id = entityD[i]._id;
                _entityBaseD.rec_no = entityD[i]._rec_no;
                _entityBaseD.breakdown_id = entityD[i]._breakdown_id;
                _entityBaseD.breakdown_nm = entityD[i]._breakdown_nm;
                _entityBaseD.deliver_division_id = entityD[i]._deliver_division_id;
                _entityBaseD.deliver_division_nm = entityD[i]._deliver_division_nm;
                _entityBaseD.commodity_id = entityD[i]._commodity_id;
                _entityBaseD.commodity_name = entityD[i]._commodity_name;
                _entityBaseD.unit_id = entityD[i]._unit_id;
                _entityBaseD.unit_nm = entityD[i]._unit_nm;
                _entityBaseD.enter_number = entityD[i]._enter_number;
                _entityBaseD.case_number = entityD[i]._case_number;
                _entityBaseD.number = entityD[i]._number;
                _entityBaseD.unit_price = entityD[i]._unit_price;
                _entityBaseD.tax = entityD[i]._tax;
                _entityBaseD.no_tax_price = entityD[i]._no_tax_price;
                _entityBaseD.price = entityD[i]._price;
                _entityBaseD.tax_division_id = entityD[i]._tax_division_id;
                _entityBaseD.tax_division_nm = entityD[i]._tax_division_nm;
                _entityBaseD.tax_percent = entityD[i]._tax_percent;
                _entityBaseD.inventory_management_division_id = entityD[i]._inventory_management_division_id;
                _entityBaseD.inventory_number = entityD[i]._inventory_number;
                _entityBaseD.retail_price_skip_tax = entityD[i]._retail_price_skip_tax;
                _entityBaseD.retail_price_before_tax = entityD[i]._retail_price_before_tax;
                _entityBaseD.sales_unit_price_skip_tax = entityD[i]._sales_unit_price_skip_tax;
                _entityBaseD.sales_unit_price_before_tax = entityD[i]._sales_unit_price_before_tax;
                _entityBaseD.sales_cost_price_skip_tax = entityD[i]._sales_cost_price_skip_tax;
                _entityBaseD.sales_cost_price_before_tax = entityD[i]._sales_cost_price_before_tax;
                _entityBaseD.purchase_unit_price_skip_tax = entityD[i]._purchase_unit_price_skip_tax;
                _entityBaseD.purchase_unit_price_before_tax = entityD[i]._purchase_unit_price_before_tax;
                _entityBaseD.number_decimal_digit = entityD[i]._number_decimal_digit;
                _entityBaseD.unit_decimal_digit = entityD[i]._unit_decimal_digit;

                #endregion

                entityBaseD.Add(_entityBaseD);
            }

            entityBaseH = new EntityBaseH();

            #region Set Entity Head

            entityBaseH.tax_change_id = entityH._tax_change_id;
            entityBaseH.business_division_id = entityH._business_division_id;
            entityBaseH.price_fraction_proc_id = entityH._price_fraction_proc_id;
            entityBaseH.tax_fraction_proc_id = entityH._tax_fraction_proc_id;
            entityBaseH.unit_kind_id = entityH._unit_kind_id;
            entityBaseH.sum_enter_number = entityH._sum_enter_number;
            entityBaseH.sum_case_number = entityH._sum_case_number;
            entityBaseH.sum_number = entityH._sum_number;
            entityBaseH.sum_unit_price = entityH._sum_unit_price;
            entityBaseH.sum_tax = entityH._sum_tax;
            entityBaseH.sum_no_tax_price = entityH._sum_no_tax_price;
            entityBaseH.sum_price = entityH._sum_price;
            entityBaseH.credit_rate = entityH._credit_rate;

            #endregion
        }
        // For Purchase Order
        public static void ConvertTo(EntityBaseH entityBaseH, ref EntityPurchaseOrderH entityH, ObservableCollection<EntityBaseD> entityBaseD, ref ObservableCollection<EntityPurchaseOrderD> entityD)
        {
            for (int i = 0; i <= entityD.Count - 1; i++)
            {
                #region Set Entity

                entityD[i]._id = entityBaseD[i].id;
                entityD[i]._rec_no = entityBaseD[i].rec_no;
                entityD[i]._breakdown_id = entityBaseD[i].breakdown_id;
                entityD[i]._breakdown_nm = entityBaseD[i].breakdown_nm;
                entityD[i]._deliver_division_id = entityBaseD[i].deliver_division_id;
                entityD[i]._deliver_division_nm = entityBaseD[i].deliver_division_nm;
                entityD[i]._commodity_id = entityBaseD[i].commodity_id;
                entityD[i]._commodity_name = entityBaseD[i].commodity_name;
                entityD[i]._unit_id = entityBaseD[i].unit_id;
                entityD[i]._unit_nm = entityBaseD[i].unit_nm;
                entityD[i]._enter_number = entityBaseD[i].enter_number;
                entityD[i]._case_number = entityBaseD[i].case_number;
                entityD[i]._number = entityBaseD[i].number;
                //entityD[i]._order_number = entityBaseD[i].order_number;
                //entityD[i]._order_stay_number = entityBaseD[i].order_stay_number;
                entityD[i]._unit_price = entityBaseD[i].unit_price;
                //entityD[i]._sales_cost = entityBaseD[i].sales_cost;
                entityD[i]._tax = entityBaseD[i].tax;
                entityD[i]._no_tax_price = entityBaseD[i].no_tax_price;
                entityD[i]._price = entityBaseD[i].price;
                //entityD[i]._profits = entityBaseD[i].profits;
                //entityD[i]._profits_percent = entityBaseD[i].profits_percent;
                entityD[i]._tax_division_id = entityBaseD[i].tax_division_id;
                entityD[i]._tax_division_nm = entityBaseD[i].tax_division_nm;
                entityD[i]._tax_percent = entityBaseD[i].tax_percent;
                entityD[i]._inventory_management_division_id = entityBaseD[i].inventory_management_division_id;
                entityD[i]._inventory_number = entityBaseD[i].inventory_number;
                entityD[i]._retail_price_skip_tax = entityBaseD[i].retail_price_skip_tax;
                entityD[i]._retail_price_before_tax = entityBaseD[i].retail_price_before_tax;
                entityD[i]._sales_unit_price_skip_tax = entityBaseD[i].sales_unit_price_skip_tax;
                entityD[i]._sales_unit_price_before_tax = entityBaseD[i].sales_unit_price_before_tax;
                entityD[i]._sales_cost_price_skip_tax = entityBaseD[i].sales_cost_price_skip_tax;
                entityD[i]._sales_cost_price_before_tax = entityBaseD[i].sales_cost_price_before_tax;
                entityD[i]._purchase_unit_price_skip_tax = entityBaseD[i].purchase_unit_price_skip_tax;
                entityD[i]._purchase_unit_price_before_tax = entityBaseD[i].purchase_unit_price_before_tax;
                entityD[i]._number_decimal_digit = entityBaseD[i].number_decimal_digit;
                entityD[i]._unit_decimal_digit = entityBaseD[i].unit_decimal_digit;

                #endregion
            }

            #region Set Entity Head

            entityH._tax_change_id = entityBaseH.tax_change_id;
            entityH._business_division_id = entityBaseH.business_division_id;
            entityH._price_fraction_proc_id = entityBaseH.price_fraction_proc_id;
            entityH._tax_fraction_proc_id = entityBaseH.tax_fraction_proc_id;
            entityH._unit_kind_id = entityBaseH.unit_kind_id;
            entityH._sum_enter_number = entityBaseH.sum_enter_number;
            entityH._sum_case_number = entityBaseH.sum_case_number;
            entityH._sum_number = entityBaseH.sum_number;
            entityH._sum_unit_price = entityBaseH.sum_unit_price;
            //entityH._sum_sales_cost = entityBaseH.sum_sales_cost;
            entityH._sum_tax = entityBaseH.sum_tax;
            entityH._sum_no_tax_price = entityBaseH.sum_no_tax_price;
            entityH._sum_price = entityBaseH.sum_price;
            //entityH._sum_profits = entityBaseH.sum_profits;
            //entityH._profits_percent = entityBaseH.profits_percent;
            entityH._credit_rate = entityBaseH.credit_rate;
            entityH._payment_credit_price = entityBaseH.payment_credit_price;

            #endregion

        }
        private void ConverPurchaseOrderToSales(EntityPurchaseH _EntityPurchaseH,
                                                ObservableCollection<EntityPurchaseD> _entitySalesListD,
                                                EntityPurchaseOrderH _EntityPurchaseOrderH,
                                                ObservableCollection<EntityPurchaseOrderD> _entityListOrderD)
        {
            #region Set Entity Head

            _EntityPurchaseH._purchase_order_no = _EntityPurchaseOrderH._no;
            //_EntityPurchaseH._sales_ymd = _EntityPurchaseOrderH.or;

            this.utlPurchase.Is_MstID_Changed = false;
            this.utlSupplier.Is_MstID_Changed = false;

            _EntityPurchaseH._customer_id = _EntityPurchaseOrderH._customer_id;
            _EntityPurchaseH._customer_name = _EntityPurchaseOrderH._customer_name;

            _EntityPurchaseH._supplier_id = _EntityPurchaseOrderH._supplier_id;
            _EntityPurchaseH._supplier_name = _EntityPurchaseOrderH._supplier_name;

            this.utlPurchase.Is_MstID_Changed = true;
            this.utlSupplier.Is_MstID_Changed = true;
            this.utlPurchase.MstID_Changed(_EntityPurchaseOrderH, new PropertyChangedEventArgs("customer_id"));
            this.utlSupplier.MstID_Changed(_EntityPurchaseOrderH, new PropertyChangedEventArgs("supplier_id"));

            _EntityPurchaseH._tax_change_id = _EntityPurchaseOrderH._tax_change_id;
            _EntityPurchaseH._tax_change_name = _EntityPurchaseOrderH._tax_change_name;

            _EntityPurchaseH._business_division_id = _EntityPurchaseOrderH._business_division_id;
            _EntityPurchaseH._business_division_name = _EntityPurchaseOrderH._business_division_name;

            _EntityPurchaseH._supply_ymd = _EntityPurchaseOrderH._supply_ymd;
            _EntityPurchaseH._sum_enter_number = _EntityPurchaseOrderH._sum_enter_number;
            _EntityPurchaseH._sum_case_number = _EntityPurchaseOrderH._sum_case_number;
            _EntityPurchaseH._sum_number = _EntityPurchaseOrderH._sum_number;
            _EntityPurchaseH._sum_unit_price = _EntityPurchaseOrderH._sum_unit_price;
            //_EntityPurchaseH._sum_sales_cost = _EntityPurchaseOrderH._sum_sales_cost;
            _EntityPurchaseH._sum_tax = _EntityPurchaseOrderH._sum_tax;
            _EntityPurchaseH._sum_no_tax_price = _EntityPurchaseOrderH._sum_no_tax_price;
            _EntityPurchaseH._sum_price = _EntityPurchaseOrderH._sum_price;
            //_EntityPurchaseH._sum_profits = _EntityPurchaseOrderH._sum_profits;
            //_EntityPurchaseH._profits_percent = _EntityPurchaseOrderH._profits_percent;
            //_EntityPurchaseH._credit_limit_price = _EntityPurchaseOrderH._credit_limit_price;
            _EntityPurchaseH._payment_credit_price = _EntityPurchaseOrderH._payment_credit_price;
            _EntityPurchaseH._before_payment_credit_price = _EntityPurchaseOrderH._payment_credit_price;

            _EntityPurchaseH._credit_rate = _EntityPurchaseOrderH._credit_rate;
            _EntityPurchaseH._unit_kind_id = _EntityPurchaseOrderH._unit_kind_id;

            _EntityPurchaseH._payment_state = "";
            _EntityPurchaseH._payment_cash_receivable_kbn = 1;
            _EntityPurchaseH._payment_cash_receivable_kbn_nm = "消込未";

            _EntityPurchaseH._memo = _EntityPurchaseOrderH._memo;

            //_EntityPurchaseH._update_person_id = ExCast.zCInt(dt.DefaultView[0]["UPDATE_PERSON_ID"]);
            //_EntityPurchaseH._update_person_nm = ExCast.zCStr(dt.DefaultView[0]["UPDATE_PERSON_NM"]);

            //_EntityPurchaseH._lock_flg = (int)lockFlg;

            #endregion

            #region Set Entity Detail

            if (_entitySalesListD == null) _entitySalesListD = new ObservableCollection<EntityPurchaseD>();
            _entitySalesListD.Clear();

            for (int i = 0; i <= _entityListOrderD.Count - 1; i++)
            {
                EntityPurchaseD _entityD = new EntityPurchaseD();
                _entityD._id = _EntityPurchaseH._id;
                _entityD._rec_no = _entityListOrderD[i]._rec_no;
                _entityD._breakdown_id = _entityListOrderD[i]._breakdown_id;
                _entityD._breakdown_nm = _entityListOrderD[i]._breakdown_nm;
                List<string> lst;
                lst = MeiNameList.GetListMei(MeiNameList.geNameKbn.DELIVER_DIVISION_ID);
                _entityD._deliver_division_nm = lst[2];
                _entityD._deliver_division_id = MeiNameList.GetID(MeiNameList.geNameKbn.DELIVER_DIVISION_ID, lst[2]);
                //_entityD._deliver_division_id = 2;
                //_entityD._deliver_division_nm = _entityListOrderD[i]._deliver_division_nm;
                _entityD._commodity_id = _entityListOrderD[i]._commodity_id;
                _entityD._commodity_name = _entityListOrderD[i]._commodity_name;
                _entityD._unit_id = _entityListOrderD[i]._unit_id;
                _entityD._unit_nm = _entityListOrderD[i]._unit_nm;
                _entityD._enter_number = _entityListOrderD[i]._enter_number;
                _entityD._case_number = _entityListOrderD[i]._case_number;
                _entityD._number = _entityListOrderD[i]._number;
                _entityD._purchase_order_id = _EntityPurchaseOrderH._id;
                _entityD._purchase_order_number = _entityListOrderD[i]._number;
                _entityD._purchase_order_stay_number = 0;
                _entityD._unit_price = _entityListOrderD[i]._unit_price;
                //_entityD._sales_cost = _entityListOrderD[i]._sales_cost;
                _entityD._tax = _entityListOrderD[i]._tax;
                _entityD._no_tax_price = _entityListOrderD[i]._no_tax_price;
                _entityD._price = _entityListOrderD[i]._price;
                //_entityD._profits = _entityListOrderD[i]._profits;
                //_entityD._profits_percent = _entityListOrderD[i]._profits_percent;
                _entityD._memo = _entityListOrderD[i]._memo;
                _entityD._tax_division_id = _entityListOrderD[i]._tax_division_id;
                _entityD._tax_division_nm = _entityListOrderD[i]._tax_division_nm;
                _entityD._tax_percent = _entityListOrderD[i]._tax_percent;
                _entityD._inventory_number = _entityListOrderD[i]._inventory_number;
                _entityD._inventory_management_division_id = _entityListOrderD[i]._inventory_management_division_id;
                _entityD._number_decimal_digit = _entityListOrderD[i]._number_decimal_digit;
                _entityD._unit_decimal_digit = _entityListOrderD[i]._unit_decimal_digit;
                _entitySalesListD.Add(_entityD);
            }

            #endregion
        }
        // データ取得コールバック呼出
        public override void DataSelect(int intKbn, object objList)
        {
            switch ((ExWebService.geWebServiceCallKbn)intKbn)
            {
                #region 仕入

                // 仕入ヘッダ
                case _GetHeadWebServiceCallKbn:
                    // 更新
                    if (objList != null)
                    {
                        _entityH = (EntityPurchaseH)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;
                        //this.utlNo.IsEnabled = false;
                        this.utlNo.txtID_IsReadOnly = false;
                    }
                    ExBackgroundWorker.DoWork_Focus(this.utlPerson.txtID, 10);
                    break;
                // 仕入明細
                case _GetDetailWebServiceCallKbn:
                    // 2回設定がかかりエラーになる為
                    try
                    {
                        this.dg.ItemsSource = null;
                    }
                    catch
                    {
                        return;
                    }

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

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

                    // 明細再計算
                    DataDetail.IsCalcPrice = false;
                    DataDetail.ReCalcDetail(_entityH, _entityListD);
                    DataDetail.IsCalcPrice = true;

                    this.dg.ItemsSource = _entityListD;

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

                    if (_entityH._payment_close_flg == 1)
                    {
                        this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.Sel;
                        this.utlMode.txtMode.Text = " 参照モード(支払締切済) ";
                        return;
                    }

                    if (_entityH._payment_cash_receivable_kbn_nm == "消込未" || _entityH._payment_cash_receivable_kbn_nm == "")
                    {
                    }
                    else
                    {
                        this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.Sel;
                        this.utlMode.txtMode.Text = " 参照モード(" + _entityH._payment_cash_receivable_kbn_nm + ") ";
                        return;
                    }

                    if (_entityH._lock_flg == 0)
                    {
                        this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.Upd;
                        ConvertRedData(_entityH, _entityListD, _entityRedH, _entityListRedD);
                        _entityRedH._no = 0;
                        _entityRedH._id = 0;
                        //_entityRedH._red_before_no = _entityH._no;
                    }
                    else
                    {
                        this.utlFunctionKey.gFunctionKeyEnable = Utl_FunctionKey.geFunctionKeyEnable.Sel;
                    }

                    // 買掛再計算
                    CalcPaymentCredit();

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

                #endregion

                #region 発注

                // 発注ヘッダ
                case ExWebService.geWebServiceCallKbn.GetOrderListH:
                    // 更新
                    if (objList != null)    
                    {
                        _EntityPurchaseOrderH = (EntityPurchaseOrderH)objList;

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

                        if (_EntityPurchaseOrderH._purchase_allocation_flg == 1)
                        {
                            MessageBox.Show("仕入計上済の為、発注番号:" + this.utlPurchaseOrderNo.txtID.Text + " は選択できません。");
                            webService.ProcessingDlgClose();
                            this.utlPurchaseOrderNo.txtID.Text = "";
                            ExBackgroundWorker.DoWork_Focus(this.utlPurchaseOrderNo.txtID, 10);
                            return;
                        }

                        // 明細データ取得
                        GetDetailOrder(_EntityPurchaseOrderH._id);
                    }
                    // 新規
                    else
                    {
                        MessageBox.Show("発注番号:" + this.utlPurchaseOrderNo.txtID.Text + " は存在しません。");
                        webService.ProcessingDlgClose();
                        this.utlPurchaseOrderNo.txtID.Text = "";
                        ExBackgroundWorker.DoWork_Focus(this.utlPurchaseOrderNo.txtID, 10);
                    }
                    break;
                // 発注明細
                case ExWebService.geWebServiceCallKbn.GetOrderListD:
                    // 2回設定がかかりエラーになる為
                    try
                    {
                        this.dg.ItemsSource = null;
                    }
                    catch
                    {
                        return;
                    }

                    if (objList != null)
                    {
                        _entityListOrderD = (ObservableCollection<EntityPurchaseOrderD>)objList;
                    }
                    else 
                    {
                        _entityListOrderD = null;
                    }

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

                    ConverPurchaseOrderToSales(this._entityH, this._entityListD, this._EntityPurchaseOrderH, this._entityListOrderD);

                    // 明細再計算
                    DataDetail.IsCalcPrice = false;
                    DataDetail.ReCalcDetail(_entityH, _entityListD);
                    DataDetail.IsCalcPrice = true;


                    // 買掛再計算
                    CalcPaymentCredit();

                    if (string.IsNullOrEmpty(_entityH._memo))
                    {
                        _entityH._memo = "発注No : " + ExCast.zFormatForID(_EntityPurchaseOrderH._no, Common.gintidFigureSlipNo);
                    }

                    this.dg.ItemsSource = _entityListD;
                    ExBackgroundWorker.DoWork_Focus(this.datNokiYmd, 10);

                    this.utlPurchaseOrderNo.txtID.OnFormatString();
                    this.utlPurchaseOrderNo.txtID.UpdataFlg = false;

                    break;

                #endregion

                default:
                    break;
            }
        }
 private void UpdatePurchaseOrder(int type, long OrderNo, EntityPurchaseOrderH entityH, ObservableCollection<EntityPurchaseOrderD> entityD)
 {
     try
     {
         svcPurchaseOrderClient svc = new svcPurchaseOrderClient();
         svc.UpdatePurchaseOrderCompleted += new EventHandler<UpdatePurchaseOrderCompletedEventArgs>(this.UpdatePurchaseOrderCompleted);
         svc.UpdatePurchaseOrderAsync(Common.gstrSessionString, type, OrderNo, entityH, entityD);
     }
     catch (Exception ex)
     {
         this.ProcessingDlgClose();
         ExMessageBox.Show(CLASS_NM + ".UpdatePurchaseOrder" + Environment.NewLine + ex.ToString(), "エラー確認");
     }
 }
        private void GetPurchaseOrderHCompleted(Object sender, GetPurchaseOrderHCompletedEventArgs e)
        {
            try
            {
                objPurchaseOrderH = e.Result;
                if (DialogCloseFlg == geDialogCloseFlg.Yes & win != null)
                {
                    win.Close();
                    win = null;
                }

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

            }
            catch (Exception ex)
            {
                this.ProcessingDlgClose();
                ExMessageBox.Show(CLASS_NM + ".GetPurchaseOrderHCompleted" + Environment.NewLine + ex.ToString(), "エラー確認");
            }
            finally
            {
                if (DialogCloseFlg == geDialogCloseFlg.Yes & win != null)
                {
                    win.Close();
                    win = null;
                }
            }
        }
 private void GetPurchaseOrderH(long OrderNoFrom, long OrderNoTo)
 {
     try
     {
         objPurchaseOrderH = null;   // 初期化
         svcPurchaseOrderClient svc = new svcPurchaseOrderClient();
         svc.GetPurchaseOrderHCompleted += new EventHandler<GetPurchaseOrderHCompletedEventArgs>(this.GetPurchaseOrderHCompleted);
         svc.GetPurchaseOrderHAsync(Common.gstrSessionString, OrderNoFrom, OrderNoTo);
     }
     catch (Exception ex)
     {
         this.ProcessingDlgClose();
         ExMessageBox.Show(CLASS_NM + ".GetPurchaseOrderH" + Environment.NewLine + ex.ToString(), "エラー確認");
     }
 }