diff --git a/ReportImp/MVZMedikusGmbH/Invoicing/AssistenzInvoiceCreation.cs b/ReportImp/MVZMedikusGmbH/Invoicing/AssistenzInvoiceCreation.cs index 11d9746e2..9a6b9f730 100644 --- a/ReportImp/MVZMedikusGmbH/Invoicing/AssistenzInvoiceCreation.cs +++ b/ReportImp/MVZMedikusGmbH/Invoicing/AssistenzInvoiceCreation.cs @@ -6,6 +6,7 @@ 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; @@ -57,6 +58,51 @@ namespace MvzMedikus.Invoicing //return ii; } + 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 GILT laut LVR ausdrücklich nicht bei Assistenzleistungen + serviceInvoicePeriod.HoursNotBillableNotApproved += + calc.GetHoursNotBillableDueToMoreThanApproved(supportConceptApprovalPeriod, + cb2sc.CostBearer.CostRatePeriods.MapToNewDCs(), + serviceRecordsInPeriod, + true, true); + + var itemList = CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, serviceInvoicePeriod.SupportConceptApprovalPeriod, calc); + serviceInvoicePeriod.InvoiceItemList.AddRange(itemList); + } + } + } + public override IList CreateSummaryInvoiceItems(IList itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc, bool summaryPerMonth, bool addRateFactorToUnitCount) {