示例#1
0
        /// <summary>
        /// FileToTmp 效能提升版
        /// </summary>
        /// <param name="ds_Excel"></param>
        /// <param name="d_CreateDate"></param>
        /// <param name="s_LoginUser"></param>
        /// <param name="s_AP_FileName"></param>
        /// <param name="strST_ACCEPT_DATE"></param>
        /// <param name="V_SESSION_ID"></param>
        /// <returns></returns>
        public ArrayList FileToTmp2(DataSet ds_Excel, DateTime d_CreateDate, string s_LoginUser, string s_AP_FileName, string strST_ACCEPT_DATE, 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();

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

            Int32 iErrCount = 0;
            Int32 iPKCount = 0;

            try
            {
                ParameterList.Clear();

                DataTable dt_ALO_IMPORT_TMP = QuerySwitch(QueryType.GetPOSOURCE_NO_TmpSchema, ParameterList);
                VDS_ALO_POSOURCE_NO_TMP_DBO ALO_POSOURCE_NO_TMP = new VDS_ALO_POSOURCE_NO_TMP_DBO(ref USEDB);
                MaintainStoreOrderItem ALOM = new MaintainStoreOrderItem(ConnectionDB);
                MaintainChainPO BCO = new MaintainChainPO(ConnectionDB);
                MaintainChainPOSetting BCO2 = new MaintainChainPOSetting(ConnectionDB);

                string s_ROOT_NO = "";
                string s_PMA = "";
                string s_ChanNo = "";
                string s_Store = "";
                string s_Item = "";
                string s_Period = "";
                string s_StAcceptDate = "";
                string s_PoSourceNo = "";
                bool bResultMultiPO = true;

                //20090626 added
                VDS_ALO_POSOURCE_NO_TMP_DBO DBO = new VDS_ALO_POSOURCE_NO_TMP_DBO(ref USEDB);
                ParameterList2.Clear();
                ParameterList2.Add(s_LoginUser);
                ParameterList2.Add(V_SESSION_ID);
                DBO.doDelete_POSOURCE_NO_TMP(ParameterList2, null);


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

                    s_ROOT_NO = "";
                    s_PMA = "";
                    s_ChanNo = dRow[1].ToString().Trim();
                    s_Store = dRow[2].ToString().Trim();
                    s_Item = dRow[3].ToString().Trim();
                    s_Period = dRow[4].ToString().Trim();
                    s_StAcceptDate = strST_ACCEPT_DATE;
                    s_PoSourceNo = dRow[0].ToString().Trim();
                    bResultMultiPO = true;


                    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(dRow, iAryRequiredColumnsCheck, out strErrMsgDataFormat))//檢查是否為數值
                    {
                        arl_Return.Add("FALSE");
                        arl_Return.Add(strErrMsgDataFormat);
                        return arl_Return;
                        #endregion
                    }
                    else
                    {

                        #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["PERIOD"] = dRow[4].ToString().Trim();
                        dRow_Temp["PO_SOURCE_NO"] = dRow[0].ToString().Trim();
                        dRow_Temp["ST_ACCEPT_DATE"] = strST_ACCEPT_DATE;
                        dRow_Temp["SESSION_ID"] = V_SESSION_ID;
                        dRow_Temp["DATASOURCE"] = s_AP_FileName;
                        //-------------------------------------

                        #endregion

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

                    }

                    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

                //效能提升版的地方----------------------------------------------------------------------------------
                #region 檢查資料邏輯正確性

                #region 4.1 驗證新增資料之主檔欄位正確性。
                //paramTemp.Clear();
                //paramTemp.Add(dRow[1].ToString().Trim());
                //paramTemp.Add(dRow[2].ToString().Trim());
                //paramTemp.Add(dRow[3].ToString().Trim());
                //paramTemp.Add(dRow[4].ToString().Trim());

                //DataTable dtCheckMaster = ALO_POSOURCE_NO_TMP.doCheckCurrentMasterStatus(paramTemp);
                //if (dtCheckMaster.Rows[0][0].ToString().Trim() != "1")
                //{
                //    strErrMsg += dtCheckMaster.Rows[0][1].ToString().Trim();
                //}
                #endregion

                #region 4.2 驗證主檔是否不存在對應通路,且Type_No=2 (By單店/單項)之資料[@C_1]。
                //paramTemp.Clear();
                //paramTemp.Add(s_LoginUser);
                //DataTable dtCheckException = ALO_POSOURCE_NO_TMP.doCheckExceptionChanStatus(paramTemp);


                //if (!(dtCheckException == null || dtCheckException.Rows.Count <= 0))
                //{
                //    strErrMsg += "通路單號主檔未建立,";
                //}

                #endregion

                #region 4.3 檢查是否有PK重複之資料

                ////a) 檢查暫存檔本身是否有PK重複資料
                ////b) 檢查與正式表單有是否有PK重複資料

                //paramTemp.Clear();
                //paramTemp.Add(dRow[1].ToString().Trim());
                //paramTemp.Add(dRow[2].ToString().Trim());
                //paramTemp.Add(dRow[3].ToString().Trim());
                //paramTemp.Add(dRow[4].ToString().Trim());
                //paramTemp.Add(strST_ACCEPT_DATE);
                //paramTemp.Add(s_LoginUser);
                //paramTemp.Add(V_SESSION_ID);


                //for (Int32 x = 0; x <= ds_Excel.Tables[0].Rows.Count - 1; x++)
                //{
                //    if (s_Store == ds_Excel.Tables[0].Rows[x][2].ToString().Trim() &&
                //        s_Item == ds_Excel.Tables[0].Rows[x][3].ToString().Trim() &&
                //        s_Period == ds_Excel.Tables[0].Rows[x][4].ToString().Trim() &&
                //        s_StAcceptDate == strST_ACCEPT_DATE &&
                //        s_PoSourceNo == ds_Excel.Tables[0].Rows[x][0].ToString().Trim())
                //    {
                //        iPKCount++;
                //    }


                //    if (iPKCount > 1)
                //    {
                //        strErrMsg += "匯入檔中(同進貨日/門市/品號/期別/PO單)不可重複,";
                //        break;
                //    }
                //}

                //DataTable dtCheckPKConflict = ALO_POSOURCE_NO_TMP.doCheckPOSourcePKConflict(paramTemp);
                //if (dtCheckPKConflict != null && dtCheckPKConflict.Rows.Count > 0)
                //{
                //    if (dtCheckPKConflict.Rows[0][0].ToString().Trim() != "0")
                //    {
                //        strErrMsg += "匯入檔中(同進貨日/門市/品號/期別/PO單)不可重複,";
                //        break;
                //    }

                //    if (dtCheckPKConflict.Rows[0][1].ToString().Trim() != "0")
                //    {
                //        strErrMsg += "與通路單號明細檔(同進貨日/門市/品號/期別/PO單)PK重複,";
                //    }
                //}

                #endregion

                #region 4.4 通路PO控制檔檢查

                //#region 依照品號取得所屬[群分類]、[大分類]
                //paramTemp.Clear();
                //BCO_ITM.SQLHelper.SQLWhere(ref paramTemp, DbType.String, "MA.ITEM", s_Item, "=", "and");
                //BCO_ITM.MaintainSKU bco_itm = new BCO_ITM.MaintainSKU(ConnectionDB);
                //DataTable dt_Return = bco_itm.QuerySKUByFind_1(paramTemp);

                //if (dt_Return != null && dt_Return.Rows.Count != 0)
                //{
                //    s_PMA = dt_Return.Rows[0]["PMA"].ToString();//大分類
                //    s_ROOT_NO = dt_Return.Rows[0]["ROOT_NO"].ToString();//群分類
                //}

                //#endregion

                //#region 判斷 is_dis_bypo & is_multipo
                //paramTemp.Clear();
                //paramTemp.Add(s_ChanNo);
                //paramTemp.Add(s_Store);
                //DataTable dtTempPOSetting = BCO2.QueryStorPOSettingByFind(paramTemp);

                //if (dtTempPOSetting != null && dtTempPOSetting.Rows.Count > 0)
                //{
                //    for (Int32 i = 0; i <= dtTempPOSetting.Rows.Count - 1; i++)
                //    {
                //        if (s_ROOT_NO == dtTempPOSetting.Rows[i]["root_no"].ToString().Trim() && s_PMA == dtTempPOSetting.Rows[i]["pma"].ToString().Trim())
                //        {

                //            if (dtTempPOSetting.Rows[i]["is_dis_bypo"].ToString().Trim() == "0")
                //            {
                //                //1.IS_DIS_BYPO=否者 
                //                //=>代表該通路(或該門市)在某一[群分類+大分類]設定下的品項,不可帶入通路PO單號
                //                if (s_PoSourceNo != "")
                //                {
                //                    #region
                //                    strErrMsg += string.Format("(通路,門市,群分類,大分類)=({0},{1},{2},{3})不可匯入通路單號", s_ChanNo, s_Store, s_ROOT_NO, s_PMA);
                //                    break;
                //                    #endregion
                //                }
                //            }
                //            else if (dtTempPOSetting.Rows[i]["is_dis_bypo"].ToString().Trim() == "1" && dtTempPOSetting.Rows[i]["is_multipo"].ToString().Trim() == "0")
                //            {
                //                //2.IS_DIS_BYPO=是,且IS_MULTIPO=否者
                //                //=>代表該通路(或該門市)在某一[群分類+大分類]設定下的品項,一定要帶入通路PO單號,
                //                //但同門市、同進貨日、同品號、同期別的狀況下,不允許有不同PO單號
                //                #region

                //                for (Int32 x = 0; x <= ds_Excel.Tables[0].Rows.Count - 1; x++)
                //                {
                //                    if (s_Store == ds_Excel.Tables[0].Rows[x][2].ToString().Trim() &&
                //                        s_Item == ds_Excel.Tables[0].Rows[x][3].ToString().Trim() &&
                //                        s_Period == ds_Excel.Tables[0].Rows[x][4].ToString().Trim() &&
                //                        s_StAcceptDate == strST_ACCEPT_DATE &&
                //                        s_PoSourceNo != ds_Excel.Tables[0].Rows[x][0].ToString().Trim())
                //                    {
                //                        iPKCount++;
                //                    }

                //                    if (iPKCount >= 1)
                //                    {
                //                        strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不允許多重PO。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA);
                //                        bResultMultiPO = false;
                //                        break;
                //                    }
                //                }

                //                #endregion

                //                #region
                //                if (bResultMultiPO)
                //                {
                //                    paramTemp.Clear();
                //                    paramTemp.Add(s_ChanNo);
                //                    paramTemp.Add(s_Store);
                //                    paramTemp.Add(s_Item);
                //                    paramTemp.Add(s_Period);
                //                    paramTemp.Add(s_StAcceptDate);
                //                    paramTemp.Add(null);

                //                    DataTable dtTempPoDetl = BCO.QueryChainPODetlByFind(paramTemp);

                //                    if (dtTempPoDetl != null && dtTempPoDetl.Rows.Count > 0)
                //                    {
                //                        for (Int32 j = 0; j <= dtTempPoDetl.Rows.Count - 1; j++)
                //                        {
                //                            if (dtTempPoDetl.Rows[j]["po_source_no"].ToString().Trim() != s_PoSourceNo)
                //                            {
                //                                strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不允許多重PO。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA);
                //                                break;
                //                            }
                //                        }
                //                    }
                //                }
                //                #endregion

                //            }

                //        }

                //    }

                //}


                //#endregion



                #endregion

                #region 4.5 針對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


                bool bResult = Check_TmpData(s_LoginUser, V_SESSION_ID, out i_FileToTemp_Total_count, out i_FileToTemp_Right_count, out i_FileToTemp_Wrong_count);


                #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
        }
        /// <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();

            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.GetStoreOrder_TmpSchema, ParameterList);
                VDS_ALO_STORE_ORDER_TMP_DBO ALO_STORE_ORDER_TMP = new VDS_ALO_STORE_ORDER_TMP_DBO(ref USEDB);
                MaintainStoreOrderItem ALOM = new MaintainStoreOrderItem(ConnectionDB);
                string strPeriodSt, strPeriodEnd;
                Int32 iPeriodSt;
                Int32 iPeriodSt_imp;
                Int32 iPeriodEnd_imp;

                //20090704 added
                VDS_ALO_STORE_ORDER_TMP_DBO DBO = new VDS_ALO_STORE_ORDER_TMP_DBO(ref USEDB);
                ParameterList.Clear();
                ParameterList.Add(s_LoginUser);
                ParameterList.Add(V_SESSION_ID);
                DBO.doDelete_StoreOrder_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(dRow, iAryRequiredColumnsCheck, out strErrMsgDataFormat))//檢查是否為數值
                    {
                        arl_Return.Add("FALSE");
                        arl_Return.Add(strErrMsgDataFormat);
                        return arl_Return;
                        #endregion
                    }
                    else
                    {
                        #region 檢查資料邏輯正確性

                        //20130218 純萍新增規則 若匯入資料中出現重複店號及品號資料則顯示錯誤訊息
                        DataRow[] FindDbls = dt_ALO_IMPORT_TMP.Select("ITEM='" + dRow[3].ToString().Trim() + "' AND STORE='" + dRow[2].ToString().Trim() + "'");
                        if (FindDbls.Length > 0)
                        {
                            strErrMsgDataFormat = "匯入資料包含相同店號品號資料";
                            arl_Return.Add("FALSE");
                            arl_Return.Add(strErrMsgDataFormat);
                            return arl_Return;                        
                        }

                        #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["ORDER_QTY"] = dRow[5].ToString().Trim();
                        dRow_Temp["REASON"] = dRow[6].ToString().Trim();
                        //-------------------------------------
                        dRow_Temp["BUY_FLAG"] = 0;
                        dRow_Temp["ADJUST_QTY"] = 0;

                        #region 設定暫存檔非匯入欄位
                        strPeriodSt = "";
                        strPeriodEnd = "";
                        iPeriodSt = 0;

                        ParameterList.Clear();
                        ParameterList.Add(dRow_Temp["ITEM"]);

                        strPeriodSt = ALOM.GetNextPeriodStByItem(ParameterList);

                        if (dRow[4].ToString().Trim() != "")
                        {
                            if (dRow[4].ToString().Trim().Length != 6)
                            {
                                strErrMsg += "期別格式錯誤,";
                                strPeriodSt = "X";
                            }
                            else if (!(Int32.TryParse(dRow[4].ToString(), out iPeriodSt_imp)))
                            {
                                strErrMsg += "期別格式錯誤,";
                                strPeriodSt = "X";
                            }
                        }

                        if (strPeriodSt != "X")
                        {

                            Int32.TryParse(strPeriodSt, out iPeriodSt);

                            Int32.TryParse(dRow[4].ToString(), out iPeriodSt_imp);


                            if (dRow[4].ToString() == "")
                            {
                                strPeriodSt = (iPeriodSt + 1000000).ToString().Substring(1, 6);
                            }
                            else
                            {
                                strPeriodSt = dRow[4].ToString();

                                if (iPeriodSt_imp < iPeriodSt)
                                {
                                    strErrMsg += "期別小於最新期別" + (iPeriodSt + 1000000).ToString().Substring(1, 6) + ",";
                                }
                            }
                        }
                        ParameterList2.Clear();
                        ParameterList2.Add(dRow_Temp["CHAN_NO"]);
                        ParameterList2.Add(dRow_Temp["STORE"]);

                        //dtTempSetting = ALO_STORE_ORDER_TMP.doGetLatestPeriodEndSetting(ParameterList2);

                        //if (dtTempSetting != null && dtTempSetting.Rows.Count > 0)
                        //{
                        //    if (dtTempSetting.Rows[0][0].ToString().Trim() == "999999" || dtTempSetting.Rows[0][0].ToString().Trim() == "")
                        //    {
                        //        strPeriodEnd = "999999";
                        //    }
                        //    else 
                        //    {
                        //        strPeriodEnd = (iPeriodSt + 3 + 1000000).ToString().Substring(1, 6);
                        //    }
                        //}
                        //else 
                        //{
                        //    strPeriodEnd = (iPeriodSt + 3 + 1000000).ToString().Substring(1, 6);
                        //}

                        if (dRow[8].ToString().Trim() != "")
                        {
                            if (dRow[8].ToString().Trim().Length != 6)
                            {
                                strErrMsg += "期別結束格式錯誤,";
                                strPeriodEnd = "X";
                            }
                            else if (!(Int32.TryParse(dRow[8].ToString(), out iPeriodEnd_imp)))
                            {
                                strErrMsg += "期別結束格式錯誤,";
                                strPeriodEnd = "X";
                            }
                        }

                        if (strPeriodEnd != "X")
                        {
                            Int32.TryParse(dRow[8].ToString(), out iPeriodEnd_imp);
                            Int32.TryParse(strPeriodSt, out iPeriodSt);

                            if (dRow[8].ToString() == "")
                            {
                                strPeriodEnd = (iPeriodSt + 3 + 1000000).ToString().Substring(1, 6);
                            }
                            else
                            {
                                strPeriodEnd = dRow[8].ToString();

                                if (iPeriodEnd_imp < iPeriodSt)
                                {
                                    strErrMsg += "期別結束小於期別開始,";
                                }
                            }
                        }

                        #endregion

                        dRow_Temp["PERIOD_ST"] = strPeriodSt;
                        dRow_Temp["PERIOD_END"] = strPeriodEnd;
                        dRow_Temp["SESSION_ID"] = V_SESSION_ID;

                        #endregion

                        //20141119移至轉入正式資料表時判斷
                        //#region 4.2 判斷是否可新增
                        //paramTemp.Clear();
                        //strTemp = "";
                        //paramTemp.Add(dRow[1].ToString().Trim());
                        //paramTemp.Add(dRow[2].ToString().Trim());
                        //paramTemp.Add(dRow[3].ToString().Trim());
                        //paramTemp.Add(dRow_Temp["PERIOD_ST"].ToString().Trim());
                        //paramTemp.Add(dRow_Temp["PERIOD_END"].ToString().Trim());

                        //strTemp = "";
                        //bResultTemp = ALOM.CheckStoreOrderItemCanAdd(paramTemp, ref strTemp);

                        //if (!bResultTemp)
                        //{
                        //    strErrMsg += strTemp;
                        //}

                        //#endregion

                        #region 4.3 針對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
        }