From 8d703743ecfd5e579126514699479cfb7710ae9e Mon Sep 17 00:00:00 2001 From: HirschleM Date: Fri, 29 Nov 2024 13:23:36 +0100 Subject: [PATCH] MH: Pflege Wessel Bugfix --- .../Invoicing/WGInvoiceCreation.cs | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/ReportImp/PflegedienstWessel/Invoicing/WGInvoiceCreation.cs b/ReportImp/PflegedienstWessel/Invoicing/WGInvoiceCreation.cs index 44bdeaa82..212508c9d 100644 --- a/ReportImp/PflegedienstWessel/Invoicing/WGInvoiceCreation.cs +++ b/ReportImp/PflegedienstWessel/Invoicing/WGInvoiceCreation.cs @@ -47,5 +47,67 @@ namespace PflegedienstWessel.Invoicing else base.CreateFixedAmounts(serviceInvoicePeriod, supportConceptApprovalPeriod, cb2sc); } + + public override void SetServiceInvoicePeriods(ServiceInvoice invoice, CostBearer2SupportConcept costBearer2SupportConcept, DateTimeSpan invoicePeriod, List serviceRecords) + { + var invoiceAccountingPeriodSpan = new DateTimeSpan + { + StartDateTime = invoice.InvoiceBase.AccountingPeriodStart.Value, + EndDateTime = invoice.InvoiceBase.AccountingPeriodEnd.Value + }; + + foreach (SupportConceptApprovalPeriod iPeriod in costBearer2SupportConcept.ApprovalPeriodList) + { + SupportConceptApprovalPeriodDC approvalPeriodDC = MapperFactory.SupportConceptApprovalPeriodDC_SupportConceptApprovalPeriod.MapToNewDC(iPeriod); + + + if (approvalPeriodDC.Span.EndDateTime < invoiceAccountingPeriodSpan.StartDateTime || approvalPeriodDC.Span.StartDateTime > invoiceAccountingPeriodSpan.EndDate) + { + continue; + } + + ServiceInvoicePeriod serviceInvoicePeriod = CreateServiceInvoicePeriod(approvalPeriodDC, invoiceAccountingPeriodSpan); + serviceInvoicePeriod.SupportConceptApprovalPeriod = iPeriod; + serviceInvoicePeriod.Customer = costBearer2SupportConcept.SupportConcept.Customer; + + CostBearer costBearer = costBearer2SupportConcept.CostBearer; + List costRates = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(costBearer.CostRatePeriods); + + CostRatePeriodDC serviceUnit = costRates.GetCostRatePeriodForDate(CostRatePeriodType.MinutesPerServiceUnit, DateTime.Now); + serviceInvoicePeriod.ServiceUnitName = serviceUnit.UnitName; + + Calculations calc = PluginLoader.FindClass(_SpecificID) ?? Calculations.GetInstance(_SpecificID); + + decimal amountPerUnit; + decimal unitCount; + + serviceInvoicePeriod.ApprovedFixedAmount = calc.GetApprovedFixedAmountForPeriod(approvalPeriodDC, serviceInvoicePeriod.Start.Value, serviceInvoicePeriod.End.Value, out amountPerUnit, out unitCount); + + if (!serviceInvoicePeriod.ApprovedFixedAmount.HasValue) + { + serviceInvoicePeriod.ApprovedHours = calc.GetApprovedHoursForPeriod(approvalPeriodDC, + costRates, + serviceInvoicePeriod.Start.Value, + serviceInvoicePeriod.End.Value); + if (serviceInvoicePeriod.ApprovedHours.HasValue) + serviceInvoicePeriod.ApprovedBE = serviceUnit.GetHoursInBE(serviceInvoicePeriod.ApprovedHours.Value); + + serviceInvoicePeriod.ApprovedAmountDefaultHourlyRate = calc.GetApprovedAmountDefaultHourlyRateForPeriod(approvalPeriodDC, + costRates, + serviceInvoicePeriod.Start, + serviceInvoicePeriod.End); + } + SetInvoiceItems(invoice, serviceInvoicePeriod, approvalPeriodDC, costBearer2SupportConcept, invoicePeriod, serviceRecords); + + CheckMaxApprovedAmount(invoice, serviceInvoicePeriod, approvalPeriodDC, costBearer2SupportConcept, invoicePeriod, serviceRecords); + + if (serviceInvoicePeriod.InvoiceItemList.Count > 0) + invoice.ServiceInvoicePeriodList.Add(serviceInvoicePeriod); + + // Da im Standard bei CreateFixedAmount ein Item PRO BEWILLIGUNG erstellt wird, nach erstem Item abbrechen. + break; + } + } + } } \ No newline at end of file