public DataTable QuerySwitch(QueryType QT,
                                     ArrayList ParameterList
                                     )
        {
            VDS_ALO_STOREASSIGN_MAIN_DBO ALOM = new VDS_ALO_STOREASSIGN_MAIN_DBO(ref USEDB);
            DataTable Dt;

            try
            {
                switch (QT)
                {
                    case QueryType.ALL:
                        Dt = ALOM.doQueryAll();
                        break;
                    case QueryType.CODE:
                        Dt = ALOM.doQueryByCode(ParameterList);
                        break;
                    case QueryType.ID:
                        Dt = ALOM.doQueryByID(ParameterList);
                        break;
                    case QueryType.Custom:
                        Dt = ALOM.doQueryByFind(ParameterList);
                        break;
                    default:
                        Dt = new DataTable();
                        break;
                }

                return Dt;
            }
            catch (Exception ex)
            {
                throw GetNewException(ex);
            }
        }
 public DataTable QueryMasterByALL()
 {
     try
     {
         VDS_ALO_STOREASSIGN_MAIN_DBO ALOM = new VDS_ALO_STOREASSIGN_MAIN_DBO(ref USEDB);
         return ALOM.doQueryAll();
     }
     catch (Exception ex)
     {
         throw GetNewException(ex);
     }
 }
 public DataTable QueryMasterByFind2(ArrayList ParameterList)
 {
     try
     {
         VDS_ALO_STOREASSIGN_MAIN_DBO ALOM = new VDS_ALO_STOREASSIGN_MAIN_DBO(ref USEDB);
         return ALOM.doQueryByFind2(ParameterList);
     }
     catch (Exception ex)
     {
         throw GetNewException(ex);
     }
 }
        /// <summary>
        /// 基本表單更新BCO
        /// </summary>
        /// <param name="ParameterList">輸入變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳更新成功與否</returns>
        public bool UpdateMasterAndDetail(ArrayList ParameterList, DataTable DetailData,string strUIDForLog,DataTable dtForDetailDeleted, DbTransaction RootDBT)
        {
            #region
            bool IsRootTranscation = false;
            bool bResult = false;
            try
            {
                if (DetailData != null)
                {
                    VDS_ALO_STOREASSIGN_MAIN_DBO ALOM = new VDS_ALO_STOREASSIGN_MAIN_DBO(ref USEDB);

                    //判斷是否有傳入Root Transcation 
                    IsRootTranscation = (RootDBT == null) ? true : false;

                    #region 啟動交易或指定RootTranscation

                    if (IsRootTranscation)
                    {
                        //獨立呼叫啟動Transcation
                        Conn = USEDB.CreateConnection();
                        Conn.Open();
                        DBT = Conn.BeginTransaction();
                    }
                    else
                    {
                        DBT = RootDBT;
                    }

                    #endregion

                    bResult = UpdateMaster(ParameterList, DBT);

                    if (bResult)
                    {
                        bResult = UpdateDetail(DetailData, strUIDForLog,dtForDetailDeleted, DBT);

                        #region 交易成功

                        if (IsRootTranscation)
                        {
                            //獨立呼叫Transcation成立
                            DBT.Commit();
                        }

                        #endregion
                    }
                    else
                    {
                        throw new Exception("新增0筆資料!");
                    }
                }
                else 
                {
                    bResult = true;//throw new Exception("新增0筆資料!");
                }
                return bResult;

            }
            catch (Exception ex)
            {
                #region 交易失敗

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation失敗
                    DBT.Rollback();
                }

                #endregion

                throw GetNewException(ex);
            }
            finally
            {
                #region 判斷是否關閉交易連線

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation,關閉連線
                    if (Conn.State == ConnectionState.Connecting)
                    {
                        Conn.Close();
                    }
                }
                #endregion
            }
            #endregion
        }
        /// <summary>
        /// 基本表單新增BCO
        /// </summary>
        /// <param name="ParameterList">輸入變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳新增之ID</returns>
        public int CreateMasterAndDetail(ArrayList ParameterList, DataTable DetailData, DbTransaction RootDBT)
        {
            #region
            bool IsRootTranscation = false;
            Int32 PID = 0;
            try
            {
                VDS_ALO_STOREASSIGN_MAIN_DBO ALOM = new VDS_ALO_STOREASSIGN_MAIN_DBO(ref USEDB);

                //判斷是否有傳入Root Transcation 
                IsRootTranscation = (RootDBT == null) ? true : false;

                #region 啟動交易或指定RootTranscation

                if (IsRootTranscation)
                {
                    //獨立呼叫啟動Transcation
                    Conn = USEDB.CreateConnection();
                    Conn.Open();
                    DBT = Conn.BeginTransaction();
                }
                else
                {
                    DBT = RootDBT;
                }

                #endregion

                PID = CreateMaster(ParameterList, DBT);
                if (PID != 0)
                {
                    CreateDetail(PID, DetailData, DBT);

                    #region 交易成功

                    if (IsRootTranscation)
                    {
                        //獨立呼叫Transcation成立
                        DBT.Commit();
                    }

                    #endregion
                }
                else
                {
                    throw new Exception("新增0筆資料!");
                }

                return PID;

            }
            catch (Exception ex)
            {
                #region 交易失敗

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation失敗
                    DBT.Rollback();
                }

                #endregion

                throw GetNewException(ex);
            }
            finally
            {
                #region 判斷是否關閉交易連線

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation,關閉連線
                    if (Conn.State == ConnectionState.Connecting)
                    {
                        Conn.Close();
                    }
                }
                #endregion
            }
            #endregion
        }
        /// <summary>
        /// 基本表單刪除BCO
        /// </summary>
        /// <param name="ParameterList">刪除變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳影響筆數</returns>
        public bool DeleteMaster(ArrayList ParameterList,
                                      DbTransaction RootDBT
                                      )
        {
            bool IsRootTranscation = false;
            bool bResult = false;

            try
            {
                VDS_ALO_STOREASSIGN_MAIN_DBO ALOM = new VDS_ALO_STOREASSIGN_MAIN_DBO(ref USEDB);

                //判斷是否有傳入Root Transcation 
                IsRootTranscation = (RootDBT == null) ? true : false;

                #region 啟動交易或指定RootTranscation

                if (IsRootTranscation)
                {
                    //獨立呼叫啟動Transcation
                    Conn = USEDB.CreateConnection();
                    Conn.Open();
                    DBT = Conn.BeginTransaction();
                }
                else
                {
                    DBT = RootDBT;
                }

                #endregion

                ALOM.doDelete(ParameterList, DBT);

                #region 交易成功

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation成立
                    DBT.Commit();
                }

                #endregion

                bResult = true;
                return bResult;

            }
            catch (Exception ex)
            {
                #region 交易失敗

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation失敗
                    DBT.Rollback();
                }

                #endregion

                throw GetNewException(ex);
            }
            finally
            {
                #region 判斷是否關閉交易連線

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation,關閉連線
                    if (Conn.State == ConnectionState.Connecting)
                    {
                        Conn.Close();
                    }
                }

                #endregion

            }


        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="htParams"></param>
        /// <returns></returns>
        public bool CheckStoreAssignItemInclude(Hashtable htParams)
        {
            try
            {
                VDS_ALO_STOREASSIGN_MAIN_DBO ALOM = new VDS_ALO_STOREASSIGN_MAIN_DBO(ref USEDB);
                
                //1) 設定[@驗證結果]=否;
                bool bResult = false;

                DataTable dt = ALOM.doGetStoreAssignForCheck(htParams);

                //2) 根據[@通路]、[@門市],檢查是否已設定門市指定商品相關資訊,取得查詢資料集[@C_1]下:
                //select count(*), sm.ROOT_NO, sm.PMA, sm.PATTERN_NO, sm.ITEM
                //  from sm,sd 
                // where sm.Enable=1 and sm.id =sd.pid 
                //   and sm.chan_no = [@通路] and sm.store =[@門市]
                //[@C_1]檢查結果為無資料 => 可新增任何品項,停止檢查流程,回傳[@驗證結果]=是
                if (dt == null || dt.Rows.Count == 0)
                {
                    bResult = true;
                }
                else
                {
                    //3) [@C_1]檢查結果有資料,進行下列檢查。
                    //   a) 根據[@品號],由商品主檔[i]取得分類資訊[@C_Item]如下:
                    //      select ROOT_NO, PMA, Pattern_no,ITEM
                    //        from VDS_ITM_ITEM 
                    //       where Enable=1 and ITEM=[@品號]
                    DataTable dt2 = ALOM.doGetItemDataForCheck(htParams);

                    if (dt2 != null && dt2.Rows.Count > 0)
                    {
                        for (Int32 i = 0; i <= dt.Rows.Count - 1; i++)
                        {
                            if (bResult)
                                break;
                            //   b) 檢查[@C_1],依序執行檢查條件,當下列任一條件符合時,設定[@驗證結果]=是,停止檢查流程
                            for (Int32 k = 0; k <= dt2.Rows.Count - 1; k++)
                            {

                                if (dt.Rows[i]["item"].ToString().Trim() == dt2.Rows[k]["item"].ToString().Trim())
                                {
                                    //      # [@品號]資料存在於[門市指定商品設定資訊]時:
                                    //        存在 [@C_1].ITEM= [@C_Item].ITEM之資料
                                    bResult = true;
                                    break;
                                }
                                else if ((dt.Rows[i]["pattern"].ToString().Trim() == dt2.Rows[k]["pattern_no"].ToString().Trim()) && dt.Rows[i]["item"].ToString().Trim() == "")
                                {
                                    //      # [@品號]所屬之{Pattern分類}存在於[門市指定商品設定資訊]時:
                                    //        存在 [@C_1].PATTERN_NO =[@C_Item].PATTERN_NO  and [@C_1].ITEM為空值 之資料
                                    bResult = true;
                                    break;
                                }
                                else if ((dt.Rows[i]["root_no"].ToString().Trim() == dt2.Rows[k]["root_no"].ToString().Trim()) &&
                                         (dt.Rows[i]["pma"].ToString().Trim() == dt2.Rows[k]["pma"].ToString().Trim()) &&
                                          dt.Rows[i]["pattern"].ToString().Trim() == "" && dt.Rows[i]["item"].ToString().Trim() == "")
                                {

                                    //      # [@品號]所屬之{群分類+大分類}存在於[門市指定商品設定資訊]時:
                                    //        存在    [@C_1].ROOT_NO =[@C_Item].ROOT_NO 
                                    //            and [@C_1].PMA =[@C_Item].PMA  
                                    //            and [@C_1].PATTERN_NO 為空值 
                                    //            and [@C_1].ITEM 為空值  之資料
                                    bResult = true;
                                    break;
                                }
                            }
                        }
                    }
                }


                return bResult;

            }
            catch (Exception ex)
            {
                throw GetNewException(ex);
            }
        }