MH: PsychosozialeProjekteSaarpfalz InvoicePeriod Daten anders gesetzt

This commit is contained in:
2025-04-28 10:52:41 +02:00
parent 5226349b40
commit 4e32a5480a

View File

@@ -40,7 +40,56 @@ namespace PsychosozialeProjekteSaarpfalz.Invoicing
{
return GenerateServiceInvoices(costBearerOid, invoicePeriod, supportConcepts2ServiceRecords, true);
}
public override List<ServiceInvoiceDC> GenerateServiceInvoices(long costBearerOid,
DateTimeSpan invoicePeriod,
Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords, bool splitInvoices)
{
var costBearer = DAOFactory.GenericDAO.LoadByID<CostBearer>(costBearerOid);
var invoiceList = new List<ServiceInvoice>();
var invoiceCounter = 0;
ServiceInvoice invoice;
if (costBearer.IsSingleInvoicePerCustomer)
{
invoice = CreateCollectiveBilling(costBearer, invoicePeriod, supportConcepts2ServiceRecords);
if (invoice != null)
{
invoiceList.Add(invoice);
}
}
else
{
foreach (var iSupportConcept2ServiceRecords in supportConcepts2ServiceRecords)
{
invoice = CreateSingleInvoice(invoiceCounter, costBearer, invoicePeriod, iSupportConcept2ServiceRecords.Key, iSupportConcept2ServiceRecords.Value);
if (invoice != null)
{
if (splitInvoices && invoice.ServiceInvoicePeriodList.Count > 1
&& !invoice.ServiceInvoicePeriodList.Any(s => s.Start == invoicePeriod.StartDate && s.End == invoicePeriod.EndDate))
{
foreach (var sip in invoice.ServiceInvoicePeriodList)
{
DateTimeSpan invPeriod = new DateTimeSpan(invoicePeriod.StartDate, invoicePeriod.EndDate);
invPeriod.StartDate = sip.Start.Value;
invPeriod.EndDate = sip.End.Value;
var partInvoice = CreateSingleInvoice(invoiceCounter, costBearer, invPeriod, iSupportConcept2ServiceRecords.Key, iSupportConcept2ServiceRecords.Value);
partInvoice.ServiceInvoicePeriodList.Add(sip);
invoiceList.Add(partInvoice);
invoiceCounter++;
}
}
else
{
invoiceList.Add(invoice);
invoiceCounter++;
}
}
}
}
var result = invoiceList.Select(item => MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(item)).ToList();
return result.Count > 1 ? result.OrderBy(i => i.InvoiceBase.CustomerLastName).ToList() : result;
}
public override void SetSenderInformation(ServiceInvoice serviceInvoice)
{
base.SetSenderInformation(serviceInvoice);