From 8c815d05b4587bf0c5949da09f35b139f82bb9cc Mon Sep 17 00:00:00 2001 From: Marcel Hirschle Date: Fri, 23 Jun 2023 13:47:29 +0200 Subject: [PATCH] =?UTF-8?q?MH:=20Frommen=20Rechnungen=20mit=20Abschl=C3=A4?= =?UTF-8?q?gen=20auch=20ohne=20ServiceRecords?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChristinaFrommen/ChristinaFrommen.csproj | 3 ++ .../Invoicing/CustomInvoiceFactory.cs | 18 +++++++ .../CustomSettlementInvoiceCreation.cs | 48 +++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 ReportImp/ChristinaFrommen/Invoicing/CustomInvoiceFactory.cs create mode 100644 ReportImp/ChristinaFrommen/Invoicing/CustomSettlementInvoiceCreation.cs diff --git a/ReportImp/ChristinaFrommen/ChristinaFrommen.csproj b/ReportImp/ChristinaFrommen/ChristinaFrommen.csproj index e99ca6290..9c8d4c581 100644 --- a/ReportImp/ChristinaFrommen/ChristinaFrommen.csproj +++ b/ReportImp/ChristinaFrommen/ChristinaFrommen.csproj @@ -63,6 +63,8 @@ InvoiceCustomerReport.cs + + Component @@ -173,5 +175,6 @@ Teamstundenkonto.cs + \ No newline at end of file diff --git a/ReportImp/ChristinaFrommen/Invoicing/CustomInvoiceFactory.cs b/ReportImp/ChristinaFrommen/Invoicing/CustomInvoiceFactory.cs new file mode 100644 index 000000000..2bc56451c --- /dev/null +++ b/ReportImp/ChristinaFrommen/Invoicing/CustomInvoiceFactory.cs @@ -0,0 +1,18 @@ +using BeWo.Data.Entities; +using BeWo.Service.Invoicing; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ChristinaFrommen.Invoicing +{ + public class CustomInvoiceFactory : InvoiceFactory + { + public override SettlementInvoiceCreation CreateSettlementInvoiceCreator(string costbearerId, string tenant, CostBearer2SupportConcept lCb2Sc) + { + return new CustomSettlementInvoiceCreation(); + } + } +} diff --git a/ReportImp/ChristinaFrommen/Invoicing/CustomSettlementInvoiceCreation.cs b/ReportImp/ChristinaFrommen/Invoicing/CustomSettlementInvoiceCreation.cs new file mode 100644 index 000000000..c3449f490 --- /dev/null +++ b/ReportImp/ChristinaFrommen/Invoicing/CustomSettlementInvoiceCreation.cs @@ -0,0 +1,48 @@ +using BeWo.Data.Entities; +using BeWo.Service.Invoicing; +using BS.Shared.DataContracts; +using BS.Shared.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ChristinaFrommen.Invoicing +{ + public class CustomSettlementInvoiceCreation : SettlementInvoiceCreation + { + // Rechnungen ohne ServiceRecords sollen trotzdem Abschlagszahlungen errechnen + public override void CalculateAdvancedPayments(Settlement2DC settlementInvoice, CostBearer2SupportConcept cb2sc) + { + decimal amountTotal = 0; + var bookingList = cb2sc.AccountingTransactions; + + foreach (var item in bookingList) + { + if (item.GueltigkeitsDatum.HasValue) + { + if (settlementInvoice.InvoiceItems != null && settlementInvoice.InvoiceItems.Count > 0) + { + foreach (var ii in settlementInvoice.InvoiceItems) + { + if (ii.ItemPeriodStart.HasValue && ii.ItemPeriodEnd.HasValue) + { + if (item.GueltigkeitsDatum.Value.InBetween(ii.ItemPeriodStart.Value, ii.ItemPeriodEnd.Value, true)) + { + ii.ReceivedAmount += item.Amount; + + break; + } + } + } + } + } + + amountTotal += item.Amount; + } + + settlementInvoice.AmountAdvancedPayments = amountTotal; + } + } +}