/// <summary>
        /// 新增VDS_VDM_CONTRACT_MST基本檔資料
        /// </summary>
        /// <param name="ParameterList">合約主檔
        /// <param name="ArrList">年度獎勵金
        /// <param name="ds">店群門市、單品、獎勵金、目標級距
        /// <param name="isResume">是否為新增履歷
        public void CreateVendorAgm(ArrayList ParameterList, ArrayList ArrList, DataSet ds, DbTransaction RootDBT, bool isResume, out string V_CNT_NO)
        {
            //新增順序:  1. VDS_VDM_CONTRACT_MST(合約主檔)
            //           2. VDS_VDM_CONTRACT_STORE(店群門市 -- 補貼運費 --> 要使用合約主檔的ID)
            //           3. VDS_VDM_CONTRACT_ITEM(單品 -- 多筆)
            //           4. VDS_VDM_CONTRACT_TARGET(獎勵金 -- 多筆)
            //           5. VDS_VDM_CONTRACT_STORE(店群門市 -- 獎勵金 --> 要使用獎勵金的ID)
            //           6. VDS_VDM_CONTRACT_ANUAL(年度獎勵金)
            //           7. VDS_VDM_CONTRACT_STORE(店群門市 -- 年度獎勵金 --> 要使用年度獎勵金的ID)
            //           8. VDS_VDM_TARGET_RANGE(目標級距)

            bool IsRootTranscation = false;
            DataTable dt1 = ds.Tables["Table_1"];//VDS_VDM_CONTRACT_STORE
            DataTable dt2 = ds.Tables["Table_2"];//VDS_VDM_CONTRACT_ITEM
            DataTable dt3 = ds.Tables["Table_3"];//VDS_VDM_CONTRACT_TARGET
            DataTable dt4 = ds.Tables["Table_4"];//VDS_VDM_CONTRACT_STORE
            DataTable dt5 = ds.Tables["Table_5"];//VDS_VDM_TARGET_RANGE
            DataTable dt6 = ds.Tables["Table_6"];//VDS_VDM_CONTRACT_STORE
            DataTable dtSUBSIDY2 = ds.Tables["Table_SUBSIDY2"];//VDS_VDM_CONTRACT_STORE
            try
            {
                DBO.VDM_VendorAgmDBO dbo = new VDM_VendorAgmDBO(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, N_EDIT_NO;
                //string V_CNT_NO;

                //先新增VDS_VDM_CONTRACT_MST合約主檔取得合約編號,以便傳給店群、單品
                if (isResume)
                {
                    dbo.doCreate_VDS_VDM_CONTRACT_MST_Resume(ParameterList, DBT, out N_ID);
                    V_CNT_NO = ParameterList[24].ToString();
                    N_EDIT_NO = Convert.ToInt16(ParameterList[1]);
                }
                else
                {
                    dbo.doCreate_VDS_VDM_CONTRACT_MST(ParameterList, DBT, out N_ID, out V_CNT_NO);
                    N_EDIT_NO = 1;
                }

                int P_ID = N_ID; //新增合約主檔傳回的ID
                ArrayList arrayList = new ArrayList();

                for (int i = 0; i <= dt1.Rows.Count - 1; i++)//店群門市 -- 補貼運費
                {
                    arrayList.Clear();
                    arrayList.Add(ParameterList[0]);//V_VENDOR_CODE
                    arrayList.Add(V_CNT_NO);//V_CNT_NO 新增合約主檔傳回的合約編號
                    arrayList.Add(N_EDIT_NO);//N_EDIT_NO
                    arrayList.Add(0);//V_TARGET_NO 獎勵金對應編號,只有COUNT_TYPE=2(獎勵金) 才會有值,其他的給0
                    arrayList.Add(dt1.Rows[i]["COUNT_TYPE"].ToString());//V_COUNT_TYPE
                    arrayList.Add(dt1.Rows[i]["STORE_GROUP"].ToString());//V_STORE_GROUP
                    arrayList.Add(dt1.Rows[i]["STORE"].ToString());//V_STORE
                    arrayList.Add(ParameterList[21]);//D_CREATEDATE
                    arrayList.Add(ParameterList[20]);//V_CREATEUID
                    arrayList.Add(ParameterList[22]);//V_UPDATEUID
                    arrayList.Add(ParameterList[23]);//D_UPDATEDATE
                    arrayList.Add(P_ID);//N_PID 新增合約主檔傳回的ID
                    dbo.doCreate_VDS_VDM_CONTRACT_STORE(arrayList, DBT, out N_ID);
                }

                for (int i = 0; i <= dt2.Rows.Count - 1; i++)//單品 -- 補貼運費
                {
                    arrayList.Clear();
                    arrayList.Add(ParameterList[0]);//V_VENDOR_CODE
                    arrayList.Add(V_CNT_NO);//V_CNT_NO
                    arrayList.Add(N_EDIT_NO);//N_EDIT_NO
                    arrayList.Add(dt2.Rows[i]["ITEM"].ToString());//V_ITEM
                    arrayList.Add(dt2.Rows[i]["PERIOD_B"].ToString());//V_PERIOD_B
                    arrayList.Add(dt2.Rows[i]["PERIOD_E"].ToString());//V_PERIOD_E
                    arrayList.Add(ParameterList[23]);//D_UPDATEDATE
                    arrayList.Add(ParameterList[22]);//V_UPDATEUID
                    arrayList.Add(ParameterList[20]);//V_CREATEUID
                    arrayList.Add(ParameterList[21]);//D_CREATEDATE
                    arrayList.Add(P_ID);//N_PID
                    dbo.doCreate_VDS_VDM_CONTRACT_ITEM(arrayList, DBT, out N_ID);
                }

                for (int i = 0; i <= dt3.Rows.Count - 1; i++) //獎勵金
                {
                    arrayList.Clear();
                    arrayList.Add(V_CNT_NO);//V_CNT_NO 新增合約主檔傳回的合約編號
                    arrayList.Add(N_EDIT_NO);//N_EDIT_NO
                    arrayList.Add(Convert.ToUInt32(dt3.Rows[i]["TARGET_TYPE"]));//N_TARGET_TYPE
                    arrayList.Add(ParameterList[0]);//V_VENDOR_CODE
                    if (dt3.Rows[i]["ACCEPT_AMT"].ToString().Length == 0) arrayList.Add(System.DBNull.Value);//ACCEPT_AMT
                    else arrayList.Add(Convert.ToDouble(dt3.Rows[i]["ACCEPT_AMT"]));
                    if (dt3.Rows[i]["RETURN_AMT"].ToString().Length == 0) arrayList.Add(System.DBNull.Value);//RETURN_AMT
                    else arrayList.Add(Convert.ToDouble(dt3.Rows[i]["RETURN_AMT"]));
                    if (dt3.Rows[i]["ACCEPT_RATE"].ToString().Length == 0) arrayList.Add(System.DBNull.Value);//ACCEPT_RATE
                    else arrayList.Add(Convert.ToDouble(dt3.Rows[i]["ACCEPT_RATE"]));
                    if (dt3.Rows[i]["RETURN_RATE"].ToString().Length == 0) arrayList.Add(System.DBNull.Value);//RETURN_RATE
                    else arrayList.Add(Convert.ToDouble(dt3.Rows[i]["RETURN_RATE"]));
                    if (dt3.Rows[i]["PAY_TYPE"].ToString().Length == 0) arrayList.Add(System.DBNull.Value);//PAY_TYPE
                    else arrayList.Add(Convert.ToUInt32(dt3.Rows[i]["PAY_TYPE"]));
                    if (dt3.Rows[i]["TARGET_RULE"].ToString().Length == 0) arrayList.Add(System.DBNull.Value);//TARGET_RULE
                    else arrayList.Add(Convert.ToUInt32(dt3.Rows[i]["TARGET_RULE"]));
                    arrayList.Add(dt3.Rows[i]["NOTES"].ToString());//V_NOTES
                    if (dt3.Rows[i]["MIN_AMT"].ToString().Length == 0) arrayList.Add(System.DBNull.Value);//N_MIN_AMT
                    else arrayList.Add(Convert.ToDouble(dt3.Rows[i]["MIN_AMT"]));
                    arrayList.Add(ParameterList[22]);//V_UPDATEUID
                    arrayList.Add(ParameterList[23]);//D_UPDATEDATE                   
                    arrayList.Add(ParameterList[20]);//V_CREATEUID
                    arrayList.Add(ParameterList[21]);//D_CREATEDATE
                    dbo.doCreate_VDS_VDM_CONTRACT_TARGET(arrayList, DBT, out N_ID);

                    P_ID = N_ID;
                    foreach (DataRow dr in dt4.Rows)
                        if (dt3.Rows[i]["ID"].ToString() == dr["PID"].ToString())
                        {
                            arrayList.Clear();
                            arrayList.Add(ParameterList[0]);//V_VENDOR_CODE
                            arrayList.Add(V_CNT_NO);//V_CNT_NO 新增合約主檔傳回的合約編號
                            arrayList.Add(N_EDIT_NO);//N_EDIT_NO
                            arrayList.Add(dr["TARGET_NO"].ToString());//V_TARGET_NO 獎勵金對應編號
                            arrayList.Add(dr["COUNT_TYPE"].ToString());//V_COUNT_TYPE
                            arrayList.Add(dr["STORE_GROUP"].ToString());//V_STORE_GROUP
                            arrayList.Add(dr["STORE"].ToString());//V_STORE
                            arrayList.Add(ParameterList[21]);//D_CREATEDATE
                            arrayList.Add(ParameterList[20]);//V_CREATEUID
                            arrayList.Add(ParameterList[22]);//V_UPDATEUID
                            arrayList.Add(ParameterList[23]);//D_UPDATEDATE
                            arrayList.Add(P_ID);//N_PID 新增合約主檔傳回的ID
                            dbo.doCreate_VDS_VDM_CONTRACT_STORE(arrayList, DBT, out N_ID);
                        }
                }

                //先新增VDS_VDM_CONTRACT_ANUAL年度獎勵金取得合約編號及ID,以便傳給店群、目標級距
                dbo.doCreate_VDS_VDM_CONTRACT_ANNUAL(V_CNT_NO, ArrList, DBT, out N_ID);
                P_ID = N_ID; //新增年度獎勵金傳回的ID

                for (int i = 0; i <= dt5.Rows.Count - 1; i++) //目標級距
                {
                    arrayList.Clear();
                    arrayList.Add(P_ID);//N_PID
                    if (dt5.Rows[i]["TARGET_AMT"].ToString().Length == 0) arrayList.Add(System.DBNull.Value);//ACCEPT_AMT
                    else arrayList.Add(Convert.ToDouble(dt5.Rows[i]["TARGET_AMT"]));
                    if (dt5.Rows[i]["YEAR_TARGET_PERCENT"].ToString().Length == 0) arrayList.Add(System.DBNull.Value);//ACCEPT_AMT
                    else arrayList.Add(Convert.ToDouble(dt5.Rows[i]["YEAR_TARGET_PERCENT"]));
                    arrayList.Add(ParameterList[22]);//V_UPDATEUID
                    arrayList.Add(ParameterList[23]);//D_UPDATEDATE                   
                    arrayList.Add(ParameterList[20]);//V_CREATEUID
                    arrayList.Add(ParameterList[21]);//D_CREATEDATE
                    dbo.doCreate_VDS_VDM_TARGET_RANGE(arrayList, DBT, out N_ID);
                }

                for (int i = 0; i <= dt6.Rows.Count - 1; i++)//店群門市 -- 年度獎勵金
                {
                    arrayList.Clear();
                    arrayList.Add(ParameterList[0]);//V_VENDOR_CODE
                    arrayList.Add(V_CNT_NO);//V_CNT_NO 新增合約主檔傳回的合約編號
                    arrayList.Add(N_EDIT_NO);//N_EDIT_NO
                    arrayList.Add(0);//V_TARGET_NO 獎勵金對應編號,只有COUNT_TYPE=2(獎勵金) 才會有值,其他給0
                    arrayList.Add(dt6.Rows[i]["COUNT_TYPE"].ToString());//V_COUNT_TYPE
                    arrayList.Add(dt6.Rows[i]["STORE_GROUP"].ToString());//V_STORE_GROUP
                    arrayList.Add(dt6.Rows[i]["STORE"].ToString());//V_STORE
                    arrayList.Add(ParameterList[21]);//D_CREATEDATE
                    arrayList.Add(ParameterList[20]);//V_CREATEUID
                    arrayList.Add(ParameterList[22]);//V_UPDATEUID
                    arrayList.Add(ParameterList[23]);//D_UPDATEDATE
                    arrayList.Add(P_ID);//N_PID 新增年度獎勵金傳回的ID
                    dbo.doCreate_VDS_VDM_CONTRACT_STORE(arrayList, DBT, out N_ID);
                }

                //油價補貼
                arrayList.Clear();
                arrayList.Add(V_CNT_NO);          //V_CNT_NO       varchar2,
                arrayList.Add(N_EDIT_NO);         //N_EDIT_NO      number,           
                arrayList.Add(ParameterList[0]);  //V_VENDOR_CODE  varchar2,
                arrayList.Add(ParameterList[25]); //N_SUBSIDY_TYPE number,
                arrayList.Add(ParameterList[26]); //N_COUNT_TYPE   number,
                arrayList.Add(ParameterList[28]); //N_PAY_TYPE     number,
                arrayList.Add(ParameterList[27]); //N_SUBSIDY_RATE  number,
                arrayList.Add(ParameterList[22]); //V_UPDATEUID    varchar2,
                arrayList.Add(ParameterList[23]); //D_UPDATEDATE   date,
                arrayList.Add(ParameterList[20]); //V_CREATEUID    varchar2,
                arrayList.Add(ParameterList[21]); //D_CREATEDATE   date,
                arrayList.Add(ParameterList[29]); //V_SUBSIDY_RULE varchar2
                dbo.doCreate_VDS_VDM_CONTRACT_SUBSIDY(arrayList, DBT, out N_ID);

                //離島配送費
                arrayList.Clear();
                arrayList.Add(V_CNT_NO);          //V_CNT_NO       varchar2,
                arrayList.Add(N_EDIT_NO);         //N_EDIT_NO      number,           
                arrayList.Add(ParameterList[0]);  //V_VENDOR_CODE  varchar2,
                arrayList.Add(1);                 //N_SUBSIDY_TYPE number,
                arrayList.Add(ParameterList[30]); //N_COUNT_TYPE   number,
                arrayList.Add(ParameterList[32]); //N_PAY_TYPE     number,
                arrayList.Add(ParameterList[31]); //N_SUBSIDY_RATE  number,
                arrayList.Add(ParameterList[22]); //V_UPDATEUID    varchar2,
                arrayList.Add(ParameterList[23]); //D_UPDATEDATE   date,
                arrayList.Add(ParameterList[20]); //V_CREATEUID    varchar2,
                arrayList.Add(ParameterList[21]); //D_CREATEDATE   date,
                arrayList.Add(ParameterList[33]); //V_SUBSIDY_RULE varchar2
                dbo.doCreate_VDS_VDM_CONTRACT_SUBSIDY(arrayList, DBT, out N_ID);

                //離島配送費
                arrayList.Clear();
                arrayList.Add(V_CNT_NO);          //V_CNT_NO       varchar2,
                arrayList.Add(N_EDIT_NO);         //N_EDIT_NO      number,           
                arrayList.Add(ParameterList[0]);  //V_VENDOR_CODE  varchar2,
                arrayList.Add(4);                 //N_SUBSIDY_TYPE number,
                arrayList.Add(ParameterList[34]); //N_COUNT_TYPE   number,
                arrayList.Add(DBNull.Value); //N_PAY_TYPE     number,
                arrayList.Add(DBNull.Value); //N_SUBSIDY_RATE  number,
                arrayList.Add(ParameterList[22]); //V_UPDATEUID    varchar2,
                arrayList.Add(ParameterList[23]); //D_UPDATEDATE   date,
                arrayList.Add(ParameterList[20]); //V_CREATEUID    varchar2,
                arrayList.Add(ParameterList[21]); //D_CREATEDATE   date,
                arrayList.Add(DBNull.Value); //V_SUBSIDY_RULE varchar2
                dbo.doCreate_VDS_VDM_CONTRACT_SUBSIDY(arrayList, DBT, out N_ID);

                for (int i = 0; i <= dtSUBSIDY2.Rows.Count - 1; i++)//店群門市 -- 油價補貼
                {
                    arrayList.Clear();
                    arrayList.Add(ParameterList[0]);//V_VENDOR_CODE
                    arrayList.Add(V_CNT_NO);//V_CNT_NO 新增合約主檔傳回的合約編號
                    arrayList.Add(N_EDIT_NO);//N_EDIT_NO
                    arrayList.Add(0);//V_TARGET_NO 獎勵金對應編號,只有COUNT_TYPE=2(獎勵金) 才會有值,其他給0
                    arrayList.Add(dtSUBSIDY2.Rows[i]["COUNT_TYPE"].ToString());//V_COUNT_TYPE
                    arrayList.Add(dtSUBSIDY2.Rows[i]["STORE_GROUP"].ToString());//V_STORE_GROUP
                    arrayList.Add(DBNull.Value);//V_STORE
                    arrayList.Add(ParameterList[21]);//D_CREATEDATE
                    arrayList.Add(ParameterList[20]);//V_CREATEUID
                    arrayList.Add(ParameterList[22]);//V_UPDATEUID
                    arrayList.Add(ParameterList[23]);//D_UPDATEDATE
                    arrayList.Add(P_ID);//N_PID 新增年度獎勵金傳回的ID
                    dbo.doCreate_VDS_VDM_CONTRACT_STORE(arrayList, DBT, out N_ID);
                }

                #region 交易成功

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation成立
                    DBT.Commit();
                }
                #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

            }
        }