From 1e5ba277ddffd4edd6042229d5bf281acf013561 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Mon, 17 Jun 2024 15:49:27 +0200 Subject: [PATCH] SKMAachen/Invoicing/CustomInvoiceNumberGenerator - Rechnungskreise pro Hauptbetreuer --- .../Invoicing/CustomInvoiceNumberGenerator.cs | 48 ++++++++++++++++++- Service/Plugins/InvoiceNumberGenerator.cs | 2 +- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/ReportImp/SKMAachen/Invoicing/CustomInvoiceNumberGenerator.cs b/ReportImp/SKMAachen/Invoicing/CustomInvoiceNumberGenerator.cs index 6f0f2425e..ff81c3bcd 100644 --- a/ReportImp/SKMAachen/Invoicing/CustomInvoiceNumberGenerator.cs +++ b/ReportImp/SKMAachen/Invoicing/CustomInvoiceNumberGenerator.cs @@ -17,8 +17,12 @@ namespace SKMAachen.Invoicing { internal class CustomInvoiceNumberGenerator : InvoiceNumberGenerator { + public long oid_ = 1; + public override string GetNextInvoiceNumber(int increment, InvoiceBase invoiceBase) { + // Rechnungskreise pro Hauptbetreuer, bei neuem Hauptbetreuer wird automatisch ein neuer Kreis zugefügt + // beim Hochzählen den Rechnungsnummer ist es wichtig, dass der Rechnungskreis 3-stellig ist String next = ""; String maAbb = ""; Customer c = null; @@ -56,6 +60,7 @@ namespace SKMAachen.Invoicing if (item.Notice == maAbb) { number = item; + oid_ = item.Oid.Value; } } if (number == null) @@ -73,5 +78,46 @@ namespace SKMAachen.Invoicing return next; } - } + + public override InvoiceNumberDC UpdateInvoiceNumber(InvoiceNumberDC dc) + { + var old = DAOFactory.GenericDAO.LoadByID(oid_); + MapperFactory.InvoiceNumberDC_InvoiceNumber.MergeWithEntity(dc, old); + DAOFactory.GenericDAO.Update(old); + + return MapperFactory.InvoiceNumberDC_InvoiceNumber.MapToNewDC(old); + } + + public override InvoiceNumberDC LoadInvoiceNumber() + { + var inr = DAOFactory.GenericDAO.LoadByID(oid_); + if (inr != null) + return MapperFactory.InvoiceNumberDC_InvoiceNumber.MapToNewDC(inr); + return null; + } + + public override void IncreaseInvoiceNumber(int count, List newInvoices) + { + if (count != 0) + { + var alleNummern = DAOFactory.GenericDAO.GetAll(); + foreach (var item in newInvoices) + { + foreach (var num in alleNummern) + { + if (num.Notice == item.InvoiceBase.InvoiceNumber.Substring(0,3)) + { + oid_ = num.Oid.Value; + var invoiceNumber = LoadInvoiceNumber(); + if (invoiceNumber.Use) + { + invoiceNumber.CurrentNumber += 1; + this.UpdateInvoiceNumber(invoiceNumber); + } + } + } + } + } + } + } } diff --git a/Service/Plugins/InvoiceNumberGenerator.cs b/Service/Plugins/InvoiceNumberGenerator.cs index 89c34e323..516584a4d 100644 --- a/Service/Plugins/InvoiceNumberGenerator.cs +++ b/Service/Plugins/InvoiceNumberGenerator.cs @@ -59,7 +59,7 @@ namespace BeWo.Service.Plugins IncreaseInvoiceNumber(count, newInvoices); } - internal void IncreaseInvoiceNumber(int count, List newInvoices) + public virtual void IncreaseInvoiceNumber(int count, List newInvoices) { if (count != 0) {