public string UpdateStockInventory(string random, int type, string ymd, List <EntityStockInventory> entity)
        {
            #region 認証処理

            string companyId     = "";
            string groupId       = "";
            string userId        = "";
            string ipAdress      = "";
            string sessionString = "";
            string personId      = "";

            try
            {
                companyId     = ExCast.zCStr(HttpContext.Current.Session[ExSession.COMPANY_ID]);
                groupId       = ExCast.zCStr(HttpContext.Current.Session[ExSession.GROUP_ID]);
                userId        = ExCast.zCStr(HttpContext.Current.Session[ExSession.USER_ID]);
                ipAdress      = ExCast.zCStr(HttpContext.Current.Session[ExSession.IP_ADRESS]);
                sessionString = ExCast.zCStr(HttpContext.Current.Session[ExSession.SESSION_RANDOM_STR]);
                personId      = ExCast.zCStr(HttpContext.Current.Session[ExSession.PERSON_ID]);

                string _message = ExSession.SessionUserUniqueCheck(random, ExCast.zCStr(HttpContext.Current.Session[ExSession.SESSION_RANDOM_STR]), ExCast.zCInt(HttpContext.Current.Session[ExSession.USER_ID]));
                if (_message != "")
                {
                    return(_message);
                }
            }
            catch (Exception ex)
            {
                CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateStockInventory(認証処理)", ex);
                return(CLASS_NM + ".UpdateStockInventory : 認証処理に失敗しました。" + Environment.NewLine + ex.Message.ToString());
            }

            #endregion

            #region Field

            StringBuilder sb = new StringBuilder();
            DataTable     dt;
            ExMySQLData   db        = null;
            string        _Id       = "";
            int           _classKbn = 0;

            long   rec_cnt     = 0;
            string str_message = "";

            EntityInOutDeliveryH        _entityInOutDeliveryH           = new EntityInOutDeliveryH();
            List <EntityInOutDeliveryD> _entityInOutDeliveryListD_Plus  = new List <EntityInOutDeliveryD>();
            List <EntityInOutDeliveryD> _entityInOutDeliveryListD_Minus = new List <EntityInOutDeliveryD>();

            #endregion

            #region Databese Open

            try
            {
                db = new ExMySQLData(ExCast.zCStr(HttpContext.Current.Session[ExSession.DB_CONNECTION_STR]));
                db.DbOpen();
            }
            catch (Exception ex)
            {
                CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateStockInventory(DbOpen)", ex);
                return(CLASS_NM + ".UpdateStockInventory(DbOpen) : 予期せぬエラーが発生しました。" + Environment.NewLine + ex.Message);
            }

            #endregion

            #region BeginTransaction

            try
            {
                db.ExBeginTransaction();
            }
            catch (Exception ex)
            {
                CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateStockInventory(BeginTransaction)", ex);
                return(CLASS_NM + ".UpdateStockInventory(BeginTransaction) : 予期せぬエラーが発生しました。" + Environment.NewLine + ex.Message);
            }

            #endregion

            #region Update

            if (type == 0)
            {
                try
                {
                    for (int i = 0; i <= entity.Count - 1; i++)
                    {
                        if (entity[i].exec_flg == true && entity[i].diff_number != 0)
                        {
                            #region Update Commodity Inventory

                            try
                            {
                                DataCommodityInventory.UpdCommodityInventory(companyId,
                                                                             groupId,
                                                                             db,
                                                                             ExCast.zNumZeroNothingFormat(entity[i].commodity_id),
                                                                             entity[i].diff_number * -1,
                                                                             PG_NM,
                                                                             ExCast.zCInt(personId),
                                                                             ipAdress,
                                                                             userId);
                            }
                            catch (Exception ex)
                            {
                                CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateSales(Update Commodity Inventory)", ex);
                                return("UpdateSales(Update Commodity Inventory) : 予期せぬエラーが発生しました。" + Environment.NewLine + ex.Message);
                            }

                            #endregion

                            #region Set Entity InOutDelivery

                            rec_cnt += 1;

                            EntityInOutDeliveryD _entityInOutDeliveryD = new EntityInOutDeliveryD();
                            _entityInOutDeliveryD.rec_no         = rec_cnt;
                            _entityInOutDeliveryD.commodity_id   = entity[i].commodity_id;
                            _entityInOutDeliveryD.commodity_name = entity[i].commodity_name;
                            _entityInOutDeliveryD.unit_id        = 0;
                            _entityInOutDeliveryD.enter_number   = 0;
                            _entityInOutDeliveryD.case_number    = 0;

                            if (entity[i].diff_number > 0)
                            {
                                _entityInOutDeliveryD.number = entity[i].diff_number;
                                _entityInOutDeliveryListD_Minus.Add(_entityInOutDeliveryD);
                            }
                            else
                            {
                                _entityInOutDeliveryD.number = entity[i].diff_number * -1;
                                _entityInOutDeliveryListD_Plus.Add(_entityInOutDeliveryD);
                            }

                            #endregion
                        }
                    }

                    #region Update InOutDelivery

                    try
                    {
                        svcInOutDelivery _svcInOutDelivery = new svcInOutDelivery();

                        if (_entityInOutDeliveryListD_Minus.Count > 0)
                        {
                            _entityInOutDeliveryH.in_out_delivery_ymd      = ymd;
                            _entityInOutDeliveryH.in_out_delivery_kbn      = 2;     // 入出庫区分:出庫
                            _entityInOutDeliveryH.in_out_delivery_proc_kbn = 4;     // 入出庫処理区分:棚卸
                            _entityInOutDeliveryH.in_out_delivery_to_kbn   = 1;     // 入出庫先区分:グループ
                            _entityInOutDeliveryH.update_person_id         = ExCast.zCInt(personId);
                            _entityInOutDeliveryH.group_id_to = groupId;

                            for (int i = 0; i <= _entityInOutDeliveryListD_Minus.Count - 1; i++)
                            {
                                _entityInOutDeliveryH.sum_enter_number += _entityInOutDeliveryListD_Minus[i].enter_number;
                                _entityInOutDeliveryH.sum_case_number  += _entityInOutDeliveryListD_Minus[i].case_number;
                                _entityInOutDeliveryH.sum_number       += _entityInOutDeliveryListD_Minus[i].number;
                            }

                            // random
                            // update type     1:Insert
                            // procKbn         4:棚卸
                            // InOutDeliveryNo 入出庫番号
                            // CauseNo         元伝票番号
                            str_message = _svcInOutDelivery.UpdateInOutDeliveryExcExc(random,
                                                                                      1,
                                                                                      4,
                                                                                      0,
                                                                                      0,
                                                                                      _entityInOutDeliveryH,
                                                                                      _entityInOutDeliveryListD_Minus,
                                                                                      null,
                                                                                      null);
                            if (str_message.IndexOf("Auto Insert success : ") == -1 && !string.IsNullOrEmpty(str_message))
                            {
                                return("UpdateStockInventory(Update InOutDelivery) : " + str_message);
                            }
                        }

                        _svcInOutDelivery = new svcInOutDelivery();

                        _entityInOutDeliveryH = null;
                        _entityInOutDeliveryH = new EntityInOutDeliveryH();
                        if (_entityInOutDeliveryListD_Plus.Count > 0)
                        {
                            _entityInOutDeliveryH.in_out_delivery_ymd      = ymd;
                            _entityInOutDeliveryH.in_out_delivery_kbn      = 1;     // 入出庫区分:入庫
                            _entityInOutDeliveryH.in_out_delivery_proc_kbn = 4;     // 入出庫処理区分:棚卸
                            _entityInOutDeliveryH.in_out_delivery_to_kbn   = 1;     // 入出庫先区分:グループ
                            _entityInOutDeliveryH.update_person_id         = ExCast.zCInt(personId);
                            _entityInOutDeliveryH.group_id_to = groupId;

                            for (int i = 0; i <= _entityInOutDeliveryListD_Plus.Count - 1; i++)
                            {
                                _entityInOutDeliveryH.sum_enter_number += _entityInOutDeliveryListD_Plus[i].enter_number;
                                _entityInOutDeliveryH.sum_case_number  += _entityInOutDeliveryListD_Plus[i].case_number;
                                _entityInOutDeliveryH.sum_number       += _entityInOutDeliveryListD_Plus[i].number;
                            }

                            // random
                            // update type     1:Insert
                            // procKbn         4:棚卸
                            // InOutDeliveryNo 入出庫番号
                            // CauseNo         元伝票番号
                            str_message = _svcInOutDelivery.UpdateInOutDeliveryExcExc(random,
                                                                                      1,
                                                                                      4,
                                                                                      0,
                                                                                      0,
                                                                                      _entityInOutDeliveryH,
                                                                                      _entityInOutDeliveryListD_Plus,
                                                                                      null,
                                                                                      null);
                            if (str_message.IndexOf("Auto Insert success : ") == -1 && !string.IsNullOrEmpty(str_message))
                            {
                                return("UpdateStockInventory(Update InOutDelivery) : " + str_message);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        db.ExRollbackTransaction();
                        CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateStockInventory(Update InOutDelivery)", ex);
                        return("UpdateStockInventory(Update InOutDelivery) : 予期せぬエラーが発生しました。" + Environment.NewLine + ex.Message);
                    }

                    #endregion
                }
                catch (Exception ex)
                {
                    db.ExRollbackTransaction();
                    CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateStockInventory(Insert)", ex);
                    return(CLASS_NM + ".UpdateStockInventory(Insert) : 予期せぬエラーが発生しました。" + Environment.NewLine + ex.Message);
                }
            }

            #endregion

            #region PG排他制御

            //try
            //{
            //    DataPgLock.DelLockPg(companyId, userId, PG_NM, "", ipAdress, false, db);
            //}
            //catch (Exception ex)
            //{
            //    db.ExRollbackTransaction();
            //    CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateStockInventory(DelLockPg)", ex);
            //    return CLASS_NM + ".UpdateStockInventory(DelLockPg) : 予期せぬエラーが発生しました。" + Environment.NewLine + ex.Message;
            //}

            #endregion

            #region CommitTransaction

            try
            {
                db.ExCommitTransaction();
            }
            catch (Exception ex)
            {
                CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateStockInventory(CommitTransaction)", ex);
                return(CLASS_NM + ".UpdateStockInventory(CommitTransaction) : 予期せぬエラーが発生しました。" + Environment.NewLine + ex.Message);
            }

            #endregion

            #region Database Close

            try
            {
                db.DbClose();
            }
            catch (Exception ex)
            {
                db.ExRollbackTransaction();
                CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateStockInventory(DbClose)", ex);
                return(CLASS_NM + ".UpdateStockInventory(DbClose) : 予期せぬエラーが発生しました。" + Environment.NewLine + ex.Message);
            }
            finally
            {
                db = null;
            }

            #endregion

            #region Add Evidence

            try
            {
                svcPgEvidence.gAddEvidence(ExCast.zCInt(HttpContext.Current.Session[ExSession.EVIDENCE_SAVE_FLG]),
                                           companyId,
                                           userId,
                                           ipAdress,
                                           sessionString,
                                           PG_NM,
                                           DataPgEvidence.geOperationType.DeleteAndInsert,
                                           "");
            }
            catch (Exception ex)
            {
                CommonUtl.ExLogger.Error(CLASS_NM + ".UpdateStockInventory(Add Evidence)", ex);
                return(CLASS_NM + ".UpdateStockInventory(Add Evidence) : 予期せぬエラーが発生しました。" + Environment.NewLine + ex.Message);
            }

            #endregion

            return("");
        }
        private void ConvertBeforeData(EntityInOutDeliveryH _prm_entityH,
                                       ObservableCollection<EntityInOutDeliveryD> _prm_entityListD,
                                       EntityInOutDeliveryH _prm_before_entityH,
                                       ObservableCollection<EntityInOutDeliveryD> _prm_before_entityListD)
        {

            #region Set Entity Detail

            _prm_before_entityListD.Clear();

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

                EntityInOutDeliveryD _entityD = new EntityInOutDeliveryD();

                _entityD._id = _prm_entityListD[i]._id;
                _entityD._rec_no = _prm_entityListD[i]._rec_no;
                //_entityD._breakdown_id = _prm_entityListD[i]._breakdown_id;
                //_entityD._breakdown_nm = _prm_entityListD[i]._breakdown_nm;
                //_entityD._deliver_division_id = _prm_entityListD[i]._deliver_division_id;
                //_entityD._deliver_division_nm = _prm_entityListD[i]._deliver_division_nm;
                _entityD._commodity_id = _prm_entityListD[i]._commodity_id;
                _entityD._commodity_name = _prm_entityListD[i]._commodity_name;
                _entityD._unit_id = _prm_entityListD[i]._unit_id;
                _entityD._unit_nm = _prm_entityListD[i]._unit_nm;
                _entityD._enter_number = _prm_entityListD[i]._enter_number;
                _entityD._case_number = _prm_entityListD[i]._case_number;
                _entityD._number = _prm_entityListD[i]._number;
                //_entityD._unit_price = _prm_entityListD[i]._unit_price;
                //_entityD._sales_cost = _prm_entityListD[i]._sales_cost;
                //_entityD._tax = _prm_entityListD[i]._tax;
                //_entityD._no_tax_price = _prm_entityListD[i]._no_tax_price;
                //_entityD._price = _prm_entityListD[i]._price;
                //_entityD._profits = _prm_entityListD[i]._profits;
                //_entityD._profits_percent = _prm_entityListD[i]._profits_percent;
                //_entityD._tax_division_id = _prm_entityListD[i]._tax_division_id;
                //_entityD._tax_division_nm = _prm_entityListD[i]._tax_division_nm;
                //_entityD._tax_percent = _prm_entityListD[i]._tax_percent;
                _entityD._inventory_management_division_id = _prm_entityListD[i]._inventory_management_division_id;
                _entityD._inventory_number = _prm_entityListD[i]._inventory_number;
                //_entityD._retail_price_skip_tax = _prm_entityListD[i]._retail_price_skip_tax;
                //_entityD._retail_price_before_tax = _prm_entityListD[i]._retail_price_before_tax;
                //_entityD._sales_unit_price_skip_tax = _prm_entityListD[i]._sales_unit_price_skip_tax;
                //_entityD._sales_unit_price_before_tax = _prm_entityListD[i]._sales_unit_price_before_tax;
                //_entityD._sales_cost_price_skip_tax = _prm_entityListD[i]._sales_cost_price_skip_tax;
                //_entityD._sales_cost_price_before_tax = _prm_entityListD[i]._sales_cost_price_before_tax;
                _entityD._number_decimal_digit = _prm_entityListD[i]._number_decimal_digit;
                //_entityD._unit_decimal_digit = _prm_entityListD[i]._unit_decimal_digit;
                //_entityD._order_id = _prm_entityListD[i]._order_id;
                //_entityD._order_number = _prm_entityListD[i]._order_number;
                //_entityD._order_stay_number = _prm_entityListD[i]._order_stay_number;
                _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._red_before_no = _prm_entityH._red_before_no;
            //_prm_before_entityH._order_no = _prm_entityH._order_no;
            //_prm_before_entityH._estimateno = _prm_entityH._estimateno;
            _prm_before_entityH._in_out_delivery_ymd = _prm_entityH._in_out_delivery_ymd;

            _prm_before_entityH._in_out_delivery_kbn = _prm_entityH._in_out_delivery_kbn;
            _prm_before_entityH._in_out_delivery_kbn_nm = _prm_entityH._in_out_delivery_kbn_nm;
            _prm_before_entityH._in_out_delivery_to_kbn = _prm_entityH._in_out_delivery_to_kbn;
            _prm_before_entityH._in_out_delivery_to_kbn_nm = _prm_entityH._in_out_delivery_to_kbn_nm;
            _prm_before_entityH._in_out_delivery_proc_kbn = _prm_entityH._in_out_delivery_proc_kbn;
            _prm_before_entityH._in_out_delivery_proc_kbn_nm = _prm_entityH._in_out_delivery_proc_kbn_nm;

            _prm_before_entityH._cause_no = _prm_entityH._cause_no;

            _prm_before_entityH._group_id_to = _prm_entityH._group_id_to;
            _prm_before_entityH._group_id_to_nm = _prm_entityH._group_id_to_nm;
            _prm_before_entityH._customer_id = _prm_entityH._customer_id;
            _prm_before_entityH._customer_name = _prm_entityH._customer_name;
            _prm_before_entityH._purchase_id = _prm_entityH._purchase_id;
            _prm_before_entityH._purchase_name = _prm_entityH._purchase_name;
            //_prm_before_entityH._business_division_id = _prm_entityH._business_division_id;
            //_prm_before_entityH._business_division_name = _prm_entityH._business_division_name;
            //_prm_before_entityH._supplier_id = _prm_entityH._supplier_id;
            //_prm_before_entityH._supplier_name = _prm_entityH._supplier_name;
            //_prm_before_entityH._supply_ymd = _prm_entityH._supply_ymd;
            _prm_before_entityH._sum_enter_number = _prm_entityH._sum_enter_number;
            _prm_before_entityH._sum_case_number = _prm_entityH._sum_case_number;
            _prm_before_entityH._sum_number = _prm_entityH._sum_number;
            //_prm_before_entityH._sum_unit_price = _prm_entityH._sum_unit_price;
            //_prm_before_entityH._sum_sales_cost = _prm_entityH._sum_sales_cost;
            //_prm_before_entityH._sum_tax = _prm_entityH._sum_tax;
            //_prm_before_entityH._sum_no_tax_price = _prm_entityH._sum_no_tax_price;
            //_prm_before_entityH._sum_price = _prm_entityH._sum_price;
            //_prm_before_entityH._sum_profits = _prm_entityH._sum_profits;
            //_prm_before_entityH._profits_percent = _prm_entityH._profits_percent;
            //_prm_before_entityH._invoice_close_flg = _prm_entityH._invoice_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._price_fraction_proc_id = _prm_entityH._price_fraction_proc_id;
            //_prm_before_entityH._tax_fraction_proc_id = _prm_entityH._tax_fraction_proc_id;
            //_prm_before_entityH._unit_kind_id = _prm_entityH._unit_kind_id;
            //_prm_before_entityH._credit_limit_price = _prm_entityH._credit_limit_price;
            //_prm_before_entityH._sales_credit_price = _prm_entityH._sales_credit_price;
            //_prm_before_entityH._before_sales_credit_price = _prm_entityH._before_sales_credit_price;
            //_prm_before_entityH._invoice_id = _prm_entityH._invoice_id;
            //_prm_before_entityH._invoice_name = _prm_entityH._invoice_name;
            //_prm_before_entityH._invoice_yyyymmdd = _prm_entityH._invoice_yyyymmdd;
            //_prm_before_entityH._credit_rate = _prm_entityH._credit_rate;
            //_prm_before_entityH._collect_day = _prm_entityH._collect_day;
            //_prm_before_entityH._collect_cycle_id = _prm_entityH._collect_cycle_id;
            //_prm_before_entityH._invoice_no = _prm_entityH._invoice_no;
            //_prm_before_entityH._invoice_state = _prm_entityH._invoice_state;
            //_prm_before_entityH._receipt_receivable_kbn = _prm_entityH._receipt_receivable_kbn;
            //_prm_before_entityH._receipt_receivable_kbn_nm = _prm_entityH._receipt_receivable_kbn_nm;
            _prm_before_entityH._lock_flg = _prm_entityH._lock_flg;
            _prm_before_entityH._message = _prm_entityH._message;

            #endregion
        }
        public override void RecordAdd()
        {
            if (Common.gblnDesynchronizeLock == true) return;

            if (_entityListD == null) _entityListD = new ObservableCollection<EntityInOutDeliveryD>();

            EntityInOutDeliveryD entity = new EntityInOutDeliveryD();
            int cnt = 1;
            if (_entityListD != null) cnt = _entityListD.Count + 1;
            entity._rec_no = cnt;
            SetInitCombo(ref entity);   // コンボボックス初期選択
            _entityListD.Add(entity);
            dg.SelectedIndex = ExCast.zCInt(entity._rec_no) - 1;
            dg.Focus();
            if (dg.CurrentColumn != null)
            {
                dg.ScrollIntoView(entity, dg.Columns[0]);
                dg.CommitEdit();
                dg.CurrentColumn = dg.Columns[0];
                dg.BeginEdit();
                dg.MoveNextCell();
            }

            // ファンクションキー設定
            string _activeCtlName = "";
            if (this.activeControl != null) _activeCtlName = ExCast.zCStr(this.activeControl.Name);
            switch (_activeCtlName)
            {
                case "txtGoodsName":
                case "cboUnit":
                case "txtEnterNum":
                case "txtNumber":
                case "txtCaseNum":
                case "txtGoodsID":
                    if (this._entityListD.Count > 1)
                    {
                        ExVisualTreeHelper.SetFunctionKeyEnabled("F8", true, this);
                    }
                    else
                    {
                        ExVisualTreeHelper.SetFunctionKeyEnabled("F8", false, this);
                    }
                    break;
            }
        }
 private void SetInitCombo(ref EntityInOutDeliveryD entityD)
 {
     // コンボボックス初期選択
     List<string> lst;
     lst = MeiNameList.GetListMei(MeiNameList.geNameKbn.UNIT_ID);
     entityD._unit_nm = lst[0];
     entityD._unit_id = MeiNameList.GetID(MeiNameList.geNameKbn.UNIT_ID, lst[0]);
 }