From a5e17bc0076d4dfd9bbb6ca5023b399b6850fc82 Mon Sep 17 00:00:00 2001 From: HirschleM Date: Fri, 19 Dec 2025 08:30:26 +0100 Subject: [PATCH] MH: Wendepunkt Velbert Regenartionstage als Urlaub --- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +++++++++++++ ...MitarbeiterstundenkontoBerechnungMonate.cs | 18 +++++++++++++ .../Mitarbeiterarbeitszeitkonto.cs | 15 ++++++++--- .../Mitarbeiterarbeitszeitkonto.designer.cs | 2 +- .../Mitarbeiterstundenkonto.cs | 5 ++-- .../Mitarbeiterstundenkonto.designer.cs | 2 +- .../MitarbeiterstundenkontoJahr.cs | 5 ++-- .../MitarbeiterstundenkontoJahr.designer.cs | 2 +- .../Service/CustomVacationService.cs | 27 ++++++++++++++++++- .../ServiceInvoiceReport.Designer.cs | 2 +- .../WendepunktVelbert/ServiceInvoiceReport.cs | 3 ++- .../WendepunktVelbert.csproj | 4 +++ 12 files changed, 91 insertions(+), 13 deletions(-) create mode 100644 ReportImp/WendepunktVelbert/CustomMitarbeiterstundenkontoBerechnung.cs create mode 100644 ReportImp/WendepunktVelbert/CustomMitarbeiterstundenkontoBerechnungMonate.cs diff --git a/ReportImp/WendepunktVelbert/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/WendepunktVelbert/CustomMitarbeiterstundenkontoBerechnung.cs new file mode 100644 index 000000000..7bda4c85f --- /dev/null +++ b/ReportImp/WendepunktVelbert/CustomMitarbeiterstundenkontoBerechnung.cs @@ -0,0 +1,19 @@ +using BeWo.Data.Entities; +using BeWo.Report.ReportObjects; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WendepunktVelbert +{ + public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung + { + //public override bool IsUrlaubAbsenceTime(AbsenceTime absenceTime) + //{ + // return !String.IsNullOrEmpty(absenceTime.AbsenceReason.Description) && + // (absenceTime.AbsenceReason.Description.ToLower().IndexOf("urlaub") >= 0 || absenceTime.AbsenceReason.Description.ToLower().IndexOf("regeneration") >= 0); + //} + } +} diff --git a/ReportImp/WendepunktVelbert/CustomMitarbeiterstundenkontoBerechnungMonate.cs b/ReportImp/WendepunktVelbert/CustomMitarbeiterstundenkontoBerechnungMonate.cs new file mode 100644 index 000000000..a5a40c69a --- /dev/null +++ b/ReportImp/WendepunktVelbert/CustomMitarbeiterstundenkontoBerechnungMonate.cs @@ -0,0 +1,18 @@ +using BeWo.Data.Entities; +using BeWo.Report.ReportObjects; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WendepunktVelbert +{ + public class CustomMitarbeiterstundenkontoBerechnungMonate : MitarbeiterstundenkontoBerechnungMonate + { + public override MitarbeiterstundenkontoBerechnung CreateMitarbeiterstundenkontoBerechnung() + { + return new CustomMitarbeiterstundenkontoBerechnung(); + } + } +} diff --git a/ReportImp/WendepunktVelbert/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/WendepunktVelbert/Mitarbeiterarbeitszeitkonto.cs index 37ef95f4e..00127b0c3 100644 --- a/ReportImp/WendepunktVelbert/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/WendepunktVelbert/Mitarbeiterarbeitszeitkonto.cs @@ -8,7 +8,7 @@ using BeWo.Service.Plugins; using BS.Shared.Core; using DevExpress.XtraReports.UI; -namespace BeWo.Report.DefaultReports +namespace WendepunktVelbert { [IDSpecificClass(Identifier = "Mitarbeiterarbeitszeitkonto")] public partial class Mitarbeiterarbeitszeitkonto : DevExpress.XtraReports.UI.XtraReport, IBeWoReport @@ -21,11 +21,12 @@ namespace BeWo.Report.DefaultReports public void SetReportDataSource(MitarbeiterstundenkontoRO pRO) { - var msb = PluginLoader.FindClass(); - msb.CreateReport(pRO); + var msb = new CustomMitarbeiterstundenkontoBerechnung(); + msb.CreateReport(pRO); foreach (var ed in pRO.EmployeeDetailList) { + var c = ed.Employee.GetValidContractForDate(pRO.ReportStartDate); if (c != null) { @@ -44,13 +45,21 @@ namespace BeWo.Report.DefaultReports { foreach (var day in ed.Days) { + // Zeit von Urlaub in Sonstige schieben. Regeneration soll vom Urlaubsbudget abgezogen werden, aber nicht als solcher einsortiert werden + + if (day.HoursOtherAbsenceTimes > 0) { //CB: In der Standard Berechnungsklasse wurden die anderen Abwesenheiten auch auf die MinutesTotal addiert, daher hier wieder abziehen //Ich traue mich nicht, das in der Berechnungsklasse zu ändern, weil es dann bestimmt wieder zu Fehlern in angepassten Konten führt. day.MinutesTotal -= day.HoursOtherAbsenceTimes * 60; } + //if (day.ZeitraeumeString.Contains("Regeneration")) + //{ + // day.HoursOtherAbsenceTimes += day.HoursInVacation; + // day.HoursInVacation -= day.HoursOtherAbsenceTimes; + //} ed.UrlaubUndKrankheit += (day.HoursSick + day.HoursInVacation + day.HoursOtherAbsenceTimes); } } diff --git a/ReportImp/WendepunktVelbert/Mitarbeiterarbeitszeitkonto.designer.cs b/ReportImp/WendepunktVelbert/Mitarbeiterarbeitszeitkonto.designer.cs index 65281aadb..9171d3fc9 100644 --- a/ReportImp/WendepunktVelbert/Mitarbeiterarbeitszeitkonto.designer.cs +++ b/ReportImp/WendepunktVelbert/Mitarbeiterarbeitszeitkonto.designer.cs @@ -1,5 +1,5 @@ using BeWo.Report.ReportObjects; -namespace BeWo.Report.DefaultReports +namespace WendepunktVelbert { partial class Mitarbeiterarbeitszeitkonto { diff --git a/ReportImp/WendepunktVelbert/Mitarbeiterstundenkonto.cs b/ReportImp/WendepunktVelbert/Mitarbeiterstundenkonto.cs index cb6a28fda..20e86e964 100644 --- a/ReportImp/WendepunktVelbert/Mitarbeiterstundenkonto.cs +++ b/ReportImp/WendepunktVelbert/Mitarbeiterstundenkonto.cs @@ -1,11 +1,12 @@ using System; using System.Linq; +using BeWo.Report; using BeWo.Report.ReportObjects; using BeWo.Service.Plugins; using BS.Shared.Core; using static BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO; -namespace BeWo.Report.DefaultReports +namespace WendepunktVelbert { [IDSpecificClass(Identifier = "Mitarbeiterstundenkonto")] public partial class Mitarbeiterstundenkonto : DevExpress.XtraReports.UI.XtraReport, IBeWoReport @@ -20,7 +21,7 @@ namespace BeWo.Report.DefaultReports public void SetReportDataSource(MitarbeiterstundenkontoRO pRO) { //var msb = new MitarbeiterstundenkontoBerechnung(); - var msb = PluginLoader.FindClass(); + var msb = new CustomMitarbeiterstundenkontoBerechnung(); msb.CreateReport(pRO); foreach (var detail in pRO.EmployeeDetailList) diff --git a/ReportImp/WendepunktVelbert/Mitarbeiterstundenkonto.designer.cs b/ReportImp/WendepunktVelbert/Mitarbeiterstundenkonto.designer.cs index 4d9b77c53..965754f91 100644 --- a/ReportImp/WendepunktVelbert/Mitarbeiterstundenkonto.designer.cs +++ b/ReportImp/WendepunktVelbert/Mitarbeiterstundenkonto.designer.cs @@ -1,5 +1,5 @@ using BeWo.Report.ReportObjects; -namespace BeWo.Report.DefaultReports +namespace WendepunktVelbert { partial class Mitarbeiterstundenkonto { diff --git a/ReportImp/WendepunktVelbert/MitarbeiterstundenkontoJahr.cs b/ReportImp/WendepunktVelbert/MitarbeiterstundenkontoJahr.cs index 7980f59c5..39b4e6ea6 100644 --- a/ReportImp/WendepunktVelbert/MitarbeiterstundenkontoJahr.cs +++ b/ReportImp/WendepunktVelbert/MitarbeiterstundenkontoJahr.cs @@ -1,11 +1,12 @@ using System; using System.Linq; +using BeWo.Report; using BeWo.Report.ReportObjects; using BeWo.Service.Plugins; using BS.Shared.Core; using static BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO; -namespace BeWo.Report.DefaultReports +namespace WendepunktVelbert { [IDSpecificClass(Identifier = "MitarbeiterstundenkontoJahr")] public partial class MitarbeiterstundenkontoJahr : DevExpress.XtraReports.UI.XtraReport, IBeWoReport @@ -19,7 +20,7 @@ namespace BeWo.Report.DefaultReports public void SetReportDataSource(MitarbeiterstundenkontoMonateRO pRO) { - var msb = PluginLoader.FindClass(); + var msb = new CustomMitarbeiterstundenkontoBerechnungMonate(); msb.CreateReport(pRO); diff --git a/ReportImp/WendepunktVelbert/MitarbeiterstundenkontoJahr.designer.cs b/ReportImp/WendepunktVelbert/MitarbeiterstundenkontoJahr.designer.cs index 0bc5d8d1b..a36019dde 100644 --- a/ReportImp/WendepunktVelbert/MitarbeiterstundenkontoJahr.designer.cs +++ b/ReportImp/WendepunktVelbert/MitarbeiterstundenkontoJahr.designer.cs @@ -1,5 +1,5 @@ using BeWo.Report.ReportObjects; -namespace BeWo.Report.DefaultReports +namespace WendepunktVelbert { partial class MitarbeiterstundenkontoJahr { diff --git a/ReportImp/WendepunktVelbert/Service/CustomVacationService.cs b/ReportImp/WendepunktVelbert/Service/CustomVacationService.cs index c9aca98d0..55a79efd6 100644 --- a/ReportImp/WendepunktVelbert/Service/CustomVacationService.cs +++ b/ReportImp/WendepunktVelbert/Service/CustomVacationService.cs @@ -1,4 +1,6 @@ -using BeWo.Service.Plugins; +using BeWo.Data.Access; +using BeWo.Data.Entities; +using BeWo.Service.Plugins; using BS.Shared.DataContracts; using System; using System.Collections.Generic; @@ -29,5 +31,28 @@ namespace WendepunktVelbert.Service return sonderurlaubsItems; } + // In die VacationReasonIDs müssen auch die Regenerationstage einbezogen werden, da diese sonst nicht vom Urlaubskontingent abgezogen werden + public override List GetVacationReasonIDs() + { + var res = new List(); + var filters = new List { "URLAUB", "REGENERATION" }; + var reasons = DAOFactory.GenericDAO.GetAll(); + + foreach (var reason in reasons) + { + var desc = reason.Description.ToUpper(); + + foreach (var filter in filters) + { + if (desc.Contains(filter)) + { + res.Add(reason.Oid.Value); + break; + } + } + } + + return res; + } } } diff --git a/ReportImp/WendepunktVelbert/ServiceInvoiceReport.Designer.cs b/ReportImp/WendepunktVelbert/ServiceInvoiceReport.Designer.cs index 2b4e43fb2..15ea3fb5d 100644 --- a/ReportImp/WendepunktVelbert/ServiceInvoiceReport.Designer.cs +++ b/ReportImp/WendepunktVelbert/ServiceInvoiceReport.Designer.cs @@ -1,5 +1,5 @@ using BeWo.Report.ReportObjects; -namespace BeWo.Report.DefaultReports +namespace WendepunktVelbert { partial class ServiceInvoiceReport { diff --git a/ReportImp/WendepunktVelbert/ServiceInvoiceReport.cs b/ReportImp/WendepunktVelbert/ServiceInvoiceReport.cs index b5c77990b..69b346884 100644 --- a/ReportImp/WendepunktVelbert/ServiceInvoiceReport.cs +++ b/ReportImp/WendepunktVelbert/ServiceInvoiceReport.cs @@ -1,10 +1,11 @@ using System; using System.Text; +using BeWo.Report; using BeWo.Report.ReportObjects; using BS.Shared.Extensions; using DevExpress.XtraReports.UI; -namespace BeWo.Report.DefaultReports +namespace WendepunktVelbert { public partial class ServiceInvoiceReport : XtraReport, IBeWoReport { diff --git a/ReportImp/WendepunktVelbert/WendepunktVelbert.csproj b/ReportImp/WendepunktVelbert/WendepunktVelbert.csproj index 696085a07..a196c5eaa 100644 --- a/ReportImp/WendepunktVelbert/WendepunktVelbert.csproj +++ b/ReportImp/WendepunktVelbert/WendepunktVelbert.csproj @@ -31,6 +31,7 @@ 4 + @@ -39,6 +40,7 @@ + @@ -55,6 +57,8 @@ + +