InputFamilienhilfe/Invoicing/UnterbringungInvoiceCreation - neue Abrechnungsart nur Tagessatz

SupportOID=161010
This commit is contained in:
2026-04-24 09:23:39 +02:00
parent e6a06ced42
commit 032380fa98

View File

@@ -72,64 +72,66 @@ namespace InputFamilienhilfe.Invoicing
{
list.Add(i);
}
var listIzl = CreateIZLItems(scap, calc, serviceRecordsInPeriod, invoicePeriod);
list.AddRange(listIzl);
//Bekleidungsergänzung wird erst ab dem ersten VOLLEN Monat des Hilfeplans berechnet
DateTime startMonat2 = new DateTime(scap.StartDate.Value.Year, scap.StartDate.Value.Month, 1).AddMonths(1);
if (scap.StartDate.Value.Day == 1 || invoicePeriod.StartDate >= startMonat2)
// AB, 24.04.2026: neue Betreuungsform wo (vorerst) nur die Tagessätze und nichts anderes abgerechnet wir -> Alias BJW EGH
if (!scap.CostBearer2SupportConcept.SupportConcept.Customer.CustomerAlias.ToLower().Contains("egh"))
{
i = CreateInvoiceItem(scap, invoicePeriod, 1, 48, "Bekleidungsergänzung");
var listIzl = CreateIZLItems(scap, calc, serviceRecordsInPeriod, invoicePeriod);
list.AddRange(listIzl);
//Bekleidungsergänzung wird erst ab dem ersten VOLLEN Monat des Hilfeplans berechnet
DateTime startMonat2 = new DateTime(scap.StartDate.Value.Year, scap.StartDate.Value.Month, 1).AddMonths(1);
if (scap.StartDate.Value.Day == 1 || invoicePeriod.StartDate >= startMonat2)
{
i = CreateInvoiceItem(scap, invoicePeriod, 1, 48, "Bekleidungsergänzung");
if (i != null)
{
list.Add(i);
}
}
i = CreateInvoiceItem(scap, invoicePeriod, 1, 55, "Budget Sonderaufwendungen");
if (i != null)
{
list.Add(i);
}
decimal barbetragPreis = GetBarbetragPreis(scap, invoicePeriod.EndDate);
if (barbetragPreis > 0)
{
i = CreateInvoiceItem(scap, invoicePeriod, 1, barbetragPreis, "Barbetrag");
if (i != null)
{
list.Add(i);
}
}
// AB 24.04.2026, noch ältere Abrechnungslogik, hab die Funktionen mal gelöscht, aber hier lass ich mal für den Fall der Fälle stehe
//i = CreateWohnenPauschale(scap, calc, invoicePeriod);
//if (i != null)
//{
// list.Add(i);
//}
//i = CreateHluPauschale(scap, calc, invoicePeriod);
//if (i != null)
//{
// list.Add(i);
//}
//i = CreateBudget623Pauschale(scap, calc, invoicePeriod);
//if (i != null)
//{
// list.Add(i);
//}
var iilist = CreateSonstigeKosten(scap, calc, serviceRecordsInPeriod, invoicePeriod);
list.AddRange(iilist);
i = CreateLohnAnteil(scap, calc, invoicePeriod);
if (i != null)
{
list.Add(i);
}
}
i = CreateInvoiceItem(scap, invoicePeriod, 1, 55, "Budget Sonderaufwendungen");
if (i != null)
{
list.Add(i);
}
decimal barbetragPreis = GetBarbetragPreis(scap, invoicePeriod.EndDate);
if (barbetragPreis > 0)
{
i = CreateInvoiceItem(scap, invoicePeriod, 1, barbetragPreis, "Barbetrag");
if (i != null)
{
list.Add(i);
}
}
//i = CreateWohnenPauschale(scap, calc, invoicePeriod);
//if (i != null)
//{
// list.Add(i);
//}
//i = CreateHluPauschale(scap, calc, invoicePeriod);
//if (i != null)
//{
// list.Add(i);
//}
//i = CreateBudget623Pauschale(scap, calc, invoicePeriod);
//if (i != null)
//{
// list.Add(i);
//}
var iilist = CreateSonstigeKosten(scap, calc, serviceRecordsInPeriod, invoicePeriod);
list.AddRange(iilist);
i = CreateLohnAnteil(scap, calc, invoicePeriod);
if (i != null)
{
list.Add(i);
}
return CreateSummaryInvoiceItems(list, invoicePeriod, scap, calc);
}
@@ -227,15 +229,9 @@ namespace InputFamilienhilfe.Invoicing
}
unitCount = days;
}
}
}
}
invoiceItem.UnitCount = unitCount;
invoiceItem.AmountPerUnit = amount;
invoiceItem.AmountTotal = invoiceItem.AmountPerUnit * invoiceItem.UnitCount;
@@ -249,107 +245,6 @@ namespace InputFamilienhilfe.Invoicing
return invoiceItem;
}
private InvoiceItem CreateWohnenPauschale(SupportConceptApprovalPeriod scap, Calculations calc, DateTimeSpan invoicePeriod)
{
if (scap.ApprovedFixedAmount.HasValue)
{
var invoiceItem = new InvoiceItem();
if (scap.ApprovedFixedAmountInterval.HasValue &&
scap.ApprovedFixedAmountInterval.Value == SupportConceptApprovalInterval.Monthly)
{
invoiceItem.UnitCount = 1;
}
else
{
DateTime start = invoicePeriod.StartDate;
DateTime end = invoicePeriod.EndDate;
if (scap.StartDate.HasValue && scap.StartDate.Value > start)
{
start = scap.StartDate.Value;
}
if (scap.EndDate.HasValue && scap.EndDate.Value < end)
{
end = scap.EndDate.Value;
}
decimal days = 0;
if (end >= start)
{
days = (decimal)end.Subtract(start).TotalDays + 1;
}
invoiceItem.UnitCount = days;
}
invoiceItem.AmountPerUnit = scap.ApprovedFixedAmount.Value;
invoiceItem.AmountTotal = invoiceItem.AmountPerUnit * invoiceItem.UnitCount;
invoiceItem.GrossAmountTotal = invoiceItem.AmountTotal;
invoiceItem.ItemPeriodStart = invoicePeriod.StartDate;
invoiceItem.ItemPeriodEnd = invoicePeriod.EndDate;
invoiceItem.AccountingInterval = AccountingIntervalType.FlatRate;
invoiceItem.ItemDescription = "Wohnen / Tag";
invoiceItem.SupportConceptApprovalPeriodOid = scap.Oid;
return invoiceItem;
}
return null;
}
private InvoiceItem CreateHluPauschale(SupportConceptApprovalPeriod scap, Calculations calc, DateTimeSpan invoicePeriod)
{
var invoiceItem = new InvoiceItem();
decimal preis = 432;
var cat = DAOFactory.SearchDAO.FindServiceCategoryByName("HLU");
{
if (cat != null)
{
var crpList = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(cat.CostRatePeriods);
var crp = crpList.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, invoicePeriod.StartDate);
if (crp != null && crp.CostRateValue.HasValue)
{
preis = crp.CostRateValue.Value;
}
}
}
invoiceItem.UnitCount = 1;
invoiceItem.AmountPerUnit = preis;
invoiceItem.AmountTotal = invoiceItem.AmountPerUnit * invoiceItem.UnitCount;
invoiceItem.GrossAmountTotal = invoiceItem.AmountTotal;
invoiceItem.ItemPeriodStart = invoicePeriod.StartDate;
invoiceItem.ItemPeriodEnd = invoicePeriod.EndDate;
invoiceItem.AccountingInterval = AccountingIntervalType.FlatRate;
invoiceItem.ItemDescription = "HLU / Monat";
invoiceItem.SupportConceptApprovalPeriodOid = scap.Oid;
return invoiceItem;
}
private InvoiceItem CreateBudget623Pauschale(SupportConceptApprovalPeriod scap, Calculations calc, DateTimeSpan invoicePeriod)
{
var invoiceItem = new InvoiceItem();
invoiceItem.UnitCount = 1;
invoiceItem.AmountPerUnit = 22;
invoiceItem.AmountTotal = invoiceItem.AmountPerUnit * invoiceItem.UnitCount;
invoiceItem.GrossAmountTotal = invoiceItem.AmountTotal;
invoiceItem.ItemPeriodStart = invoicePeriod.StartDate;
invoiceItem.ItemPeriodEnd = invoicePeriod.EndDate;
invoiceItem.AccountingInterval = AccountingIntervalType.FlatRate;
invoiceItem.ItemDescription = "Budget nach § 6.2.3";
invoiceItem.SupportConceptApprovalPeriodOid = scap.Oid;
return invoiceItem;
}
private InvoiceItem CreateInvoiceItem(SupportConceptApprovalPeriod scap, DateTimeSpan invoicePeriod, decimal unitCount, decimal amountPerUnit, String bezeichnung)
{
var invoiceItem = new InvoiceItem();