Esempio n. 1
0
        /// <summary>
        /// 基本表單刪除BCO
        /// </summary>
        /// <param name="htParams">刪除變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳影響筆數</returns>
        public bool DeleteDetailAndLog(Hashtable htParams,
                                      DbTransaction RootDBT
                                      )
        {
            bool IsRootTranscation = false;
            bool bResult = false;

            try
            {
                VDS_ALO_STORESPEC_DETL_DBO ALOD = new VDS_ALO_STORESPEC_DETL_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

                ALOD.doDelAndLogbyPID(htParams, 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

            }


        }
Esempio n. 2
0
        /// <summary>
        /// 基本表單更新BCO
        /// </summary>
        /// <param name="DetailData">更新變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳成功與否</returns>
        public bool UpdateDetail(DataTable dtForDetailAddedOrModified, string strUIDForLog, DataTable dtForDetailDeleted, DbTransaction RootDBT)
        {
            bool IsRootTranscation = false;
            bool bResult = false;
            try
            {
                VDS_ALO_STORESPEC_DETL_DBO ALOD = new VDS_ALO_STORESPEC_DETL_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

                Hashtable htParams = new Hashtable();

                if (dtForDetailDeleted != null)
                {
                    #region
                    for (Int32 i = 0; i <= dtForDetailDeleted.Rows.Count - 1; i++)
                    {
                        if (dtForDetailDeleted.Rows[i].RowState != DataRowState.Deleted)
                        {
                            #region
                            htParams.Clear();
                            htParams.Add("ID",dtForDetailDeleted.Rows[i]["ID"]);
                            htParams.Add("PID", dtForDetailDeleted.Rows[i]["PID"]);
                            htParams.Add("CREATEDATE", dtForDetailDeleted.Rows[i]["CREATEDATE"]);
                            htParams.Add("CREATEUID", dtForDetailDeleted.Rows[i]["CREATEUID"]);
                            htParams.Add("UPDATEDATE", dtForDetailDeleted.Rows[i]["UPDATEDATE"]);
                            htParams.Add("UPDATEUID", dtForDetailDeleted.Rows[i]["UPDATEUID"]);
                            htParams.Add("START_RANKQTY", dtForDetailDeleted.Rows[i]["START_RANKQTY"]);
                            htParams.Add("END_RANKQTY", dtForDetailDeleted.Rows[i]["END_RANKQTY"]);
                            htParams.Add("ADJ_QTY", dtForDetailDeleted.Rows[i]["ADJ_QTY"]);
                            htParams.Add("UIDForLog", strUIDForLog);
                            ALOD.doDelete(htParams, DBT);
                            #endregion
                        }
                    }
                    #endregion
                }


                if (dtForDetailAddedOrModified != null)
                {
                    #region
                    for (Int32 i = 0; i <= dtForDetailAddedOrModified.Rows.Count - 1; i++)
                    {
                        if ((dtForDetailAddedOrModified.Rows[i].RowState == DataRowState.Added) || (dtForDetailAddedOrModified.Rows[i].RowState == DataRowState.Modified))
                        {
                            #region
                            htParams.Clear();
                            htParams.Add("ID", dtForDetailAddedOrModified.Rows[i]["ID"]);
                            htParams.Add("PID", dtForDetailAddedOrModified.Rows[i]["PID"]);
                            htParams.Add("CREATEDATE", dtForDetailAddedOrModified.Rows[i]["CREATEDATE"]);
                            htParams.Add("CREATEUID", dtForDetailAddedOrModified.Rows[i]["CREATEUID"]);
                            htParams.Add("UPDATEDATE", dtForDetailAddedOrModified.Rows[i]["UPDATEDATE"]);
                            htParams.Add("UPDATEUID", dtForDetailAddedOrModified.Rows[i]["UPDATEUID"]);
                            htParams.Add("START_RANKQTY", dtForDetailAddedOrModified.Rows[i]["START_RANKQTY"]);
                            htParams.Add("END_RANKQTY", dtForDetailAddedOrModified.Rows[i]["END_RANKQTY"]);
                            htParams.Add("ADJ_QTY", dtForDetailAddedOrModified.Rows[i]["ADJ_QTY"]);

                            ALOD.doCreate(htParams, DBT);
                            #endregion
                        }
                    }
                    #endregion
                }


                #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

            }
        }
Esempio n. 3
0
        /// <summary>
        /// 基本表單新增BCO
        /// </summary>
        /// <param name="DetailData">輸入變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳異動筆數</returns>
        public void CreateDetail(Int32 PID, DataTable DetailData, DbTransaction RootDBT)
        {
            bool IsRootTranscation = false;
            try
            {
                VDS_ALO_STORESPEC_DETL_DBO ALOD = new VDS_ALO_STORESPEC_DETL_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

                Hashtable htParams = new Hashtable();

                for (Int32 i = 0; i <= DetailData.Rows.Count - 1; i++)
                {
                    if (DetailData.Rows[i].RowState != DataRowState.Deleted)
                    {
                        htParams.Clear();
                        htParams.Add("PID", PID);
                        htParams.Add("ID", DetailData.Rows[i]["ID"]);
                        htParams.Add("CREATEDATE", DetailData.Rows[i]["CREATEDATE"]);
                        htParams.Add("CREATEUID", DetailData.Rows[i]["CREATEUID"]);
                        htParams.Add("UPDATEDATE", DetailData.Rows[i]["UPDATEDATE"]);
                        htParams.Add("UPDATEUID", DetailData.Rows[i]["UPDATEUID"]);
                        htParams.Add("START_RANKQTY", DetailData.Rows[i]["START_RANKQTY"]);
                        htParams.Add("END_RANKQTY", DetailData.Rows[i]["END_RANKQTY"]);
                        htParams.Add("ADJ_QTY", DetailData.Rows[i]["ADJ_QTY"]);
                        ALOD.doCreate(htParams, DBT);
                    }
                }

                #region 交易成功

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

                #endregion

            }
            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

            }
        }
Esempio n. 4
0
 public DataTable QueryDetlByPID(Hashtable htParams)
 {
     #region
     try
     {
         VDS_ALO_STORESPEC_DETL_DBO ALOD = new VDS_ALO_STORESPEC_DETL_DBO(ref USEDB);
         return ALOD.doQueryDetlByPID(htParams);
     }
     catch (Exception ex)
     {
         throw GetNewException(ex);
     }
     #endregion
 }
Esempio n. 5
0
        public bool CopyToNewItem(Hashtable htParams, DbTransaction RootDBT)
        {
            #region
            bool IsRootTranscation = false;

            bool bResult = false;
            Int32 PID = 0;
            Hashtable htParamsMaster = new Hashtable();
            DataTable dtForCopyDetail = new DataTable();
            DataRow dr;
            dtForCopyDetail.Columns.Add("ID");
            dtForCopyDetail.Columns.Add("CREATEDATE");
            dtForCopyDetail.Columns.Add("CREATEUID");
            dtForCopyDetail.Columns.Add("UPDATEDATE");
            dtForCopyDetail.Columns.Add("UPDATEUID");
            dtForCopyDetail.Columns.Add("START_RANKQTY");
            dtForCopyDetail.Columns.Add("END_RANKQTY");
            dtForCopyDetail.Columns.Add("ADJ_QTY");

            string strCurrentId = "", strLastId = "";

            try
            {
                VDS_ALO_STORESPEC_MAIN_DBO ALOM = new VDS_ALO_STORESPEC_MAIN_DBO(ref USEDB);
                VDS_ALO_STORESPEC_DETL_DBO ALOD = new VDS_ALO_STORESPEC_DETL_DBO(ref USEDB);


                #region    取得相關資料

                DataTable dtForCopy = ALOM.doQueryForCopyToNewItem(htParams);
                Hashtable htTemp = new Hashtable();
                string strErrMsg = "";
                if (dtForCopy != null && dtForCopy.Rows.Count > 0)
                {
                    for (Int32 i = dtForCopy.Rows.Count - 1; i >= 0; i--)
                    {
                        htTemp.Clear();
                        htTemp.Add("ChanNo", dtForCopy.Rows[i]["chan_no"].ToString().Trim());
                        htTemp.Add("Store", dtForCopy.Rows[i]["store"].ToString().Trim());
                        htTemp.Add("Item", dtForCopy.Rows[i]["new_item"].ToString().Trim());

                        if (dtForCopy.Rows[i]["s_end_date"] != DBNull.Value)
                            htTemp.Add("StartDate", ((DateTime)dtForCopy.Rows[i]["s_start_date"]).ToString("yyyy/MM/dd"));
                        else
                            htTemp.Add("StartDate", null);

                        if (dtForCopy.Rows[i]["s_end_date"] != DBNull.Value)
                            htTemp.Add("EndDate", ((DateTime)dtForCopy.Rows[i]["s_end_date"]).ToString("yyyy/MM/dd"));
                        else
                            htTemp.Add("EndDate", null);

                        if (!CheckStoreSpecCanAdd(htTemp, ref strErrMsg))
                        {
                            dtForCopy.Rows.RemoveAt(i);
                        }
                    }
                }
                else { throw new Exception("複製失敗!"); }

                #endregion

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

                #region 啟動交易或指定RootTranscation

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

                #endregion

                if (dtForCopy != null && dtForCopy.Rows.Count > 0)
                {

                    for (Int32 i = 0; i <= dtForCopy.Rows.Count - 1; i++)
                    {
                        #region
                        //MASTER
                        strCurrentId = dtForCopy.Rows[i]["ID"].ToString().Trim();

                        if (strCurrentId != strLastId)
                        {
                            #region 記錄主檔
                            htParamsMaster.Clear();
                            htParamsMaster.Add("CODE", dtForCopy.Rows[i]["new_code"]);
                            htParamsMaster.Add("UserID", dtForCopy.Rows[i]["createuid"]);
                            htParamsMaster.Add("ChanNO", dtForCopy.Rows[i]["chan_no"]);
                            htParamsMaster.Add("STORE", dtForCopy.Rows[i]["store"]);
                            htParamsMaster.Add("ITEM", dtForCopy.Rows[i]["new_item"]);
                            htParamsMaster.Add("SPEC_TYPE", dtForCopy.Rows[i]["spec_type"]);
                            htParamsMaster.Add("SPEC_QTY", dtForCopy.Rows[i]["spec_qty"]);
                            htParamsMaster.Add("S_START_DATE", dtForCopy.Rows[i]["s_start_date"]);
                            htParamsMaster.Add("S_END_DATE", dtForCopy.Rows[i]["s_end_date"]);
                            htParamsMaster.Add("REASON", dtForCopy.Rows[i]["reason"]);
                            #endregion
                            //DETAIL
                            dtForCopyDetail.Clear();
                            DataRow[] dRows = dtForCopy.Select("ID=" + strCurrentId);
                            // 2009-06-18
                            // 用舊的方式,只要有明細就會被新增到detl不管是不是正確的值
                            //for (Int32 k = 0; k <= dtForCopy.Rows.Count - 1; k++)
                            #region 記錄明細
                            foreach (DataRow oRow in dRows)
                            {
                                dr = dtForCopyDetail.NewRow();
                                #region old
                                //dr["ID"] = strCurrentId;
                                //dr["CREATEDATE"] = DateTime.Now;
                                //dr["CREATEUID"] = dtForCopy.Rows[k]["createuid"];
                                //dr["UPDATEDATE"] = DateTime.Now;
                                //dr["UPDATEUID"] = dtForCopy.Rows[k]["updateuid"];
                                //dr["START_RANKQTY"] = dtForCopy.Rows[k]["start_rankqty"];
                                //dr["END_RANKQTY"] = dtForCopy.Rows[k]["end_rankqty"];
                                //dr["ADJ_QTY"] = dtForCopy.Rows[k]["adj_qty"];
                                #endregion

                                #region 新增明細
                                dr["ID"] = strCurrentId;
                                dr["CREATEDATE"] = DateTime.Now;
                                dr["CREATEUID"] = oRow["createuid"];
                                dr["UPDATEDATE"] = DateTime.Now;
                                dr["UPDATEUID"] = oRow["updateuid"];
                                dr["START_RANKQTY"] = oRow["start_rankqty"];
                                dr["END_RANKQTY"] = oRow["end_rankqty"];
                                dr["ADJ_QTY"] = oRow["adj_qty"];
                                #endregion
                                dtForCopyDetail.Rows.Add(dr);
                            }
                            #endregion

                            #region 處理新增
                            PID = CreateMaster(htParamsMaster, DBT);

                            if (PID != 0)
                            {
                                if (dtForCopyDetail != null)
                                    CreateDetail(PID, dtForCopyDetail, DBT);
                            }
                            else
                            {
                                throw new Exception("複製0筆資料!");
                            }
                            #endregion
                            
                        }
                        strLastId = dtForCopy.Rows[i]["ID"].ToString().Trim();
                        #endregion
                    }


                    #region 交易成功

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

                    #endregion


                    bResult = true;

                }
                else
                {
                    bResult = false;
                }

                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
        }
Esempio n. 6
0
        /// <summary>
        ///1.目的:將上傳檔案內容,存入暫存檔

        ///2.傳入參數:@處理檔名、@使用者
        ///  回傳參數:@處理筆數、@正確筆數、@錯誤筆數、@錯誤訊息

        ///3.處理表格:VDS_ALO_STORESPEC_TMP(T)

        ///4.處理邏輯:

        ///  4.1) 先清除前一次,同一使用者執行的匯入暫存資訊與錯誤資訊。
        ///       相關Table:VDS_ALO_STORESPEC_TM
        ///  4.2) 讀取匯入檔案到暫存資料集。
        ///  4.3) 檢查匯入檔案格式內容是否正確,如有任何錯誤,則停止上傳流程,並回傳錯誤訊息。
        ///       『XX檔案,檔案內容錯誤:@錯誤說明』 (格式請參考資料庫Table Shcema)
        ///         * 日期:檢查日期格式。
        ///         * 數字:檢查內容是否為數字。
        ///         * 文字:檢查長度是否溢位。
        ///         * 檔案欄位數是否不足。
        ///         * 檢查必填欄位是否有值:通路、店號、品號、數量、原因代碼、設定類別
        ///         * 工作表匯入內容有任一筆錯,皆視為錯誤,整批放棄。
        ///         * 匯入表格細節說明請參考:Excel文件
        ///  4.4) 格式檢查正確無誤後
        ///       a) 暫存檔中的[狀態]欄位調整為1:FILE TO TMP
        ///       b) 呼叫 [CheckData] ,檢查資料內容邏輯正確性 
        ///  4.5) 無論CheckData()檢查結果是否為True,
        ///       皆將上傳檔案內容新增到資料庫Tmp Table:,
        ///       並記錄錯誤原因、匯入者、匯入日期、處理檔案名稱=上傳檔名。

        ///5. 回傳處理結果(@處理筆數、@正確筆數、@錯誤筆數、@錯誤訊息(無錯誤時=null) )   
        /// </summary>
        public ArrayList FileToTmp(DataSet ds_Excel, DateTime d_CreateDate, string s_LoginUser, string s_AP_FileName, string V_SESSION_ID)
        {
            #region
            int i_newTable_Count = 0;
            ArrayList arl_Return = new ArrayList();
            ArrayList arr_CheckData_Table = new ArrayList();
            ArrayList arr_CheckData = new ArrayList();
            int i_FileToTemp_Total_count = 0;
            int i_FileToTemp_Right_count = 0;
            int i_FileToTemp_Wrong_count = 0;
            bool b_Check_Logic = true;
            ArrayList paramTemp = new ArrayList();
            Hashtable htTemp = new Hashtable();

            DataTable dtTemp = new DataTable();
            string strErrMsg = "";
            string strErrMsgDataFormat = "";

            Int32 iErrCount = 0;

            string strTemp = "";
            bool bResultTemp = false;

            try
            {
                ParameterList.Clear();
                DataTable dt_ALO_IMPORT_TMP = QuerySwitch(QueryType.GetStoreSpec_TmpSchema, ParameterList);
                VDS_ALO_DIS_PATTERN_DBO ALO_DIS_PATTERN = new VDS_ALO_DIS_PATTERN_DBO(ref USEDB);
                VDS_ALO_STORESPEC_TMP_DBO ALO_STORESPEC_TMP = new VDS_ALO_STORESPEC_TMP_DBO(ref USEDB);
                VDS_ALO_STORESPEC_DETL_DBO ALO_STORESPEC_DETL = new VDS_ALO_STORESPEC_DETL_DBO(ref USEDB);
                MaintainStoreSpec ALO_STORESPEC_MAIN = new MaintainStoreSpec(ConnectionDB);
                QueryALOCommon BCOCommon = new QueryALOCommon(ConnectionDB);


                //20090626 added
                VDS_ALO_STORESPEC_TMP_DBO DBO = new VDS_ALO_STORESPEC_TMP_DBO(ref USEDB);
                ParameterList.Clear();
                ParameterList.Add(s_LoginUser);
                ParameterList.Add(V_SESSION_ID);
                DBO.doDelete_STORESPEC_TMP(ParameterList, null);


                foreach (System.Data.DataRow dRow in ds_Excel.Tables[0].Rows)
                {
                    #region
                    iErrCount = 0;
                    strErrMsg = "";

                    if (!CheckRequiredField(dRow, iAryRequiredColumnsCheck, out strErrMsgDataFormat))//檢查必填欄位
                    {
                        #region 檢查資料格式正確性
                        arl_Return.Add("FALSE");
                        arl_Return.Add(strErrMsgDataFormat);
                        return arl_Return;
                    }
                    else if (!CheckOverFlow(dRow, iAryOverflowColumnsCheck, out strErrMsgDataFormat))//檢查是否為溢位
                    {
                        arl_Return.Add("FALSE");
                        arl_Return.Add(strErrMsgDataFormat);
                        return arl_Return;
                    }
                    else if (!CheckInputValueIsInt32_2(dRow, iAryRequiredColumnsCheck, out strErrMsgDataFormat))//檢查是否為數值
                    {   //2009-06-26 cyhsu 改用 CheckInputValueIsInt32_2 
                        //因為數值欄位部分條件下可輸入負值,所以在格式檢查時不檢查正負號
                        arl_Return.Add("FALSE");
                        arl_Return.Add(strErrMsgDataFormat);
                        return arl_Return;
                        #endregion
                    }
                    else
                    {
                        #region 檢查資料邏輯正確性

                        #region 將資料寫入 TEMP TABLE

                        DataRow dRow_Temp = dt_ALO_IMPORT_TMP.NewRow();

                        dRow_Temp["CREATEDATE"] = d_CreateDate;
                        dRow_Temp["CREATEUID"] = s_LoginUser;
                        dRow_Temp["ID"] = i_newTable_Count;
                        dRow_Temp["UPDATEDATE"] = d_CreateDate;
                        dRow_Temp["UPDATEUID"] = s_LoginUser;
                        dRow_Temp["CHAN_NO"] = dRow[1].ToString().Trim();
                        dRow_Temp["STORE"] = dRow[2].ToString().Trim();
                        dRow_Temp["ITEM"] = dRow[3].ToString().Trim();
                        dRow_Temp["SPEC_QTY"] = Int32.Parse(dRow[5].ToString().Trim());
                        dRow_Temp["REASON"] = dRow[6].ToString().Trim();
                        dRow_Temp["SPEC_TYPE"] = dRow[7].ToString().Trim();
                        dRow_Temp["SESSION_ID"] = V_SESSION_ID;

                        #endregion

                        #region 4.1 判斷是否可新增
                        htTemp.Clear();
                        strTemp = "";
                        htTemp.Add("ChanNo", dRow[1].ToString().Trim());
                        htTemp.Add("Store", dRow[2].ToString().Trim());
                        htTemp.Add("Item", dRow[3].ToString().Trim());

                        htTemp.Add("StartDate", DateTime.Now.ToString("yyyy/MM/dd"));
                        htTemp.Add("EndDate", DateTime.Now.AddDays(90).ToString("yyyy/MM/dd"));


                        bResultTemp = ALO_STORESPEC_MAIN.CheckStoreSpecCanAdd(htTemp, ref strTemp);

                        if (!bResultTemp)
                        {
                            strErrMsg += string.Format("{0},", strTemp);
                        }

                        ParameterList.Clear();
                        ParameterList.Add(dRow[1].ToString().Trim());
                        ParameterList.Add(dRow[2].ToString().Trim());
                        strTemp = BCOCommon.CheckCurrentStoreState(ParameterList);

                        if (strTemp != "")
                        {
                            strErrMsg += string.Format("{0},", strTemp);
                        }

                        #endregion

                        #region
                        switch (dRow[7].ToString().Trim())
                        {
                            case "1"://加減本數
                                strErrMsg += "不可匯入控制類別[加減本數],";
                                dRow_Temp["S_START_DATE"] = DateTime.Now;
                                dRow_Temp["S_END_DATE"] = DateTime.Now.AddDays(90);
                                break;
                            case "3"://停配
                                dRow_Temp["S_START_DATE"] = DateTime.Now;
                                dRow_Temp["S_END_DATE"] = DateTime.Parse("9999/12/31");
                                dRow_Temp["SPEC_QTY"] = "0";
                                break;
                            case "2":
                            case "4":
                            case "5":
                            case "6":
                                dRow_Temp["S_START_DATE"] = DateTime.Now;
                                dRow_Temp["S_END_DATE"] = DateTime.Now.AddDays(90);
                                break;
                            default:
                                strErrMsg += "無此控制類別,";
                                dRow_Temp["S_START_DATE"] = DateTime.Now;
                                dRow_Temp["S_END_DATE"] = DateTime.Now.AddDays(90);
                                break;

                        }


                        #endregion


                        #region 控制類別 = 2 時,可輸入負值,其他不可 2009-060-26 cyhsu add
                        if ((dRow_Temp["SPEC_TYPE"].ToString().Trim() != "2") &&
                            (int.Parse(dRow_Temp["SPEC_QTY"].ToString()) < 0)
                           )
                        {
                            strErrMsg += "此控制類別非加減比例,對應之設定值不可小於0,";
                        }

                        #endregion


                        #region 4.4 針對MEMO是否為空字串做檢查

                        if (strErrMsg.Trim() == string.Empty)
                        {
                            dRow_Temp["MEMO"] = System.DBNull.Value;
                            dRow_Temp["DATASOURCE"] = s_AP_FileName;
                        }
                        else
                        {
                            if (strErrMsg.Trim().Length > 0)
                            {
                                if (strErrMsg.Trim().Substring(strErrMsg.Trim().Length - 1) == ",")
                                {
                                    strErrMsg = strErrMsg.Trim().Substring(0, strErrMsg.Trim().Length - 1);
                                }

                            }

                            dRow_Temp["MEMO"] = strErrMsg;
                            dRow_Temp["DATASOURCE"] = s_AP_FileName;
                            iErrCount++;
                        }


                        if (iErrCount != 0)
                        {
                            i_FileToTemp_Wrong_count += 1;
                            dRow_Temp["DATATYPE"] = 2;
                            b_Check_Logic = false;
                        }
                        else
                        {
                            i_FileToTemp_Right_count += 1;
                            dRow_Temp["DATATYPE"] = 1;
                        }


                        #endregion

                        dt_ALO_IMPORT_TMP.Rows.Add(dRow_Temp);
                        i_newTable_Count += 1;

                        #endregion
                    }

                    i_FileToTemp_Total_count += 1;
                    #endregion
                }

                #region 先清除前一次,同一使用者執行的匯入暫存資訊與錯誤資訊,並將 Excel 資料匯入 TEMP TABLE

                ParameterList.Clear();
                ParameterList.Add(s_LoginUser);
                ParameterList.Add(V_SESSION_ID);

                DELETE_AND_INSERT_TEMP_TABLE(ParameterList, null, dt_ALO_IMPORT_TMP);

                #endregion

                arl_Return.Add("TRUE");
                arl_Return.Add(b_Check_Logic);
                arl_Return.Add(i_FileToTemp_Total_count);
                arl_Return.Add(i_FileToTemp_Right_count);
                arl_Return.Add(i_FileToTemp_Wrong_count);
            }
            catch (Exception ex)
            {
                arl_Return.Add("FALSE");
                arl_Return.Add(GetNewException(ex).Message);
            }

            return arl_Return;
            #endregion
        }