From 6fd9654740bb7d4873e6ea1243bdf926c362dfd8 Mon Sep 17 00:00:00 2001 From: Marcel Hirschle Date: Thu, 28 Dec 2023 10:04:59 +0100 Subject: [PATCH] MH: Kollegium halbe Urlaubstage raus --- ReportImp/KollegiumEv/KollegiumEv.csproj | 1 + .../Service/CustomVacationService.cs | 33 +++++++++++++++++++ Service/Plugins/VacationService.cs | 7 ++++ 3 files changed, 41 insertions(+) create mode 100644 ReportImp/KollegiumEv/Service/CustomVacationService.cs diff --git a/ReportImp/KollegiumEv/KollegiumEv.csproj b/ReportImp/KollegiumEv/KollegiumEv.csproj index 3e2bce4c5..5d4978d65 100644 --- a/ReportImp/KollegiumEv/KollegiumEv.csproj +++ b/ReportImp/KollegiumEv/KollegiumEv.csproj @@ -116,6 +116,7 @@ RechnungAssistenzstunden.cs + Component diff --git a/ReportImp/KollegiumEv/Service/CustomVacationService.cs b/ReportImp/KollegiumEv/Service/CustomVacationService.cs new file mode 100644 index 000000000..9bcf5eb2a --- /dev/null +++ b/ReportImp/KollegiumEv/Service/CustomVacationService.cs @@ -0,0 +1,33 @@ +using BeWo.Service.Plugins; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace KollegiumEv.Service +{ + public class CustomVacationService: VacationService + { + public override decimal UrlaubstageRunden(decimal urlaubstage) + { + if (urlaubstage - (int)urlaubstage <= 0.1m) + { + urlaubstage = Math.Round(urlaubstage, MidpointRounding.AwayFromZero); + } + else if (urlaubstage - (int)urlaubstage <= 0.5m) + { + decimal digits = urlaubstage - (int)urlaubstage; + + // aufrunden auf halbe Tage rausgenommen + urlaubstage = urlaubstage - digits; + } + else if (urlaubstage - (int)urlaubstage <= 1.0m) + { + urlaubstage = Math.Ceiling(urlaubstage); + } + + return urlaubstage; + } + } +} diff --git a/Service/Plugins/VacationService.cs b/Service/Plugins/VacationService.cs index d8c36455d..198a1661f 100644 --- a/Service/Plugins/VacationService.cs +++ b/Service/Plugins/VacationService.cs @@ -1012,6 +1012,13 @@ namespace BeWo.Service.Plugins } // Runden + urlaubstage = UrlaubstageRunden(urlaubstage); + + return urlaubstage; + } + + public virtual decimal UrlaubstageRunden(decimal urlaubstage) + { if (urlaubstage - (int)urlaubstage <= 0.1m) { urlaubstage = Math.Round(urlaubstage, MidpointRounding.AwayFromZero);