예제 #1
0
        private void SearchsimpleButton_Click(object sender, EventArgs e)
        {
            string                    AfterStartTime;
            string                    AfterEndTime;
            string                    NowStartTime;
            string                    NowEndTime;
            int                       RoomCheck     = 0;                   //勾選數量
            bool                      OddEvenFlag   = false;               //奇偶數
            List <string>             RoomName      = new List <string>(); //勾選住戶名
            List <ElectricTotalPrice> NowbillData   = new List <ElectricTotalPrice>();
            List <ElectricTotalPrice> AfterbillData = new List <ElectricTotalPrice>();

            if (Convert.ToDateTime(StartdateEdit.EditValue).Month == 1)
            {
                AfterStartTime = $"{Convert.ToDateTime(StartdateEdit.EditValue).AddYears(-1).Year}1201";
                AfterEndTime   = $"{Convert.ToDateTime(StartdateEdit.EditValue).AddYears(-1).Year}1231";
            }
            else
            {
                AfterStartTime = $"{Convert.ToDateTime(StartdateEdit.EditValue).Year}{Convert.ToDateTime(StartdateEdit.EditValue).AddMonths(-1).Month}01";
                AfterEndTime   = $"{Convert.ToDateTime(StartdateEdit.EditValue).Year}{Convert.ToDateTime(StartdateEdit.EditValue).AddMonths(-1).Month}{DateTime.DaysInMonth(Convert.ToDateTime(StartdateEdit.EditValue).Year, Convert.ToDateTime(StartdateEdit.EditValue).AddMonths(-1).Month)}";
            }
            NowStartTime = Convert.ToDateTime(StartdateEdit.EditValue).ToString("yyyyMM01");
            NowEndTime   = Convert.ToDateTime(StartdateEdit.EditValue).ToString("yyyyMM") + DateTime.DaysInMonth(Convert.ToDateTime(StartdateEdit.EditValue).Year, Convert.ToDateTime(StartdateEdit.EditValue).Month);
            #region 塞入勾選房間房號
            foreach (var item in boxItems)
            {
                if (item.CheckState == CheckState.Checked)
                {
                    ElectricConfig electric = (ElectricConfig)item.Tag;
                    RoomName.Add(electric.DeviceName);
                    if (Form1.ConnectionFlag)
                    {
                        var nowbilldata = SqlMethod.Search_ElectricTotalPrice_Billing(NowStartTime, NowEndTime, electric.GatewayIndex, electric.DeviceIndex);
                        NowbillData.Add(nowbilldata);
                        var afterbilldata = SqlMethod.Search_ElectricTotalPrice_Billing(AfterStartTime, AfterEndTime, electric.GatewayIndex, electric.DeviceIndex);
                        AfterbillData.Add(afterbilldata);
                    }
                    else
                    {
                        var nowbilldata = new ElectricTotalPrice()
                        {
                            Price = rnd.Next(500, 1000), KwhTotal = rnd.Next(100, 200)
                        };
                        NowbillData.Add(nowbilldata);
                        var afterbilldata = new ElectricTotalPrice()
                        {
                            Price = rnd.Next(500, 1000), KwhTotal = rnd.Next(100, 200)
                        };
                        AfterbillData.Add(afterbilldata);
                    }
                    RoomCheck++;
                }
            }
            #endregion
            #region 判斷奇數偶數
            if (RoomCheck % 2 == 0)
            {
                OddEvenFlag = true;//偶數
            }
            else
            {
                OddEvenFlag = false;//奇數
            }
            #endregion
            BillingSheetXtraReport[] billingSheets = new BillingSheetXtraReport[RoomCheck / 2 + RoomCheck % 2]; //計費單數量
            XtraReport xtraReport = new XtraReport();
            if (OddEvenFlag)                                                                                    //偶數
            {
                for (int i = 0; i < billingSheets.Length; i++)
                {
                    billingSheets[i] = new BillingSheetXtraReport()
                    {
                        bankAccount = BankaccountSetting
                    };
                    billingSheets[i].Create_BillingSheet(Convert.ToDateTime(StartdateEdit.EditValue), true, RoomName[i + i], NowbillData[i + i], AfterbillData[i + i], RoomName[i + i + 1], NowbillData[i + i + 1], AfterbillData[i + 1]);
                    billingSheets[i].CreateDocument();
                    xtraReport.Pages.AddRange(billingSheets[i].Pages);
                }
                documentViewer1.DocumentSource = xtraReport;
            }
            else//奇數
            {
                for (int i = 0; i < billingSheets.Length; i++)
                {
                    billingSheets[i] = new BillingSheetXtraReport()
                    {
                        bankAccount = BankaccountSetting
                    };
                    if (i != billingSheets.Length - 1)
                    {
                        billingSheets[i].Create_BillingSheet(Convert.ToDateTime(StartdateEdit.EditValue), true, RoomName[i + i], NowbillData[i + i], AfterbillData[i + i], RoomName[i + i + 1], NowbillData[i + i + 1], AfterbillData[i + 1]);
                    }
                    else
                    {
                        billingSheets[i].Create_BillingSheet(Convert.ToDateTime(StartdateEdit.EditValue), false, RoomName[i + i], NowbillData[i + i], AfterbillData[i + i]);
                    }
                    billingSheets[i].CreateDocument();
                    xtraReport.Pages.AddRange(billingSheets[i].Pages);
                }
                documentViewer1.DocumentSource = xtraReport;
            }
        }
 /// <summary>
 /// 產生計費單
 /// </summary>
 /// <param name="RoomName1">住戶名1</param>
 /// <param name="NowbillData1">住戶1本月資料</param>
 /// <param name="AfterbillData1">住戶1上月資料</param>
 /// <param name="RoomName2">住戶名2</param>
 /// <param name="NowbillData2">住戶2本月資料</param>
 /// <param name="AfterbillData2">住戶2上月資料</param>
 /// <param name="OddEvenFlag">奇偶數旗標</param>
 /// <param name="SearchTime">查詢時間</param>
 public void Create_BillingSheet(DateTime SearchTime, bool OddEvenFlag, string RoomName1, ElectricTotalPrice NowbillData1, ElectricTotalPrice AfterbillData1, string RoomName2 = null, ElectricTotalPrice NowbillData2 = null, ElectricTotalPrice AfterbillData2 = null)
 {
     if (OddEvenFlag)
     {
         #region 第一張
         if (RoomName1 != null)
         {
             xrTableCell5.Text = RoomName1;
         }
         if (NowbillData1 != null)
         {
             xrTableCell7.Text = NowbillData1.KwhTotal.ToString("F2");
             xrTableCell8.Text = Convert.ToInt32(NowbillData1.Price).ToString();
         }
         if (AfterbillData1 != null)
         {
             xrTableCell6.Text = AfterbillData1.KwhTotal.ToString("F2");
         }
         if (bankAccount != null)
         {
             xrLabel2.Text = $"計費時間 {SearchTime:yyyy年MM月01}日 ~ {SearchTime:yyyy年MM月}{DateTime.DaysInMonth(SearchTime.Year, SearchTime.Month)}日";
             xrLabel3.Text = $"●請轉帳至{bankAccount.BankName}(銀行代碼:{bankAccount.BankCode})";
             xrLabel4.Text = $"戶名:{bankAccount.AccountTitle}";
             xrLabel5.Text = $"帳號:{bankAccount.BankAccount}";
             xrLabel6.Text = $"●請於每月{bankAccount.PaymentDeadiline}日前完成轉帳";
             xrLabel7.Text = $"若有問題請與管委會聯絡,電話:{bankAccount.ContactNumber}";
         }
         #endregion
         #region 第二張
         if (RoomName2 != null)
         {
             xrTableCell13.Text = RoomName2;
         }
         if (NowbillData2 != null)
         {
             xrTableCell15.Text = NowbillData2.KwhTotal.ToString("F2");
             xrTableCell16.Text = Convert.ToInt32(NowbillData2.Price).ToString();
         }
         if (AfterbillData2 != null)
         {
             xrTableCell14.Text = AfterbillData2.KwhTotal.ToString("F2");
         }
         if (bankAccount != null)
         {
             xrLabel9.Text  = $"計費時間 {SearchTime:yyyy年MM月01}日 ~ {SearchTime:yyyy年MM月}{DateTime.DaysInMonth(SearchTime.Year, SearchTime.Month)}日";
             xrLabel10.Text = $"1、請轉帳至{bankAccount.BankName}(銀行代碼:{bankAccount.BankCode})";
             xrLabel11.Text = $"戶名:{bankAccount.AccountTitle}";
             xrLabel12.Text = $"帳號:{bankAccount.BankAccount}";
             xrLabel13.Text = $"2、請於每月{bankAccount.PaymentDeadiline}日前完成轉帳";
             xrLabel14.Text = $"若有問題請與管委會聯絡,電話:{bankAccount.ContactNumber}";
         }
         #endregion
     }
     else
     {
         #region 第一張
         if (RoomName1 != null)
         {
             xrTableCell5.Text = RoomName1;
         }
         if (NowbillData1 != null)
         {
             xrTableCell7.Text = NowbillData1.KwhTotal.ToString("F2");
             xrTableCell8.Text = Convert.ToInt32(NowbillData1.Price).ToString();
         }
         if (AfterbillData1 != null)
         {
             xrTableCell6.Text = AfterbillData1.KwhTotal.ToString("F2");
         }
         if (bankAccount != null)
         {
             xrLabel2.Text = $"計費時間 {SearchTime:yyyy年MM月01}日 ~ {SearchTime:yyyy年MM月}{DateTime.DaysInMonth(SearchTime.Year, SearchTime.Month)}日";
             xrLabel3.Text = $"1、請轉帳至{bankAccount.BankName}(銀行代碼:{bankAccount.BankCode})";
             xrLabel4.Text = $"戶名:{bankAccount.AccountTitle}";
             xrLabel5.Text = $"帳號:{bankAccount.BankAccount}";
             xrLabel6.Text = $"2、請於每月{bankAccount.PaymentDeadiline}日前完成轉帳";
             xrLabel7.Text = $"若有問題請與管委會聯絡,電話:{bankAccount.ContactNumber}";
         }
         #endregion
         xrPanel2.Visible = false;
     }
 }