From edab0b9073e4b012b3db662dde76bfad429671a2 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Tue, 13 May 2025 17:10:54 +0200 Subject: [PATCH] =?UTF-8?q?CaritasverbandDuerenJuelichEV/Invoicing/CustomI?= =?UTF-8?q?nvoiceCreation=20+=20CustomAccountingService=20Bugfixes,=20wenn?= =?UTF-8?q?=20Hilfepl=C3=A4ne=20kein=20Enddatum=20haben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CaritasverbandDuerenJuelichEV.csproj | 1 + .../Invoicing/CustomInvoiceCreation.cs | 31 ++++++++ .../Service/CustomAccountingService.cs | 76 +++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 ReportImp/CaritasverbandDuerenJuelichEV/Service/CustomAccountingService.cs diff --git a/ReportImp/CaritasverbandDuerenJuelichEV/CaritasverbandDuerenJuelichEV.csproj b/ReportImp/CaritasverbandDuerenJuelichEV/CaritasverbandDuerenJuelichEV.csproj index 5cc2699a6..81f9ef90b 100644 --- a/ReportImp/CaritasverbandDuerenJuelichEV/CaritasverbandDuerenJuelichEV.csproj +++ b/ReportImp/CaritasverbandDuerenJuelichEV/CaritasverbandDuerenJuelichEV.csproj @@ -116,6 +116,7 @@ ServiceInvoiceReport.cs + diff --git a/ReportImp/CaritasverbandDuerenJuelichEV/Invoicing/CustomInvoiceCreation.cs b/ReportImp/CaritasverbandDuerenJuelichEV/Invoicing/CustomInvoiceCreation.cs index a36e35585..1d7cd2dfa 100644 --- a/ReportImp/CaritasverbandDuerenJuelichEV/Invoicing/CustomInvoiceCreation.cs +++ b/ReportImp/CaritasverbandDuerenJuelichEV/Invoicing/CustomInvoiceCreation.cs @@ -46,6 +46,37 @@ namespace CaritasverbandDuerenJuelichEV.Invoicing // return null; //} + public override void SetSingleInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod, CompactSupportConceptDC supportConcept) + { + //Nur SingleInvoice und nicht Collective + invoice.InvoiceBase.SupportConceptOid = supportConcept.SupportConceptOid; + invoice.InvoiceBase.CostBearer2SupportConcept = DAOFactory.GenericDAO.LoadByID(supportConcept.CostBearerRelOids[0]); + + if (supportConcept.CustomerReferenceNumbers.Count > 0) + { + invoice.InvoiceBase.CustomerReferenceNumber = supportConcept.CustomerReferenceNumbers[0]; + } + Person p = invoice.InvoiceBase.CostBearer2SupportConcept.SupportConcept.Customer.Person; + DateTimeSpan span = invoice.InvoiceBase.CostBearer2SupportConcept.GetApprovedSpan(); + if (span == null) + { + span = invoice.InvoiceBase.CostBearer2SupportConcept.GetRequestedSpan(); + } + if (span != null) + { + invoice.InvoiceBase.InvoiceTitle = String.Format("{0}, {1}, {2:dd.MM.yyy}-{3:dd.MM.yy}", p.LastName, + p.FirstName, span.StartDate, span.EndDate); + } + else + { + invoice.InvoiceBase.InvoiceTitle = String.Format("{0}, {1}", p.LastName, p.FirstName); + if (invoice.InvoiceBase.CostBearer2SupportConcept.StartDate.HasValue) + { + invoice.InvoiceBase.InvoiceTitle += String.Format(", {0:dd.MM.yyy}-", invoice.InvoiceBase.CostBearer2SupportConcept.StartDate.Value); + } + } + } + public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, BS.Shared.Services.Calculations calc) { var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc); diff --git a/ReportImp/CaritasverbandDuerenJuelichEV/Service/CustomAccountingService.cs b/ReportImp/CaritasverbandDuerenJuelichEV/Service/CustomAccountingService.cs new file mode 100644 index 000000000..621060801 --- /dev/null +++ b/ReportImp/CaritasverbandDuerenJuelichEV/Service/CustomAccountingService.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Windows; +using BeWo.Data; +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; + +namespace CaritasverbandDuerenJuelichEV.Service +{ + public class CustomAccountingService : AccountingService + { + // entspricht dem Original, außer dass die Bewilligung des Hilfeplans abgelaufen sein kann, wenn die Beantragten-Daten länger laufen bzw. kein Enddate haben + public override List GenerateInitialServiceInvoices(long costBearerOid, long? supportConceptOid, DateTimeSpan invoicePeriod) + { + var cs = PluginLoader.FindClass(); + IEnumerable supportConcepts; + // GetAllActiveSupportConceptCostbearer returns a "Flat" SupportConcept List, one for each CostBearer2SupportConcept! + if (!supportConceptOid.HasValue) + { + supportConcepts = cs.GetAllActiveSupportConceptCostbearer(false, true, 0) + .Where(i => i.CostBearerOids2CostBearerRelOids.ContainsKey(costBearerOid)); + } + else + { + supportConcepts = cs.GetCompactSupportConcepts(supportConceptOid.Value, null) + .Where(i => i.CostBearerOids2CostBearerRelOids.ContainsKey(costBearerOid)); + } + + DateTimeSpan newSpan = null; + if (invoicePeriod != null) + { + //invoicePeriod.StartDateTime = invoicePeriod.StartDateTime.Date; + //invoicePeriod.EndDateTime = invoicePeriod.EndDateTime.Date; + newSpan = new DateTimeSpan(); + newSpan.StartDateTime = invoicePeriod.StartDateTime.Date; + newSpan.EndDateTime = invoicePeriod.EndDateTime.Date.AddDays(1).AddTicks(-1); + //if (!supportConceptOid.HasValue) + //{ + // supportConcepts = + // supportConcepts.Where(sc => sc.StartDate < newSpan.EndDateTime && sc.EndDate >= newSpan.StartDate); + //} + } + var supportConcepts2ServiceRecords = supportConcepts.ToDictionary( + i => i, + i => MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs( + DAOFactory.SearchDAO.FindServiceRecordsInSpan(i.CostBearerRelOids[0], newSpan))); + var cb = DAOFactory.GenericDAO.LoadByID(costBearerOid); + String tenant = PluginLoader.Tenant; + var factory = PluginLoader.FindClass(cb.ID); + if (factory == null) + { + factory = InvoiceFactory.GetInstance(cb.ID, tenant); + } + + var creator = factory.CreateInvoiceCreator(cb.ID, tenant, supportConcepts2ServiceRecords); + var newInvoices = creator.GenerateServiceInvoices(costBearerOid, invoicePeriod, supportConcepts2ServiceRecords); + + + //Prüfe ob Rechnungen neu sind oder Diff vorhanden + var differenzRechnungChecks = GetNewInvoices(newInvoices, invoicePeriod?.StartDate, invoicePeriod?.EndDate); + var resultList = ErstelleNeueRechnungen(differenzRechnungChecks); + + + return resultList; + } + } +} \ No newline at end of file