From 06568c08e546665978df8a55696a60c4e2a06b27 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Fri, 12 Jun 2026 10:27:50 +0200 Subject: [PATCH 1/3] LebenshilfeBadKreuznach/Statistics/CustomServiceRecordStatisticFactory - Umstellung von Quartal auf Monat SupportOID=165048 --- .../CustomServiceRecordStatisticFactory.cs | 98 +++++++------------ 1 file changed, 33 insertions(+), 65 deletions(-) diff --git a/ReportImp/LebenshilfeBadKreuznach/Statistics/CustomServiceRecordStatisticFactory.cs b/ReportImp/LebenshilfeBadKreuznach/Statistics/CustomServiceRecordStatisticFactory.cs index c1a9689d7..39399ae1b 100644 --- a/ReportImp/LebenshilfeBadKreuznach/Statistics/CustomServiceRecordStatisticFactory.cs +++ b/ReportImp/LebenshilfeBadKreuznach/Statistics/CustomServiceRecordStatisticFactory.cs @@ -14,21 +14,23 @@ namespace LebenshilfeBadKreuznach.Statistics { public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory { - // Bei der LH Bad Kreuznach sollen die Stunden pro Quartal hochgerechnet werden. Die Formel ist wöchentliche Stunden * 4.33 pro Monat und dann mal 3 fürs Quartal. - // Die bewilligten Stunden pro Quartal werden in der Klasse in MinutesApprovedPerMonth gespeichert, die geleisteten in MinutesProvidedThisMonth + // Bei der LH Bad Kreuznach sollen die Stunden pro Quartal hochgerechnet werden. Die Formel ist wöchentliche Stunden * 4.33 pro Monat + // Bis 30.06.2026 dann nochmal 3 fürs Quartal. public override ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate) { var stats = CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate); - var dc = new ServiceRecordStatisticsInfoDC(); - - dc.Header = new string[4]; dc.Header[0] = "Bewilligungszeitraum:"; - dc.Header[1] = "Geleistet diese Woche/im Quartal:"; - dc.Header[2] = "Bewilligt diese Woche/im Quartal:"; - dc.Header[3] = "Frei pro Woche(Ø)/im Quartal:"; + + //dc.Header[1] = "Geleistet diese Woche/im Quartal:"; + //dc.Header[2] = "Bewilligt diese Woche/im Quartal:"; + //dc.Header[3] = "Frei pro Woche(Ø)/im Quartal:"; + // AB: Bitte oben löschen und das hier einkommentieren + dc.Header[1] = "Geleistet diese Woche/im Monat:"; + dc.Header[2] = "Bewilligt diese Woche/im Monat:"; + dc.Header[3] = "Frei pro Woche(Ø)/im Monat:"; dc.ForegroundColor = new string[4]; dc.ForegroundColor[0] = "#FF2B508B"; @@ -38,12 +40,8 @@ namespace LebenshilfeBadKreuznach.Statistics dc.PeriodStatisticInfos = new List(); - if (stats != null) { - //if (stats.PeriodStatistics.Count > 1 && !TimeSpanIsEqual(stats)) - // dc.PeriodStatisticInfos.Add(CreateTotalStatistics(stats, statisticsDate)); - foreach (var pdc in stats.PeriodStatistics) { dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, pdc, statisticsDate)); @@ -53,24 +51,6 @@ namespace LebenshilfeBadKreuznach.Statistics return dc; } - - //public ServiceRecordPeriodStatisticsInfoDC CreateTotalStatistics(SupportConceptStatisticsDC stats, DateTime statisticsDate) - //{ - // var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4); - // dc.LeftValues[0] = "Gesamt"; - - // dc.LeftValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedThisMonth / 60); - // dc.RightValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedTotalRounded / 60); - - // dc.LeftValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedPerMonth / 60); - // dc.RightValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedTotal / 60); - - // dc.LeftValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedPerMonth - stats.MinutesProvidedThisMonth) / 60); - // dc.RightValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedTotal - stats.MinutesProvidedTotalRounded) / 60); - - // return dc; - //} - public ServiceRecordPeriodStatisticsInfoDC CreateServiceRecordPeriodStatisticsInfo(SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate) { var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4); @@ -156,42 +136,30 @@ namespace LebenshilfeBadKreuznach.Statistics minutesProvidedQuartalOld = periodStats.MinutesProvidedThisMonth; minutesProvidedWeekOld = periodStats.MinutesProvidedThisWeek; } - base.ProcessServiceRecord(sr, cb2sc, stats, statisticsDate, calc); + base.ProcessServiceRecord(sr, cb2sc, stats, statisticsDate, calc); - - //bool billable = false; - //if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null) + // AB, die komplette if-Schleife kann weg. Die war fürs Quartal + //if (periodStats != null) //{ - // billable = sr.ServiceDescription.ServiceCategory.IsBillable; - //} + // var srDc = MapToServiceRecordDCForStatistic(sr); + // var minutes = calc.GetBillableDurationInMinutes(srDc, false); + // var firstOfQuarterDt = GetFirstDateOfQuarter(statisticsDate); - - - - if (periodStats != null) - { - var srDc = MapToServiceRecordDCForStatistic(sr); - var minutes = calc.GetBillableDurationInMinutes(srDc, false); - - - var firstOfQuarterDt = GetFirstDateOfQuarter(statisticsDate); - - if (sr.Start >= firstOfQuarterDt && sr.Start < firstOfQuarterDt.AddMonths(3)) - { - minutesProvidedQuartalNew = minutes; - } - DateTime mondayDt = statisticsDate.GetLast(DayOfWeek.Monday).Date; + // if (sr.Start >= firstOfQuarterDt && sr.Start < firstOfQuarterDt.AddMonths(3)) + // { + // minutesProvidedQuartalNew = minutes; + // } + // DateTime mondayDt = statisticsDate.GetLast(DayOfWeek.Monday).Date; - if (sr.Start >= mondayDt && sr.Start < mondayDt.AddDays(7)) - { - minutesProvidedWeekNew = minutes; - } - periodStats.MinutesProvidedThisMonth = minutesProvidedQuartalOld + minutesProvidedQuartalNew; - periodStats.MinutesProvidedThisWeek = minutesProvidedWeekOld + minutesProvidedWeekNew; - - } + // if (sr.Start >= mondayDt && sr.Start < mondayDt.AddDays(7)) + // { + // minutesProvidedWeekNew = minutes; + // } + // periodStats.MinutesProvidedThisMonth = minutesProvidedQuartalOld + minutesProvidedQuartalNew; + // periodStats.MinutesProvidedThisWeek = minutesProvidedWeekOld + minutesProvidedWeekNew; + //} } protected SupportConceptPeriodStatisticsDC GetPeriodFromServiceRecord(CostBearer2SupportConcept cb2sc, List stats, ServiceRecord sr) @@ -218,14 +186,12 @@ namespace LebenshilfeBadKreuznach.Statistics } return letztePeriod; - } - - + } } - return ps; } + // AB: Kann gelöscht werden: private DateTime GetFirstDateOfQuarter(DateTime dateTime) { var firstOfQuarterDt = new DateTime(dateTime.Year, 1, 1); @@ -254,7 +220,9 @@ namespace LebenshilfeBadKreuznach.Statistics { if (periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Weekly) { - return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 4.33m * 3m * 60m; // Bewilligt pro Woche mal 4.33 (Anzahl Stunden pro Monat laut Frau Ruta) mal 3 Monate fürs Quartal * 60 Minuten + //return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 4.33m * 3m * 60m; // Bewilligt pro Woche mal 4.33 (Anzahl Stunden pro Monat laut Frau Ruta) mal 3 Monate fürs Quartal * 60 Minuten + // AB: Bitte oben löschen und das hier einkommentieren + return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 4.33m * 60m; // Bewilligt pro Woche mal 4.33 (Anzahl Stunden pro Monat laut Frau Ruta) * 60 Minuten } } return base.GetApprovedMinutesPerMonth(periodStats); From 62d066c3dada28f8c6c17eabe3814629a8d98ff9 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Fri, 12 Jun 2026 12:18:43 +0200 Subject: [PATCH 2/3] HshCologne/Export/FibuExporter.cs SupportOID=165133 --- ReportImp/HshCologne/Export/FibuExporter.cs | 51 +++++++++++++-------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/ReportImp/HshCologne/Export/FibuExporter.cs b/ReportImp/HshCologne/Export/FibuExporter.cs index b7ebda3c4..5d5724455 100644 --- a/ReportImp/HshCologne/Export/FibuExporter.cs +++ b/ReportImp/HshCologne/Export/FibuExporter.cs @@ -91,25 +91,38 @@ namespace HshCologne.Export { String sql = @" -select - SUM(sip.Claim), - org.DebitorNumber, - ib.InvoiceDate, - ib.invoicenumber, -SUBSTRING_INDEX(org.Name2, ';', 1) AS JA, -SUBSTRING_INDEX(org.Name2, ';', -1) AS BTxt, -ib.Oid - FROM -invoicebase ib -inner join serviceinvoice si on si.invoicebaseoid = ib.oid -inner join serviceinvoiceperiod sip on sip.serviceinvoiceoid = si.oid -inner join costbearer cb on ib.recipientcostbeareroid = cb.oid -inner join organisation org on org.costbeareroid = cb.oid -WHERE ib.InvoiceDate >= ':Monat_Start' AND ib.InvoiceDate < ':Monat_End' and ib.IsActive = 1 AND ib.`IsExported` = 0 -GROUP BY ib.Oid -order by ib.invoicenumber -"; - + SELECT * FROM + (SELECT + SUM(sip.Claim), + org.DebitorNumber, + ib.InvoiceDate, + ib.invoicenumber, + SUBSTRING_INDEX(org.Name2, ';', 1) AS JA, + SUBSTRING_INDEX(org.Name2, ';', -1) AS BTxt, + ib.Oid + FROM + invoicebase ib + inner join serviceinvoice si on si.invoicebaseoid = ib.oid + inner join serviceinvoiceperiod sip on sip.serviceinvoiceoid = si.oid + inner join costbearer cb on ib.recipientcostbeareroid = cb.oid + inner join organisation org on org.costbeareroid = cb.oid + WHERE ib.InvoiceDate >= ':Monat_Start' AND ib.InvoiceDate < ':Monat_End' and ib.IsActive = 1 AND ib.`IsExported` = 0 + GROUP BY ib.Oid + UNION + SELECT + sum(ii.AmountTotal), + org.DebitorNumber, + ib.InvoiceDate, + ib.invoicenumber, + SUBSTRING_INDEX(org.Name2, ';', 1) AS JA, + SUBSTRING_INDEX(org.Name2, ';', -1) AS BTxt, + ib.Oid + FROM invoicebase ib + INNER JOIN organisation org ON org.costbeareroid = ib.RecipientOrganisationOid + INNER JOIN invoiceitem ii ON ii.invoicebaseoid = ib.Oid + WHERE ib.InvoiceDate >= ':Monat_Start' AND ib.InvoiceDate < ':Monat_End' AND ib.IsActive = 1 AND ib.`IsExported` = 0 and ib.Type = 2) qry + ORDER BY qry.invoicenumber + "; return sql; } From 95ae308721afdfef83d0985d8e6289d86d681e68 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Fri, 12 Jun 2026 12:20:02 +0200 Subject: [PATCH 3/3] MalteserJohanniterJohanneshaus/Invoicing/CollectiveInvoiceTSHCreation - nur erste Minisachen SupportOID=165133 --- .../Invoicing/CollectiveInvoiceTSHCreation.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ReportImp/MalteserJohanniterJohanneshaus/Invoicing/CollectiveInvoiceTSHCreation.cs b/ReportImp/MalteserJohanniterJohanneshaus/Invoicing/CollectiveInvoiceTSHCreation.cs index 2a7bdc76f..65b5abfd6 100644 --- a/ReportImp/MalteserJohanniterJohanneshaus/Invoicing/CollectiveInvoiceTSHCreation.cs +++ b/ReportImp/MalteserJohanniterJohanneshaus/Invoicing/CollectiveInvoiceTSHCreation.cs @@ -28,16 +28,14 @@ namespace MalteserJohanniterJohanneshaus.Invoicing invoice.InvoiceBase.InvoiceTypeText = "RgTSH"; } - // die haben 2 Standorte f�r TSH, die �ber Kostenstellen unter Notiz im Hilfeplan identifiziert werden - // Es werden grunds�tzlich volle Tagess�tze aus der Verwaltung abgerechnet + // die haben 2 Standorte für TSH, die über Kostenstellen unter Notiz im Hilfeplan identifiziert werden + // Es werden grundsätzlich volle Tagessätze aus der Verwaltung abgerechnet // alle Abwesenheitstage werden nur mit 75 % berechnet - public override List GenerateServiceInvoices(long costBearerOid, - DateTimeSpan invoicePeriod, + public override List GenerateServiceInvoices(long costBearerOid, DateTimeSpan invoicePeriod, Dictionary> supportConcepts2ServiceRecords) { var costBearer = DAOFactory.GenericDAO.LoadByID(costBearerOid); var invoiceList = new List(); - bool isLvr = costBearer.Organisation.Name != null && costBearer.Organisation.Name.Contains("LVR"); if (isLvr)