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; } }