/// <summary>
        /// 傳入參數:@沖方單號、@繳款別、@沖尾差、@其它差異、@匯兌差異、@合計、@沖帳餘額
        /// 回傳:是否異動成功
        /// 
        /// 動作:
        /// (1)判斷繳款別類型(1=電匯、2=支票、3=應收付調整)
        ///   (1.1)電匯:
        ///    (A)依COLL_NO=@沖方單號異動資料庫VDS_CAA_COLL_MAIN欄位
        ///       (a)DIFF_AMT=@沖尾差
        ///       (b)OTHER_AMT=@其它差異
        ///       (c)REMIT_AMT=@匯兌差異
        ///       (d)SUM_DUE_AMT=@合計
        ///       (e)DUE_REMAIN_AMT=@沖帳餘額
        ///       (f)TEMPORAL_FLG=1
        ///       (g)TEMPORAL_DATE=系統日(AP)
        /// 
        ///     (B)依COLL_NO=@沖方單號取得資料庫VDS_CAA_COLL_MAIN欄位
        ///       (a)STORE_ID=M.STORE_ID
        ///       (b)ROOT_NO=""
        ///       (c)TAX_TYPE=""
        ///       (d)TEMP_AMT=M.COLL_REMAIN_AMT
        ///       (e)SUM_WASH_AMT=0
        ///       (f)TEMP_REMAIN_AMT=M.COLL_REMAIN_AMT
        /// 
        ///   (1.2)支票:
        ///    (A)依BOND_NO=@沖方單號異動資料庫VDS_CAA_BOND_MAIN欄位
        ///       (a)DIFF_AMT=@沖尾差
        ///       (b)OTHER_AMT=@其它差異
        ///       (c)REMIT_AMT=@匯兌差異
        ///       (d)SUM_BOND_AMT=@合計
        ///       (e)BOND_REMAIN_AMT=@沖帳餘額
        ///       (f)TEMPORAL_FLG=1
        ///       (g)TEMPORAL_DATE=系統日(AP)
        ///     (B)依BOND_NO=@沖方單號取得資料庫VDS_CAA_BOND_MAIN欄位
        ///       (a)STORE_ID=M.STORE_ID
        ///       (b)ROOT_NO=""
        ///       (c)TAX_TYPE=""
        ///       (d)TEMP_AMT=M.BOND_REMAIN_AMT
        ///       (e)SUM_WASH_AMT=0
        ///       (f)TEMP_REMAIN_AMT=M.BOND_REMAIN_AMT
        /// 
        ///   (1.3)應收應付調整:
        ///    (A)依DUE_NO=@沖方單號異動資料庫VDS_CAA_DUE_MAIN欄位
        ///       (a)DIFF_AMT=@沖尾差
        ///       (b)OTHER_AMT=@其它差異
        ///       (c)REMIT_AMT=@匯兌差異
        ///       (d)SUM_DUE_AMT=@合計
        ///       (e)DUE_REMAIN_AMT=@沖帳餘額
        ///       (f)TEMPORAL_FLG=1
        ///      (g)TEMPORAL_DATE=系統日(AP)
        ///     (B)依DUE_NO=@沖方單號取得資料庫VDS_CAA_DUE_MAIN欄位
        ///       (a)STORE_ID=M.STORE_ID
        ///       (b)ROOT_NO=M.ROOT_NO
        ///       (c)TAX_TYPE=M.TAX_TYPE
        ///       (d)TEMP_AMT=M.DUE_REMAIN_AMT
        ///       (e)SUM_WASH_AMT=0
        ///       (f)TEMP_REMAIN_AMT=M.DUE_REMAIN_AMT
        /// 
        /// (2)新增一筆資料至暫收檔VDS_CAA_TEMP_MAIN
        ///     (2.1)TEMP_NO =取號原則
        ///     (2.2)SOURCE_TYPE=2(1表銷折轉暫收、2表溢付)
        ///     (2.3)SOURCE_NO=@沖方單號
        ///     (2.4)STORE_ID=流程(B)取得之欄位STORE_ID
        ///     (2.5)ROOT_NO=流程(B)取得之欄位ROOT_NO
        ///     (2.6)TAX_TYPE==流程(B)取得之欄位TAX_TYPE
        ///     (2.7)TEMP_AMT=流程(B)取得之欄位DISC_AMT
        ///     (2.8)SUM_WASH_AMT=流程(B)取得之欄位SUM_WASH_AMT
        ///     (2.9)TEMP_REMAIN_AMT=流程(B)取得之欄位TEMP_REMAIN_AMT
        ///     (2.10)CHG_INCOME_TYPE=0
        ///     (2.11)CHG_INCOME_DATE=''
        /// 
        /// 
        /// (3)以上三個動作均一併完成,若有一個失敗則rollback回去。
        /// </summary>
        public bool ChangeStatusToTemp(ArrayList ParameterList)
        {
            bool bResult = false;
            bool IsRootTranscation = false;
            DbTransaction RootDBT = null;
            int iResult = 0;
            try
            {
                CAA_AccountRecordDBO DBO = new CAA_AccountRecordDBO(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

                string strPAY_TYPE = ParameterList[0].ToString();
                string strWASH_NO = ParameterList[1].ToString();
                string strUID = ParameterList[2].ToString();
                string strUPDATEDATE = ParameterList[3].ToString();
                string strCLOSE_MONTH = ParameterList[4].ToString();
                string strTEMPORAL_DATE = strUPDATEDATE;

                //string strAPL_DATE = ConvertDB_Date(GetAPLDATE());
                ArrayList ParaData = new ArrayList();
                ParaData.Clear();
                ParaData.Add(strPAY_TYPE);
                ParaData.Add(strWASH_NO);
                ParaData.Add(strUID);
                ParaData.Add(strUPDATEDATE);
                DataTable dtData = DBO.QueryPayToTemp(ParaData);

                string strSTORE_ID = "";
                string strROOT_NO = "";
                string strTAX_TYPE = "";
                string strTEMP_AMT = "";
                string strSUM_WASH_AMT = "0";
                string strTEMP_REMAIN_AMT = "";
                string strTEMP_DATE = "";
                if (dtData.Rows.Count > 0)
                {
                    strSTORE_ID = dtData.Rows[0]["STORE_ID"].ToString().Trim();
                    strROOT_NO = dtData.Rows[0]["ROOT_NO"].ToString().Trim();
                    strTAX_TYPE = dtData.Rows[0]["TAX_TYPE"].ToString().Trim();
                    strTEMP_AMT = dtData.Rows[0]["REMAIN_AMT"].ToString().Trim();
                    strTEMP_REMAIN_AMT = dtData.Rows[0]["REMAIN_AMT"].ToString().Trim(); ;
                    strTEMP_DATE = dtData.Rows[0]["TEMP_DATE"].ToString().Trim(); ;
                }
                else
                {
                    throw new Exception("找不到[" + strWASH_NO + "]此筆繳款資料");
                }
                #region 寫入暫收檔

                ArrayList ParaTemp = new ArrayList(); //新增暫收檔參數
                string strTEMP_NO = string.Empty;
                string strID = string.Empty;

                ParaTemp.Clear();
                ParaTemp.Add("2");                // (1)  來源	    = SOURCE_TYPE
                ParaTemp.Add(strWASH_NO);         // (2)  來源單號	= SOURCE_NO           
                ParaTemp.Add(strSTORE_ID);        // (3)  客戶店號	= STORE_ID           
                ParaTemp.Add(strROOT_NO);         // (4)  商品群分類	= ROOT_NO
                ParaTemp.Add(strTAX_TYPE);        // (5)  稅別	    = TAX_TYPE
                ParaTemp.Add(strTEMP_AMT);        // (6)  暫收金額	= TEMP_AMT
                ParaTemp.Add(strSUM_WASH_AMT);    // (7)  累計沖帳金額	= SUM_TEMP_AMT
                ParaTemp.Add(strTEMP_REMAIN_AMT); // (8)  暫收餘額	= TEMP_REMAIN_AMT
                ParaTemp.Add("");                 // (9) 備註說明	= MEMO
                ParaTemp.Add(strCLOSE_MONTH);     // (10) 結帳年月	= CLOSE_MONTH
                ParaTemp.Add("0");                // (11) 轉其它收入	= CHG_INCOME_TYPE
                ParaTemp.Add("");                 // (12) 轉其它收入日期	= CHG_INCOME_DATE
                ParaTemp.Add(strUPDATEDATE);      // (13) 建立日期	= CREATEDATE (系統抓取目前AP機器之時間)
                ParaTemp.Add(strUID);             // (14) 建立人員	= CREATEUID  (系統抓取登入之使用者ID)
                //ParaTemp.Add(strAPL_DATE.Substring(0, 10));        // (15) 暫收日期	= TEMP_DATE 10碼就好了               
                ParaTemp.Add(strTEMP_DATE);        // (15) 暫收日期
                iResult = DBO.CreateTempRecord(DBT, ParaTemp, out strTEMP_NO, out strID);

                #endregion

                #region 繳款資料寫入Flag
                ArrayList ParaPay = new ArrayList();
                ParaPay.Clear();
                ParaPay.Add(strPAY_TYPE);       //1.V_PAY_TYPE
                ParaPay.Add(strWASH_NO);        //2.V_COLL_NO
                ParaPay.Add(strTEMPORAL_DATE);  //3.V_TEMPORAL_DATE
                ParaPay.Add(strUID);            //4.V_UPDATEUID
                ParaPay.Add(strUPDATEDATE);     //5.V_UPDATEDATE
                iResult = DBO.UpdatePayToTemp(DBT, ParaPay);
                #endregion

                #region 交易成功

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

                #endregion


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

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

                #endregion

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

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

                #endregion
            }
            return bResult;
        }