/// <summary>
        /// 傳入參數:
        /// 〔@發票號碼〕
        /// 傳回訊息:
        /// 〔@刪除是否成功〕
        /// //spec中的語法為參考,pg撰寫程式時需要調整程式語法。
        /// TABLE:
        /// A=VDS_VAM_INVOICE_MAIN(進項發票主檔)
        /// B=VDS_VAM_INVOICE_DETL(進項發票明細檔)
        /// C= VDS_VAM_DIFF_INVOICE(物料差主檔)
        /// 
        /// 
        /// 檢查:
        /// 1.已經被折讓的發票資料A. NON_DISC_AMT <> A.INV_UAMT 則不能刪除,顯示提醒無法刪除。
        /// 2.已經被折讓的物料差資料C. NON_DISC_AMT <> C. DIFF_INV_UAMT 則不能刪除,顯示提醒無法刪除。
        /// 3.回傳無法刪除訊息。
        /// 
        /// 說明:
        /// 呼叫VDS_ACM_VAM06.SP_DeletePurchaseInvoice利用sp進行
        /// </summary>
        public string DeletePurchaseInvoice(ArrayList ParameterList1, DbTransaction RootDBT)
        {
            bool IsRootTranscation = false;

            try
            {
                DBO.VAM061_DBO dbo = new VAM061_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
                int N_ID = 0;
                int N_ID1 = 0;
                string V_MSG, V_RESULT;

                //先刪除原發票資料
                dbo.doDeletePurchaseInvoice(ParameterList1, DBT, out V_MSG, out V_RESULT);

                if (V_RESULT == "1")//刪除成功
                {
                    V_MSG = "刪除成功";
                    if (IsRootTranscation)
                    {
                        //獨立呼叫Transcation成立
                        DBT.Commit();
                    }
                }
                else
                {
                    DBT.Rollback();                    
                }
                return V_MSG;
            }
            catch (Exception ex)
            {
                #region 交易失敗

                DBT.Rollback();
                #endregion

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

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

                #endregion

            }
        }
        public string UpdatePurchaseInvoice(ArrayList ParameterList1, ArrayList ParameterList2, DataTable dtA, DbTransaction RootDBT)
        {
            bool IsRootTranscation = false;

            try
            {
                DBO.VAM061_DBO dbo = new VAM061_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
                int N_ID = 0;
                int N_ID1 = 0;
                string V_MSG, V_RESULT;

                //先刪除原發票資料
                dbo.doDeletePurchaseInvoice(ParameterList1, DBT, out V_MSG, out V_RESULT);

                if (V_RESULT == "1")//刪除成功
                {
                    //做發票主檔新增
                    dbo.doInsertPurchaseInvoiceMain(ParameterList2, out N_ID, DBT);


                    //做發票明細檔新增
                    ArrayList Parameter_Det = new ArrayList();

                    if (dtA != null)
                    {
                        for (int i = 0; i < dtA.Rows.Count; i++)
                        {
                            Parameter_Det.Clear();
                            //N_PID
                            Parameter_Det.Add(N_ID);
                            //V_INV_NO
                            Parameter_Det.Add(ParameterList2[0]);
                            //V_TAX_TYPE
                            Parameter_Det.Add(ParameterList2[3]);
                            //V_SOURCE_TYPE
                            Parameter_Det.Add(GetValueSetParameter(dtA.Rows[i]["SOURCE_TYPE"].ToString(), "string", false));
                            //V_SOURCE_NO
                            Parameter_Det.Add(GetValueSetParameter(dtA.Rows[i]["SOURCE_NO"].ToString(), "string", false));
                            //N_REMAIN_AMT目前沒用到該欄位所以填NULL
                            Parameter_Det.Add(GetValueSetParameter("", "float", false));
                            //N_AMT
                            Parameter_Det.Add(GetValueSetParameter(dtA.Rows[i]["AMT"].ToString(), "float", false));
                            //D_UPDATEDATE
                            Parameter_Det.Add(ParameterList2[8]);
                            //V_UPDATEUID
                            Parameter_Det.Add(ParameterList2[9]);
                            //V_CREATEUID
                            Parameter_Det.Add(ParameterList2[10]);
                            //D_CREATEDATE
                            Parameter_Det.Add(ParameterList2[11]);

                            dbo.doInsertPurchaseInvoiceDetl(Parameter_Det, out N_ID1, DBT);
                        }
                    }


                    //會產生物料差單號
                    dbo.doGenDiffInvoice(ParameterList2, DBT);

                    if (IsRootTranscation)
                    {
                        //獨立呼叫Transcation成立
                        DBT.Commit();
                    }
                }
                else
                {
                    DBT.Rollback();
                }
                return V_MSG;
            }
            catch (Exception ex)
            {
                #region 交易失敗

                DBT.Rollback();
                #endregion

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

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

                #endregion

            }
        }