From a22c2ace12261020748fdda16b756e34ff8ada53 Mon Sep 17 00:00:00 2001 From: Kojo Date: Wed, 3 Sep 2025 19:27:20 +0200 Subject: [PATCH] DiakonischesWerkDinslakenSozio: Korrekturen Sozio-Rechnungsformular, -Rechnungserstellung und -Gruppenbuchungslogik --- .../DiakonischesWerkDinslakenSozio.csproj | 1 + .../GroupDurationCalculator.cs | 21 +++++ .../CustomSoziotherapieInvoiceCreation.cs | 4 +- .../LeistungsnachweisSoziotherapie.cs | 3 +- .../SoziotherapieRechnung.Designer.cs | 90 +++++++++---------- .../SoziotherapieRechnung.cs | 4 +- 6 files changed, 72 insertions(+), 51 deletions(-) create mode 100644 ReportImp/DiakonischesWerkDinslakenSozio/GroupDurationCalculator.cs diff --git a/ReportImp/DiakonischesWerkDinslakenSozio/DiakonischesWerkDinslakenSozio.csproj b/ReportImp/DiakonischesWerkDinslakenSozio/DiakonischesWerkDinslakenSozio.csproj index 29e1a4002..be5bbb024 100644 --- a/ReportImp/DiakonischesWerkDinslakenSozio/DiakonischesWerkDinslakenSozio.csproj +++ b/ReportImp/DiakonischesWerkDinslakenSozio/DiakonischesWerkDinslakenSozio.csproj @@ -57,6 +57,7 @@ + diff --git a/ReportImp/DiakonischesWerkDinslakenSozio/GroupDurationCalculator.cs b/ReportImp/DiakonischesWerkDinslakenSozio/GroupDurationCalculator.cs new file mode 100644 index 000000000..d419d229a --- /dev/null +++ b/ReportImp/DiakonischesWerkDinslakenSozio/GroupDurationCalculator.cs @@ -0,0 +1,21 @@ +using BeWo.Data.Entities; +using BeWo.Service.Plugins; + +namespace DiakonischesWerkDinslakenSozio +{ + public class CustomGroupDurationCalculator : GroupDurationCalculator + { + public override void CalculateGroupDuration(ServiceRecordGroup group) + { + base.CalculateGroupDuration(group); + + foreach (var sr in group.ServiceRecordList) + { + if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("soziotherapie")) + { + sr.RoundedDuration = sr.GroupRoundedDuration.Value; + } + } + } + } +} diff --git a/ReportImp/DiakonischesWerkDinslakenSozio/Invoicing/CustomSoziotherapieInvoiceCreation.cs b/ReportImp/DiakonischesWerkDinslakenSozio/Invoicing/CustomSoziotherapieInvoiceCreation.cs index f3347a45b..50e5c4649 100644 --- a/ReportImp/DiakonischesWerkDinslakenSozio/Invoicing/CustomSoziotherapieInvoiceCreation.cs +++ b/ReportImp/DiakonischesWerkDinslakenSozio/Invoicing/CustomSoziotherapieInvoiceCreation.cs @@ -22,7 +22,7 @@ namespace DiakonischesWerkDinslakenSozio.Invoicing } else { - if (sozioLeistung.Contains("probe")) + if (sozioLeistung.Contains("prob")) unitDescription = "GPos: 2001607"; else if (sozioLeistung.Contains("video")) { @@ -38,7 +38,7 @@ namespace DiakonischesWerkDinslakenSozio.Invoicing else if (duration > 30) unitDescription = "GPos: 2001617"; } - else if (sozioLeistung.Contains("aufsuchend") || sozioLeistung.Contains("einrichtung")) + else if (sozioLeistung.Contains("aufsuchend") || sozioLeistung.Contains("büro")) { if (duration <= 10) unitDescription = "GPos: 2001613"; diff --git a/ReportImp/DiakonischesWerkDinslakenSozio/LeistungsnachweisSoziotherapie.cs b/ReportImp/DiakonischesWerkDinslakenSozio/LeistungsnachweisSoziotherapie.cs index 24ca4859d..9699d2a4d 100644 --- a/ReportImp/DiakonischesWerkDinslakenSozio/LeistungsnachweisSoziotherapie.cs +++ b/ReportImp/DiakonischesWerkDinslakenSozio/LeistungsnachweisSoziotherapie.cs @@ -97,7 +97,6 @@ namespace DiakonischesWerkDinslakenSozio s.Notice5 = "2001611 / 2009690"; else s.Notice5 = "2001610 / 2009690"; - } else if (leistung.Contains("probatorik")) { @@ -131,7 +130,7 @@ namespace DiakonischesWerkDinslakenSozio cellGesamt.Text = String.Format("{0:0.00}", gesamt / 60); if (gesamtGruppe > 0) { - cellGesamtGruppe.Text = String.Format("{0:0.00}", gesamtGruppe / 60); + cellGesamtGruppe.Text = String.Format("{0:0.00}", gesamtGruppe / 90); } this.bindingSource1.DataSource = pRO; diff --git a/ReportImp/DiakonischesWerkDinslakenSozio/SoziotherapieRechnung.Designer.cs b/ReportImp/DiakonischesWerkDinslakenSozio/SoziotherapieRechnung.Designer.cs index 315bc3950..3fb357ab7 100644 --- a/ReportImp/DiakonischesWerkDinslakenSozio/SoziotherapieRechnung.Designer.cs +++ b/ReportImp/DiakonischesWerkDinslakenSozio/SoziotherapieRechnung.Designer.cs @@ -82,6 +82,7 @@ namespace DiakonischesWerkDinslakenSozio this.Detail2 = new DevExpress.XtraReports.UI.DetailBand(); this.xrTable6 = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRow25 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell40 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell42 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell(); @@ -91,6 +92,7 @@ namespace DiakonischesWerkDinslakenSozio this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand(); this.xrTable5 = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRow23 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell(); @@ -103,8 +105,6 @@ namespace DiakonischesWerkDinslakenSozio this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell(); this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components); - this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell(); ((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).BeginInit(); @@ -513,7 +513,7 @@ namespace DiakonischesWerkDinslakenSozio this.xrLabel6.SizeF = new System.Drawing.SizeF(650.7152F, 38.99988F); this.xrLabel6.StylePriority.UseBackColor = false; this.xrLabel6.StylePriority.UseFont = false; - this.xrLabel6.Text = "Abrechnung Soziotherapie Sitzungen gemäß $37a SGV, Versicherte(r): [CustomerLastN" + + this.xrLabel6.Text = "Abrechnung Soziotherapie Sitzungen gemäß §37a SGV, Versicherte(r): [CustomerLastN" + "ame], [CustomerFirstName]\r\nV.Nr. [CustomerReferenceNumber]"; this.xrLabel6.WordWrap = false; // @@ -699,6 +699,27 @@ namespace DiakonischesWerkDinslakenSozio this.xrTableRow25.Name = "xrTableRow25"; this.xrTableRow25.Weight = 1D; // + // xrTableCell8 + // + this.xrTableCell8.BorderColor = System.Drawing.Color.DarkGray; + 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.ServiceInvoiceItems.AccountingPeriodStart")}); + this.xrTableCell8.Font = new DevExpress.Drawing.DXFont("Arial", 9F); + this.xrTableCell8.Multiline = true; + this.xrTableCell8.Name = "xrTableCell8"; + this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell8.StylePriority.UseBorderColor = false; + this.xrTableCell8.StylePriority.UseBorders = false; + this.xrTableCell8.StylePriority.UseFont = false; + this.xrTableCell8.StylePriority.UsePadding = false; + this.xrTableCell8.StylePriority.UseTextAlignment = false; + this.xrTableCell8.Text = "xrTableCell8"; + this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell8.TextFormatString = "{0:dd.MM.yyyy}"; + this.xrTableCell8.Weight = 0.39078561666036693D; + // // xrTableCell40 // this.xrTableCell40.BorderColor = System.Drawing.Color.DarkGray; @@ -841,6 +862,27 @@ namespace DiakonischesWerkDinslakenSozio this.xrTableRow23.Name = "xrTableRow23"; this.xrTableRow23.Weight = 1D; // + // xrTableCell4 + // + this.xrTableCell4.BackColor = System.Drawing.Color.Transparent; + this.xrTableCell4.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell4.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell4.Font = new DevExpress.Drawing.DXFont("Arial", 9F); + this.xrTableCell4.Multiline = true; + this.xrTableCell4.Name = "xrTableCell4"; + this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell4.StylePriority.UseBackColor = false; + this.xrTableCell4.StylePriority.UseBorderColor = false; + this.xrTableCell4.StylePriority.UseBorders = false; + this.xrTableCell4.StylePriority.UseFont = false; + this.xrTableCell4.StylePriority.UsePadding = false; + this.xrTableCell4.StylePriority.UseTextAlignment = false; + this.xrTableCell4.Text = "Datum"; + this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell4.Weight = 0.412479349453638D; + // // xrTableCell32 // this.xrTableCell32.BackColor = System.Drawing.Color.Transparent; @@ -1026,48 +1068,6 @@ namespace DiakonischesWerkDinslakenSozio // this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO); // - // xrTableCell4 - // - this.xrTableCell4.BackColor = System.Drawing.Color.Transparent; - this.xrTableCell4.BorderColor = System.Drawing.Color.DarkGray; - this.xrTableCell4.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) - | DevExpress.XtraPrinting.BorderSide.Right) - | DevExpress.XtraPrinting.BorderSide.Bottom))); - this.xrTableCell4.Font = new DevExpress.Drawing.DXFont("Arial", 9F); - this.xrTableCell4.Multiline = true; - this.xrTableCell4.Name = "xrTableCell4"; - this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); - this.xrTableCell4.StylePriority.UseBackColor = false; - this.xrTableCell4.StylePriority.UseBorderColor = false; - this.xrTableCell4.StylePriority.UseBorders = false; - this.xrTableCell4.StylePriority.UseFont = false; - this.xrTableCell4.StylePriority.UsePadding = false; - this.xrTableCell4.StylePriority.UseTextAlignment = false; - this.xrTableCell4.Text = "Datum"; - this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; - this.xrTableCell4.Weight = 0.412479349453638D; - // - // xrTableCell8 - // - this.xrTableCell8.BorderColor = System.Drawing.Color.DarkGray; - 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.ServiceInvoiceItems.AccountingPeriodStart")}); - this.xrTableCell8.Font = new DevExpress.Drawing.DXFont("Arial", 9F); - this.xrTableCell8.Multiline = true; - this.xrTableCell8.Name = "xrTableCell8"; - this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); - this.xrTableCell8.StylePriority.UseBorderColor = false; - this.xrTableCell8.StylePriority.UseBorders = false; - this.xrTableCell8.StylePriority.UseFont = false; - this.xrTableCell8.StylePriority.UsePadding = false; - this.xrTableCell8.StylePriority.UseTextAlignment = false; - this.xrTableCell8.Text = "xrTableCell8"; - this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; - this.xrTableCell8.TextFormatString = "{0:dd.MM.yyyy}"; - this.xrTableCell8.Weight = 0.39078561666036693D; - // // SoziotherapieRechnung // this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { diff --git a/ReportImp/DiakonischesWerkDinslakenSozio/SoziotherapieRechnung.cs b/ReportImp/DiakonischesWerkDinslakenSozio/SoziotherapieRechnung.cs index 6ec8d85ab..d687939f8 100644 --- a/ReportImp/DiakonischesWerkDinslakenSozio/SoziotherapieRechnung.cs +++ b/ReportImp/DiakonischesWerkDinslakenSozio/SoziotherapieRechnung.cs @@ -77,9 +77,9 @@ namespace DiakonischesWerkDinslakenSozio // Einheit setzen ii.HourlyRateString = "Stunden"; - if (ii.ServiceDescription != null && ii.ServiceDescription.ToLower().Contains("hausbesuchpauschale")) + if (ii.ServiceDescription != null && ii.ServiceDescription.ToLower().Contains("hausbesuchspauschale")) { - ii.HourlyRateString = "Anzahl"; + ii.HourlyRateString = ""; } } }