diff --git a/ReportImp/AuswegHeikePuetz/AuswegHeikePuetz.csproj b/ReportImp/AuswegHeikePuetz/AuswegHeikePuetz.csproj index 114bb35ad..15375f0c3 100644 --- a/ReportImp/AuswegHeikePuetz/AuswegHeikePuetz.csproj +++ b/ReportImp/AuswegHeikePuetz/AuswegHeikePuetz.csproj @@ -63,6 +63,7 @@ InvoiceCustomerReport.cs + diff --git a/ReportImp/AuswegHeikePuetz/Invoicing/CustomInvoiceFactory.cs b/ReportImp/AuswegHeikePuetz/Invoicing/CustomInvoiceFactory.cs index 80e26648c..69c448e94 100644 --- a/ReportImp/AuswegHeikePuetz/Invoicing/CustomInvoiceFactory.cs +++ b/ReportImp/AuswegHeikePuetz/Invoicing/CustomInvoiceFactory.cs @@ -30,10 +30,10 @@ namespace Ausweg.Invoicing String cat = sd.Name.ToLower().Trim(); if (cat.IndexOf("assistenz") >= 0) { - return new CustomAssistenzInvoiceCreation(); + return new CustomAssistenzInvoiceCreation(); // Klassischer Filter für Abrechnung Assistenz in Sammelrg und FLS in Spitzabrechnung für LVR } } - return null; + return new CustomJugendamtInvoiceCreation(); // Abrechnung mit JA geht über FLS in Sammelrechnung, aber die Abwesenheiten spielen keine Rolle } } } diff --git a/ReportImp/AuswegHeikePuetz/Invoicing/JugendamtInvoiceCreation.cs b/ReportImp/AuswegHeikePuetz/Invoicing/JugendamtInvoiceCreation.cs new file mode 100644 index 000000000..bff331f2e --- /dev/null +++ b/ReportImp/AuswegHeikePuetz/Invoicing/JugendamtInvoiceCreation.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using BeWo.Data.Access; +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; +using BS.Shared.Extensions; +using BS.Shared.Services; + +namespace Ausweg.Invoicing +{ + // keine Berücksichtung von Abwesenheiten in Abrechnung + + public class CustomJugendamtInvoiceCreation : InvoiceCreation + { + public override void SetAmountAdvancePayments(ServiceInvoice invoice) + { + //do nothing + } + + public override void SetAmountEquityContribution(ServiceInvoice invoice) + { + //do nothing + } + + public override void SetInvoiceItems(ServiceInvoice invoice, + ServiceInvoicePeriod serviceInvoicePeriod, + SupportConceptApprovalPeriodDC supportConceptApprovalPeriod, + CostBearer2SupportConcept cb2sc, + DateTimeSpan invoicePeriod, + List serviceRecords) + { + Calculations calc = PluginLoader.FindClass(_SpecificID) ?? Calculations.GetInstance(_SpecificID); + + if (ShouldCreateFixedAmounts(serviceInvoicePeriod, supportConceptApprovalPeriod, cb2sc)) + { + CreateFixedAmounts(serviceInvoicePeriod, supportConceptApprovalPeriod, cb2sc); + } + else + { + List serviceRecordsInPeriod = serviceRecords.Where( + i => + { + bool valid = i.Start.Value.InBetween(serviceInvoicePeriod.Start.Value, + serviceInvoicePeriod.End.Value, true); + + if (valid && serviceInvoicePeriod.SupportConceptApprovalPeriod != null && serviceInvoicePeriod.SupportConceptApprovalPeriod.ServiceCategory != null) + valid = serviceInvoicePeriod.SupportConceptApprovalPeriod.ServiceCategory.Oid == + i.ServiceDescription.Category.ServiceCategoryOid; + return valid; + }).ToList(); + + if (serviceRecordsInPeriod.Count > 0) + { + var absenceTimes = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(cb2sc.SupportConcept.Customer.AbsenceTimes); + Dictionary span2Hours = calc.GetAbsencesTimesNotBillable(absenceTimes); + + // serviceInvoicePeriod.HoursNotBillableAbsence - eingeschränkte Anzahl bei Abwesenheit nicht bei Jugenämtern + serviceInvoicePeriod.HoursNotBillableNotApproved += + calc.GetHoursNotBillableDueToMoreThanApproved(supportConceptApprovalPeriod, + cb2sc.CostBearer.CostRatePeriods.MapToNewDCs(), + serviceRecordsInPeriod, + true, true); + + var itemList = CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, serviceInvoicePeriod.SupportConceptApprovalPeriod, calc); + serviceInvoicePeriod.InvoiceItemList.AddRange(itemList); + } + } + } + } +}