ChristianWilke/Invoicing/CustomInvoiceCreation - Wegzeitenpauschale

This commit is contained in:
2024-06-06 14:03:36 +02:00
parent c3e4cf7a81
commit b8dc8ec4fd

View File

@@ -5,6 +5,7 @@ using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
@@ -38,5 +39,94 @@ namespace ChristianWilke.Invoicing
});
}
}
}
public override IList<InvoiceItem> CreateInvoiceItems(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap,
Calculations calc)
{
var list = base.CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, scap, calc);
var ii = CreateWegezeitenPauschale(serviceRecordsInPeriod, invoicePeriod, scap);
list.AddRange(ii);
return list;
}
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
{
var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc);
if (ii.ItemDescription != null && ii.ItemDescription.Contains("- ohne Wegzeiten Pauschale"))
{
ii.ItemDescription = ii.ItemDescription.Replace("- ohne Wegzeiten Pauschale", "");
}
else if (ii.ItemDescription != null && ii.ItemDescription.Contains("- mit Wegzeiten Pauschale"))
{
ii.ItemDescription = ii.ItemDescription.Replace("- mit Wegzeiten Pauschale", "");
}
return ii;
}
public virtual IList<InvoiceItem> CreateWegezeitenPauschale(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap)
{
IList<InvoiceItem> items = new List<InvoiceItem>();
decimal preisKA = 8.70m;
preisKA = base.GetPreis("Wegezeiten-Pauschale kompensatorische Assistenz", invoicePeriod.StartDate);
decimal preisQA = 15.76m;
preisKA = base.GetPreis("Wegezeiten-Pauschale qualifizierte Assistenz", invoicePeriod.StartDate);
int countKA = 0;
int countQA = 0;
foreach (var sr in serviceRecordsInPeriod)
{
if (sr.ServiceDescription.Name.ToLower().Contains("mit wegzeiten"))
{
if (sr.ServiceDescription.CategoryName.ToLower().Contains("qualifiziert"))
{
countQA++;
}
else
{
countKA++;
}
}
}
if (countQA > 0)
{
var invoiceItem = new InvoiceItem();
invoiceItem.AmountPerUnit = preisQA;
invoiceItem.UnitCount = countQA;
invoiceItem.AmountTotal = countQA * preisQA;
invoiceItem.ItemPeriodStart = invoicePeriod.StartDate;
invoiceItem.ItemPeriodEnd = invoicePeriod.EndDate;
invoiceItem.RateFactor = null;
invoiceItem.GrossAmountTotal = invoiceItem.AmountTotal;
invoiceItem.ItemDescription = "Wegezeiten Pauschale - Qualifizierte Assistenz";
if (scap != null)
invoiceItem.SupportConceptApprovalPeriodOid = scap.Oid;
items.Add(invoiceItem);
}
if (countKA > 0)
{
var invoiceItem = new InvoiceItem();
invoiceItem.AmountPerUnit = preisKA;
invoiceItem.UnitCount = countKA;
invoiceItem.AmountTotal = countKA * preisKA;
invoiceItem.ItemPeriodStart = invoicePeriod.StartDate;
invoiceItem.ItemPeriodEnd = invoicePeriod.EndDate;
invoiceItem.RateFactor = null;
invoiceItem.GrossAmountTotal = invoiceItem.AmountTotal;
invoiceItem.ItemDescription = "Wegezeiten Pauschale - Kompensatorische Assistenz";
if (scap != null)
invoiceItem.SupportConceptApprovalPeriodOid = scap.Oid;
items.Add(invoiceItem);
}
return items;
}
}
}