From 3232f552a3864df8cd37afb95982eb112bbf0645 Mon Sep 17 00:00:00 2001 From: HirschleM Date: Thu, 23 Jul 2026 08:18:32 +0200 Subject: [PATCH] MH: HwHilfswerkInklusionUndTeilhabe Standard umgekehrt SupportOID=168831 --- ...CustomMitarbeiterstundenkontoBerechnung.cs | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs index e36de364f..0260fff98 100644 --- a/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs @@ -15,8 +15,9 @@ namespace HwHilfswerkInklusionUndTeilhabe { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - // Keine Vertragsart ODER Vertragsart "Stationär": Nur Arbeitszeit soll erfasst werden, automatischer Pausenabzug - // Bei Vertragsart "Ambulant": Alle Einträge zur Arbeitszeit zählen, kein Pausenabzug. Zusätzlich sollen an Feiertagen immer die Soll-Stunden gutgeschrieben werden + // Claude: Vertragsart "Stationär": Nur Arbeitszeit soll erfasst werden, automatischer Pausenabzug + // Alle anderen Verträge (inkl. keine/leere Vertragsart, ehemals nur "Ambulant"): Alle Einträge zur + // Arbeitszeit zählen, kein Pausenabzug. Zusätzlich sollen an Feiertagen die Soll-Stunden gutgeschrieben werden public override bool ShouldCreateDayDetails() @@ -32,7 +33,7 @@ namespace HwHilfswerkInklusionUndTeilhabe dd.BreakMinutes = 30; dd.BreakMinutes2 = 15; - if (HatEmployeeAmbulantContract(ed.Employee.GetValidContractForDate(date))) + if (IstNichtStationaer(ed.Employee.GetValidContractForDate(date))) { dd.MaxHoursUntilBreak = 0; dd.MaxHoursUntilBreak2 = 0; @@ -58,7 +59,7 @@ namespace HwHilfswerkInklusionUndTeilhabe public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { - if (HatEmployeeAmbulantContract(item.Employee.GetValidContractForDate(item.Start))) + if (IstNichtStationaer(item.Employee.GetValidContractForDate(item.Start))) { return true; } @@ -106,7 +107,7 @@ namespace HwHilfswerkInklusionUndTeilhabe if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.Employee != null && HatEmployeeAmbulantContract(item.Employee.GetValidContractForDate(item.Start))) + if (item.Employee != null && IstNichtStationaer(item.Employee.GetValidContractForDate(item.Start))) { arbeitszeit += duration; if (item.ServiceDescription.Category.IsBillable) @@ -178,15 +179,15 @@ namespace HwHilfswerkInklusionUndTeilhabe } } - // Claude: Gutschrift-Stunden für einen Feiertag laut Vertrag; 0, wenn an dem Tag kein - // Ambulant-Vertrag gilt oder keine Wochenstunden hinterlegt sind. + // Claude: Gutschrift-Stunden für einen Feiertag laut Vertrag; 0, wenn an dem Tag ein + // stationärer Vertrag gilt oder kein Vertrag/keine Wochenstunden hinterlegt sind. private decimal GetFeiertagsGutschriftStunden(Employee emp, DateTime tag) { if (emp == null) return 0; var contract = emp.GetValidContractForDate(tag); - if (!HatEmployeeAmbulantContract(contract)) + if (contract == null || !IstNichtStationaer(contract)) return 0; if (!contract.WeeklyTotalHours.HasValue || contract.WeeklyTotalHours.Value <= 0) @@ -222,15 +223,17 @@ namespace HwHilfswerkInklusionUndTeilhabe #endregion - private bool HatEmployeeAmbulantContract(Contract contract) + // Claude: Die (ehemals nur für "ambulant" geltende) Sonderlogik ist jetzt der Standard + // und greift für alle Verträge - AUSSER die Vertragsart enthält "stationär". + // Kein/leerer Vertrag oder keine Vertragsart gilt damit ebenfalls als "nicht stationär". + private bool IstNichtStationaer(Contract contract) { - bool ambulant = false; if (contract != null && contract.ContractTypeValueListEntry != null && contract.ContractTypeValueListEntry.Value.IsNotNullOrEmpty()) { - if (contract.ContractTypeValueListEntry.Value.ToLower().Contains("ambulant")) - ambulant = true; + if (contract.ContractTypeValueListEntry.Value.ToLower().Contains("stationär")) + return false; } - return ambulant; + return true; } // Im ZeitraeumeString soll die originale Endzeit dargestellt werden.