/// <summary>
        ///1.目的:將暫存檔中的待處理資料,匯入正式表單

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

        ///3.處理表格:VDS_PUR_PURCHASEORDER_TMP(T)、VDS_PUR_PURCHASE_MAIN(M)、VDS_PUR_PURCHASE_ITEM(D)

        ///4.將暫存檔中的[狀態]欄位調整為2:TMP TO DB

        ///5.匯入處理完成後,回傳匯入處理結果:處理總筆數、成功筆數、失敗筆數、@錯誤訊息(成功時=null)
        /// </summary>
        public ArrayList TmpToDB(string s_LoginUser,string MAIL_ADDR, string ConnectionDB)
        {
            #region
            ArrayList arl_Return = new ArrayList();

            try
            {
                string strPURCHASE_NO = string.Empty;
                ParameterList.Clear();
                ParameterList.Add(s_LoginUser);
                ParameterList.Add(MAIL_ADDR);
                int iResult = TMP_To_Purchase_Order(ParameterList, out strPURCHASE_NO, null);

                PUR_PurchaseOrderDBO dbo = new PUR_PurchaseOrderDBO(ref USEDB);
                ParameterList.Clear();
                ParameterList.Add(strPURCHASE_NO);
                DataTable dtPur = dbo.doQueryPurData(ParameterList); ;

                MaintainPurchaseOrder po = new MaintainPurchaseOrder(ConnectionDB);
                #region 更新期別屬性檔&圖書採購卡或雜誌採購卡採購單號
                DataRow[] DetailRows = dtPur.Select("ITEM=VIRTUAL_CODE");
                foreach (DataRow dRow in DetailRows)
                {
                    //更新期別屬性檔(VDS_ITM_PERIOD_PROFILE)中,該品號期別的交貨日期、採購日、採購量與採購單號
                    po.UpdatePeriodProfile(dRow["ITEM"].ToString().Trim(),
                                           dRow["PERIOD"].ToString().Trim(),
                                           dRow["PLAN_ACCEPT_DATE"].ToString().Trim(),
                                           dRow["PURCHSE_DATE"].ToString().Trim(),
                                           dRow["PURCHASE_QTY"].ToString().Trim(),
                                           dRow["PURCHASE_NO"].ToString().Trim(),
                                           s_LoginUser,
                                           null);

                    //更新圖書採購卡或雜誌採購卡採購單號
                    if (dRow["PERIOD"].ToString().Trim() == "000000") //在圖書裡其period值絕對是000000
                    {
                        po.Update_B_PURCARD(dRow["PURCHASE_NO"].ToString().Trim(),
                                            dRow["ITEM"].ToString().Trim(),
                                            s_LoginUser,
                                            null);
                    }
                    else
                    {
                        po.Update_PURCARD(dRow["PURCHASE_NO"].ToString().Trim(),
                                          dRow["ITEM"].ToString().Trim(),
                                          dRow["PERIOD"].ToString().Trim(),
                                          s_LoginUser,
                                          null);
                    }
                }
                #endregion

                #region 更新贈品屬性檔
                DataRow[] GiftRows = dtPur.Select("ITEM<>VIRTUAL_CODE");
                foreach (DataRow gRow in GiftRows)
                {
                    //更新贈品屬性檔(VDS_MKT_GIFT_PROFILE)資料中,該品號期別的交貨日期、採購日、採購量與採購單號
                    po.UpdateGiftProfile(gRow["ITEM"].ToString().Trim(),
                                         gRow["PERIOD"].ToString().Trim(),
                                         gRow["VIRTUAL_CODE"].ToString().Trim(),
                                         gRow["PLAN_ACCEPT_DATE"].ToString().Trim(),
                                         gRow["PURCHSE_DATE"].ToString().Trim(),
                                         gRow["PURCHASE_QTY"].ToString().Trim(),
                                         gRow["PURCHASE_NO"].ToString().Trim(),
                                         s_LoginUser,
                                         null);
                }
                #endregion


                if (iResult > 0)
                {
                    arl_Return.Add("TEMPTODB 正確");
                    arl_Return.Add(iResult);
                    arl_Return.Add(iResult);
                    arl_Return.Add(0);
                }
            }
            catch (Exception ex)
            {
                arl_Return.Add("程式錯誤");
                arl_Return.Add(ex.Message);
            }
            finally
            { }

            return arl_Return;
            #endregion
        }