コード例 #1
0
        public DataTable QuerySwitch(QueryType QT, ArrayList ParameterList)
        {
            #region
            VDS_ALO_STOREASSIGN_TMP_DBO ALOM = new VDS_ALO_STOREASSIGN_TMP_DBO(ref USEDB);

            DataTable Dt;

            try
            {
                switch (QT)
                {
                    case QueryType.CheckCurrentItemStatus:
                        Dt = ALOM.doCheckCurrentItemStatus(ParameterList);
                        break;
                    case QueryType.GetStoreAssign_TmpSchema:
                        Dt = ALOM.GetStoreAssign_TmpSchema(ParameterList);
                        break;
                    default:
                        Dt = new DataTable();
                        break;
                }

                return Dt;
            }
            catch (Exception ex)
            {
                throw GetNewException(ex);
            }
            #endregion
        }
コード例 #2
0
        public DataTable QueryStorSpecByFind(Hashtable htParams)
        {
            #region
            try
            {
                VDS_ALO_STORESPEC_MAIN_DBO ALOM = new VDS_ALO_STORESPEC_MAIN_DBO(ref USEDB);
                VDS_ALO_STOREASSIGN_TMP_DBO ALO1 = new VDS_ALO_STOREASSIGN_TMP_DBO(ref USEDB);

                DataTable dt = ALOM.doQueryByFind(htParams);
                DataTable dtTemp;
                ArrayList ParameterList = new ArrayList();
                Hashtable ht = new Hashtable();
                bool bResult;
                string strStstusCode="",strStstus = "", strStstusDesc = "";
                if (dt != null) 
                {
                    for (Int32 i = 0; i <= dt.Rows.Count - 1; i++)
                    {
                        strStstusCode = "";
                        strStstus = "";
                        strStstusDesc = "";

                        ParameterList.Clear();
                        ParameterList.Add(dt.Rows[i]["item"]);
                        dtTemp = ALO1.doCheckCurrentItemStatus(ParameterList);

                        if (dtTemp != null) 
                        {
                            if (dtTemp.Rows[0][0].ToString() == "0") 
                            {
                                strStstusDesc = dtTemp.Rows[0][1].ToString();
                            }
                        }


                        ht.Clear();
                        ht.Add("Item", dt.Rows[i]["item"]);
                        ht.Add("StartDate", dt.Rows[i]["s_start_date"].ToString() == "" ? null : ((DateTime)dt.Rows[i]["s_start_date"]).ToString("yyyy/MM/dd"));
                        ht.Add("EndDate", dt.Rows[i]["s_end_date"].ToString() == "" ? null : ((DateTime)dt.Rows[i]["s_end_date"]).ToString("yyyy/MM/dd"));

                        string strErrMsg = "";
                        bResult = CheckOverDu(ht, ref strErrMsg);

                       if (!bResult) 
                       {
                           strStstusDesc += strErrMsg;
                       }


                       if (strStstusDesc.Trim() != "")
                       {
                           strStstus = "未生效";
                           strStstusCode = "0";
                       }
                       else 
                       {
                           strStstus = "生效";
                           strStstusCode = "1";
                       }

                       if (strStstusDesc.Trim().Length > 0) 
                       {
                           if (strStstusDesc.Substring(strStstusDesc.Length - 1, 1) == ",") 
                           {
                               strStstusDesc = strStstusDesc.Substring(0, strStstusDesc.Length - 1);
                           }                       
                       }


                       dt.Rows[i]["itemstatusCode"] = strStstusCode;
                       dt.Rows[i]["itemstatus"] = strStstus;
                       dt.Rows[i]["itemstatusdesc"] = strStstusDesc;

                    }
                }


                return dt;

            }
            catch (Exception ex)
            {
                throw GetNewException(ex);
            }
            #endregion
        }
コード例 #3
0
        public DataTable CheckCurrentItemStatus(ArrayList ParameterList)
        {
            #region
            try
            {
                VDS_ALO_STOREASSIGN_TMP_DBO ALOM = new VDS_ALO_STOREASSIGN_TMP_DBO(ref USEDB);
                return ALOM.doCheckCurrentItemStatus(ParameterList);
            }
            catch (Exception ex)
            {
                throw GetNewException(ex);
            }

            #endregion
        }
コード例 #4
0
        /// <summary>
        /// 刪除該使用者存在於 ALO_IMPORT_TMP 的舊資料,並將 EXCEL 中新資料匯入 ALO_IMPORT_TMP
        /// </summary>
        /// <param name="ParameterList">刪除變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳影響筆數</returns>
        public void DELETE_AND_INSERT_TEMP_TABLE(ArrayList ParameterList, DbTransaction RootDBT, DataTable dt_ALO_IMPORT_TMP)
        {
            #region
            bool IsRootTranscation = false;

            try
            {
                VDS_ALO_STOREASSIGN_TMP_DBO ALOM = new VDS_ALO_STOREASSIGN_TMP_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_StoreAssign_TMP(ParameterList, DBT);

                foreach (DataRow dRow in dt_ALO_IMPORT_TMP.Rows)
                {
                    ALOM.doAdd_StoreAssign_TMP(dRow, 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

            }
            #endregion
        }
コード例 #5
0
        /// <summary>
        /// 將資料由 TEMP TABLE 新增至正式 TABLE
        /// </summary>
        /// <param name="ParameterList">變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳結果</returns>
        public Int32 TMP_To_StoreAssignMainAndDetl(ArrayList ParameterList, DbTransaction RootDBT)
        {
            #region
            bool IsRootTranscation = false;
            Int32 iResult = 0;
            try
            {
                VDS_ALO_STOREASSIGN_TMP_DBO ALOM = new VDS_ALO_STOREASSIGN_TMP_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

                iResult = ALOM.doTMP_To_StoreAssignMainAndDetl(ParameterList, DBT); //  DataTable dt_Return =ALOM.DO_ALO043_TEMP_TO_FORMAL(ParameterList, DBT);

                #region 交易成功

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

                #endregion

                return iResult;

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

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

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

        ///4.處理邏輯:

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

            DataTable dtCheckItem, dtCheckChanNo;
            string strTemp = "";

            try
            {
                ParameterList.Clear();

                DataTable dt_ALO_IMPORT_TMP = QuerySwitch(QueryType.GetStoreAssign_TmpSchema, ParameterList);
                VDS_ALO_DIS_PATTERN_DBO ALO_DIS_PATTERN = new VDS_ALO_DIS_PATTERN_DBO(ref USEDB);
                VDS_ALO_STOREASSIGN_TMP_DBO ALO_STOREASSIGN_TMP = new VDS_ALO_STOREASSIGN_TMP_DBO(ref USEDB);
                VDS_ALO_STOREASSIGN_DETL_DBO ALO_STOREASSIGN_DETL = new VDS_ALO_STOREASSIGN_DETL_DBO(ref USEDB);

                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 檢查資料邏輯正確性

                        #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();
                        dRow_Temp["STORE"] = dRow[2].ToString();
                        dRow_Temp["ITEM"] = dRow[3].ToString();
                        dRow_Temp["STATUS"] = 1;
                        dRow_Temp["SESSION_ID"] = V_SESSION_ID;

                        #endregion

                        #region 4.1 商品主檔檢查
                        ParameterList.Clear();
                        ParameterList.Add(dRow[3].ToString());//item
                        dtCheckItem = QuerySwitch(QueryType.CheckCurrentItemStatus, ParameterList);

                        if (dtCheckItem != null && dtCheckItem.Rows.Count > 0)
                        {
                            strErrMsg += dtCheckItem.Rows[0]["ERRMSG"].ToString();
                        }

                        if (strErrMsg != string.Empty)
                        {
                            iErrCount++;
                        }
                        #endregion

                        #region 4.2 依品號匯入相關資料
                        dtTemp = ALO_DIS_PATTERN.doQueryPMA_PatternByItem(dRow[3].ToString());

                        if (dtTemp != null && dtTemp.Rows.Count > 0)
                        {
                            dRow_Temp["ROOT_NO"] = dtTemp.Rows[0][2].ToString();
                            dRow_Temp["PMA"] = dtTemp.Rows[0][0].ToString();
                            dRow_Temp["PATTERN"] = dtTemp.Rows[0][1].ToString();
                        }
                        #endregion

                        #region 4.3 通路主檔檢查
                        ParameterList.Clear();
                        ParameterList.Add(dRow[1].ToString());//chan_no

                        dtCheckChanNo = ALO_STOREASSIGN_TMP.doCheckChainIsExisted(ParameterList);

                        if (dtCheckChanNo != null && dtCheckChanNo.Rows.Count > 0)
                        {
                            strErrMsg += dtCheckChanNo.Rows[0]["ERRMSG"].ToString();
                        }

                        if (strErrMsg != string.Empty)
                        {
                            iErrCount++;
                        }

                        #endregion

                        #region 4.4 門市主檔檢查
                        ParameterList.Clear();
                        ParameterList.Add(dRow[1].ToString());//chan_no
                        ParameterList.Add(dRow[2].ToString());//store
                        strTemp = ALO_STOREASSIGN_DETL.doCheckByChanAndStore(ParameterList);
                        strErrMsg += strTemp;

                        #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

                        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
        }
コード例 #7
0
 /// <summary>
 /// 按下 BUTTON 檢視異常報表
 /// </summary>
 /// <param name="ParameterList">變數"登入人員"</param>
 /// <returns>回傳查詢結果</returns>
 public DataTable ALO043_QUERRY_TEMP_TABLE(ArrayList ParameterList)
 {
     #region
     try
     {
         VDS_ALO_STOREASSIGN_TMP_DBO ALOM = new VDS_ALO_STOREASSIGN_TMP_DBO(ref USEDB);
         return ALOM.DO_ALO043_QUERRY_TEMP_TABLE(ParameterList);
     }
     catch (Exception ex)
     {
         throw GetNewException(ex);
     }
     #endregion
 }