MH: HwHilfswerkInklusionUndTeilhabe Standard umgekehrt

SupportOID=168831
This commit is contained in:
2026-07-23 08:18:32 +02:00
parent bb7ce87448
commit 3232f552a3

View File

@@ -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.