Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo

This commit is contained in:
2026-07-27 10:04:42 +02:00
3 changed files with 112 additions and 86 deletions

View File

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

View File

@@ -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)
{

View File

@@ -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;
}
/// <summary>
/// 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).
/// </summary>
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; }
/// <summary>
/// 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).
/// </summary>
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; }
}
}