diff --git a/Report/DefaultReports/LwlPruefliste2026.Designer.cs b/Report/DefaultReports/LwlPruefliste2026.Designer.cs index e8eb48b77..7a67d6b9a 100644 --- a/Report/DefaultReports/LwlPruefliste2026.Designer.cs +++ b/Report/DefaultReports/LwlPruefliste2026.Designer.cs @@ -1,4 +1,4 @@ -using BeWo.Report.ReportObjects; +using BeWo.Report.ReportObjects; namespace BeWo.Report.DefaultReports { partial class LwlPruefliste2026 @@ -76,8 +76,6 @@ namespace BeWo.Report.DefaultReports this.hdrInhalt = new DevExpress.XtraReports.UI.XRTableCell(); this.hdrBestLbDatum = new DevExpress.XtraReports.UI.XRTableCell(); this.hdrNr = new DevExpress.XtraReports.UI.XRTableCell(); - this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand(); - this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand(); this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow(); this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell(); @@ -90,13 +88,15 @@ namespace BeWo.Report.DefaultReports this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell(); + this.hdrL = new DevExpress.XtraReports.UI.XRTableCell(); + this.hdrM = new DevExpress.XtraReports.UI.XRTableCell(); + this.hdrN = new DevExpress.XtraReports.UI.XRTableCell(); + this.hdrO = new DevExpress.XtraReports.UI.XRTableCell(); + this.hdrP = new DevExpress.XtraReports.UI.XRTableCell(); + this.hdrQ = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell18 = new DevExpress.XtraReports.UI.XRTableCell(); + this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand(); + this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand(); this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components); ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit(); @@ -141,6 +141,7 @@ namespace BeWo.Report.DefaultReports this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); this.xrTable1.Name = "xrTable1"; this.xrTable1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrTable1.ProcessHiddenCellMode = DevExpress.XtraReports.UI.ProcessHiddenCellMode.DecreaseTableWidth; this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { this.xrTableRow1}); this.xrTable1.SizeF = new System.Drawing.SizeF(1327F, 20F); @@ -281,7 +282,7 @@ namespace BeWo.Report.DefaultReports // detOrtArt // this.detOrtArt.ExpressionBindings.AddRange(new DevExpress.XtraReports.UI.ExpressionBinding[] { - new DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[ServiceDescription]")}); + new DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[OrtUndArtKuerzel]")}); this.detOrtArt.Name = "detOrtArt"; this.detOrtArt.Text = "Ort und Art der Betreuung"; this.detOrtArt.Weight = 0.09D; @@ -357,6 +358,7 @@ namespace BeWo.Report.DefaultReports this.xrTableHeader.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); this.xrTableHeader.Name = "xrTableHeader"; this.xrTableHeader.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrTableHeader.ProcessHiddenCellMode = DevExpress.XtraReports.UI.ProcessHiddenCellMode.DecreaseTableWidth; this.xrTableHeader.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { this.xrTableRowHeader, this.xrTableRow2}); @@ -432,7 +434,7 @@ namespace BeWo.Report.DefaultReports this.hdrVon.Angle = 90F; this.hdrVon.Multiline = true; this.hdrVon.Name = "hdrVon"; - this.hdrVon.Text = "Uhrzeit des tatsächlichen Beginns der direkten Betreuungsleistungen „von“"; + this.hdrVon.Text = "Uhrzeit des tatsächlichen Beginns der direkten Betreuungsleistungen „von“"; this.hdrVon.Weight = 0.05D; // // hdrBis @@ -440,7 +442,7 @@ namespace BeWo.Report.DefaultReports this.hdrBis.Angle = 90F; this.hdrBis.Multiline = true; this.hdrBis.Name = "hdrBis"; - this.hdrBis.Text = "Uhrzeit der Beendigung der direkten Betreuungsleistungen \"bis“"; + this.hdrBis.Text = "Uhrzeit der Beendigung der direkten Betreuungsleistungen \"bis“"; this.hdrBis.Weight = 0.05D; // // hdrUmfang @@ -464,7 +466,7 @@ namespace BeWo.Report.DefaultReports this.hdrBestLb.Angle = 90F; this.hdrBestLb.Multiline = true; this.hdrBestLb.Name = "hdrBestLb"; - this.hdrBestLb.Text = "Bestätigung der erbrachten Leistungen durch die leistungsberechtigte Person"; + this.hdrBestLb.Text = "Bestätigung der erbrachten Leistungen durch die leistungsberechtigte Person"; this.hdrBestLb.Weight = 0.08D; // // hdrFallverantwName @@ -472,7 +474,7 @@ namespace BeWo.Report.DefaultReports this.hdrFallverantwName.Angle = 90F; this.hdrFallverantwName.Multiline = true; this.hdrFallverantwName.Name = "hdrFallverantwName"; - this.hdrFallverantwName.Text = "Name der fallverantwortlichen Person des Leistungserbringers für die betreute Per" + + this.hdrFallverantwName.Text = "Name der fallverantwortlichen Person des Leistungserbringers für die betreute Per" + "son"; this.hdrFallverantwName.Weight = 0.11D; // @@ -481,7 +483,7 @@ namespace BeWo.Report.DefaultReports this.hdrBestFallverantw.Angle = 90F; this.hdrBestFallverantw.Multiline = true; this.hdrBestFallverantw.Name = "hdrBestFallverantw"; - this.hdrBestFallverantw.Text = "Bestätigung der erbrachten Leistungen durch die für den Leistungsberechtigten fal" + + this.hdrBestFallverantw.Text = "Bestätigung der erbrachten Leistungen durch die für den Leistungsberechtigten fal" + "lverantwortliche Person"; this.hdrBestFallverantw.Weight = 0.08D; // @@ -506,7 +508,7 @@ namespace BeWo.Report.DefaultReports this.hdrAnteiligeMin.Angle = 90F; this.hdrAnteiligeMin.Multiline = true; this.hdrAnteiligeMin.Name = "hdrAnteiligeMin"; - this.hdrAnteiligeMin.Text = "Bei Gruppenkontakten Angabe der anteilig berechneten tatsächlichen Minuten je tei" + + this.hdrAnteiligeMin.Text = "Bei Gruppenkontakten Angabe der anteilig berechneten tatsächlichen Minuten je tei" + "lnehmender Person"; this.hdrAnteiligeMin.Weight = 0.06D; // @@ -515,7 +517,7 @@ namespace BeWo.Report.DefaultReports this.hdrKuerzel.Angle = 90F; this.hdrKuerzel.Multiline = true; this.hdrKuerzel.Name = "hdrKuerzel"; - this.hdrKuerzel.Text = "Kürzel der Betreuungskraft \r\nje Kontakt"; + this.hdrKuerzel.Text = "Kürzel der Betreuungskraft \r\nje Kontakt"; this.hdrKuerzel.Weight = 0.08D; // // hdrInhalt @@ -531,7 +533,7 @@ namespace BeWo.Report.DefaultReports this.hdrBestLbDatum.Angle = 90F; this.hdrBestLbDatum.Multiline = true; this.hdrBestLbDatum.Name = "hdrBestLbDatum"; - this.hdrBestLbDatum.Text = "Bestätigung der erbrachten Leistungen durch die leistungsberechtigte Person"; + this.hdrBestLbDatum.Text = "Bestätigung der erbrachten Leistungen durch die leistungsberechtigte Person"; this.hdrBestLbDatum.Weight = 0.08D; // // hdrNr @@ -541,16 +543,6 @@ namespace BeWo.Report.DefaultReports this.hdrNr.Text = "Inhalte"; this.hdrNr.Weight = 0.074180769230769245D; // - // topMarginBand1 - // - this.topMarginBand1.HeightF = 80F; - this.topMarginBand1.Name = "topMarginBand1"; - // - // bottomMarginBand1 - // - this.bottomMarginBand1.HeightF = 30F; - this.bottomMarginBand1.Name = "bottomMarginBand1"; - // // xrTableRow2 // this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { @@ -565,12 +557,12 @@ namespace BeWo.Report.DefaultReports this.xrTableCell9, this.xrTableCell10, this.xrTableCell11, - this.xrTableCell12, - this.xrTableCell13, - this.xrTableCell14, - this.xrTableCell15, - this.xrTableCell16, - this.xrTableCell17, + this.hdrL, + this.hdrM, + this.hdrN, + this.hdrO, + this.hdrP, + this.hdrQ, this.xrTableCell18}); this.xrTableRow2.Name = "xrTableRow2"; this.xrTableRow2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 5, 100F); @@ -656,47 +648,47 @@ namespace BeWo.Report.DefaultReports this.xrTableCell11.Text = "k."; this.xrTableCell11.Weight = 0.08D; // - // xrTableCell12 + // hdrL // - this.xrTableCell12.Multiline = true; - this.xrTableCell12.Name = "xrTableCell12"; - this.xrTableCell12.Text = "l."; - this.xrTableCell12.Weight = 0.09D; + this.hdrL.Multiline = true; + this.hdrL.Name = "hdrL"; + this.hdrL.Text = "l."; + this.hdrL.Weight = 0.09D; // - // xrTableCell13 + // hdrM // - this.xrTableCell13.Multiline = true; - this.xrTableCell13.Name = "xrTableCell13"; - this.xrTableCell13.Text = "m."; - this.xrTableCell13.Weight = 0.05D; + this.hdrM.Multiline = true; + this.hdrM.Name = "hdrM"; + this.hdrM.Text = "m."; + this.hdrM.Weight = 0.05D; // - // xrTableCell14 + // hdrN // - this.xrTableCell14.Multiline = true; - this.xrTableCell14.Name = "xrTableCell14"; - this.xrTableCell14.Text = "n."; - this.xrTableCell14.Weight = 0.06D; + this.hdrN.Multiline = true; + this.hdrN.Name = "hdrN"; + this.hdrN.Text = "n."; + this.hdrN.Weight = 0.06D; // - // xrTableCell15 + // hdrO // - this.xrTableCell15.Multiline = true; - this.xrTableCell15.Name = "xrTableCell15"; - this.xrTableCell15.Text = "o."; - this.xrTableCell15.Weight = 0.08D; + this.hdrO.Multiline = true; + this.hdrO.Name = "hdrO"; + this.hdrO.Text = "o."; + this.hdrO.Weight = 0.08D; // - // xrTableCell16 + // hdrP // - this.xrTableCell16.Multiline = true; - this.xrTableCell16.Name = "xrTableCell16"; - this.xrTableCell16.Text = "p."; - this.xrTableCell16.Weight = 0.14D; + this.hdrP.Multiline = true; + this.hdrP.Name = "hdrP"; + this.hdrP.Text = "p."; + this.hdrP.Weight = 0.14D; // - // xrTableCell17 + // hdrQ // - this.xrTableCell17.Multiline = true; - this.xrTableCell17.Name = "xrTableCell17"; - this.xrTableCell17.Text = "q."; - this.xrTableCell17.Weight = 0.08D; + this.hdrQ.Multiline = true; + this.hdrQ.Name = "hdrQ"; + this.hdrQ.Text = "q."; + this.hdrQ.Weight = 0.08D; // // xrTableCell18 // @@ -705,6 +697,16 @@ namespace BeWo.Report.DefaultReports this.xrTableCell18.Text = "Spalten-Nr."; this.xrTableCell18.Weight = 0.074180769230769245D; // + // topMarginBand1 + // + this.topMarginBand1.HeightF = 80F; + this.topMarginBand1.Name = "topMarginBand1"; + // + // bottomMarginBand1 + // + this.bottomMarginBand1.HeightF = 30F; + this.bottomMarginBand1.Name = "bottomMarginBand1"; + // // bindingSource1 // this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.LwlPrueflisteRO); @@ -793,12 +795,12 @@ namespace BeWo.Report.DefaultReports private DevExpress.XtraReports.UI.XRTableCell xrTableCell9; private DevExpress.XtraReports.UI.XRTableCell xrTableCell10; private DevExpress.XtraReports.UI.XRTableCell xrTableCell11; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell12; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell13; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell14; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell15; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell16; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell17; + private DevExpress.XtraReports.UI.XRTableCell hdrL; + private DevExpress.XtraReports.UI.XRTableCell hdrM; + private DevExpress.XtraReports.UI.XRTableCell hdrN; + private DevExpress.XtraReports.UI.XRTableCell hdrO; + private DevExpress.XtraReports.UI.XRTableCell hdrP; + private DevExpress.XtraReports.UI.XRTableCell hdrQ; private DevExpress.XtraReports.UI.XRTableCell xrTableCell18; } } diff --git a/Report/DefaultReports/LwlPruefliste2026.cs b/Report/DefaultReports/LwlPruefliste2026.cs index e178ae533..2209ca348 100644 --- a/Report/DefaultReports/LwlPruefliste2026.cs +++ b/Report/DefaultReports/LwlPruefliste2026.cs @@ -17,7 +17,7 @@ namespace BeWo.Report.DefaultReports /// Standard: false = Variante 1 (Spalten A-K + Nr.). Nur auf explizite Nachfrage des Kunden auf true setzen. /// /// Detailangaben zu den Spalten vom LWL: - /// Spalte L: Ort und Art der Betreuung (DK= direkter Kontakt, TE = Telefonkontakt, F = Fehlkontakt) + /// Spalte L: Ort und Art der Betreuung (DK= direkter Kontakt (oder face 2 face), TE = Telefonkontakt, F = Fehlkontakt) /// Spalte O: Kürzel der Betreuungskraft je Kontakt (ggf.eindeutige Personal - Nr., o.Ä.)) /// Spalte M: Angabe zum Inhalt der Kontaktzeit (Stichworte oder gesamter Text der individuellen Betreuungsdokumenation je Leistung) public bool MitZusatzspalten { get; set; } @@ -33,7 +33,8 @@ namespace BeWo.Report.DefaultReports var zusatzspalten = new XRTableCell[] { detOrtArt, detAnzahl, detAnteiligeMin, detKuerzel, detInhalt, detBestLbDatum, - hdrOrtArt, hdrAnzahl, hdrAnteiligeMin, hdrKuerzel, hdrInhalt, hdrBestLbDatum + hdrOrtArt, hdrAnzahl, hdrAnteiligeMin, hdrKuerzel, hdrInhalt, hdrBestLbDatum, + hdrL, hdrM, hdrN, hdrO, hdrP, hdrQ }; foreach (var zelle in zusatzspalten) { diff --git a/Report/ReportObjects/LwlPrueflisteRO.cs b/Report/ReportObjects/LwlPrueflisteRO.cs index b9b320087..f5d8343fd 100644 --- a/Report/ReportObjects/LwlPrueflisteRO.cs +++ b/Report/ReportObjects/LwlPrueflisteRO.cs @@ -111,14 +111,14 @@ order by p.lastname, p.Firstname, sr.startdate e.MainAttendant = (String)sqlRow[16]; e.ServiceDescription = (String)sqlRow[17]; - // Spalte H (Fehlkontakt in Minuten): nur befuellen, wenn die ausgewaehlte Leistung - // "Fehlkontakt" enthaelt - sonst bleibt das Feld null (leer). - if (!String.IsNullOrEmpty(e.ServiceDescription) - && e.ServiceDescription.IndexOf("Fehlkontakt", StringComparison.OrdinalIgnoreCase) >= 0) + // Spalte L (Ort und Art): Standard-Abkuerzung aus dem Leistungsnamen ableiten. Kann im kundenspezifischen CustomReportCreator ueberschrieben werden. + e.OrtUndArtKuerzel = MappeOrtUndArtKuerzel(e.ServiceDescription); + + // Spalte H (Fehlkontakt in Minuten): nur befuellen, wenn die ausgewaehlte Leistung "Fehlkontakt" enthaelt - sonst bleibt das Feld null (leer). + if (!String.IsNullOrEmpty(e.ServiceDescription) && e.ServiceDescription.IndexOf("Fehlkontakt", StringComparison.OrdinalIgnoreCase) >= 0) { e.FehlkontaktMinuten = e.Minutes; } - if (sqlRow[18] != null && DateTime.TryParse(sqlRow[18].ToString(), out var dt1)) { e.CustomerSignatureDate = dt1; @@ -134,7 +134,35 @@ order by p.lastname, p.Firstname, sr.startdate e.EmployeeSignatureDate = dt2; } return e; - + } + + /// + /// Standard-Zuordnung des Leistungsnamens zur Abkuerzung fuer Spalte L der LWL-Pruefliste 2026: DK = direkter Kontakt, TE = Telefonkontakt, F = Fehlkontakt. + /// Deckt die gaengigen Leistungsnamen ab. Kunden mit abweichenden Bezeichnungen koennen die Zuordnung im CustomReportCreator ueberschreiben (ro.ServiceRecords + /// nach dem Create() durchlaufen und OrtUndArtKuerzel neu setzen). + /// + public static String MappeOrtUndArtKuerzel(String ServiceDescription) + { + if (String.IsNullOrEmpty(ServiceDescription)) + { + return String.Empty; + } + var name = ServiceDescription.ToLower(); + + if (name.Contains("fehlkontakt") || name.Contains("ausfall")) + { + return "F"; + } + if (name.Contains("telefon") || name.Contains("ear")) + { + return "TE"; + } + if (name.Contains("face") || name.Contains("direkt")) + { + return "DK"; + } + // Fallback: alles Uebrige gilt als direkter Kontakt. + return "DK"; } } @@ -159,12 +187,7 @@ order by p.lastname, p.Firstname, sr.startdate public decimal Minutes { get; set; } - /// - /// Fehlkontakt in Minuten (max. 120) - neue Spalte H der LWL-Pruefliste 2026. - /// Wird in ErstelleEintrag() nur gesetzt, wenn die ausgewaehlte Leistung - /// (ServiceDescription) "Fehlkontakt" enthaelt, sonst null (leer). - /// - public decimal? FehlkontaktMinuten { get; set; } + public decimal? FehlkontaktMinuten { get; set; } // neu für LWLPruefliste2026 public int? GroupPersonCount { get; set; } @@ -184,12 +207,12 @@ order by p.lastname, p.Firstname, sr.startdate public String ServiceDescription { get; set; } + public String OrtUndArtKuerzel { get; set; } // neu für LWLPruefliste2026 + public DateTime? CustomerSignatureDate { get; set; } public String MainAttendant { get; set; } public DateTime? EmployeeSignatureDate { get; set; } } - - } \ No newline at end of file