Beispiel #1
0
    /// <summary>
    /// 檢查條件
    /// </summary>
    /// <param name="s_Type"></param>
    /// <returns></returns>
    private ArrayList Check_Condition(string s_Type)
    {
        #region 宣告

        CAAModel.CAACommon CAAComm = new CAAModel.CAACommon();
        ArrayList arl_Return = new ArrayList();
        arl_Return.Add(string.Empty);//該欄位放Focus欄位之ClientID
        arl_Return.Add(string.Empty);//該欄位放錯誤訊息

        #endregion

        #region BUTTON [儲存]鈕,編輯狀態

        if (s_Type == "BUTTON [儲存]鈕,編輯狀態")
        {
            #region 檢查日期格式

            arl_Return = CAAComm.Check_Format_Date(this.slp_SAL_DATE.Text, "欄位[營業日期]日期格式錯誤", "1", this.slp_SAL_DATE.DateTextBox.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.txt_COLL_DATE.Text, "欄位[交易日期]日期格式錯誤", "1", this.txt_COLL_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.txt_COLL_TIME.Text, "欄位[交易時間]時間格式錯誤", "1", this.txt_COLL_TIME.ClientID, arl_Return);

            #endregion

            #region 檢查數字格式

            arl_Return = CAAComm.Check_Format_Int(this.txt_COLL_SEQNO.Text, "欄位[交易序號]數字格式錯誤", "64", "1", this.txt_COLL_SEQNO.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(this.txt_PAY_CHKNO.Text, "欄位[繳款識別碼]數字格式錯誤", "32", "1", this.txt_PAY_CHKNO.ClientID, arl_Return);

            #endregion

            #region 檢查欄位的Byte長度

            if (CAAComm.Get_Byte_Length(this.txt_COLL_SEQNO.Text) > 10)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[交易序號]長度不可大於 10 Byte", "1", this.txt_COLL_SEQNO.ClientID); }

            if (CAAComm.Get_Byte_Length(this.txt_PAY_CHKNO.Text) > 9)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[繳款識別碼]長度不可大於 9 Byte", "1", this.txt_PAY_CHKNO.ClientID); }

            if (CAAComm.Get_Byte_Length(this.txt_MEMO.Text) > 200)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[原因說明]長度不可大於 200 Byte", "1", this.txt_MEMO.ClientID); }
            #endregion

            #region 檢查必填欄位

            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_CHARGE.Text, "text", "欄位[手續費]為必填欄位", "1", this.slp_CHARGE.TextBox_Code.ClientID, arl_Return);

            #endregion
        }

        #endregion

        #region BUTTON [編輯]鈕,檢視狀態

        else if (s_Type == "BUTTON [編輯]鈕,檢視狀態")
        {

        }

        #endregion

        return arl_Return;
    }
Beispiel #2
0
    /// <summary>
    /// 檢查條件
    /// </summary>
    /// <param name="s_Type"></param>
    /// <returns></returns>
    private ArrayList Check_Condition(string s_Type)
    {
        #region 宣告

        BCO.CAACommon CAAComm = new BCO.CAACommon();
        ArrayList arl_Return = new ArrayList();
        arl_Return.Add(string.Empty);//該欄位放Focus欄位之ClientID
        arl_Return.Add(string.Empty);//該欄位放錯誤訊息

        #endregion

        #region SLP轉型

        #region 銷或折讓維護區

        TextBox txt_STORE_ID = (TextBox)this.slp_STORE_ID.FindControl("TextBoxCode");//店號
        TextBox txt_ROOT_NO = (TextBox)this.slp_ROOT_NO.FindControl("TextBoxCode");//商品群分類
        TextBox txt_DISC_DATE = (TextBox)this.slp_DISC_DATE.FindControl("TextBoxCode");//折讓日期
        TextBox txt_CHG_DISC_DATE = (TextBox)this.slp_CHG_DISC_DATE.FindControl("TextBoxCode");//異動折讓日期
        TextBox txt_PROOF_DATE = (TextBox)this.slp_PROOF_DATE.FindControl("TextBoxCode");//憑證已回日期
        TextBox txt_CANCEL_DATE = (TextBox)this.slp_CANCEL_DATE.FindControl("TextBoxCode");//作廢日期
        TextBox txt_PERIOD_DATE = (TextBox)this.slp_PERIOD_DATE.FindControl("TextBoxCode");//申報日期
        TextBox txt_TEMPORAL_DATE = (TextBox)this.slp_TEMPORAL_DATE.FindControl("TextBoxCode");//暫收日期
        TextBox txt_DISC_UAMT = (TextBox)this.slp_DISC_UAMT.FindControl("TextBoxCode");//折讓金額(未稅)
        TextBox txt_DISC_TAX = (TextBox)this.slp_DISC_TAX.FindControl("TextBoxCode");//折讓稅額
        TextBox txt_DISC_AMT = (TextBox)this.slp_DISC_AMT.FindControl("TextBoxCode");//總金額
        TextBox txt_CLOSE_MONTH = (TextBox)((ASP.wui_slp_slp_numberupdown_ascx)this.slp_CLOSE_MONTH.FindControl("SLP_NumberUpDown1")).FindControl("TextBoxCode");//結帳年月

        DropDownList drop_DISC_SOURCE = (DropDownList)this.slp_DISC_SOURCE.FindControl("D1");//來源
        DropDownList drop_DISC_TYPE = (DropDownList)this.slp_DISC_TYPE.FindControl("D1");//型式
        DropDownList drop_TAX_TYPE = (DropDownList)this.slp_TAX_TYPE.FindControl("D1");//稅別

        #endregion

        #region 折讓項目區

        TextBox txt_Disc_INV_DATE = (TextBox)this.slp_Disc_INV_DATE.FindControl("TextBoxCode");//發票日期
        TextBox txt_Disc_DISC_UAMT = (TextBox)this.slp_Disc_DISC_UAMT.FindControl("TextBoxCode");//折讓金額(未稅)
        TextBox txt_Disc_DISC_TAX = (TextBox)this.slp_Disc_DISC_TAX.FindControl("TextBoxCode");//折讓稅額
        TextBox txt_Disc_NON_INV_UAMT = (TextBox)this.slp_Disc_NON_INV_UAMT.FindControl("TextBoxCode");//發票餘額(未稅)
        TextBox txt_Disc_NON_INV_TAX = (TextBox)this.slp_Disc_NON_INV_TAX.FindControl("TextBoxCode");//發票稅額

        #endregion

        #endregion

        #region BUTTON [儲存]鈕

        #region 新增狀態

        if (s_Type == "BUTTON [儲存]鈕,新增狀態")
        {
            #region 檢查欄位的Byte長度

            if (CAAComm.Get_Byte_Length(this.txt_ACT_DISC_NO.Text) > 13)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[財會折讓單號]長度不可大於 13 Byte", "1", this.txt_ACT_DISC_NO.ClientID); }
            if (CAAComm.Get_Byte_Length(this.txt_REPROOF_NO.Text) > 12)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[發票號碼/收據]長度不可大於 12 Byte", "1", this.txt_REPROOF_NO.ClientID); }
            if (CAAComm.Get_Byte_Length(this.txt_RFNO.Text) > 10)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[統一編號]長度不可大於 10 Byte", "1", this.txt_RFNO.ClientID); }
            if (CAAComm.Get_Byte_Length(this.txt_MEMO.Text) > 200)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[備註]長度不可大於 200 Byte", "1", this.txt_MEMO.ClientID); }

            #endregion

            #region 檢查SLP日期格式

            arl_Return = CAAComm.Check_Format_Date(this.slp_DISC_DATE.Text, "欄位[折讓日期]日期格式錯誤", "1", txt_DISC_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_CHG_DISC_DATE.Text, "欄位[異動折讓日期]日期格式錯誤", "1", txt_DISC_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_PROOF_DATE.Text, "欄位[憑證已回日期]日期格式錯誤", "1", txt_PROOF_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_CANCEL_DATE.Text, "欄位[作廢日期]日期格式錯誤", "1", txt_CANCEL_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_PERIOD_DATE.Text, "欄位[申報日期]日期格式錯誤", "1", txt_PERIOD_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_TEMPORAL_DATE.Text, "欄位[暫收日期]日期格式錯誤", "1", txt_TEMPORAL_DATE.ClientID, arl_Return);

            #endregion

            #region 檢查SLP數字格式

            arl_Return = CAAComm.Check_Format_Int(this.slp_DISC_UAMT.Text, "欄位[折讓金額(未稅)]數字格式錯誤", "32", "1", txt_DISC_UAMT.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(this.slp_DISC_TAX.Text, "欄位[折讓稅額]數字格式錯誤", "32", "1", txt_DISC_TAX.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(Request[txt_DISC_AMT.UniqueID].ToString(), "欄位[總金額]數字格式錯誤", "32", "1", txt_DISC_AMT.ClientID, arl_Return);

            #endregion

            #region 檢查SLP年月格式

            arl_Return = CAAComm.Check_Format_YearMonth(this.slp_CLOSE_MONTH.Text, "欄位[結帳年月]年月格式錯誤", "1", txt_CLOSE_MONTH.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_YearMonth(this.slp_CLOSE_MONTH_ACCT.Text, "欄位[結帳年月-財會]年月格式錯誤", "1", this.slp_CLOSE_MONTH_ACCT.TextBoxCode_Object.ClientID, arl_Return);

            #endregion

            #region 檢查必填欄位

            arl_Return = CAAComm.Check_MustFillin_Column(drop_DISC_SOURCE.SelectedIndex.ToString(), "drop", "欄位[來源]為必填欄位", "1", string.Empty, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_STORE_ID.Text, "text", "欄位[店號]為必填欄位", "1", txt_STORE_ID.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(drop_DISC_TYPE.SelectedIndex.ToString(), "drop", "欄位[型式]為必填欄位", "1", string.Empty, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(drop_TAX_TYPE.SelectedIndex.ToString(), "drop", "欄位[稅別]為必填欄位", "1", string.Empty, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_ROOT_NO.Text, "text", "欄位[商品群分類]為必填欄位", "1", txt_ROOT_NO.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_CLOSE_MONTH.Text, "text", "欄位[結帳年月]為必填欄位", "1", txt_CLOSE_MONTH.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_DISC_UAMT.Text, "text", "欄位[折讓金額(未稅)]為必填欄位", "1", txt_DISC_UAMT.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_DISC_TAX.Text, "text", "欄位[折讓稅額]為必填欄位", "1", txt_DISC_TAX.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(Request[txt_DISC_AMT.UniqueID].ToString(), "text", "欄位[總金額]為必填欄位", "1", txt_DISC_AMT.ClientID, arl_Return);

            #endregion

            #region 如果基本檢查有誤,則Return

            if (arl_Return[1].ToString() != string.Empty)
            { return arl_Return; }

            #endregion

            #region 自訂檢查

            #region 檢查欄位[折讓金額(未稅)][折讓稅額][總金額]

            int i_DISC_UAMT = int.Parse(this.slp_DISC_UAMT.Text);//折讓金額(未稅)
            int i_DISC_TAX = int.Parse(this.slp_DISC_TAX.Text);//折讓稅額
            int i_DISC_AMT = int.Parse(Request[txt_DISC_AMT.UniqueID].ToString());//總金額

            if (i_DISC_UAMT < 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓金額(未稅)]不可小於0", "1", txt_DISC_UAMT.ClientID); }
            if (i_DISC_TAX < 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓稅額]不可小於0", "1", txt_DISC_TAX.ClientID); }
            if (i_DISC_AMT <= 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[總金額]不可小於或等於0", "1", txt_DISC_AMT.ClientID); }
            if (i_DISC_UAMT == 0 && i_DISC_TAX != 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓金額(未稅)]為0時,欄位[折讓稅額]也必須為0", "1", txt_DISC_TAX.ClientID); }
            if (i_DISC_UAMT + i_DISC_TAX != i_DISC_AMT)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓金額(未稅)]加上欄位[折讓稅額]必須等於欄位[總金額]", "1", txt_DISC_AMT.ClientID); }
            if (this.slp_TAX_TYPE.Text == "1" ||//[稅別]=免稅
                this.slp_TAX_TYPE.Text == "2")//[稅別]=零稅
            {
                if (i_DISC_TAX != 0)
                { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[稅別]是免稅或零稅時,欄位[折讓稅額]必須為0", "1", txt_DISC_TAX.ClientID); }
            }

            #endregion

            #region 新增模式下欄位[來源]必須是選擇人工開立

            if (this.slp_DISC_SOURCE.Text != "2")//2代表是人工開立
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[來源]必須是選擇人工開立", "1", drop_DISC_SOURCE.ClientID); }

            #endregion

            #region 檢查欄位[店號]是否為有效店號

            #region 傳入參數

            ParameterList.Clear();
            ParameterList.Add(CAAComm.GetValueSetParameter(this.slp_STORE_ID.Text, "string", false));//店號
            ParameterList.Add(CAAComm.GetValueSetParameter(DateTime.Now.ToString(), "datetime", false));//系統時間
            ParameterList.Add(CAAComm.GetValueSetParameter(Session["UID"].ToString(), "string", false));//登入人員

            #endregion

            #region 連結資料庫

            BCO.MaintainDiscRecord bco = new BCO.MaintainDiscRecord(ConntionDB);
            IDataReader dr = bco.QUERY_CAA18_DATA_BY_STORE_ID(ParameterList);

            #endregion

            if (dr.Read() == false)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[店號]查無符合店號或己關店,請重新輸入", "1", this.slp_STORE_ID.TextBox_Code.ClientID); }
            dr.Close();

            #endregion

            #region 新增模式下欄位[作廢]不能勾選

            if (this.chb_CANCEL_FLG.Checked == true)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[作廢]不能勾選", "1", chb_CANCEL_FLG.ClientID); }

            #endregion

            #region 新增模式下欄位[作廢日期]必須為空白

            if (this.slp_CANCEL_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[作廢日期]必須為空白", "1", txt_CANCEL_DATE.ClientID); }

            #endregion

            #region 新增模式下欄位[申報]不能勾選

            if (this.chb_PERIOD_FLG.Checked == true)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[申報]不能勾選", "1", chb_PERIOD_FLG.ClientID); }

            #endregion

            #region 新增模式下欄位[申報日期]必須為空白

            if (this.slp_PERIOD_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[申報日期]必須為空白", "1", txt_PERIOD_DATE.ClientID); }

            #endregion

            #region 新增模式下欄位[轉暫收]不能勾選

            if (this.chb_TEMPORAL_FLG.Checked == true)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[轉暫收]不能勾選", "1", chb_TEMPORAL_FLG.ClientID); }

            #endregion

            #region 新增模式下欄位[暫收日期]必須為空白

            if (this.slp_TEMPORAL_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[暫收日期]必須為空白", "1", txt_TEMPORAL_DATE.ClientID); }

            #endregion

            #region 檢查若己月結則不允許新增

            #region 傳入參數

            ParameterList.Clear();
            ParameterList.Add(CAAComm.GetValueSetParameter(this.slp_CLOSE_MONTH.Text, "string", false));//[結帳年月]
            ParameterList.Add(CAAComm.GetValueSetParameter("CAA18", "string", false)); //V_FUNC_NO

            #endregion

            #region 連結資料庫

            BCO.ChanMonthCloseYN bco_Is_Close = new BCO.ChanMonthCloseYN(ConntionDB);

            #endregion

            #region 檢查回傳資料

            //回傳結果=Y,該月份已月結
            //回傳結果=N,該月份尚未月結
            if (((ArrayList)bco_Is_Close.GetChanMonthCloseStatus(ParameterList, null))[0].ToString() == "Y")
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[結帳年月]該月份已月結", "1", txt_CLOSE_MONTH.ClientID); }

            #endregion

            #endregion

            #region 檢查欄位[憑證已回]若已勾選,則欄位[憑證已回日期]為必填欄位

            if (this.chb_PROOF_FLG.Checked == true && this.slp_PROOF_DATE.Text.Trim() == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[憑證已回]若有勾選,則欄位[憑證已回日期]為必填欄位", "1", txt_PROOF_DATE.ClientID); }

            #endregion

            #region 檢查欄位[憑證已回日期]若有值,則欄位[憑證已回]或[取具進項憑証]或[取具收據]必須勾選

            if ((this.chb_PROOF_FLG.Checked == false && this.chb_REPROOF_FLG.Checked == false && this.chb_RECEIPT_FLG.Checked == false) == true &&
                this.slp_PROOF_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[憑證已回日期]若有值,則欄位[憑證已回]或[取具進項憑証]或[取具收據]必須勾選", "1", string.Empty); }

            #endregion

            #region 檢查欄位[取具進項憑証]若已勾選,則欄位[憑證已回日期]為必填欄位

            if (this.chb_REPROOF_FLG.Checked == true && this.slp_PROOF_DATE.Text == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[取具進項憑証]若已勾選,則欄位[憑證已回日期]為必填欄位", "1", txt_PROOF_DATE.ClientID); }

            #endregion

            #region 檢查欄位[取具進項憑証]若已勾選,則欄位[發票號碼/收據]為必填欄位

            if (this.chb_REPROOF_FLG.Checked == true && this.txt_REPROOF_NO.Text == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[取具進項憑証]若已勾選,則欄位[發票號碼/收據]為必填欄位", "1", this.txt_REPROOF_NO.ClientID); }

            #endregion

            #region 檢查欄位[發票號碼/收據]若有值,則欄位[取具進項憑証]必須勾選

            if (this.chb_REPROOF_FLG.Checked == false && this.txt_REPROOF_NO.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[發票號碼/收據]若有值,則欄位[取具進項憑証]必須勾選", "1", string.Empty); }

            #endregion

            #region 檢查欄位[取具收據]若已勾選,則欄位[憑證已回日期]為必填欄位

            if (this.chb_RECEIPT_FLG.Checked == true && this.slp_PROOF_DATE.Text == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[取具收據]若已勾選,則欄位[憑證已回日期]為必填欄位", "1", txt_PROOF_DATE.ClientID); }

            #endregion

            #endregion
        }

        #endregion

        #region 編輯狀態

        else if (s_Type == "BUTTON [儲存]鈕,編輯狀態")
        {
            #region 檢查欄位的Byte長度

            if (CAAComm.Get_Byte_Length(this.txt_ACT_DISC_NO.Text) > 13)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[財會折讓單號]長度不可大於 13 Byte", "1", this.txt_ACT_DISC_NO.ClientID); }
            if (CAAComm.Get_Byte_Length(this.txt_REPROOF_NO.Text) > 12)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[發票號碼/收據]長度不可大於 12 Byte", "1", this.txt_REPROOF_NO.ClientID); }
            if (CAAComm.Get_Byte_Length(this.txt_RFNO.Text) > 10)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[統一編號]長度不可大於 10 Byte", "1", this.txt_RFNO.ClientID); }
            if (CAAComm.Get_Byte_Length(this.txt_MEMO.Text) > 200)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[備註]長度不可大於 200 Byte", "1", this.txt_MEMO.ClientID); }

            #endregion

            #region 檢查SLP日期格式

            arl_Return = CAAComm.Check_Format_Date(this.slp_DISC_DATE.Text, "欄位[折讓日期]日期格式錯誤", "1", txt_DISC_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_CHG_DISC_DATE.Text, "欄位[異動折讓日期]日期格式錯誤", "1", txt_DISC_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_PROOF_DATE.Text, "欄位[憑證已回日期]日期格式錯誤", "1", txt_PROOF_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_CANCEL_DATE.Text, "欄位[作廢日期]日期格式錯誤", "1", txt_CANCEL_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_PERIOD_DATE.Text, "欄位[申報日期]日期格式錯誤", "1", txt_PERIOD_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_TEMPORAL_DATE.Text, "欄位[暫收日期]日期格式錯誤", "1", txt_TEMPORAL_DATE.ClientID, arl_Return);

            #endregion

            #region 檢查SLP數字格式

            arl_Return = CAAComm.Check_Format_Int(this.slp_DISC_UAMT.Text, "欄位[折讓金額(未稅)]數字格式錯誤", "32", "1", txt_DISC_UAMT.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(this.slp_DISC_TAX.Text, "欄位[折讓稅額]數字格式錯誤", "32", "1", txt_DISC_TAX.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(Request[txt_DISC_AMT.UniqueID].ToString(), "欄位[總金額]數字格式錯誤", "32", "1", txt_DISC_AMT.ClientID, arl_Return);

            #endregion

            #region 檢查SLP年月格式

            arl_Return = CAAComm.Check_Format_YearMonth(this.slp_CLOSE_MONTH.Text, "欄位[結帳年月]年月格式錯誤", "1", txt_CLOSE_MONTH.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_YearMonth(this.slp_CLOSE_MONTH_ACCT.Text, "欄位[結帳年月-財會]年月格式錯誤", "1", this.slp_CLOSE_MONTH_ACCT.TextBoxCode_Object.ClientID, arl_Return);

            #endregion

            #region 檢查不可同時進行多個勾選作業

            bool b_IsRight = false;
            string s_ReturnMsg = string.Empty;

            Check_CheckStatus(out b_IsRight, out s_ReturnMsg);

            if (b_IsRight == true)//代表進行1個以上勾選作業
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "不可同時進行多個勾選作業", "1", string.Empty); }

            #endregion

            #region 檢查月結是否與頁面LOAD進來時相同,如有異動,請使用者重新LOAD頁面

            #region 傳入參數

            ParameterList.Clear();
            ParameterList.Add(CAAComm.GetValueSetParameter(this.slp_CLOSE_MONTH.Text, "string", false));//[結帳年月]
            ParameterList.Add(CAAComm.GetValueSetParameter("CAA18", "string", false)); //V_FUNC_NO

            #endregion

            #region 連結資料庫

            BCO.ChanMonthCloseYN bco_Is_Close = new BCO.ChanMonthCloseYN(ConntionDB);

            #endregion

            #region 檢查回傳資料

            //回傳結果=Y,該月份已月結
            //回傳結果=N,該月份尚未月結
            bool b_IsClose_Now = false;
            if (((ArrayList)bco_Is_Close.GetChanMonthCloseStatus(ParameterList, null))[0].ToString() == "Y")
            { b_IsClose_Now = true; }
            else
            { b_IsClose_Now = false; }

            if (b_IsClose != b_IsClose_Now)//代表月結已被更動
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "月結已被更動,請重新載入編輯頁面", "1", string.Empty); }

            #endregion

            #endregion

            #region 如果基本檢查有誤,則Return

            if (arl_Return[1].ToString() != string.Empty)
            { return arl_Return; }

            #endregion

            #region 自訂檢查

            #region 檢查欄位[折讓金額(未稅)][折讓稅額][總金額]

            int i_DISC_UAMT = int.Parse(this.slp_DISC_UAMT.Text);//折讓金額(未稅)
            int i_DISC_TAX = int.Parse(this.slp_DISC_TAX.Text);//折讓稅額
            int i_DISC_AMT = int.Parse(Request[txt_DISC_AMT.UniqueID].ToString());//總金額

            if (i_DISC_UAMT < 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓金額(未稅)]不可小於0", "1", txt_DISC_UAMT.ClientID); }
            if (i_DISC_TAX < 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓稅額]不可小於0", "1", txt_DISC_TAX.ClientID); }
            if (i_DISC_AMT <= 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[總金額]不可小於或等於0", "1", txt_DISC_AMT.ClientID); }
            if (i_DISC_UAMT == 0 && i_DISC_TAX != 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓金額(未稅)]為0時,欄位[折讓稅額]也必須為0", "1", txt_DISC_TAX.ClientID); }
            if (i_DISC_UAMT + i_DISC_TAX != i_DISC_AMT)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓金額(未稅)]加上欄位[折讓稅額]必須等於欄位[總金額]", "1", txt_DISC_AMT.ClientID); }
            if (this.slp_TAX_TYPE.Text == "1" ||//[稅別]=免稅
                this.slp_TAX_TYPE.Text == "2")//[稅別]=零稅
            {
                if (i_DISC_TAX != 0)
                { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[稅別]是免稅或零稅時,欄位[折讓稅額]必須為0", "1", txt_DISC_TAX.ClientID); }
            }

            #endregion

            #region 檢查如果己月結則[折讓金額(未稅)][折讓稅額][總金額]要與原始金額相同

            if (b_IsClose == true)//該月份已月結
            {
                if (this.hid_Original_DISC_UAMT.Value.Trim() != this.slp_DISC_UAMT.Text.Trim())
                { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[結帳年月]" + this.slp_CLOSE_MONTH.Text + "該月份己月結,欄位[折讓金額(未稅)]的金額必須等於原始折讓金額(未稅)" + this.hid_Original_DISC_UAMT.Value.Trim() + "元", "1", txt_DISC_UAMT.ClientID); }
                if (this.hid_Original_DISC_TAX.Value.Trim() != this.slp_DISC_TAX.Text.Trim())
                { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[結帳年月]" + this.slp_CLOSE_MONTH.Text + "該月份己月結,欄位[折讓稅額]的金額必須等於原始折讓稅額" + this.hid_Original_DISC_TAX.Value.Trim() + "元", "1", txt_DISC_TAX.ClientID); }
                if (this.hid_Original_DISC_AMT.Value.Trim() != Request[txt_DISC_AMT.UniqueID].ToString().Trim())
                { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[結帳年月]" + this.slp_CLOSE_MONTH.Text + "該月份己月結,欄位[總金額]的金額必須等於原始折讓稅額" + this.hid_Original_DISC_AMT.Value.Trim() + "元", "1", txt_DISC_AMT.ClientID); }
            }

            #endregion

            #region 檢查下列情況如果已月結則修改後的金額必須等於原始金額

            if (b_IsClose == true)//該月份已月結
            {
                if (s_ReturnMsg == "勾選欄位[憑證已回]" ||
                    s_ReturnMsg == "取消勾選欄位[憑證已回]" ||
                    s_ReturnMsg == "取消勾選欄位[取具進項憑証]" ||
                    s_ReturnMsg == "都沒有勾")
                {
                    int i_IsClose_DISC_UAMT = 0;
                    int i_IsClose_DISC_TAX = 0;
                    int i_IsClose_DISC_AMT = 0;

                    foreach (DataRow drRow in dt_NewItem.Rows)
                    {
                        i_IsClose_DISC_UAMT += int.Parse(drRow["DISC_UAMT"].ToString());//折讓金額(未稅)
                        i_IsClose_DISC_TAX += int.Parse(drRow["DISC_TAX"].ToString());//折讓稅額
                        i_IsClose_DISC_AMT += int.Parse(drRow["DISC_AMT"].ToString());//總金額
                    }

                    if (this.hid_Original_DISC_UAMT.Value.Trim() != i_IsClose_DISC_UAMT.ToString())
                    { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[結帳年月]" + this.slp_CLOSE_MONTH.Text + "已月結,折讓項目的折讓金額(未稅):" + i_IsClose_DISC_UAMT.ToString() + "元,不等於原始折讓金額(未稅):" + this.hid_Original_DISC_UAMT.Value + "元", "1", string.Empty); }
                    if (this.hid_Original_DISC_TAX.Value.Trim() != i_IsClose_DISC_TAX.ToString())
                    { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[結帳年月]" + this.slp_CLOSE_MONTH.Text + "已月結,折讓項目的折讓稅額:" + i_IsClose_DISC_TAX.ToString() + "元,不等於原始折讓稅額:" + this.hid_Original_DISC_TAX.Value + "元", "1", string.Empty); }
                    if (this.hid_Original_DISC_AMT.Value.Trim() != i_IsClose_DISC_AMT.ToString())
                    { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[結帳年月]" + this.slp_CLOSE_MONTH.Text + "已月結,折讓項目的總金額:" + i_IsClose_DISC_AMT.ToString() + "元,不等於原始總金額:" + this.hid_Original_DISC_AMT.Value + "元", "1", string.Empty); }
                }
            }

            #endregion

            #region 檢查欄位[憑證已回]若已勾選,則欄位[憑證已回日期]為必填欄位

            if (this.chb_PROOF_FLG.Checked == true && this.slp_PROOF_DATE.Text.Trim() == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[憑證已回]若有勾選,則欄位[憑證已回日期]為必填欄位", "1", txt_PROOF_DATE.ClientID); }

            #endregion

            #region 檢查欄位[憑證已回日期]若有值,則欄位[憑證已回]或[取具進項憑証]或[取具收據]必須勾選

            if ((this.chb_PROOF_FLG.Checked == false && this.chb_REPROOF_FLG.Checked == false && this.chb_RECEIPT_FLG.Checked == false) == true &&
                this.slp_PROOF_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[憑證已回日期]若有值,則欄位[憑證已回]或[取具進項憑証]或[取具收據]必須勾選", "1", string.Empty); }

            #endregion

            #region 檢查欄位[取具進項憑証]若已勾選,則欄位[憑證已回日期]為必填欄位

            if (this.chb_REPROOF_FLG.Checked == true && this.slp_PROOF_DATE.Text == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[取具進項憑証]若已勾選,則欄位[憑證已回日期]為必填欄位", "1", txt_PROOF_DATE.ClientID); }

            #endregion

            #region 檢查欄位[取具進項憑証]若已勾選,則欄位[發票號碼/收據]為必填欄位

            if (this.chb_REPROOF_FLG.Checked == true && this.txt_REPROOF_NO.Text == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[取具進項憑証]若已勾選,則欄位[發票號碼/收據]為必填欄位", "1", this.txt_REPROOF_NO.ClientID); }

            #endregion

            #region 檢查欄位[發票號碼/收據]若有值,則欄位[取具進項憑証]必須勾選

            if (this.chb_REPROOF_FLG.Checked == false && this.txt_REPROOF_NO.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[發票號碼/收據]若有值,則欄位[取具進項憑証]必須勾選", "1", string.Empty); }

            #endregion

            #region 檢查欄位[取具收據]若已勾選,則欄位[憑證已回日期]為必填欄位

            if (this.chb_RECEIPT_FLG.Checked == true && this.slp_PROOF_DATE.Text == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[取具收據]若已勾選,則欄位[憑證已回日期]為必填欄位", "1", txt_PROOF_DATE.ClientID); }

            #endregion

            #region 檢查欄位[作廢]若已勾選,則欄位[作廢日期]為必填欄位

            if (this.chb_CANCEL_FLG.Checked == true && this.slp_CANCEL_DATE.Text.Trim() == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[作廢]若有勾選,則欄位[作廢日期]為必填欄位", "1", txt_CANCEL_DATE.ClientID); }

            #endregion

            #region 檢查[總金額][沖帳餘額],若有沖帳過,則不允許作廢

            #region 規則

            /* 20100325秀玲新增此判斷需求
             * 如果該張折讓單的[DISC_REMAIN_AMT](沖帳金額) & [DISC_AMT](總金額)金額不相符
             * 代表該張折讓單已經沖帳過,不允許作廢。*/

            #endregion

            if (this.chb_CANCEL_FLG.Checked == true || this.slp_CANCEL_DATE.Text.Trim() != string.Empty)
            {
                if (dt_Main.Rows[0]["DISC_REMAIN_AMT"].ToString() != dt_Main.Rows[0]["DISC_AMT"].ToString())
                { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "折讓單已沖帳,不允許作廢", "1", string.Empty); }
            }

            #endregion

            #region 檢查欄位[作廢日期]若有值,則欄位[作廢]必須勾選

            if (this.chb_CANCEL_FLG.Checked == false && this.slp_CANCEL_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[作廢日期]若有值,則欄位[作廢]必須勾選", "1", string.Empty); }

            #endregion

            #region 檢查欄位[轉暫收]若已勾選,則欄位[暫收日期]為必填欄位

            if (this.chb_TEMPORAL_FLG.Checked == true && this.slp_TEMPORAL_DATE.Text.Trim() == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[轉暫收]若有勾選,則欄位[暫收日期]為必填欄位", "1", txt_TEMPORAL_DATE.ClientID); }

            #endregion

            #region 檢查欄位[暫收日期]若有值,則欄位[轉暫收]必須勾選

            if (this.chb_TEMPORAL_FLG.Checked == false && this.slp_TEMPORAL_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[暫收日期]若有值,則欄位[轉暫收]必須勾選", "1", string.Empty); }

            #endregion

            #region 檢查欄位[憑證已回][取具進項憑証][取具收據]三個欄位只能擇一勾選

            int i_Check_Count = 0;

            i_Check_Count += this.chb_PROOF_FLG.Checked == true ? 1 : 0;//憑證已回
            i_Check_Count += this.chb_REPROOF_FLG.Checked == true ? 1 : 0;//取具進項憑証
            i_Check_Count += this.chb_RECEIPT_FLG.Checked == true ? 1 : 0;//取具收據

            if (i_Check_Count > 1)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[憑證已回][取具進項憑証][取具收據]三個欄位只能擇一勾選", "1", string.Empty); }

            #endregion

            #region 檢查欄位[取具收據]如果有勾選,則欄位[折讓稅額]必須為0

            if (this.chb_RECEIPT_FLG.Checked == true &&
                this.slp_DISC_TAX.Text != "0")
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[取具收據]如果有勾選,則欄位[折讓稅額]必須為0", "1", this.slp_DISC_TAX.TextBox_Code.ClientID); }

            #endregion

            #endregion
        }

        #endregion

        #endregion

        #region BUTTON [折讓開立]鈕

        else if (s_Type == "BUTTON [折讓開立]鈕")
        {
            #region 檢查欄位的Byte長度

            if (CAAComm.Get_Byte_Length(this.txt_ACT_DISC_NO.Text) > 13)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[財會折讓單號]長度不可大於 13 Byte", "1", this.txt_ACT_DISC_NO.ClientID); }
            if (CAAComm.Get_Byte_Length(this.txt_REPROOF_NO.Text) > 12)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[發票號碼/收據]長度不可大於 12 Byte", "1", this.txt_REPROOF_NO.ClientID); }
            if (CAAComm.Get_Byte_Length(this.txt_RFNO.Text) > 10)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[統一編號]長度不可大於 10 Byte", "1", this.txt_RFNO.ClientID); }
            if (CAAComm.Get_Byte_Length(this.txt_MEMO.Text) > 200)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[備註]長度不可大於 200 Byte", "1", this.txt_MEMO.ClientID); }

            #endregion

            #region 檢查SLP日期格式

            arl_Return = CAAComm.Check_Format_Date(this.slp_DISC_DATE.Text, "欄位[折讓日期]日期格式錯誤", "1", txt_DISC_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_CHG_DISC_DATE.Text, "欄位[異動折讓日期]日期格式錯誤", "1", txt_DISC_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_PROOF_DATE.Text, "欄位[憑證已回日期]日期格式錯誤", "1", txt_PROOF_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_CANCEL_DATE.Text, "欄位[作廢日期]日期格式錯誤", "1", txt_CANCEL_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_PERIOD_DATE.Text, "欄位[申報日期]日期格式錯誤", "1", txt_PERIOD_DATE.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Date(this.slp_TEMPORAL_DATE.Text, "欄位[暫收日期]日期格式錯誤", "1", txt_TEMPORAL_DATE.ClientID, arl_Return);

            #endregion

            #region 檢查SLP數字格式

            arl_Return = CAAComm.Check_Format_Int(this.slp_DISC_UAMT.Text, "欄位[折讓金額(未稅)]數字格式錯誤", "32", "1", txt_DISC_UAMT.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(this.slp_DISC_TAX.Text, "欄位[折讓稅額]數字格式錯誤", "32", "1", txt_DISC_TAX.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(Request[txt_DISC_AMT.UniqueID].ToString(), "欄位[總金額]數字格式錯誤", "32", "1", txt_DISC_AMT.ClientID, arl_Return);

            #endregion

            #region 檢查SLP年月格式

            arl_Return = CAAComm.Check_Format_YearMonth(this.slp_CLOSE_MONTH.Text, "欄位[結帳年月]年月格式錯誤", "1", txt_CLOSE_MONTH.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_YearMonth(this.slp_CLOSE_MONTH_ACCT.Text, "欄位[結帳年月-財會]年月格式錯誤", "1", this.slp_CLOSE_MONTH_ACCT.TextBoxCode_Object.ClientID, arl_Return);

            #endregion

            #region 檢查必填欄位

            arl_Return = CAAComm.Check_MustFillin_Column(drop_DISC_SOURCE.SelectedIndex.ToString(), "drop", "欄位[來源]為必填欄位", "1", string.Empty, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_STORE_ID.Text, "text", "欄位[店號]為必填欄位", "1", txt_STORE_ID.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(drop_DISC_TYPE.SelectedIndex.ToString(), "drop", "欄位[型式]為必填欄位", "1", string.Empty, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(drop_TAX_TYPE.SelectedIndex.ToString(), "drop", "欄位[稅別]為必填欄位", "1", string.Empty, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_ROOT_NO.Text, "text", "欄位[商品群分類]為必填欄位", "1", txt_ROOT_NO.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_CLOSE_MONTH.Text, "text", "欄位[結帳年月]為必填欄位", "1", txt_CLOSE_MONTH.ClientID, arl_Return);

            #endregion

            #region 如果基本檢查有誤,則Return

            if (arl_Return[1].ToString() != string.Empty)
            { return arl_Return; }

            #endregion

            #region 自訂檢查

            #region 新增模式下欄位[來源]必須是選擇人工開立

            if (this.slp_DISC_SOURCE.Text != "2")//2代表是人工開立
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[來源]必須是選擇人工開立", "1", drop_DISC_SOURCE.ClientID); }

            #endregion

            #region 新增模式下欄位[作廢]不能勾選

            if (this.chb_CANCEL_FLG.Checked == true)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[作廢]不能勾選", "1", chb_CANCEL_FLG.ClientID); }

            #endregion

            #region 新增模式下欄位[作廢日期]必須為空白

            if (this.slp_CANCEL_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[作廢日期]必須為空白", "1", txt_CANCEL_DATE.ClientID); }

            #endregion

            #region 新增模式下欄位[申報]不能勾選

            if (this.chb_PERIOD_FLG.Checked == true)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[申報]不能勾選", "1", chb_PERIOD_FLG.ClientID); }

            #endregion

            #region 新增模式下欄位[申報日期]必須為空白

            if (this.slp_PERIOD_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[申報日期]必須為空白", "1", txt_PERIOD_DATE.ClientID); }

            #endregion

            #region 新增模式下欄位[轉暫收]不能勾選

            if (this.chb_TEMPORAL_FLG.Checked == true)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[轉暫收]不能勾選", "1", chb_TEMPORAL_FLG.ClientID); }

            #endregion

            #region 新增模式下欄位[暫收日期]必須為空白

            if (this.slp_TEMPORAL_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "新增模式下欄位[暫收日期]必須為空白", "1", txt_TEMPORAL_DATE.ClientID); }

            #endregion

            #region 檢查若己月結則不允許新增

            #region 傳入參數

            ParameterList.Clear();
            ParameterList.Add(CAAComm.GetValueSetParameter(this.slp_CLOSE_MONTH.Text, "string", false));//[結帳年月]
            ParameterList.Add(CAAComm.GetValueSetParameter("CAA18", "string", false)); //V_FUNC_NO

            #endregion

            #region 連結資料庫

            BCO.ChanMonthCloseYN bco_Is_Close = new BCO.ChanMonthCloseYN(ConntionDB);

            #endregion

            #region 檢查回傳資料

            //回傳結果=Y,該月份已月結
            //回傳結果=N,該月份尚未月結
            if (((ArrayList)bco_Is_Close.GetChanMonthCloseStatus(ParameterList, null))[0].ToString() == "Y")
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[結帳年月]該月份已月結", "1", txt_CLOSE_MONTH.ClientID); }

            #endregion

            #endregion

            #region 檢查欄位[憑證已回]若已勾選,則欄位[憑證已回日期]為必填欄位

            if (this.chb_PROOF_FLG.Checked == true && this.slp_PROOF_DATE.Text.Trim() == string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[憑證已回]若有勾選,則欄位[憑證已回日期]為必填欄位", "1", txt_PROOF_DATE.ClientID); }

            #endregion

            #region 檢查欄位[憑證已回日期]若有值,則欄位[憑證已回]或[取具進項憑証]必須勾選

            if ((this.chb_PROOF_FLG.Checked == false && this.chb_REPROOF_FLG.Checked == false) == true
                && this.slp_PROOF_DATE.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[憑證已回日期]若有值,則欄位[憑證已回]或[取具進項憑証]必須勾選", "1", string.Empty); }

            #endregion

            #region 檢查欄位[取具進項憑証]若已勾選,則不允許按[折讓開立]鈕

            if (this.chb_REPROOF_FLG.Checked == true)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[取具進項憑証]若已勾選,則不允許按[折讓開立]鈕", "1", string.Empty); }

            #endregion

            #region 檢查欄位[發票號碼/收據]若有值,則欄位[取具進項憑証]必須勾選

            if (this.chb_REPROOF_FLG.Checked == false && this.txt_REPROOF_NO.Text.Trim() != string.Empty)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[發票號碼/收據]若有值,則欄位[取具進項憑証]必須勾選", "1", string.Empty); }

            #endregion

            #endregion
        }

        #endregion

        #region 折讓項目 BUTTON [確認]鈕

        else if (s_Type == "折讓項目 BUTTON [確認]鈕")
        {
            #region 檢查SLP日期格式

            arl_Return = CAAComm.Check_Format_Date(this.slp_Disc_INV_DATE.Text, "欄位[發票日期]日期格式錯誤", "1", txt_Disc_INV_DATE.ClientID, arl_Return);

            #endregion

            #region 檢查SLP數字格式

            arl_Return = CAAComm.Check_Format_Int(this.slp_Disc_DISC_UAMT.Text, "欄位[折讓金額(未稅)]數字格式錯誤", "32", "1", txt_Disc_DISC_UAMT.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(Request[txt_Disc_DISC_TAX.UniqueID].ToString(), "欄位[折讓稅額]數字格式錯誤", "32", "1", txt_Disc_DISC_TAX.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(this.slp_Disc_NON_INV_UAMT.Text, "欄位[發票餘額(未稅)]數字格式錯誤", "32", "1", txt_Disc_NON_INV_UAMT.ClientID, arl_Return);
            arl_Return = CAAComm.Check_Format_Int(this.slp_Disc_NON_INV_TAX.Text, "欄位[發票稅額]數字格式錯誤", "32", "1", txt_Disc_NON_INV_TAX.ClientID, arl_Return);

            #endregion

            #region 檢查必填欄位

            arl_Return = CAAComm.Check_MustFillin_Column(this.txt_Disc_INV_NO.Text, "text", "欄位[發票號碼]為必填欄位", "1", this.txt_Disc_INV_NO.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_Disc_DISC_UAMT.Text, "text", "欄位[折讓金額(未稅)]為必填欄位", "1", txt_Disc_DISC_UAMT.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(Request[txt_Disc_DISC_TAX.UniqueID].ToString(), "text", "欄位[折讓稅額]為必填欄位", "1", txt_Disc_DISC_TAX.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_Disc_NON_INV_UAMT.Text, "text", "欄位[發票餘額(未稅)]為必填欄位", "1", txt_Disc_NON_INV_UAMT.ClientID, arl_Return);
            arl_Return = CAAComm.Check_MustFillin_Column(this.slp_Disc_NON_INV_TAX.Text, "text", "欄位[發票稅額]為必填欄位", "1", txt_Disc_NON_INV_TAX.ClientID, arl_Return);

            #endregion

            #region 如果基本檢查有誤,則Return

            if (arl_Return[1].ToString() != string.Empty)
            { return arl_Return; }

            #endregion

            #region 自訂檢查

            int i_Disc_DISC_UAMT = int.Parse(this.slp_Disc_DISC_UAMT.Text);//折讓金額(未稅)
            int i_Disc_DISC_TAX = int.Parse(Request[txt_Disc_DISC_TAX.UniqueID].ToString());//折讓稅額
            int i_Total_NON_INV_UAMT = int.Parse(this.hid_Disc_Total_NON_INV_UAMT.Value);//發票餘額(未稅)+折讓金額(未稅)
            int i_Total_NON_INV_TAX = int.Parse(this.hid_Disc_Total_NON_INV_TAX.Value);//發票稅額+折讓稅額

            if (i_Disc_DISC_UAMT < 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓金額(未稅)]不可小於0", "1", txt_Disc_DISC_UAMT.ClientID); }
            if (i_Disc_DISC_TAX < 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓稅額]不可小於0", "1", txt_Disc_DISC_TAX.ClientID); }
            if (i_Disc_DISC_UAMT == 0 && i_Disc_DISC_TAX != 0)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓金額(未稅)]為0時,欄位[折讓稅額]也必須為0", "1", txt_Disc_DISC_TAX.ClientID); }
            if (i_Disc_DISC_UAMT > i_Total_NON_INV_UAMT)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓金額(未稅)]不得大於[發票餘額(未稅)]", "1", txt_Disc_DISC_UAMT.ClientID); }
            if (i_Disc_DISC_TAX > i_Total_NON_INV_TAX)
            { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[折讓稅額]不得大於[發票稅額]", "1", txt_Disc_DISC_TAX.ClientID); }
            if (this.slp_TAX_TYPE.Text == "1" ||//[稅別]=免稅
                this.slp_TAX_TYPE.Text == "2")//[稅別]=零稅
            {
                if (i_Disc_DISC_TAX != 0)
                { arl_Return = CAAComm.ToMakeUp_Err_ArrayList(arl_Return, "欄位[稅別]是免稅或零稅時,欄位[折讓稅額]必須為0", "1", txt_Disc_DISC_TAX.ClientID); }
            }

            #endregion
        }

        #endregion

        return arl_Return;
    }
Beispiel #3
0
        /// <summary>
        /// 設定折讓對帳單列印資料
        /// </summary>
        /// <param name="dt_Temp_Result">折讓對帳單列印資料 Temp Table</param>
        /// <param name="d_Now">列印日期時間</param>
        /// <param name="dr_Temp_Main1">折讓對帳單左邊主檔資料區</param>
        /// <param name="dr_Temp_Main2">折讓對帳單右邊發票資料區</param>
        /// <param name="dr_Temp_Detl_Purchase">折讓對帳單進貨明細資料區</param>
        /// <param name="dr_Temp_Detl_Return">折讓對帳單退貨明細資料區</param>
        /// <param name="dr_Temp_Store">折讓對帳單店號相關資料</param>
        /// <param name="s_TAB_Index">2=折讓對帳單,4=單店未開發票對帳單</param>
        /// <returns></returns>
        private DataTable Collate_Information_Disc(DataTable dt_Temp_Result,
                                                   DateTime d_Now,
                                                   DataRow[] dr_Temp_Main1,
                                                   DataRow[] dr_Temp_Main2,
                                                   DataRow[] dr_Temp_Detl_Purchase,
                                                   DataRow[] dr_Temp_Detl_Return,
                                                   DataRow[] dr_Temp_Store,
                                                   string s_TAB_Index,
                                                   string strPROMTE)
        {
            #region 錯誤資料

            //沒有明細資料 OR 沒有店號的資料皆屬於錯誤資料
            if ((dr_Temp_Detl_Purchase == null && dr_Temp_Detl_Return == null) ||
                (dr_Temp_Store == null))
            {
                DataRow dr_Temp_Result = dt_Temp_Result.NewRow();
                string s_Err_Disc_No = string.Empty;

                foreach (DataRow dr_Main1 in dr_Temp_Main1)
                {
                    if (s_Err_Disc_No == string.Empty)
                    { s_Err_Disc_No += dr_Main1["DISC_NO"].ToString(); }
                    else
                    { s_Err_Disc_No += "," + dr_Main1["DISC_NO"].ToString(); }
                }

                dr_Temp_Result["MAIN_LEFT_14"] = "資料異常,無法正確列印對帳單,折讓單號碼:" + s_Err_Disc_No;

                dt_Temp_Result.Rows.Add(dr_Temp_Result);
            }

            #endregion

            #region 正確資料

            else
            {
                #region 設定變數

                #region 列印日期 and 時間

                string s_Print_Date = d_Now.ToString("yyyy/MM/dd");//列印日期
                string s_Print_Time = d_Now.ToString("HH:mm:ss");//列印時間

                #endregion

                #region 設定行數

                int i_Detl_Count = 50;//設定Detl明細資料總共有幾行(包含[頁首][內容]頁尾[小計][單店小計][總計])
                int i_Detl_Title = 4;//設定Detl頁首有幾行
                int i_Detl_Total = 10;//設定Detl頁尾[小計][單店小計]&[總計]共有幾行
                int i_Detl_Content = i_Detl_Count - i_Detl_Title;//設定Detl內容行數
                bool b_IsFinally = false;//設定明細資料是否為最後一筆
                int i_Actual_Total = 0;//設定Detl頁尾單店小計&總計執行到第幾筆

                #endregion

                #region 設定折讓單號碼

                string s_DISC_NO_Able = string.Empty;//應稅發票號碼
                string s_DISC_NO_Free = string.Empty;//免稅發票號碼
                string s_DISC_NO_Zero = string.Empty;//零稅率發票號碼

                #endregion

                #region 計算[小計]金額

                decimal dec_Subtotal_TOT_AMT_Purchase = 0;//[小計]-進貨未稅金額
                decimal dec_Subtotal_TOT_AMT_AND_TAX_Purchase = 0;//[小計]-進貨含稅金額
                decimal dec_Subtotal_TOT_AMT_Return = 0;//[小計]-退貨未稅金額
                decimal dec_Subtotal_TOT_AMT_AND_TAX_Return = 0;//[小計]-退貨含稅金額

                #endregion

                #region 計算[單店小計]金額

                decimal dec_Single_Amount_Able = 0;//單店小計-[應稅]的[合計]
                decimal dec_Single_Amount_Free = 0;//單店小計-[免稅]的[合計]
                decimal dec_Single_Amount_Zero = 0;//單店小計-[零稅]的[合計]
                decimal dec_Single_Tax_Able = 0;//單店小計-[應稅]的[稅額]
                decimal dec_Single_Tax_Zero = 0;//單店小計-[零稅]的[稅額]

                #endregion

                #region 計算[總計]金額

                int i_Total_Amount_Able = 0;//總計-[應稅]的[未稅金額]
                int i_Total_Amount_Free = 0;//總計-[免稅]的[未稅金額]
                int i_Total_Amount_Zero = 0;//總計-[零稅]的[未稅金額]
                int i_Total_Tax_Able = 0;//總計-[應稅]的[稅額]
                int i_Total_Tax_Zero = 0;//總計-[零稅]的[稅額]
                int i_Total_Disc_Able = 0;//總計-[應稅]的[折讓總額]
                int i_Total_Disc_Free = 0;//總計-[免稅]的[折讓總額]
                int i_Total_Disc_Zero = 0;//總計-[零稅]的[折讓總額]

                #endregion

                #endregion

                #region 計算需要幾頁來印這一筆資料

                #region 設定變數

                int i_dt_Temp_Result_Count_Inv = 0;//計算右邊主檔發票資料需要幾頁來列印
                int i_dt_Temp_Result_Count_Purchase = 0;//計算進貨的DETL資料需要幾頁來列印
                int i_dt_Temp_Result_Count_Return = 0;//計算退貨的DETL資料需要幾頁來列印
                int i_dt_Temp_Result_Count = 0;//最後需要幾頁來列印
                ArrayList arl_Inv_Statistics = new ArrayList();
                ArrayList arl_Disc_Statistics = new ArrayList();

                #endregion

                #region 計算右邊主檔發票資料需要幾頁來列印

                if (s_TAB_Index == "2")//折讓對帳單
                {
                    DataTable dt_Temp_Right = new DataTable();

                    for (int i_Main1 = 0; i_Main1 < dr_Temp_Main1.Length; i_Main1++)
                    {
                        #region 設定變數

                        int i_Main2_Statistics = 0;//計算該張折讓單對應到的發票張數

                        #endregion

                        #region 計算每一張折讓單需要幾頁來列印

                        //算出該張折讓單對應到幾筆發票資料
                        for (int i_Main2 = 0; i_Main2 < dr_Temp_Main2.Length; i_Main2++)
                        {
                            if (dr_Temp_Main1[i_Main1]["DISC_NO"].ToString() == dr_Temp_Main2[i_Main2]["DISC_NO"].ToString())
                            {
                                i_Main2_Statistics += 1;

                                //將資料存入ArrayList中
                                //文字陣列有2個參數
                                //(1)折讓單號在dr_Temp_Main1陣列中是第幾筆資料
                                //(2)發票號碼在dr_Temp_Main2陣列中是第幾筆資料
                                arl_Inv_Statistics.Add(new string[] { i_Main1.ToString(), i_Main2.ToString() });
                            }
                        }

                        //計算該張折讓單需要幾頁列印
                        if (i_Main2_Statistics % 5 > 0)
                        { i_Main2_Statistics = (i_Main2_Statistics / 5) + 1; }
                        else
                        { i_Main2_Statistics = i_Main2_Statistics / 5; }

                        //將資料存入ArrayList中
                        //文字陣列有2個參數
                        //(1)折讓單號
                        //(2)該張折讓單需要幾頁來顯示
                        //(3)該張折讓單已經顯示幾頁
                        arl_Disc_Statistics.Add(new string[] { dr_Temp_Main1[i_Main1]["DISC_NO"].ToString(), i_Main2_Statistics.ToString(), "0" });

                        #endregion

                        #region 不滿五筆資料中間補空白

                        for (int q = 0; q < arl_Inv_Statistics.Count % 5; q++)
                        { arl_Inv_Statistics.Add("空白"); }

                        #endregion

                        i_dt_Temp_Result_Count_Inv += i_Main2_Statistics;
                    }
                }

                #endregion

                #region 計算進貨的DETL資料需要幾頁來列印

                i_dt_Temp_Result_Count_Purchase = (dr_Temp_Detl_Purchase.Length + i_Detl_Total) / i_Detl_Content;
                if ((dr_Temp_Detl_Purchase.Length + i_Detl_Total) % i_Detl_Content > 0)
                { i_dt_Temp_Result_Count_Purchase += 1; }

                #endregion

                #region 計算退貨的DETL資料需要幾頁來列印

                i_dt_Temp_Result_Count_Return = (dr_Temp_Detl_Return.Length + i_Detl_Total) / i_Detl_Content;
                if ((dr_Temp_Detl_Return.Length + i_Detl_Total) % i_Detl_Content > 0)
                { i_dt_Temp_Result_Count_Return += 1; }

                #endregion

                //取最大值
                i_dt_Temp_Result_Count = Math.Max(i_dt_Temp_Result_Count_Inv, Math.Max(i_dt_Temp_Result_Count_Purchase, i_dt_Temp_Result_Count_Return));

                #region 把紀錄發票的變數的筆數補滿最大的頁數

                //折讓對帳單,有可能左邊明細資料需要5頁來印,但右邊發票只要1頁來印就可以
                //這時紀錄發票的變數(arl_Inv_Statistics)只有紀錄第一頁的五筆資料,2,3,4,5頁都沒紀錄,
                //所以要在這邊補滿"空白"這個字串,不然後面程式判斷會有誤

                if (i_dt_Temp_Result_Count * 5 > arl_Inv_Statistics.Count)
                {
                    int i_fill = i_dt_Temp_Result_Count * 5 - arl_Inv_Statistics.Count;

                    for (int i_fill_variable = 0; i_fill_variable < i_fill; i_fill_variable++)
                    { arl_Inv_Statistics.Add("空白"); }
                }

                #endregion

                #endregion

                #region 計算總計金額 & 紀錄折讓單號

                foreach (DataRow dr_Main1 in dr_Temp_Main1)
                {
                    #region 應稅

                    if (dr_Main1["TAX_TYPE"].ToString() == "0")
                    {
                        i_Total_Amount_Able += int.Parse(dr_Main1["DISC_UAMT"].ToString());//總計-[應稅]的[未稅金額]
                        i_Total_Tax_Able += int.Parse(dr_Main1["DISC_TAX"].ToString());//總計-[應稅]的[稅額]
                        i_Total_Disc_Able += int.Parse(dr_Main1["DISC_AMT"].ToString());//總計-[應稅]的[折讓總額]

                        s_DISC_NO_Able += (s_DISC_NO_Able == string.Empty) ? dr_Main1["DISC_NO"].ToString() : "," + dr_Main1["DISC_NO"].ToString();
                    }

                    #endregion

                    #region 免稅

                    else if (dr_Main1["TAX_TYPE"].ToString() == "1")
                    {
                        i_Total_Amount_Free += int.Parse(dr_Main1["DISC_UAMT"].ToString());//總計-[免稅]的[未稅金額]
                        i_Total_Disc_Free += int.Parse(dr_Main1["DISC_AMT"].ToString());//總計-[免稅]的[折讓總額]

                        s_DISC_NO_Free += (s_DISC_NO_Free == string.Empty) ? dr_Main1["DISC_NO"].ToString() : "," + dr_Main1["DISC_NO"].ToString();
                    }

                    #endregion

                    #region 零稅

                    else if (dr_Main1["TAX_TYPE"].ToString() == "2")
                    {
                        i_Total_Amount_Zero += int.Parse(dr_Main1["DISC_UAMT"].ToString());//總計-[零稅]的[未稅金額]
                        i_Total_Tax_Zero += int.Parse(dr_Main1["DISC_TAX"].ToString());//總計-[零稅]的[稅額]
                        i_Total_Disc_Zero += int.Parse(dr_Main1["DISC_AMT"].ToString());//總計-[零稅]的[折讓總額]

                        s_DISC_NO_Zero += (s_DISC_NO_Zero == string.Empty) ? dr_Main1["DISC_NO"].ToString() : "," + dr_Main1["DISC_NO"].ToString();
                    }

                    #endregion
                }

                #endregion

                #region 將資料寫入TempTable

                for (int a = 0; a < i_dt_Temp_Result_Count; a++)
                {
                    DataRow dr_Temp_Result = dt_Temp_Result.NewRow();

                    #region 左邊主檔資料區

                    dr_Temp_Result["MAIN_LEFT_0"] = "列印日期:" + s_Print_Date;//列印日期
                    dr_Temp_Result["MAIN_LEFT_1"] = "列印時間:" + s_Print_Time;//列印時間
                    dr_Temp_Result["MAIN_LEFT_2"] = Convert.ToString(a + 1) + "/" + i_dt_Temp_Result_Count.ToString();//頁次
                    dr_Temp_Result["MAIN_LEFT_3"] = dr_Temp_Store[0]["Z_O"].ToString();//營業所
                    dr_Temp_Result["MAIN_LEFT_4"] = dr_Temp_Store[0]["ROUTE"].ToString();//路線
                    dr_Temp_Result["MAIN_LEFT_5"] = dr_Temp_Store[0]["STEP"].ToString();//路順
                    dr_Temp_Result["MAIN_LEFT_6"] = dr_Temp_Store[0]["D_SIR_NAME"].ToString();//物流士
                    dr_Temp_Result["MAIN_LEFT_7"] = dr_Temp_Store[0]["CLOSE_MONTH"].ToString();//結帳年月
                    dr_Temp_Result["MAIN_LEFT_8"] = dr_Temp_Store[0]["GROUP_NO"].ToString();//店群
                    dr_Temp_Result["MAIN_LEFT_9"] = dr_Temp_Store[0]["STORE"].ToString();//店號
                    dr_Temp_Result["MAIN_LEFT_10"] = dr_Temp_Store[0]["STORE_NAME"].ToString();//店名
                    dr_Temp_Result["MAIN_LEFT_11"] = dr_Temp_Store[0]["STORE_TEL"].ToString();//電話
                    dr_Temp_Result["MAIN_LEFT_12"] = dr_Temp_Store[0]["AC_UID"].ToString();//帳務人員
                    dr_Temp_Result["MAIN_LEFT_13"] = dr_Temp_Store[0]["INV_ADDR"].ToString();//地址
                    dr_Temp_Result["MAIN_LEFT_15"] = dr_Temp_Store[0]["SAL_ID"].ToString();//帳務人員
                    #endregion

                    #region 訊息告知欄位區

                    dr_Temp_Result["MAIN_LEFT_14"] = strPROMTE;//檔期編號 20110427 rika insert

                    #endregion

                    #region 右邊主檔資料區(印發票的地方)

                    //頁籤=[折讓對帳單]時,才有右邊主檔資料區
                    if (s_TAB_Index == "2")//折讓對帳單
                    {
                        #region 設定變數

                        #region 規則

                        /*
                         * 折讓對帳單右邊列印發票部份為一式四份,每一式可列印五張發票
                         * 折讓單必須分別列印
                         * EX:
                         * 假設STORE1在同一天有A,B兩張折讓單
                         * A折讓單對應6張發票,B折讓單對應3張發票
                         * 則該份折讓對帳單應該列印出三張
                         * 第一張:A折讓單 & 對應的前5張發票
                         * 第二張:A折讓單 & 對應的最後一張發票
                         * 第三張:B折讓單 & 對應的三張發票
                         */

                        #endregion

                        #region 將折讓日期由西元年轉為民國年

                        DateTime d_DISC_DATE = DateTime.Parse(dr_Temp_Main1[0]["DISC_DATE"].ToString());
                        System.Globalization.TaiwanCalendar g_TaiwanCalendar = new System.Globalization.TaiwanCalendar();

                        string s_DISC_Year = g_TaiwanCalendar.GetYear(d_DISC_DATE).ToString(); //折讓日期(年)
                        string s_DISC_Month = g_TaiwanCalendar.GetMonth(d_DISC_DATE).ToString(); //折讓日期(月)
                        string s_DISC_Date = g_TaiwanCalendar.GetDayOfMonth(d_DISC_DATE).ToString(); //折讓日期(日)

                        #endregion

                        string s_VOUCH_RFNO = string.Empty;
                        bool b_Is_Bearing_Page = false;//折讓單[合計]是否顯示"續下頁"
                        string s_Disc_Total_String = string.Empty;

                        #endregion

                        //一張折讓對帳單是[一式四份]
                        for (int b = 0; b < 4; b++)
                        {
                            #region 將發票資料寫入TempTable

                            //一式包含[五張發票]
                            for (int c = 0; c < 5; c++)
                            {
                                if (arl_Inv_Statistics.Count > 0 &&
                                    arl_Inv_Statistics[a * 5 + c].ToString() != "空白")
                                {
                                    int i_dr_Temp_Main2_Count = int.Parse(((string[])(arl_Inv_Statistics[a * 5 + c]))[1].ToString());

                                    #region 將發票日期由西元年轉換成民國年

                                    DateTime d_INV_DATE = DateTime.Parse(dr_Temp_Main2[i_dr_Temp_Main2_Count]["INV_DATE"].ToString());
                                    string s_INV_Year = g_TaiwanCalendar.GetYear(d_INV_DATE).ToString(); //發票日期(年)
                                    string s_INV_Month = g_TaiwanCalendar.GetMonth(d_INV_DATE).ToString(); //發票日期(月)
                                    string s_INV_Date = g_TaiwanCalendar.GetDayOfMonth(d_INV_DATE).ToString(); //發票日期(日)

                                    #endregion

                                    #region 設定[字軌號碼][品名][數量]

                                    BCO.CAACommon CAAComm = new BCO.CAACommon();
                                    string s_Item_Name = string.Empty;
                                    int i_Item_Name_Length = 0;

                                    s_Item_Name = dr_Temp_Main2[i_dr_Temp_Main2_Count]["ITEM_NAME"].ToString().Trim();
                                    i_Item_Name_Length = CAAComm.Get_Byte_Length(s_Item_Name);

                                    //如果[品名]的byte長度超過16,則一次減掉一個字
                                    //減到[品名]的byte長度小於或等於16,則跳出迴圈

                                    if (i_Item_Name_Length > 16)
                                    {
                                        for (int i_Length = 0; i_Length < s_Item_Name.Length; i_Length++)
                                        {
                                            if (CAAComm.Get_Byte_Length(s_Item_Name.Substring(0, s_Item_Name.Length - i_Length)) <= 16)
                                            {
                                                s_Item_Name = s_Item_Name.Substring(0, s_Item_Name.Length - i_Length) + string.Empty.PadRight(16 - CAAComm.Get_Byte_Length(s_Item_Name.Substring(0, s_Item_Name.Length - i_Length)), ' ');
                                                break;
                                            }
                                        }
                                    }
                                    else
                                    { s_Item_Name = s_Item_Name + string.Empty.PadRight(16 - CAAComm.Get_Byte_Length(s_Item_Name), ' '); }

                                    #endregion

                                    #region 將資料寫入Temp Table

                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_0"] = dr_Temp_Main2[i_dr_Temp_Main2_Count]["INV_FORM"].ToString();//聯式
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_1"] = s_INV_Year;//年
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_2"] = s_INV_Month;//月
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_3"] = s_INV_Date;//日
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_4"] = dr_Temp_Main2[i_dr_Temp_Main2_Count]["INV_NO"].ToString().Trim();//字軌號碼
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_4"] += string.Empty.PadLeft(1, ' ');//字軌號碼與品名之間的空白(全形空白)
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_4"] += s_Item_Name;//品名
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_4"] += string.Empty.PadLeft(1, ' ');//品名與數量之間的空白(全形空白)
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_4"] += "1";//數量
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_5"] = dr_Temp_Main2[i_dr_Temp_Main2_Count]["DISC_UAMT"].ToString();//末稅金額
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_6"] = dr_Temp_Main2[i_dr_Temp_Main2_Count]["DISC_TAX"].ToString();//稅額
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_7"] = dr_Temp_Main2[i_dr_Temp_Main2_Count]["TAX_TYPE"].ToString() == "0" ? "V" : string.Empty;//應稅
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_8"] = dr_Temp_Main2[i_dr_Temp_Main2_Count]["TAX_TYPE"].ToString() == "2" ? "V" : string.Empty;//零稅
                                    dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_" + c.ToString() + "_9"] = dr_Temp_Main2[i_dr_Temp_Main2_Count]["TAX_TYPE"].ToString() == "1" ? "V" : string.Empty;//免稅

                                    #endregion
                                }
                            }

                            #endregion

                            #region 如果發票明細有資料,才將折讓單資訊寫入表頭

                            if (dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_0_0"].ToString() != string.Empty)
                            {
                                if (arl_Inv_Statistics.Count > 0 &&
                                    arl_Inv_Statistics[a * 5 + 0].ToString() != "空白")
                                {
                                    /*
                                     * 右邊發票資料是一式四份
                                     * 每一式上方和下方是折讓單資料,中間是發票資料
                                     * 每一張折讓對帳單中的發票資料會對應到同一張折讓單,不會對應到多筆折讓單
                                     * 所以折讓單資料就抓每一式的第一張發票所對應的折讓單
                                     */

                                    int i_dr_Temp_Main1_Count = int.Parse(((string[])(arl_Inv_Statistics[a * 5 + 0]))[0].ToString());

                                    #region 設定欄位[統一編號]

                                    s_VOUCH_RFNO = Get_VOUCH_RFNO(dr_Temp_Main1[i_dr_Temp_Main1_Count]["RFNO"].ToString());

                                    #endregion

                                    #region 設定欄位[合計]的顯示方式

                                    if (b == 0)
                                    {
                                        for (int i_Show_All = 0; i_Show_All < arl_Disc_Statistics.Count; i_Show_All++)
                                        {
                                            string[] s_Disc_Array = (string[])arl_Disc_Statistics[i_Show_All];

                                            if (s_Disc_Array[0].ToString() == dr_Temp_Main1[i_dr_Temp_Main1_Count]["DISC_NO"].ToString())
                                            {
                                                s_Disc_Array[2] = Convert.ToString(Convert.ToInt32(s_Disc_Array[2]) + 1);

                                                if (s_Disc_Array[1] != s_Disc_Array[2])
                                                { b_Is_Bearing_Page = true; }

                                                s_Disc_Total_String = s_Disc_Array[2] + "/" + s_Disc_Array[1];
                                            }
                                        }
                                    }

                                    #endregion

                                    #region 將折讓資料寫入TempTable

                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_0"] = s_DISC_Year;//年
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_1"] = s_DISC_Month;//月
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_2"] = s_DISC_Date;//日
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_3"] = dr_Temp_Main1[i_dr_Temp_Main1_Count]["DISC_NO"].ToString();//折讓單號
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_4"] = dr_Temp_Main1[i_dr_Temp_Main1_Count]["Z_O"].ToString();//營業所
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_5"] = dr_Temp_Main1[i_dr_Temp_Main1_Count]["AC_UID"].ToString();//帳務人員
                                    decimal decDISC_UAMT = decimal.Parse(dr_Temp_Main1[i_dr_Temp_Main1_Count]["DISC_UAMT"].ToString());
                                    decimal decDISC_TAX = decimal.Parse(dr_Temp_Main1[i_dr_Temp_Main1_Count]["DISC_TAX"].ToString());
                                    //if (dr_Temp_Main1[i_dr_Temp_Main1_Count]["DISC_FORM"].ToString().Trim() == "34")
                                    //{
                                    //    decDISC_UAMT = decDISC_UAMT + decDISC_TAX;
                                    //    decDISC_TAX = 0;
                                    //}
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_6"] = (b_Is_Bearing_Page == true) ? "續下頁" : decDISC_UAMT.ToString();//金額(不含稅之進貨額)
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_7"] = (b_Is_Bearing_Page == true) ? string.Empty : decDISC_TAX.ToString();//營業稅額
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_8"] = (b_Is_Bearing_Page == true) ? string.Empty : ((dr_Temp_Main1[i_dr_Temp_Main1_Count]["TAX_TYPE"].ToString() == "0") ? "V" : string.Empty);//應稅
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_9"] = (b_Is_Bearing_Page == true) ? string.Empty : ((dr_Temp_Main1[i_dr_Temp_Main1_Count]["TAX_TYPE"].ToString() == "2") ? "V" : string.Empty);//零稅率
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_10"] = (b_Is_Bearing_Page == true) ? string.Empty : ((dr_Temp_Main1[i_dr_Temp_Main1_Count]["TAX_TYPE"].ToString() == "1") ? "V" : string.Empty);//免稅
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_11"] = dr_Temp_Main1[i_dr_Temp_Main1_Count]["STORE_ID"].ToString() + " " + dr_Temp_Main1[i_dr_Temp_Main1_Count]["TITLE"].ToString();//原進貨營業人(或原買受人)名稱
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_12"] = s_VOUCH_RFNO;//營業事業統一編號
                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_13"] = s_Disc_Total_String;//幾分之幾(1/3,2/3...)

                                    dr_Temp_Result["MAIN_RIGHT_Main_" + b.ToString() + "_14"] = dr_Temp_Main1[i_dr_Temp_Main1_Count]["PROFIT_NO"].ToString();//利潤中心
                                    #endregion
                                }
                            }
                            else
                            { dr_Temp_Result["MAIN_RIGHT_Detl_" + b.ToString() + "_0_6"] = "空白"; }//品名

                            #endregion
                        }
                    }

                    #endregion

                    #region 明細資料區

                    #region 設定Detl頁首

                    if (b_IsFinally == false)
                    {
                        #region [群分類][書展]

                        dr_Temp_Result["DETL_0_0"] += dr_Temp_Main1[0]["ROOT_NO"].ToString().PadRight(10, ' ');//群分類
                        dr_Temp_Result["DETL_0_0"] += dr_Temp_Main1[0]["IS_SCHEDULE"].ToString().PadRight(10, ' ');//書展
                        dr_Temp_Result["DETL_0_0"] += "可扣款日:";
                        dr_Temp_Result["DETL_0_0"] += (dr_Temp_Main1[0]["DUE_DATE"].ToString() == string.Empty) ? "          " : DateTime.Parse(dr_Temp_Main1[0]["DUE_DATE"].ToString()).ToString("yyyy/MM/dd");
                        dr_Temp_Result["DETL_0_0"] += "     ";
                        dr_Temp_Result["DETL_0_0"] += "可扣款總額:";
                        dr_Temp_Result["DETL_0_0"] += string.Format("{0:#,0}", i_Total_Disc_Able + i_Total_Disc_Free + i_Total_Disc_Zero).PadLeft(10);//總計-[應稅]的[折讓總額]

                        #endregion

                        #region 頁首上面[橫線]

                        dr_Temp_Result["DETL_1_0"] = "-----------";
                        dr_Temp_Result["DETL_1_1"] = "----------------------";
                        dr_Temp_Result["DETL_1_2"] = "----------------------";
                        dr_Temp_Result["DETL_1_3"] = "----------------------";
                        dr_Temp_Result["DETL_1_4"] = "----------------------";
                        dr_Temp_Result["DETL_1_5"] = "----------------------";
                        dr_Temp_Result["DETL_1_6"] = "----------------------";
                        dr_Temp_Result["DETL_1_7"] = "-----|-----";
                        dr_Temp_Result["DETL_1_8"] = "--------------";
                        dr_Temp_Result["DETL_1_9"] = "----------------------";
                        dr_Temp_Result["DETL_1_10"] = "----------------------";
                        dr_Temp_Result["DETL_1_11"] = "----------------------";
                        dr_Temp_Result["DETL_1_12"] = "----------------------";
                        dr_Temp_Result["DETL_1_13"] = "----------------------";
                        dr_Temp_Result["DETL_1_14"] = "----------------------";

                        #endregion

                        #region 頁首[標題]

                        dr_Temp_Result["DETL_2_0"] = "日期";
                        dr_Temp_Result["DETL_2_1"] = "屬性";
                        dr_Temp_Result["DETL_2_2"] = "稅別";
                        dr_Temp_Result["DETL_2_3"] = "高見單號";
                        dr_Temp_Result["DETL_2_4"] = "通路單號";
                        dr_Temp_Result["DETL_2_5"] = "未稅金額";
                        dr_Temp_Result["DETL_2_6"] = "含稅金額";
                        dr_Temp_Result["DETL_2_7"] = "|";
                        dr_Temp_Result["DETL_2_8"] = "日期";
                        dr_Temp_Result["DETL_2_9"] = "屬性";
                        dr_Temp_Result["DETL_2_10"] = "稅別";
                        dr_Temp_Result["DETL_2_11"] = "高見單號";
                        dr_Temp_Result["DETL_2_12"] = "通路單號";
                        dr_Temp_Result["DETL_2_13"] = "未稅金額";
                        dr_Temp_Result["DETL_2_14"] = "含稅金額";

                        #endregion

                        #region 頁首下面[橫線]

                        dr_Temp_Result["DETL_3_0"] = "-----------";
                        dr_Temp_Result["DETL_3_1"] = "----------------------";
                        dr_Temp_Result["DETL_3_2"] = "----------------------";
                        dr_Temp_Result["DETL_3_3"] = "----------------------";
                        dr_Temp_Result["DETL_3_4"] = "----------------------";
                        dr_Temp_Result["DETL_3_5"] = "----------------------";
                        dr_Temp_Result["DETL_3_6"] = "----------------------";
                        dr_Temp_Result["DETL_3_7"] = "-----|-----";
                        dr_Temp_Result["DETL_3_8"] = "--------------";
                        dr_Temp_Result["DETL_3_9"] = "----------------------";
                        dr_Temp_Result["DETL_3_10"] = "----------------------";
                        dr_Temp_Result["DETL_3_11"] = "----------------------";
                        dr_Temp_Result["DETL_3_12"] = "----------------------";
                        dr_Temp_Result["DETL_3_13"] = "----------------------";
                        dr_Temp_Result["DETL_3_14"] = "----------------------";

                        #endregion
                    }

                    #endregion

                    #region 設定Detl內容

                    int i_Actual_Purchase = 0;//進貨實際寫入筆數
                    int i_Actual_Return = 0;//退貨實際寫入筆數
                    decimal dec_TOT_AMT_AND_TAX = 0;//計算含稅金額

                    //i_Detl_Content = Detl內容行數
                    for (int d = 0; d < i_Detl_Content; d++)
                    {
                        int i_dr_Temp_Detl_Count = a * i_Detl_Content + d;

                        #region 進貨部分

                        if (dr_Temp_Detl_Purchase.Length > i_dr_Temp_Detl_Count)
                        {
                            #region 計算含稅金額

                            #region 規則

                            /*
                             * 原本的規則:
                             * 如果稅別 = 應稅&零稅,含稅金額 = VDS_CAM_ACCT_CHECK_OUT.TOT_AMT + VDS_CAM_ACCT_CHECK_OUT.TOT_AMT_TAX
                             * 如果稅別 = 免稅,含稅金額直接放0
                             * 20091005 秀玲修改規則
                             * 不管它的稅別,含稅金額 = VDS_CAM_ACCT_CHECK_OUT.TOT_AMT + VDS_CAM_ACCT_CHECK_OUT.TOT_AMT_TAX
                             */

                            #endregion

                            dec_TOT_AMT_AND_TAX = decimal.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString()) + decimal.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT_TAX"].ToString());

                            #endregion

                            #region 寫入資料

                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_0"] = DateTime.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["ACCT_DATE"].ToString()).ToString("yyyy/MM/dd");//日期
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_1"] = dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["ACCT_KD"];//屬性
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_2"] = dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TAX_TYPE"];//稅別
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_3"] = dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["EA_NO"];//高見單號
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_4"] = dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["CHAN_SOURCE_NO"];//通路單號
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_5"] = (Math.Abs(decimal.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString())) > 1000000) ? "******" : string.Format("{0:N}", dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT"]);//未稅金額
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_6"] = (Math.Abs(dec_TOT_AMT_AND_TAX) > 1000000) ? "******" : string.Format("{0:N}", dec_TOT_AMT_AND_TAX);//含稅金額
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_7"] = "|";

                            #endregion

                            #region 計算[進貨]的明細最後是寫到哪一行

                            i_Actual_Purchase = i_Detl_Title + d;

                            #endregion

                            #region 計算[小計]金額

                            dec_Subtotal_TOT_AMT_Purchase += decimal.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString());//[小計]-進貨未稅金額
                            dec_Subtotal_TOT_AMT_AND_TAX_Purchase += dec_TOT_AMT_AND_TAX;//[小計]-進貨含稅金額

                            #endregion

                            #region 計算[單店小計]金額

                            if (dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TAX_TYPE"].ToString() == "應稅")
                            {
                                dec_Single_Amount_Able += decimal.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString());//單店小計-[應稅]的[合計]
                                dec_Single_Tax_Able += decimal.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT_TAX"].ToString());//單店小計-[應稅]的[稅額]
                            }
                            else if (dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TAX_TYPE"].ToString() == "免稅")
                            { dec_Single_Amount_Free += decimal.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString()); }//單店小計-[免稅]的[合計]
                            else if (dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TAX_TYPE"].ToString() == "零稅")
                            {
                                dec_Single_Amount_Zero += decimal.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString());//單店小計-[零稅]的[合計]
                                dec_Single_Tax_Zero += decimal.Parse(dr_Temp_Detl_Purchase[i_dr_Temp_Detl_Count]["TOT_AMT_TAX"].ToString()); //單店小計-[零稅]的[稅額]
                            }

                            #endregion
                        }

                        #endregion

                        #region 退貨部分

                        if (dr_Temp_Detl_Return.Length > i_dr_Temp_Detl_Count)
                        {
                            #region 計算含稅金額

                            #region 規則

                            /*
                             * 原本的規則:
                             * 如果稅別 = 應稅&零稅,含稅金額 = VDS_CAM_ACCT_CHECK_OUT.TOT_AMT + VDS_CAM_ACCT_CHECK_OUT.TOT_AMT_TAX
                             * 如果稅別 = 免稅,含稅金額直接放0
                             * 20091005 秀玲修改規則
                             * 不管它的稅別,含稅金額 = VDS_CAM_ACCT_CHECK_OUT.TOT_AMT + VDS_CAM_ACCT_CHECK_OUT.TOT_AMT_TAX
                             */

                            #endregion

                            dec_TOT_AMT_AND_TAX = decimal.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString()) + decimal.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT_TAX"].ToString());

                            #endregion

                            #region 寫入資料

                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_7"] = "|";
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_8"] = DateTime.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["ACCT_DATE"].ToString()).ToString("yyyy/MM/dd");//日期
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_9"] = dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["ACCT_KD"];//屬性
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_10"] = dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TAX_TYPE"];//稅別
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_11"] = dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["EA_NO"];//高見單號
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_12"] = dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["CHAN_SOURCE_NO"];//通路單號
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_13"] = (Math.Abs(decimal.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString())) > 1000000) ? "******" : string.Format("{0:N}", dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT"]);//未稅金額
                            dr_Temp_Result["DETL_" + Convert.ToString(i_Detl_Title + d) + "_14"] = (Math.Abs(dec_TOT_AMT_AND_TAX) > 1000000) ? "******" : string.Format("{0:N}", dec_TOT_AMT_AND_TAX);//含稅金額

                            #endregion

                            #region 計算[退貨]的明細最後是寫到哪一行

                            i_Actual_Return = i_Detl_Title + d;

                            #endregion

                            #region 計算[小計]金額

                            dec_Subtotal_TOT_AMT_Return += decimal.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString());//[小計]-退貨未稅金額
                            dec_Subtotal_TOT_AMT_AND_TAX_Return += dec_TOT_AMT_AND_TAX;//[小計]-退貨含稅金額

                            #endregion

                            #region 計算[單店小計]金額

                            if (dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TAX_TYPE"].ToString() == "應稅")
                            {
                                dec_Single_Amount_Able += decimal.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString());//單店小計-[應稅]的[合計]
                                dec_Single_Tax_Able += decimal.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT_TAX"].ToString());//單店小計-[應稅]的[稅額]
                            }
                            else if (dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TAX_TYPE"].ToString() == "免稅")
                            { dec_Single_Amount_Free += decimal.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString()); }//單店小計-[免稅]的[合計]
                            else if (dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TAX_TYPE"].ToString() == "零稅")
                            {
                                dec_Single_Amount_Zero += decimal.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT"].ToString());//單店小計-[零稅]的[合計]
                                dec_Single_Tax_Zero += decimal.Parse(dr_Temp_Detl_Return[i_dr_Temp_Detl_Count]["TOT_AMT_TAX"].ToString()); //單店小計-[零稅]的[稅額]
                            }

                            #endregion
                        }

                        #endregion
                    }

                    #endregion

                    #region 設定Detl頁尾[小計]&[單店小計]&[總計]

                    //取得Detl頁尾小計從哪一行開始
                    int i_Detl_Subtotal_Begin = ((i_Actual_Purchase > i_Actual_Return) ? i_Actual_Purchase : i_Actual_Return) + 1;

                    //判斷是否為最後一筆
                    if ((i_Detl_Content * a + i_Detl_Subtotal_Begin - i_Detl_Title ==
                        ((dr_Temp_Detl_Purchase.Length > dr_Temp_Detl_Return.Length)
                        ? dr_Temp_Detl_Purchase.Length : dr_Temp_Detl_Return.Length)) ||
                        (b_IsFinally == true))
                    {
                        //i_Detl_Count = Detl明細資料總共有幾行(包含[頁首][內容][頁尾小計][頁尾總計])
                        //i_Detl_Subtotal = Detl頁尾小計有幾行

                        int i_Detl_Total_Begin = 0;//紀錄Detl頁尾單店小計&總計從哪一行開始
                        int i_Actual_Detl_Total_Begin = 0;//設定小計總計是要在哪一行
                        int i_Original_i_Actual_Total = 0;//若是這一頁是只印小計總計部分,這個變數紀錄上一頁是印到第幾筆

                        if (b_IsFinally == true)
                        { i_Original_i_Actual_Total = i_Actual_Total; }
                        else
                        { i_Detl_Total_Begin = i_Detl_Subtotal_Begin; }

                        #region 小計

                        #region [小計]上方那一條線

                        if ((i_Detl_Total_Begin + 0 < i_Detl_Count) &&
                            (i_Actual_Total < 1))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 0; }

                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] = "--------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_1"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_2"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_3"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_4"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_5"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_6"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_7"] = "-----|-----";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_8"] = "--------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_9"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_10"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_11"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_12"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_13"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_14"] = "----------------------";

                            i_Actual_Total = 1;
                        }

                        #endregion

                        #region [小計]資料

                        if ((i_Detl_Total_Begin + 1 < i_Detl_Count) &&
                            (i_Actual_Total < 2))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 1; }

                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] = "小計";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_5"] = (Math.Abs(dec_Subtotal_TOT_AMT_Purchase) > 1000000) ? "******" : string.Format("{0:N}", dec_Subtotal_TOT_AMT_Purchase);//進貨[未稅金額]小計
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_6"] = (Math.Abs(dec_Subtotal_TOT_AMT_AND_TAX_Purchase) > 1000000) ? "******" : string.Format("{0:N}", dec_Subtotal_TOT_AMT_AND_TAX_Purchase);//進貨[含稅金額]小計
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_7"] = "|";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_13"] = (Math.Abs(dec_Subtotal_TOT_AMT_Return) > 1000000) ? "******" : string.Format("{0:N}", dec_Subtotal_TOT_AMT_Return);//退貨[未稅金額]小計
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_14"] = (Math.Abs(dec_Subtotal_TOT_AMT_AND_TAX_Return) > 1000000) ? "******" : string.Format("{0:N}", dec_Subtotal_TOT_AMT_AND_TAX_Return);//退貨[含稅金額]小計

                            i_Actual_Total = 2;
                        }

                        #endregion

                        #region [小計]下方那一條線

                        if ((i_Detl_Total_Begin + 2 < i_Detl_Count) &&
                            (i_Actual_Total < 3))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 2; }

                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] = "--------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_1"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_2"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_3"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_4"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_5"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_6"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_7"] = "-----|-----";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_8"] = "--------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_9"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_10"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_11"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_12"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_13"] = "----------------------";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_14"] = "----------------------";

                            i_Actual_Total = 3;
                        }

                        #endregion

                        #endregion

                        #region 單店小計

                        if ((i_Detl_Total_Begin + 3 < i_Detl_Count) &&
                            (i_Actual_Total < 4))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 3; }

                            //注意:[應稅 合計:$]中間的空白,是[全型]的空白
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "單店小計".PadRight(4, ' ');
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(45);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "應稅 :未稅金額";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", System.Math.Round(dec_Single_Amount_Able, MidpointRounding.AwayFromZero)).PadLeft(10);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "稅額:$";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", System.Math.Round(dec_Single_Tax_Able, MidpointRounding.AwayFromZero)).PadLeft(10);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            if (dec_Single_Amount_Able < 0)
                            { dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "總額:$"; }
                            else
                            { dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "總額:$"; }
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", System.Math.Round(dec_Single_Amount_Able, MidpointRounding.AwayFromZero) + System.Math.Round(dec_Single_Tax_Able, MidpointRounding.AwayFromZero)).PadLeft(10);

                            i_Actual_Total = 4;
                        }

                        if ((i_Detl_Total_Begin + 4 < i_Detl_Count) &&
                            (i_Actual_Total < 5))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 4; }

                            //注意:[免稅 合計:$]中間的空白,是[全型]的空白
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(4, ' ');
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(45);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "免稅 :未稅金額";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", System.Math.Round(dec_Single_Amount_Free, MidpointRounding.AwayFromZero)).PadLeft(10);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadLeft(8);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadLeft(10);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            if (dec_Single_Amount_Free < 0)
                            { dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "總額:$"; }
                            else
                            { dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "總額:$"; }
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", System.Math.Round(dec_Single_Amount_Free, MidpointRounding.AwayFromZero)).PadLeft(10);

                            i_Actual_Total = 5;
                        }

                        if ((i_Detl_Total_Begin + 5 < i_Detl_Count) &&
                            (i_Actual_Total < 6))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 5; }

                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(4, ' ');
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(45);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "零稅率:未稅金額";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", System.Math.Round(dec_Single_Amount_Zero, MidpointRounding.AwayFromZero)).PadLeft(10);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "稅額:$";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", System.Math.Round(dec_Single_Tax_Zero, MidpointRounding.AwayFromZero)).PadLeft(10);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            if (dec_Single_Amount_Zero < 0)
                            { dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "總額:$"; }
                            else
                            { dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "總額:$"; }
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", System.Math.Round(dec_Single_Amount_Zero, MidpointRounding.AwayFromZero) + System.Math.Round(dec_Single_Tax_Zero, MidpointRounding.AwayFromZero)).PadLeft(10);

                            i_Actual_Total = 6;
                        }

                        #endregion

                        #region 中間空一行

                        if ((i_Detl_Total_Begin + 6 < i_Detl_Count) &&
                            (i_Actual_Total < 7))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 6; }

                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] = string.Empty;

                            i_Actual_Total = 7;
                        }

                        #endregion

                        #region 總計

                        if ((i_Detl_Total_Begin + 7 < i_Detl_Count) &&
                                (i_Actual_Total < 8))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 7; }

                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "總計".PadRight(4, ' ');
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "應稅折讓號碼 :";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += (s_DISC_NO_Able.Length > 28) ? s_DISC_NO_Able.Substring(0, 27) : s_DISC_NO_Able.PadRight(27);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(2);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "應稅 :未稅金額";
                            i_Total_Amount_Able = i_Total_Amount_Able * -1;
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", i_Total_Amount_Able).PadLeft(10);//總計-[應稅]的[未稅金額]
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "稅額:$";
                            i_Total_Tax_Able = i_Total_Tax_Able * -1;
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", i_Total_Tax_Able).PadLeft(10);//總計-[應稅]的[稅額]
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "折讓總額:$";//折讓總額
                            i_Total_Disc_Able = i_Total_Disc_Able * -1;
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", i_Total_Disc_Able).PadLeft(10);//總計-[應稅]的[折讓總額]                            

                            i_Actual_Total = 8;
                        }

                        if ((i_Detl_Total_Begin + 8 < i_Detl_Count) &&
                            (i_Actual_Total < 9))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 8; }

                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(4, ' ');
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "免稅折讓號碼 :";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += (s_DISC_NO_Free.Length > 28) ? s_DISC_NO_Free.Substring(0, 27) : s_DISC_NO_Free.PadRight(27);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(2);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "免稅 :未稅金額";
                            i_Total_Amount_Free = i_Total_Amount_Free * -1;
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", i_Total_Amount_Free).PadLeft(10);//總計-[免稅]的[未稅金額]
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadLeft(8);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadLeft(10);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "折讓總額:$";//折讓總額
                            i_Total_Disc_Free = i_Total_Disc_Free * -1;
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", i_Total_Disc_Free).PadLeft(10);//總計-[免稅]的[折讓總額]

                            i_Actual_Total = 9;
                        }

                        if ((i_Detl_Total_Begin + 9 < i_Detl_Count) &&
                            (i_Actual_Total < 10))
                        {
                            if (b_IsFinally == true)
                            { i_Actual_Detl_Total_Begin = i_Actual_Total - i_Original_i_Actual_Total; }
                            else
                            { i_Actual_Detl_Total_Begin = i_Detl_Total_Begin + 9; }

                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(4, ' ');
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "零稅率折讓號碼:";
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += (s_DISC_NO_Zero.Length > 28) ? s_DISC_NO_Zero.Substring(0, 27) : s_DISC_NO_Zero.PadRight(27);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(2);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "零稅率:未稅金額";
                            i_Total_Amount_Zero = i_Total_Amount_Zero * -1;
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", i_Total_Amount_Zero).PadLeft(10);//總計-[零稅]的[未稅金額]
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "稅額:$";
                            i_Total_Tax_Zero = i_Total_Tax_Zero * -1;
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", i_Total_Tax_Zero).PadLeft(10);//總計-[零稅]的[稅額]
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Empty.PadRight(5);
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += "折讓總額:$";
                            i_Total_Disc_Zero = i_Total_Disc_Zero * -1;
                            dr_Temp_Result["DETL_" + i_Actual_Detl_Total_Begin.ToString() + "_0"] += string.Format("{0:#,0}", i_Total_Disc_Zero).PadLeft(10);//總計-[零稅]的[折讓總額]                          

                            i_Actual_Total = 10;
                        }

                        #endregion

                        //設定明細資料是否為最後一筆
                        b_IsFinally = true;
                    }

                    #endregion

                    #endregion

                    dt_Temp_Result.Rows.Add(dr_Temp_Result);
                }

                #endregion
            }

            #endregion

            return dt_Temp_Result;
        }