diff --git a/ReportImp/PerspektivenEV/CollectiveBillingReport.Designer.cs b/ReportImp/PerspektivenEV/CollectiveBillingReport.Designer.cs index f58f9b474..cb024ed67 100644 --- a/ReportImp/PerspektivenEV/CollectiveBillingReport.Designer.cs +++ b/ReportImp/PerspektivenEV/CollectiveBillingReport.Designer.cs @@ -59,21 +59,20 @@ namespace PerspektivenEV this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell(); - this.DetailReport2 = new DevExpress.XtraReports.UI.DetailReportBand(); - this.Detail3 = new DevExpress.XtraReports.UI.DetailBand(); this.xrTable6 = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRow25 = new DevExpress.XtraReports.UI.XRTableRow(); this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell42 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell(); + this.lblHourlyRate = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell45 = new DevExpress.XtraReports.UI.XRTableCell(); - this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand(); this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel(); this.xrTable1 = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRow6 = new DevExpress.XtraReports.UI.XRTableRow(); this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell(); + this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand(); + this.GroupFooter2 = new DevExpress.XtraReports.UI.GroupFooterBand(); this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components); ((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit(); @@ -266,7 +265,8 @@ namespace PerspektivenEV // this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { this.Detail1, - this.DetailReport2}); + this.GroupHeader1, + this.GroupFooter2}); this.DetailReport.DataMember = "ServiceInvoicePeriods"; this.DetailReport.DataSource = this.bindingSource1; this.DetailReport.Level = 0; @@ -275,9 +275,9 @@ namespace PerspektivenEV // Detail1 // this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { - this.xrTable5}); + this.xrTable6}); this.Detail1.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.Detail1.HeightF = 50F; + this.Detail1.HeightF = 25F; this.Detail1.Name = "Detail1"; this.Detail1.StylePriority.UseFont = false; // @@ -436,23 +436,6 @@ namespace PerspektivenEV this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; this.xrTableCell8.Weight = 0.71650711871826434D; // - // DetailReport2 - // - this.DetailReport2.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { - this.Detail3, - this.GroupFooter1}); - this.DetailReport2.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems"; - this.DetailReport2.DataSource = this.bindingSource1; - this.DetailReport2.Level = 0; - this.DetailReport2.Name = "DetailReport2"; - // - // Detail3 - // - this.Detail3.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { - this.xrTable6}); - this.Detail3.HeightF = 25F; - this.Detail3.Name = "Detail3"; - // // xrTable6 // this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); @@ -467,7 +450,7 @@ namespace PerspektivenEV this.xrTableRow25.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { this.xrTableCell2, this.xrTableCell42, - this.xrTableCell10, + this.lblHourlyRate, this.xrTableCell45}); this.xrTableRow25.Name = "xrTableRow25"; this.xrTableRow25.Weight = 1D; @@ -477,7 +460,7 @@ namespace PerspektivenEV this.xrTableCell2.BorderColor = System.Drawing.Color.DarkGray; this.xrTableCell2.Borders = DevExpress.XtraPrinting.BorderSide.None; this.xrTableCell2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.Hours")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ApprovedHours", "{0:n2}")}); this.xrTableCell2.Font = new System.Drawing.Font("Calibri", 11F); this.xrTableCell2.Name = "xrTableCell2"; this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); @@ -494,7 +477,7 @@ namespace PerspektivenEV this.xrTableCell42.BorderColor = System.Drawing.Color.DarkGray; this.xrTableCell42.Borders = DevExpress.XtraPrinting.BorderSide.None; this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.Notice")}); this.xrTableCell42.Font = new System.Drawing.Font("Calibri", 11F); this.xrTableCell42.Name = "xrTableCell42"; this.xrTableCell42.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); @@ -506,29 +489,29 @@ namespace PerspektivenEV this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; this.xrTableCell42.Weight = 1.2396351551486897D; // - // xrTableCell10 + // lblHourlyRate // - this.xrTableCell10.BorderColor = System.Drawing.Color.DarkGray; - this.xrTableCell10.Borders = DevExpress.XtraPrinting.BorderSide.None; - this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.HourlyRate", "{0:0.00} €")}); - this.xrTableCell10.Font = new System.Drawing.Font("Calibri", 11F); - this.xrTableCell10.Name = "xrTableCell10"; - this.xrTableCell10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); - this.xrTableCell10.StylePriority.UseBorderColor = false; - this.xrTableCell10.StylePriority.UseBorders = false; - this.xrTableCell10.StylePriority.UseFont = false; - this.xrTableCell10.StylePriority.UsePadding = false; - this.xrTableCell10.StylePriority.UseTextAlignment = false; - this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; - this.xrTableCell10.Weight = 0.48943381421226906D; + this.lblHourlyRate.BorderColor = System.Drawing.Color.DarkGray; + this.lblHourlyRate.Borders = DevExpress.XtraPrinting.BorderSide.None; + this.lblHourlyRate.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ApprovedBE", "{0:0.00} €")}); + this.lblHourlyRate.Font = new System.Drawing.Font("Calibri", 11F); + this.lblHourlyRate.Name = "lblHourlyRate"; + this.lblHourlyRate.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.lblHourlyRate.StylePriority.UseBorderColor = false; + this.lblHourlyRate.StylePriority.UseBorders = false; + this.lblHourlyRate.StylePriority.UseFont = false; + this.lblHourlyRate.StylePriority.UsePadding = false; + this.lblHourlyRate.StylePriority.UseTextAlignment = false; + this.lblHourlyRate.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.lblHourlyRate.Weight = 0.48943381421226906D; // // xrTableCell45 // this.xrTableCell45.BorderColor = System.Drawing.Color.DarkGray; this.xrTableCell45.Borders = DevExpress.XtraPrinting.BorderSide.None; this.xrTableCell45.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.NetAmount", "{0:0.00} €")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.Claim", "{0:0.00}")}); this.xrTableCell45.Font = new System.Drawing.Font("Calibri", 11F); this.xrTableCell45.Name = "xrTableCell45"; this.xrTableCell45.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); @@ -541,21 +524,13 @@ namespace PerspektivenEV this.xrTableCell45.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; this.xrTableCell45.Weight = 0.71650711360086339D; // - // GroupFooter1 - // - this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { - this.xrLabel5, - this.xrTable1}); - this.GroupFooter1.HeightF = 123.9583F; - this.GroupFooter1.Name = "GroupFooter1"; - // // xrLabel5 // this.xrLabel5.BackColor = System.Drawing.Color.Transparent; this.xrLabel5.Borders = DevExpress.XtraPrinting.BorderSide.Bottom; this.xrLabel5.BorderWidth = 2F; this.xrLabel5.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 88.43752F); + this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 78.02086F); this.xrLabel5.Name = "xrLabel5"; this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); this.xrLabel5.SizeF = new System.Drawing.SizeF(631F, 20F); @@ -567,7 +542,7 @@ namespace PerspektivenEV // // xrTable1 // - this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 55.20833F); + this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 44.79167F); this.xrTable1.Name = "xrTable1"; this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { this.xrTableRow6}); @@ -638,6 +613,21 @@ namespace PerspektivenEV this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; this.xrTableCell11.Weight = 0.71650725326721421D; // + // GroupHeader1 + // + this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrTable5}); + this.GroupHeader1.HeightF = 50F; + this.GroupHeader1.Name = "GroupHeader1"; + // + // GroupFooter2 + // + this.GroupFooter2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrLabel5, + this.xrTable1}); + this.GroupFooter2.HeightF = 100F; + this.GroupFooter2.Name = "GroupFooter2"; + // // bindingSource1 // this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO); @@ -664,6 +654,7 @@ namespace PerspektivenEV this.PaperKind = System.Drawing.Printing.PaperKind.A4; this.Version = "17.1"; this.Watermark.Image = ((System.Drawing.Image)(resources.GetObject("Sammelrechnung.Watermark.Image"))); + this.Watermark.PageRange = "1"; ((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit(); @@ -690,19 +681,16 @@ namespace PerspektivenEV private DevExpress.XtraReports.UI.XRTableRow xrTableRow23; private DevExpress.XtraReports.UI.XRTableCell xrTableCell37; private DevExpress.XtraReports.UI.XRTableCell xrTableCell36; - private DevExpress.XtraReports.UI.DetailReportBand DetailReport2; - private DevExpress.XtraReports.UI.DetailBand Detail3; private DevExpress.XtraReports.UI.XRTable xrTable6; private DevExpress.XtraReports.UI.XRTableRow xrTableRow25; private DevExpress.XtraReports.UI.XRTableCell xrTableCell42; private DevExpress.XtraReports.UI.XRTableCell xrTableCell45; private DevExpress.XtraReports.UI.XRLabel lblAdresse; private DevExpress.XtraReports.UI.FormattingRule ruleNoticeNull; - private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1; private DevExpress.XtraReports.UI.XRLabel xrLabel1; private DevExpress.XtraReports.UI.XRLabel xrLabel6; private DevExpress.XtraReports.UI.XRTableCell xrTableCell7; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell10; + private DevExpress.XtraReports.UI.XRTableCell lblHourlyRate; private DevExpress.XtraReports.UI.XRTable xrTable1; private DevExpress.XtraReports.UI.XRTableRow xrTableRow6; private DevExpress.XtraReports.UI.XRTableCell xrTableCell3; @@ -718,5 +706,7 @@ namespace PerspektivenEV private DevExpress.XtraReports.UI.XRTableCell xrTableCell2; private DevExpress.XtraReports.UI.XRLabel xrLabel5; private DevExpress.XtraReports.UI.XRLabel xrLabel7; + private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader1; + private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter2; } } diff --git a/ReportImp/PerspektivenEV/CollectiveBillingReport.cs b/ReportImp/PerspektivenEV/CollectiveBillingReport.cs index 18c4fa973..543524e47 100644 --- a/ReportImp/PerspektivenEV/CollectiveBillingReport.cs +++ b/ReportImp/PerspektivenEV/CollectiveBillingReport.cs @@ -49,24 +49,7 @@ namespace PerspektivenEV } lblAdresse.Text = sb.ToString(); - - var newSip = new ServiceInvoicePeriodRO(); - - foreach (var sip in pRO.ServiceInvoicePeriods) - { - var newItem = new ServiceInvoiceItemRO(); - - foreach (var item in sip.ServiceInvoiceItems) - { - newItem.UnitCount += item.UnitCount; - newItem.NetAmount += item.NetAmount; - newItem.ServiceDescription = item.ServiceDescription; - } - - newSip.ServiceInvoiceItems.Add(newItem); - } - pRO.ServiceInvoicePeriods = new List(); - pRO.ServiceInvoicePeriods.Add(newSip); + lblHourlyRate.Text = pRO.ServiceInvoicePeriods[0].ServiceInvoiceItems[0].HourlyRate.ToString(); this.bindingSource1.DataSource = pRO; } diff --git a/ReportImp/PerspektivenEV/CollectiveBillingReportTab.Designer.cs b/ReportImp/PerspektivenEV/CollectiveBillingReportTab.Designer.cs index 2f20a8a59..dfdf6f021 100644 --- a/ReportImp/PerspektivenEV/CollectiveBillingReportTab.Designer.cs +++ b/ReportImp/PerspektivenEV/CollectiveBillingReportTab.Designer.cs @@ -32,6 +32,7 @@ namespace PerspektivenEV DevExpress.XtraReports.UI.XRSummary xrSummary1 = new DevExpress.XtraReports.UI.XRSummary(); DevExpress.XtraReports.UI.XRSummary xrSummary2 = new DevExpress.XtraReports.UI.XRSummary(); DevExpress.XtraReports.UI.XRSummary xrSummary3 = new DevExpress.XtraReports.UI.XRSummary(); + DevExpress.XtraReports.UI.XRSummary xrSummary4 = new DevExpress.XtraReports.UI.XRSummary(); this.Detail = new DevExpress.XtraReports.UI.DetailBand(); this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand(); this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule(); @@ -40,6 +41,8 @@ namespace PerspektivenEV this.xrPageInfo2 = new DevExpress.XtraReports.UI.XRPageInfo(); this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand(); this.Detail1 = new DevExpress.XtraReports.UI.DetailBand(); + this.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand(); + this.Detail2 = new DevExpress.XtraReports.UI.DetailBand(); this.xrTable6 = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRow25 = new DevExpress.XtraReports.UI.XRTableRow(); this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell(); @@ -51,7 +54,7 @@ namespace PerspektivenEV this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell18 = new DevExpress.XtraReports.UI.XRTableCell(); - this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand(); + this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand(); this.xrTable5 = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow(); this.xrTableCell30 = new DevExpress.XtraReports.UI.XRTableCell(); @@ -73,7 +76,6 @@ namespace PerspektivenEV this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell(); - this.GroupFooter = new DevExpress.XtraReports.UI.GroupFooterBand(); this.xrTable1 = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow(); this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell(); @@ -82,11 +84,13 @@ namespace PerspektivenEV this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell(); this.ruleNoticeNull = new DevExpress.XtraReports.UI.FormattingRule(); - this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand(); this.lblHeader = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel(); this.fieldMonatskontingent = new DevExpress.XtraReports.UI.CalculatedField(); + this.fieldBetreuungsbeginn = new DevExpress.XtraReports.UI.CalculatedField(); + this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand(); + this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand(); this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components); ((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit(); @@ -143,7 +147,7 @@ namespace PerspektivenEV // this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { this.Detail1, - this.GroupHeader1}); + this.DetailReport1}); this.DetailReport.DataMember = "ServiceInvoicePeriods"; this.DetailReport.DataSource = this.bindingSource1; this.DetailReport.Level = 0; @@ -151,15 +155,32 @@ namespace PerspektivenEV // // Detail1 // - this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { - this.xrTable6}); this.Detail1.Font = new System.Drawing.Font("Arial", 11F); - this.Detail1.HeightF = 18F; + this.Detail1.HeightF = 0F; this.Detail1.Name = "Detail1"; this.Detail1.StylePriority.UseFont = false; this.Detail1.StylePriority.UseTextAlignment = false; this.Detail1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; // + // DetailReport1 + // + this.DetailReport1.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { + this.Detail2, + this.GroupHeader2, + this.GroupHeader1, + this.GroupFooter1}); + this.DetailReport1.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems"; + this.DetailReport1.DataSource = this.bindingSource1; + this.DetailReport1.Level = 0; + this.DetailReport1.Name = "DetailReport1"; + // + // Detail2 + // + this.Detail2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrTable6}); + this.Detail2.HeightF = 18F; + this.Detail2.Name = "Detail2"; + // // xrTable6 // this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); @@ -210,7 +231,7 @@ namespace PerspektivenEV this.xrTableCell42.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.Customer.LastNameFirstName")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")}); this.xrTableCell42.Font = new System.Drawing.Font("Arial", 8F); this.xrTableCell42.Name = "xrTableCell42"; this.xrTableCell42.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); @@ -228,7 +249,7 @@ namespace PerspektivenEV this.xrTableCell8.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); this.xrTableCell8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.CostBearer2SupportConcept.CustomerReferenceNumber")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.Notice")}); this.xrTableCell8.Font = new System.Drawing.Font("Arial", 8F); this.xrTableCell8.Name = "xrTableCell8"; this.xrTableCell8.StylePriority.UseBorders = false; @@ -242,12 +263,13 @@ namespace PerspektivenEV // this.xrTableCell34.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell34.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.AccountingPeriodEnd", "{0:dd.MM.yyyy}")}); this.xrTableCell34.Font = new System.Drawing.Font("Arial", 8F); this.xrTableCell34.Name = "xrTableCell34"; this.xrTableCell34.StylePriority.UseBorders = false; this.xrTableCell34.StylePriority.UseFont = false; this.xrTableCell34.StylePriority.UseTextAlignment = false; - this.xrTableCell34.Text = "[CostBearer2SupportConcept.ApprovedEndDate!dd.MM.yy]"; this.xrTableCell34.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; this.xrTableCell34.Weight = 0.24966908926408551D; // @@ -255,6 +277,8 @@ namespace PerspektivenEV // this.xrTableCell3.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.Customer.AssistanceBegin")}); this.xrTableCell3.Font = new System.Drawing.Font("Arial", 8F); this.xrTableCell3.Name = "xrTableCell3"; this.xrTableCell3.StylePriority.UseBorders = false; @@ -269,7 +293,7 @@ namespace PerspektivenEV this.xrTableCell45.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); this.xrTableCell45.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.SupportConceptApprovalPeriod.ApprovedBEPerInterval", "{0:#}")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitDescription")}); this.xrTableCell45.Font = new System.Drawing.Font("Arial", 8F); this.xrTableCell45.Name = "xrTableCell45"; this.xrTableCell45.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); @@ -278,7 +302,6 @@ namespace PerspektivenEV this.xrTableCell45.StylePriority.UseFont = false; this.xrTableCell45.StylePriority.UsePadding = false; this.xrTableCell45.StylePriority.UseTextAlignment = false; - this.xrTableCell45.Text = "xrTableCell45"; this.xrTableCell45.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; this.xrTableCell45.Weight = 0.33289210448805817D; // @@ -287,12 +310,14 @@ namespace PerspektivenEV this.xrTableCell10.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.fieldMonatskontingent", "{0:0.00}")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitCount", "{0:0.00}")}); this.xrTableCell10.Font = new System.Drawing.Font("Arial", 8F); this.xrTableCell10.Name = "xrTableCell10"; this.xrTableCell10.StylePriority.UseBorders = false; this.xrTableCell10.StylePriority.UseFont = false; + this.xrTableCell10.StylePriority.UseTextAlignment = false; this.xrTableCell10.Text = "xrTableCell10"; + this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter; this.xrTableCell10.Weight = 0.33289210047693363D; // // xrTableCell17 @@ -315,7 +340,7 @@ namespace PerspektivenEV this.xrTableCell18.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); this.xrTableCell18.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.Claim")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.GrossAmount")}); this.xrTableCell18.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold); this.xrTableCell18.Name = "xrTableCell18"; this.xrTableCell18.StylePriority.UseBorders = false; @@ -324,13 +349,13 @@ namespace PerspektivenEV this.xrTableCell18.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; this.xrTableCell18.Weight = 0.332892002330651D; // - // GroupHeader1 + // GroupHeader2 // - this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.GroupHeader2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { this.xrTable5}); - this.GroupHeader1.HeightF = 36F; - this.GroupHeader1.Name = "GroupHeader1"; - this.GroupHeader1.RepeatEveryPage = true; + this.GroupHeader2.HeightF = 36F; + this.GroupHeader2.Name = "GroupHeader2"; + this.GroupHeader2.RepeatEveryPage = true; // // xrTable5 // @@ -575,15 +600,6 @@ namespace PerspektivenEV this.xrTableCell22.StylePriority.UseBorders = false; this.xrTableCell22.Weight = 0.33118914272283523D; // - // GroupFooter - // - this.GroupFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { - this.xrTable1}); - this.GroupFooter.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold); - this.GroupFooter.HeightF = 25F; - this.GroupFooter.Name = "GroupFooter"; - this.GroupFooter.StylePriority.UseFont = false; - // // xrTable1 // this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); @@ -628,7 +644,7 @@ namespace PerspektivenEV this.xrTableCell23.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); this.xrTableCell23.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.SupportConceptApprovalPeriod.ApprovedBEPerInterval")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitDescription")}); this.xrTableCell23.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold); this.xrTableCell23.Name = "xrTableCell23"; this.xrTableCell23.StylePriority.UseBorders = false; @@ -645,7 +661,7 @@ namespace PerspektivenEV this.cellTotalPerMonth.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); this.cellTotalPerMonth.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.fieldMonatskontingent")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitCount")}); this.cellTotalPerMonth.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold); this.cellTotalPerMonth.Name = "cellTotalPerMonth"; this.cellTotalPerMonth.StylePriority.UseBorders = false; @@ -670,12 +686,14 @@ namespace PerspektivenEV this.xrTableCell14.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom))); this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.GrossAmount")}); this.xrTableCell14.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold); this.xrTableCell14.Name = "xrTableCell14"; this.xrTableCell14.StylePriority.UseBorders = false; this.xrTableCell14.StylePriority.UseFont = false; this.xrTableCell14.StylePriority.UseTextAlignment = false; + xrSummary4.FormatString = "{0:#.00}"; + this.xrTableCell14.Summary = xrSummary4; this.xrTableCell14.Text = "xrTableCell9"; this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; this.xrTableCell14.Weight = 0.23812008704613302D; @@ -686,25 +704,13 @@ namespace PerspektivenEV this.ruleNoticeNull.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False; this.ruleNoticeNull.Name = "ruleNoticeNull"; // - // Page1 - // - this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { - this.lblHeader, - this.xrLabel3, - this.xrLabel2}); - this.Page1.Font = new System.Drawing.Font("Arial", 10F); - this.Page1.HeightF = 60F; - this.Page1.Name = "Page1"; - this.Page1.StylePriority.UseBorders = false; - this.Page1.StylePriority.UseFont = false; - // // lblHeader // this.lblHeader.BackColor = System.Drawing.Color.Transparent; this.lblHeader.Borders = DevExpress.XtraPrinting.BorderSide.None; this.lblHeader.CanShrink = true; this.lblHeader.Font = new System.Drawing.Font("Arial", 9F); - this.lblHeader.LocationFloat = new DevExpress.Utils.PointFloat(409.375F, 10.00001F); + this.lblHeader.LocationFloat = new DevExpress.Utils.PointFloat(408.8752F, 10.00001F); this.lblHeader.Multiline = true; this.lblHeader.Name = "lblHeader"; this.lblHeader.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); @@ -720,7 +726,7 @@ namespace PerspektivenEV // this.xrLabel3.Borders = DevExpress.XtraPrinting.BorderSide.None; this.xrLabel3.Font = new System.Drawing.Font("Arial", 9F); - this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(938.5001F, 10.00001F); + this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(938.0004F, 10.00001F); this.xrLabel3.Name = "xrLabel3"; this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); this.xrLabel3.SizeF = new System.Drawing.SizeF(130.4999F, 25F); @@ -729,7 +735,7 @@ namespace PerspektivenEV this.xrLabel3.StylePriority.UseFont = false; this.xrLabel3.StylePriority.UseForeColor = false; this.xrLabel3.StylePriority.UseTextAlignment = false; - this.xrLabel3.Text = "[AccountingPeriodStart!MMMM yyyy]"; + this.xrLabel3.Text = " [AccountingPeriodEnd!dd.MM.yyyy]"; this.xrLabel3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; this.xrLabel3.WordWrap = false; // @@ -738,7 +744,7 @@ namespace PerspektivenEV this.xrLabel2.BackColor = System.Drawing.Color.Transparent; this.xrLabel2.Borders = DevExpress.XtraPrinting.BorderSide.None; this.xrLabel2.Font = new System.Drawing.Font("Arial", 9F); - this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0.4998843F, 10.00001F); + this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 10.00001F); this.xrLabel2.Multiline = true; this.xrLabel2.Name = "xrLabel2"; this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); @@ -758,6 +764,32 @@ namespace PerspektivenEV this.fieldMonatskontingent.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal; this.fieldMonatskontingent.Name = "fieldMonatskontingent"; // + // fieldBetreuungsbeginn + // + this.fieldBetreuungsbeginn.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems"; + this.fieldBetreuungsbeginn.Expression = "Iif([AccountingPeriodStart] < AddYears(Now(), -1000), ?, [AccountingPeriodStart])" + + ""; + this.fieldBetreuungsbeginn.FieldType = DevExpress.XtraReports.UI.FieldType.DateTime; + this.fieldBetreuungsbeginn.Name = "fieldBetreuungsbeginn"; + // + // GroupHeader1 + // + this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.lblHeader, + this.xrLabel3, + this.xrLabel2}); + this.GroupHeader1.HeightF = 75F; + this.GroupHeader1.Level = 1; + this.GroupHeader1.Name = "GroupHeader1"; + this.GroupHeader1.PageBreak = DevExpress.XtraReports.UI.PageBreak.BeforeBandExceptFirstEntry; + // + // GroupFooter1 + // + this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrTable1}); + this.GroupFooter1.HeightF = 18F; + this.GroupFooter1.Name = "GroupFooter1"; + // // bindingSource1 // this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO); @@ -769,11 +801,10 @@ namespace PerspektivenEV this.ReportHeader, this.topMarginBand1, this.bottomMarginBand1, - this.GroupFooter, - this.Page1, this.DetailReport}); this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] { - this.fieldMonatskontingent}); + this.fieldMonatskontingent, + this.fieldBetreuungsbeginn}); this.DataSource = this.bindingSource1; this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung"; this.Font = new System.Drawing.Font("Verdana", 10F); @@ -801,8 +832,6 @@ namespace PerspektivenEV private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull; private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1; private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1; - private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter; - private DevExpress.XtraReports.UI.GroupHeaderBand Page1; private DevExpress.XtraReports.UI.XRLabel xrLabel2; private DevExpress.XtraReports.UI.DetailReportBand DetailReport; private DevExpress.XtraReports.UI.DetailBand Detail1; @@ -842,7 +871,6 @@ namespace PerspektivenEV private DevExpress.XtraReports.UI.XRTableCell xrTableCell21; private DevExpress.XtraReports.UI.XRTableCell xrTableCell22; private DevExpress.XtraReports.UI.XRLabel lblHeader; - private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader1; private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo2; private DevExpress.XtraReports.UI.XRTableCell xrTableCell33; private DevExpress.XtraReports.UI.XRTableCell xrTableCell30; @@ -851,5 +879,11 @@ namespace PerspektivenEV private DevExpress.XtraReports.UI.XRTableCell xrTableCell37; private DevExpress.XtraReports.UI.XRTableCell xrTableCell36; private DevExpress.XtraReports.UI.XRTableCell xrTableCell23; + private DevExpress.XtraReports.UI.DetailReportBand DetailReport1; + private DevExpress.XtraReports.UI.DetailBand Detail2; + private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2; + private DevExpress.XtraReports.UI.CalculatedField fieldBetreuungsbeginn; + private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader1; + private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1; } } diff --git a/ReportImp/PerspektivenEV/CollectiveBillingReportTab.cs b/ReportImp/PerspektivenEV/CollectiveBillingReportTab.cs index 78c15afe9..cc2ea9896 100644 --- a/ReportImp/PerspektivenEV/CollectiveBillingReportTab.cs +++ b/ReportImp/PerspektivenEV/CollectiveBillingReportTab.cs @@ -7,7 +7,7 @@ using BS.Shared.Core; namespace PerspektivenEV { - [IDSpecificClass(Identifier = "Sammelrechnung")] + [IDSpecificClass(Identifier = "SammelrechnungAnhang")] public partial class SammelrechnungTab : XtraReport, IBeWoReport { public SammelrechnungTab() @@ -19,34 +19,24 @@ namespace PerspektivenEV { decimal totalPerMonth = 0; - pRO.ServiceInvoicePeriods.Sort((a, b) => a.Customer.LastNameFirstName.CompareTo(b.Customer.LastNameFirstName)); + //pRO.ServiceInvoicePeriods.Sort((a, b) => a.Customer.LastNameFirstName.CompareTo(b.Customer.LastNameFirstName)); DateTime abrechnungsMonatEnde = pRO.AccountingPeriodEnd; - if (pRO.ServiceInvoicePeriods != null) - { - foreach (var sip in pRO.ServiceInvoicePeriods) - { - if (sip.SupportConceptApprovalPeriod != null && sip.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue) - { - var month = sip.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value / 12m; - totalPerMonth += month; - } - if (sip.CostBearer2SupportConcept != null) - { - sip.SupportConceptApprovalPeriod.Notice = String.Format("{0:dd.MM.yyyy} - {1:dd.MM.yyyy}", - sip.CostBearer2SupportConcept.StartDate, pRO.AccountingPeriodEnd); - if (pRO.ServiceInvoicePeriods[0].CostBearer2SupportConcept.ServiceRecords[0].ServiceDescription.ServiceCategory.Name.Contains("HTK")) - lblHeader.Text = "Betreutes Wohnen für Menschen mit psychischer Erkrankung im Hochtaunuskreis"; - else if (pRO.ServiceInvoicePeriods[0].CostBearer2SupportConcept.ServiceRecords[0].ServiceDescription.ServiceCategory.Name.Contains("FFM")) - lblHeader.Text = "Betreutes Wohnen Frankfurt/M."; - else if (pRO.ServiceInvoicePeriods[0].CostBearer2SupportConcept.ServiceRecords[0].ServiceDescription.ServiceCategory.Name.Contains("Tagesstätte")) - lblHeader.Text = "Betreutes Wohnen für Menschen mit körperlicher-/ Sinnesbehinderung"; - } - } - } - cellTotalPerMonth.Text = String.Format("{0:0.00}", totalPerMonth); + if (pRO.ServiceInvoicePeriods != null) + { + foreach (var sip in pRO.ServiceInvoicePeriods) + { + if (sip.Notice.Contains("Hochtaunuskreis")) + lblHeader.Text = "Betreutes Wohnen für Menschen mit psychischer Erkrankung im Hochtaunuskreis"; + else if (sip.Notice.Contains("Frankfurt")) + lblHeader.Text = "Betreutes Wohnen Frankfurt/M."; + else if (sip.Notice.Contains("Körperbehinderte")) + lblHeader.Text = "Betreutes Wohnen für Menschen mit körperlicher-/ Sinnesbehinderung"; + } + } + cellTotalPerMonth.Text = String.Format("{0:0.00}", totalPerMonth); - this.bindingSource1.DataSource = pRO; + this.bindingSource1.DataSource = pRO; } } -} \ No newline at end of file +} diff --git a/ReportImp/PerspektivenEV/Invoicing/CollectiveInvoiceCreation.cs b/ReportImp/PerspektivenEV/Invoicing/CollectiveInvoiceCreation.cs index 160fef5f3..4752219a9 100644 --- a/ReportImp/PerspektivenEV/Invoicing/CollectiveInvoiceCreation.cs +++ b/ReportImp/PerspektivenEV/Invoicing/CollectiveInvoiceCreation.cs @@ -22,7 +22,60 @@ namespace PerspektivenEV.Invoicing private DateTime? accountingPeriodStart = null; private DateTime? accountingPeriodEnd = null; - public override List GenerateServiceInvoices(long costBearerOid, DateTimeSpan invoicePeriod, Dictionary> supportConcepts2ServiceRecords) + public override void SetInvoiceId(ServiceInvoice invoice) + { + invoice.InvoiceBase.InvoiceId = "Sammelrechnung"; + //invoice.InvoiceBase.InvoiceTypeText = "Text in Rechnungsübersicht"; + } + + //public override List GenerateServiceInvoices(long costBearerOid, DateTimeSpan invoicePeriod, Dictionary> supportConcepts2ServiceRecords) + //{ + // var newSc2SrList = new Dictionary>(); + + // foreach (var key in supportConcepts2ServiceRecords.Keys) + // { + // if (key.IsApproved) + // { + // newSc2SrList.Add(key, supportConcepts2ServiceRecords[key]); + // } + // } + + // List>> liste = new List>>(); + // liste.Add(new Dictionary>()); + // liste.Add(new Dictionary>()); + // liste.Add(new Dictionary>()); + + // foreach (var item in newSc2SrList) + // { + // if (item.Value.Count!= 0 && item.Value != null && item.Value[0].ServiceDescription.Category != null) + // { + // if (item.Value[0].ServiceDescription.Category.Name.Contains("HTK")) + // liste[0].Add(item.Key, item.Value); + // else if (item.Value[0].ServiceDescription.Category.Name.Contains("FFM")) + // liste[1].Add(item.Key, item.Value); + // else if (item.Value[0].ServiceDescription.Category.Name.Contains("Tagesstätte")) + // liste[2].Add(item.Key, item.Value); + // } + // } + + // var costBearer = DAOFactory.GenericDAO.LoadByID(costBearerOid); + // var invoiceList = new List(); + // var result = new List(); + // ServiceInvoice invoice; + + // foreach (var list in liste) + // { + // invoice = CreateCollectiveBilling(costBearer, invoicePeriod, list); + // if (invoice != null) + // invoiceList.Add(invoice); + + // result = invoiceList.Select(item => MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(item)).ToList(); + // } + + // return result.Count > 1 ? result.OrderBy(i => i.InvoiceBase.CustomerLastName).ToList() : result; + //} + + public override void SetCollectiveBillingServiceInvoicePeriods(ServiceInvoice invoice, DateTimeSpan invoicePeriod, Dictionary> supportConcepts2ServiceRecords) { var newSc2SrList = new Dictionary>(); @@ -34,41 +87,173 @@ namespace PerspektivenEV.Invoicing } } - List>> liste = new List>>(); - liste.Add(new Dictionary>()); - liste.Add(new Dictionary>()); - liste.Add(new Dictionary>()); + + Dictionary> cat2Daten = new Dictionary>(); + foreach (var item in newSc2SrList) { - if (item.Value.Count!= 0 && item.Value != null && item.Value[0].ServiceDescription.Category != null) + var c2s = DAOFactory.GenericDAO.LoadByID(item.Key.CostBearerRelOids[0]); + + foreach (var ap in c2s.ApprovalPeriodList) { - if (item.Value[0].ServiceDescription.Category.Name.Contains("HTK")) - liste[0].Add(item.Key, item.Value); - else if (item.Value[0].ServiceDescription.Category.Name.Contains("FFM")) - liste[1].Add(item.Key, item.Value); - else if (item.Value[0].ServiceDescription.Category.Name.Contains("Tagesstätte")) - liste[2].Add(item.Key, item.Value); + if (ap.EndDate >= invoicePeriod.StartDateTime && ap.StartDate <= invoicePeriod.EndDate && ap.ServiceCategory != null) + { + String key = ap.ServiceCategory.Name; + + if (!cat2Daten.ContainsKey(key)) + { + cat2Daten.Add(key, new List()); + } + + var daten = new Abrechnungsdaten(); + daten.CategoryName = key; + daten.AbrechnungsStartDate = invoicePeriod.StartDate; + daten.AbrechnungsEndDate = invoicePeriod.EndDate; + daten.CompactSupportConcept = item.Key; + daten.CostBearer2SupportConcept = c2s; + daten.SupportConceptApprovalPeriod = ap; + cat2Daten[key].Add(daten); + } + } } - var costBearer = DAOFactory.GenericDAO.LoadByID(costBearerOid); - var invoiceList = new List(); - var result = new List(); - ServiceInvoice invoice; - - foreach (var list in liste) + foreach (var categoryName in cat2Daten.Keys) { - invoice = CreateCollectiveBilling(costBearer, invoicePeriod, list); - if (invoice != null) - invoiceList.Add(invoice); + var datenListe = cat2Daten[categoryName]; - result = invoiceList.Select(item => MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(item)).ToList(); + var sip = ErstelleServiceInvoicePeriod(invoicePeriod, categoryName, datenListe); + + invoice.ServiceInvoicePeriodList.Add(sip); + + } - - return result.Count > 1 ? result.OrderBy(i => i.InvoiceBase.CustomerLastName).ToList() : result; } + private ServiceInvoicePeriod ErstelleServiceInvoicePeriod(DateTimeSpan invoicePeriod, String category, List datenListe) + { + var items = ErstelleInvoiceItems(datenListe); + + ServiceInvoicePeriod period = new ServiceInvoicePeriod(); + period.Start = invoicePeriod.StartDate; + period.End = invoicePeriod.EndDate; + + if (category.Contains("HTK")) + period.Notice = "Betreutes Wohnen im Hochtaunuskreis"; + else if (category.Contains("FFM")) + period.Notice = "Betreutes Wohnen Frankfurt/M."; + else if (category.Contains("Tagesstätte")) + period.Notice = "Betreutes Wohnen Körperbehinderte"; + else + period.Notice = category; + period.ApprovedHours = 0; + period.ApprovedBE = 0; + period.Claim = 0; + period.InvoiceItemList = items; + + foreach (var item in items) + { + period.ApprovedHours += item.UnitCount; + period.ApprovedBE = item.AmountPerUnit; + period.Claim += item.AmountTotal; + } + //period.ApprovedHours + + return period; + } + + private List ErstelleInvoiceItems(List datenListe) + { + var items = new List(); + foreach (var daten in datenListe) + { + var item = CreateInvoiceItem(daten); + if (item.AmountTotal > 0) + { + items.Add(item); + } + } + + + return items.OrderBy(i => i.ItemDescription).ToList(); + } + + private InvoiceItem CreateInvoiceItem(Abrechnungsdaten daten) + { + var calc = new CustomCalculations(); + + + DateTime start = daten.AbrechnungsStartDate; + DateTime end = daten.AbrechnungsEndDate; + + if (daten.SupportConceptApprovalPeriod.StartDate > start) + start = daten.SupportConceptApprovalPeriod.StartDate.Value; + + if (daten.SupportConceptApprovalPeriod.EndDate < end) + end = daten.SupportConceptApprovalPeriod.EndDate.Value; + + var monate = DateTimeUtils.GetTotalMonths(start, end); + + var c2sDc = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(daten.CostBearer2SupportConcept); + var scapDc = MapperFactory.SupportConceptApprovalPeriodDC_SupportConceptApprovalPeriod.MapToNewDC(daten.SupportConceptApprovalPeriod); + + var stundenProMonat = calc.GetApprovedHoursForPeriod(c2sDc, scapDc, null, new DateTime(start.Year, start.Month, 1), new DateTime(start.Year, start.Month, 1).AddMonths(1).AddDays(-1), false) ?? 0; + + var abrechnungsMonate = monate.GanzeMonate * stundenProMonat; + if (monate.RestTageAnfang > 0) + { + if (start.Day > 15) + abrechnungsMonate += stundenProMonat / 2; + + else if (start.Day > 1) + abrechnungsMonate += stundenProMonat; + } + if (monate.RestTageEnde > 0) + { + if (end.Day > 15) + abrechnungsMonate += stundenProMonat; + else + abrechnungsMonate += stundenProMonat / 2; + } + + + abrechnungsMonate = Math.Round(abrechnungsMonate, 2, MidpointRounding.AwayFromZero); + decimal hourlyRate = 0; + + if (accountingPeriodStart.HasValue) + { + var crp = c2sDc.CostBearer.CostRatePeriods.GetCostRatePeriodForDate(CostRatePeriodType.HourlyRate, + accountingPeriodStart.Value); + + if (crp != null && crp.CostRateValue.HasValue) + hourlyRate = crp.CostRateValue.Value; + } + + String customerName = daten.CompactSupportConcept.CustomerName; + String aktenzeichen = daten.CostBearer2SupportConcept.CustomerReferenceNumber; + DateTime? bewilligtBis = daten.CompactSupportConcept.EndDate; + DateTime beginn = daten.CostBearer2SupportConcept.SupportConcept.Customer.AssistanceBegin ?? DateTime.MinValue; + decimal jahreskontingent = calc.GetJahreskontingent(scapDc); + + var ii = new InvoiceItem + { + ItemPeriodStart = beginn, + ItemPeriodEnd = bewilligtBis, + AccountingInterval = AccountingIntervalType.Monthly, + AmountPerUnit = hourlyRate, + UnitCount = abrechnungsMonate, + ItemDescription = customerName, + UnitDescription = String.Format("{0:0.##}", jahreskontingent), + Notice = aktenzeichen, + MaxApprovedUnitCount = jahreskontingent + }; + + ii.AmountTotal = ii.UnitCount * ii.AmountPerUnit; + ii.GrossAmountTotal = ii.AmountTotal; + + return ii; + } public override void SetInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod, IList supportConceptList) @@ -81,12 +266,7 @@ namespace PerspektivenEV.Invoicing base.SetInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConceptList); } - public override void SetInvoiceItems(ServiceInvoice invoice, ServiceInvoicePeriod serviceInvoicePeriod, - SupportConceptApprovalPeriodDC supportConceptApprovalPeriod, CostBearer2SupportConcept cb2sc, - DateTimeSpan invoicePeriod, List serviceRecords) - { - CreateFixedAmounts(serviceInvoicePeriod, supportConceptApprovalPeriod, cb2sc); - } + public override void CreateFixedAmounts(ServiceInvoicePeriod serviceInvoicePeriod, SupportConceptApprovalPeriodDC scap, CostBearer2SupportConcept cb2sc) { @@ -150,10 +330,19 @@ namespace PerspektivenEV.Invoicing } - public override IList CreateInvoiceItems(List serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, - Calculations calc) - { - return base.CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, scap, calc); - } + } + + public class Abrechnungsdaten + { + public String CategoryName { get; set; } + + public CompactSupportConceptDC CompactSupportConcept { get; set; } + + public CostBearer2SupportConcept CostBearer2SupportConcept { get; set; } + + public SupportConceptApprovalPeriod SupportConceptApprovalPeriod { get; set; } + public DateTime AbrechnungsStartDate { get; internal set; } + + public DateTime AbrechnungsEndDate { get; internal set; } } } diff --git a/ReportImp/PerspektivenEV/Invoicing/SelbstzahlerInvoiceCreation.cs b/ReportImp/PerspektivenEV/Invoicing/SelbstzahlerInvoiceCreation.cs index 23e34d6b5..ae68ecc08 100644 --- a/ReportImp/PerspektivenEV/Invoicing/SelbstzahlerInvoiceCreation.cs +++ b/ReportImp/PerspektivenEV/Invoicing/SelbstzahlerInvoiceCreation.cs @@ -18,6 +18,11 @@ namespace PerspektivenEV.Invoicing private DateTime? accountingPeriodStart = null; private DateTime? accountingPeriodEnd = null; + public override void SetInvoiceId(ServiceInvoice invoice) + { + invoice.InvoiceBase.InvoiceId = "Selbstzahler"; + //invoice.InvoiceBase.InvoiceTypeText = "Text in Rechnungsübersicht"; + } public override void SetInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod, IList supportConceptList) diff --git a/ReportImp/PerspektivenEV/PerspektivenEV.csproj b/ReportImp/PerspektivenEV/PerspektivenEV.csproj index ee0fa56a1..b911b8bf5 100644 --- a/ReportImp/PerspektivenEV/PerspektivenEV.csproj +++ b/ReportImp/PerspektivenEV/PerspektivenEV.csproj @@ -48,6 +48,13 @@ + + Component + + + CollectiveBillingReport.cs + + @@ -87,6 +94,9 @@ + + CollectiveBillingReport.cs + CollectiveBillingReportTab.cs diff --git a/ReportImp/PerspektivenEV/Service/CustomCalculations.cs b/ReportImp/PerspektivenEV/Service/CustomCalculations.cs index 3d15d496c..7a5677fe4 100644 --- a/ReportImp/PerspektivenEV/Service/CustomCalculations.cs +++ b/ReportImp/PerspektivenEV/Service/CustomCalculations.cs @@ -146,6 +146,30 @@ namespace PerspektivenEV.Service return flsProWoche * 4.34m; } + public decimal GetJahreskontingent(SupportConceptApprovalPeriodDC scap) + { + if (scap.ApprovedBEInterval.HasValue && scap.ApprovedBEPerInterval.HasValue) + { + if (scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Monthly) + { + return scap.ApprovedBEPerInterval.Value * 12; + } + else if (scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Quarterly) + { + return scap.ApprovedBEPerInterval.Value * 4; + } + else if (scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.HalfYearly) + { + return scap.ApprovedBEPerInterval.Value * 2; + } + else if (scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Yearly) + { + return scap.ApprovedBEPerInterval.Value; + } + } + + return 0; + } } diff --git a/ReportImp/PerspektivenEV/ServiceInvoiceReport.cs b/ReportImp/PerspektivenEV/ServiceInvoiceReport.cs index 7e02b1e9b..703f5a381 100644 --- a/ReportImp/PerspektivenEV/ServiceInvoiceReport.cs +++ b/ReportImp/PerspektivenEV/ServiceInvoiceReport.cs @@ -2,10 +2,12 @@ using System; using System.Text; using BeWo.Report; using BeWo.Report.ReportObjects; +using BS.Shared.Core; using DevExpress.XtraReports.UI; namespace PerspektivenEV { + [IDSpecificClass(Identifier = "Selbstzahler")] public partial class ServiceInvoiceReport : XtraReport, IBeWoReport { public ServiceInvoiceReport() diff --git a/ReportImp/VkmMenden/AllgemeineRechnung.Designer.cs b/ReportImp/VkmMenden/AllgemeineRechnung.Designer.cs index f037b5111..f926bf1e5 100644 --- a/ReportImp/VkmMenden/AllgemeineRechnung.Designer.cs +++ b/ReportImp/VkmMenden/AllgemeineRechnung.Designer.cs @@ -383,7 +383,7 @@ namespace VkmMenden this.xrTableCell21.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); this.xrTableCell21.StylePriority.UsePadding = false; this.xrTableCell21.StylePriority.UseTextAlignment = false; - this.xrTableCell21.Text = "marc.brumberg@vkm-menden.de"; + this.xrTableCell21.Text = "kolja.kuepper@vkm-menden.de"; this.xrTableCell21.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; this.xrTableCell21.Weight = 0.31012402011277251D; // diff --git a/ReportImp/VkmMenden/AllgemeineRechnung.resx b/ReportImp/VkmMenden/AllgemeineRechnung.resx index 737ac4f61..4059f4062 100644 --- a/ReportImp/VkmMenden/AllgemeineRechnung.resx +++ b/ReportImp/VkmMenden/AllgemeineRechnung.resx @@ -3314,7 +3314,7 @@ ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAFQAYQBoAG8AbQBhADsAfQB9AHsAXABjAG8AbABvAHIAdABiAGwAIAA7AFwAcgBlAGQAMABcAGcAcgBlAGUAbgAwAFwAYgBsAHUAZQAwACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMgA1ADUAIAA7AH0AewBcACoAXABkAGUAZgBjAGgAcAAgAFwAZgAxAFwAZgBzADIANAB9AHsAXABzAHQAeQBsAGUAcwBoAGUAZQB0ACAAewBcAHEAbABcAGYAMQBcAGYAcwAyADQAIABOAG8AcgBtAGEAbAA7AH0AewBcAHMAMQBcAHMAYgBhAHMAZQBkAG8AbgAwAFwAcwBuAGUAeAB0ADEAXABxAGwAXAB0AHEAYwBcAHQAeAA0ADUAMwA2AFwAdABxAHIAXAB0AHgAOQAwADcAMgBcAGYAMQBcAGYAcwAyADAAIABmAG8AbwB0AGUAcgA7AH0AewBcACoAXABjAHMAMgBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQAgAEQAZQBmAGEAdQBsAHQAIABQAGEAcgBhAGcAcgBhAHAAaAAgAEYAbwBuAHQAOwB9AHsAXAAqAFwAYwBzADMAXABzAGIAYQBzAGUAZABvAG4AMgBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQAgAEwAaQBuAGUAIABOAHUAbQBiAGUAcgA7AH0AewBcACoAXABjAHMANABcAHUAbABcAGYAMQBcAGYAcwAyADQAXABjAGYAMgAgAEgAeQBwAGUAcgBsAGkAbgBrADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABmADEAXABmAHMAMgA0AFwAcQBsAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGwAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAbAAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBiADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAcgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZAByADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHQAMwBcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAATgBvAHIAbQBhAGwAIABUAGEAYgBsAGUAOwB9AHsAXAAqAFwAdABzADYAXAB0AHMAcgBvAHcAZABcAHMAYgBhAHMAZQBkAG8AbgA1AFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcgBiAHIAZAByAHQAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAbABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBiAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAHIAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAaABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgB2AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAcgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZAByADEAMAA4AFwAdABzAHYAZQByAHQAYQBsAHQAXABjAGwAdAB4AGwAcgB0AGIAIABUAGEAYgBsAGUAIABTAGkAbQBwAGwAZQAgADEAOwB9AH0AewBcACoAXABsAGkAcwB0AG8AdgBlAHIAcgBpAGQAZQB0AGEAYgBsAGUAfQBcAG4AbwB1AGkAYwBvAG0AcABhAHQAXABzAHAAbAB5AHQAdwBuAGkAbgBlAFwAaAB0AG0AYQB1AHQAcwBwAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHMAMQBcAHEAYwBcAHQAcQBjAFwAdAB4ADQANQAzADYAXAB0AHEAcgBcAHQAeAA5ADAANwAyAHsAXAB1AGwAXABmADIAXABmAHMAMQA0AFwAYwBmADEAIABTAHAAZQBuAGQAZQBuAGsAbwBuAHQAZQBuAH0AXAB1AGwAXABmADIAXABmAHMAMQA0AFwAYwBmADEAXABwAGEAcgBcAHAAYQByAGQAXABwAGwAYQBpAG4AXABzADEAXABxAGMAXAB0AHEAYwBcAHQAeAA0ADUAMwA2AFwAdABxAHIAXAB0AHgAOQAwADcAMgBcAGIAXABmADIAXABmAHMAMQA0AFwAYwBmADEAXABwAGEAcgBcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGMAewBcAGkAXABmADIAXABmAHMAMQA0AFwAYwBmADEAIABNAGUAbgBkAGUAbgBlAHIAIABCAGEAbgBrACAAZQBHAH0AXABiAFwAaQBcAGYAMgBcAGYAcwAxADQAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAYwB7AFwAZgAyAFwAZgBzADEANABcAGMAZgAxACAASQBCAEEATgA6ACAARABFADEAOQAgADQANAA3ADYAIAAxADMAMQAyACAAMAA0ADMANAAgADYAOAA4ADUAIAAwADAAfQBcAGYAMgBcAGYAcwAxADQAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAYwB7AFwAZgAyAFwAZgBzADEANABcAGMAZgAxACAAQgBJAEMAOgAgAEcARQBOAE8ARABFAE0AMQBNAEUATgB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAcwAyADAAXABjAGYAMQBcAHAAYQByAH0A - ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAFQAYQBoAG8AbQBhADsAfQB9AHsAXABjAG8AbABvAHIAdABiAGwAIAA7AFwAcgBlAGQAMABcAGcAcgBlAGUAbgAwAFwAYgBsAHUAZQAwACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMgA1ADUAIAA7AH0AewBcACoAXABkAGUAZgBjAGgAcAAgAFwAZgAxAFwAZgBzADIANAB9AHsAXABzAHQAeQBsAGUAcwBoAGUAZQB0ACAAewBcAHEAbABcAGYAMQBcAGYAcwAyADQAIABOAG8AcgBtAGEAbAA7AH0AewBcACoAXABjAHMAMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQAgAEQAZQBmAGEAdQBsAHQAIABQAGEAcgBhAGcAcgBhAHAAaAAgAEYAbwBuAHQAOwB9AHsAXAAqAFwAYwBzADIAXABzAGIAYQBzAGUAZABvAG4AMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQAgAEwAaQBuAGUAIABOAHUAbQBiAGUAcgA7AH0AewBcACoAXABjAHMAMwBcAHUAbABcAGYAMQBcAGYAcwAyADQAXABjAGYAMgAgAEgAeQBwAGUAcgBsAGkAbgBrADsAfQB7AFwAKgBcAHQAcwA0AFwAdABzAHIAbwB3AGQAXABmADEAXABmAHMAMgA0AFwAcQBsAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGwAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAbAAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBiADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAcgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZAByADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHQAMwBcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAATgBvAHIAbQBhAGwAIABUAGEAYgBsAGUAOwB9AHsAXAAqAFwAdABzADUAXAB0AHMAcgBvAHcAZABcAHMAYgBhAHMAZQBkAG8AbgA0AFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcgBiAHIAZAByAHQAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAbABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBiAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAHIAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAaABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgB2AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAcgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZAByADEAMAA4AFwAdABzAHYAZQByAHQAYQBsAHQAXABjAGwAdAB4AGwAcgB0AGIAIABUAGEAYgBsAGUAIABTAGkAbQBwAGwAZQAgADEAOwB9AH0AewBcACoAXABsAGkAcwB0AG8AdgBlAHIAcgBpAGQAZQB0AGEAYgBsAGUAfQBcAG4AbwB1AGkAYwBvAG0AcABhAHQAXABzAHAAbAB5AHQAdwBuAGkAbgBlAFwAaAB0AG0AYQB1AHQAcwBwAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAYwB7AFwAdQBsAFwAZgAyAFwAZgBzADEANABcAGMAZgAwACAARwBlAHMAYwBoAFwAdQAyADIAOABcACcAZQA0AGYAdABzAGYAXAB1ADIANQAyAFwAJwBmAGMAaAByAGUAcgB9AFwAdQBsAFwAZgAyAFwAZgBzADEANABcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAYwBcAHUAbABcAGYAMgBcAGYAcwAxADQAXABwAGEAcgBcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGMAewBcAGYAMgBcAGYAcwAxADQAXABjAGYAMAAgAE0AYQByAGkAZQAtAEUAbABsAGUAbgAgAEsAcgBhAHUAcwBlAH0AXABiAFwAZgAyAFwAZgBzADEANABcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAYwBcAGIAXABmADIAXABmAHMAMQA0AFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBjAHsAXABmADIAXABmAHMAMQA0AFwAYwBmADAAIABHAGUAcgBoAGEAcgBkACAASABhAHYAZQByAG0AYQBuAG4AfQBcAGIAXABmADIAXABmAHMAMQA0AFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBsAFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAcwAyADAAXABjAGYAMQBcAHAAYQByAH0A + ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAFQAYQBoAG8AbQBhADsAfQB9AHsAXABjAG8AbABvAHIAdABiAGwAIAA7AFwAcgBlAGQAMABcAGcAcgBlAGUAbgAwAFwAYgBsAHUAZQAwACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMgA1ADUAIAA7AH0AewBcACoAXABkAGUAZgBjAGgAcAAgAFwAZgAxAFwAZgBzADIANAB9AHsAXABzAHQAeQBsAGUAcwBoAGUAZQB0ACAAewBcAHEAbABcAGYAMQBcAGYAcwAyADQAIABOAG8AcgBtAGEAbAA7AH0AewBcACoAXABjAHMAMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQAgAEQAZQBmAGEAdQBsAHQAIABQAGEAcgBhAGcAcgBhAHAAaAAgAEYAbwBuAHQAOwB9AHsAXAAqAFwAYwBzADIAXABzAGIAYQBzAGUAZABvAG4AMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQAgAEwAaQBuAGUAIABOAHUAbQBiAGUAcgA7AH0AewBcACoAXABjAHMAMwBcAHUAbABcAGYAMQBcAGYAcwAyADQAXABjAGYAMgAgAEgAeQBwAGUAcgBsAGkAbgBrADsAfQB7AFwAKgBcAHQAcwA0AFwAdABzAHIAbwB3AGQAXABmADEAXABmAHMAMgA0AFwAcQBsAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGwAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAbAAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBiADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAcgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZAByADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHQAMwBcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAATgBvAHIAbQBhAGwAIABUAGEAYgBsAGUAOwB9AHsAXAAqAFwAdABzADUAXAB0AHMAcgBvAHcAZABcAHMAYgBhAHMAZQBkAG8AbgA0AFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcgBiAHIAZAByAHQAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAbABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBiAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAHIAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAaABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgB2AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAcgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZAByADEAMAA4AFwAdABzAHYAZQByAHQAYQBsAHQAXABjAGwAdAB4AGwAcgB0AGIAIABUAGEAYgBsAGUAIABTAGkAbQBwAGwAZQAgADEAOwB9AH0AewBcACoAXABsAGkAcwB0AG8AdgBlAHIAcgBpAGQAZQB0AGEAYgBsAGUAfQBcAG4AbwB1AGkAYwBvAG0AcABhAHQAXABzAHAAbAB5AHQAdwBuAGkAbgBlAFwAaAB0AG0AYQB1AHQAcwBwAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAYwB7AFwAdQBsAFwAZgAyAFwAZgBzADEANABcAGMAZgAxACAARwBlAHMAYwBoAFwAdQAyADIAOABcACcAZQA0AGYAdABzAGYAXAB1ADIANQAyAFwAJwBmAGMAaAByAGUAcgB9AFwAdQBsAFwAZgAyAFwAZgBzADEANABcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBjAFwAdQBsAFwAZgAyAFwAZgBzADEANABcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBjAHsAXABmADIAXABmAHMAMQA0AFwAYwBmADEAIABNAGEAcgBpAGUALQBFAGwAbABlAG4AIABLAHIAYQB1AHMAZQB9AFwAYgBcAGYAMgBcAGYAcwAxADQAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAYwBcAGIAXABmADIAXABmAHMAMQA0AFwAYwBmADEAXABwAGEAcgBcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGMAewBcAGwAYQBuAGcAMQAwADMAMQBcAGwAYQBuAGcAZgBlADEAMAAzADEAXABmADIAXABmAHMAMQA0AFwAYwBmADEAIABDAFwAdQAyADMAMwBcACcAZQA5AHMAYQByACAAQwBhAHIAdABhAGcAZQBuAGEAfQBcAGwAYQBuAGcAMQAwADMAMQBcAGwAYQBuAGcAZgBlADEAMAAzADEAXABmAHMAMgAwAFwAYwBmADEAXABwAGEAcgB9AA== 17, 17