diff --git a/ReportImp/TeamPfeil/Invoicing/CustomInvoiceCreation.cs b/ReportImp/TeamPfeil/Invoicing/CustomInvoiceCreation.cs index f4aac533f..9e3ab6d04 100644 --- a/ReportImp/TeamPfeil/Invoicing/CustomInvoiceCreation.cs +++ b/ReportImp/TeamPfeil/Invoicing/CustomInvoiceCreation.cs @@ -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);