MH: SuchtkrankenhilfeOstfriesland Abwesenheitsregelung
This commit is contained in:
@@ -51,7 +51,7 @@ namespace SuchtkrankenhilfeOstfriesland.Calculation
|
||||
foreach (var sr in anwesenheiten)
|
||||
{
|
||||
// Hier muss geprüft werden, ob der Klient an dem Tag eine Abwesenheit hat. Ist sie noch abrechenbar, weil vom Budget
|
||||
// noch was übrig ist, das Budget um 1 verringern und weitermachen. Ist kein Budget mehr übrig, Tag überspringen
|
||||
// noch was übrig ist, das Budget um 1 verringern und weitermachen. Ist kein Budget mehr übrig, gilt Tag nicht als anwesend
|
||||
if (krankheitenImAbrechnungsjahr.Any(a => a.AbsenceSpan.ContainsDate(sr.Start.Value)))
|
||||
{
|
||||
if (uebrigesKrankheitsbudget == 0)
|
||||
@@ -64,13 +64,41 @@ namespace SuchtkrankenhilfeOstfriesland.Calculation
|
||||
anwesenheitstage.Add(sr.Start.Value.Date);
|
||||
}
|
||||
|
||||
// Prüfen, ob 14 oder 28 Tage in Folge "Abwesend TS" dokumentiert wurde.
|
||||
// In dem Fall wird der Betrag für den Monat halbiert oder ganz gestrichen
|
||||
bool rechnungHalbieren = false; // 14 Tage
|
||||
bool rechnungNullen = false; // 28 Tage
|
||||
ServiceRecord letzteAbwesenheit = null;
|
||||
int abwesenheitenHintereinander = 0;
|
||||
|
||||
foreach (var sr in abwesenheiten)
|
||||
{
|
||||
if (letzteAbwesenheit != null && letzteAbwesenheit.Start.Value.Date == sr.Start.Value.Date.AddDays(-1))
|
||||
abwesenheitenHintereinander++;
|
||||
else
|
||||
abwesenheitenHintereinander = 0;
|
||||
|
||||
if (abwesenheitenHintereinander == 14)
|
||||
rechnungHalbieren = true;
|
||||
else if (abwesenheitenHintereinander == 28)
|
||||
rechnungNullen = true;
|
||||
|
||||
letzteAbwesenheit = sr;
|
||||
}
|
||||
|
||||
|
||||
// Wenn die erste Anwesenheit erst ab dem 15. ist oder die letzte bis zum 15. wird die Pauschale für den Monat halbiert
|
||||
// Gilt auch, wenn 14 Tage aufeinanderfolgend "Abwesend" dokumentiert wurde
|
||||
if (anwesenheitstage[0].Day > 15 || anwesenheitstage[anwesenheitstage.Count - 1].Day <= 15)
|
||||
// Gilt auch, wenn 14 Tage aufeinanderfolgend "Abwesend" dokumentiert wurde (also wenn rechnungHalbieren = true)
|
||||
if (anwesenheitstage[0].Day > 15 || anwesenheitstage[anwesenheitstage.Count - 1].Day <= 15 || rechnungHalbieren)
|
||||
{
|
||||
data.AmountTotal /= 2;
|
||||
data.GrossAmountTotal /= 2;
|
||||
}
|
||||
if (rechnungNullen)
|
||||
{
|
||||
data.AmountTotal = 0;
|
||||
data.GrossAmountTotal = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user