MH: TeamPfeil Korridorabrechnung Zwischenstand

This commit is contained in:
2026-06-19 13:49:33 +02:00
parent f085bd1b40
commit 1339438b0e

View File

@@ -122,40 +122,43 @@ namespace TeamPfeil.Invoicing
else
{
bool korridorAufgebraucht = false;
bool mischitem = false; // Mischitem = ServiceRecord kann nur teilweise mit Leistungsstundensatz abgerechnet werden, teils aber mit MA-Qual--Std.satz
// KORRIDOR ERMITTELN
var scapDC = MapperFactory.SupportConceptApprovalPeriodDC_SupportConceptApprovalPeriod.MapToNewDC(scap);
var gesamtBewilligt = KorridorberechnungHelper.BerechneStundenBewilligtGesamt(scapDC);
double korridorbudgetQualifiziert = 0;
double korridorbudgetUnterstuetzend = 0;
double korridorbudget = 0;
double genutztesKorridorbudget = 0;
double rest = 0;
if (scap.ServiceCategory.Name.Contains("Qualifizierte Assistenz"))
{
korridorbudgetQualifiziert = KorridorberechnungHelper.BerechneBudgetFuerQualAss(gesamtBewilligt);
double genutzt = KorridorberechnungHelper.BerechneGenutzteKorridorstunden(iServiceRecord.SupportConcept.SupportConceptOid, scapDC.ServiceCategory,
korridorbudgetQualifiziert, iServiceRecord.Start.Value, true);
var rest = korridorbudgetQualifiziert - genutzt;
// todo: Wenn das Item noch etwas Restbudget hat, aber es nicht ganz ausreicht, um alles abzudecken, muss eig ein Mischitem erzeugt werden.
// Es muss also der Teil, der noch verfügbar ist, mit dem Leistungsstundensatz verrechnet werden und der Rest mit der Qualifikation
if (rest > 0 && rest - Convert.ToDouble(iServiceRecord.RoundedDuration) / 60 < 0)
{
}
if (rest <= 0)
korridorAufgebraucht = true;
korridorbudget = KorridorberechnungHelper.BerechneBudgetFuerQualAss(gesamtBewilligt);
genutztesKorridorbudget = KorridorberechnungHelper.BerechneGenutzteKorridorstunden(iServiceRecord.SupportConcept.SupportConceptOid, scapDC.ServiceCategory,
korridorbudget, iServiceRecord.Start.Value, true);
rest = korridorbudget - genutztesKorridorbudget;
}
else if (scap.ServiceCategory.Name.Contains("Unterstützende Assistenz"))
{
korridorbudgetUnterstuetzend = KorridorberechnungHelper.BerechneBudgetFuerUnterstAss(gesamtBewilligt);
double genutzt = KorridorberechnungHelper.BerechneGenutzteKorridorstunden(iServiceRecord.SupportConcept.SupportConceptOid, scapDC.ServiceCategory,
korridorbudgetUnterstuetzend, iServiceRecord.Start.Value, false);
var rest = korridorbudgetUnterstuetzend - genutzt;
if (rest <= 0)
korridorAufgebraucht = true;
korridorbudget = KorridorberechnungHelper.BerechneBudgetFuerUnterstAss(gesamtBewilligt);
genutztesKorridorbudget = KorridorberechnungHelper.BerechneGenutzteKorridorstunden(iServiceRecord.SupportConcept.SupportConceptOid, scapDC.ServiceCategory,
korridorbudget, iServiceRecord.Start.Value, false);
rest = korridorbudget - genutztesKorridorbudget;
}
// todo: Wenn das Item noch etwas Restbudget hat, aber es nicht ganz ausreicht, um alles abzudecken, muss eig ein Mischitem erzeugt werden.
// Es muss also der Teil, der noch verfügbar ist, mit dem Leistungsstundensatz verrechnet werden und der Rest mit der Qualifikation
if (rest > 0 && rest - Convert.ToDouble(iServiceRecord.RoundedDuration) / 60 < 0)
{
decimal zeitNormalAbrechenbar = Convert.ToDecimal(rest);
decimal zeitMitMitarbeiterStundensatz = iServiceRecord.RoundedDuration / 60 - Convert.ToDecimal(rest);
mischitem = true;
}
else if (rest <= 0)
korridorAufgebraucht = true;
if (korridorAufgebraucht) // Stundensatz der Mitarbeitendenqualifikation
{
var qualifikation = iServiceRecord.Employee.ValueListEntries.FirstOrDefault(v => v.Value == ValueListEntryType.StaffQualificationsType);