From 0165e7ce4c676d8615c5fb95fd4723f0c0908bd1 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Fri, 10 Apr 2026 13:41:56 +0200 Subject: [PATCH] =?UTF-8?q?Ruhrstern/Reporting/CustomMitarbeiterstundenkon?= =?UTF-8?q?toBerechnung=20-=20Bugfix,=20Berechnung=20auch=20f=C3=BCr=20Arb?= =?UTF-8?q?eitszeiten=20hinterlegt=20SupportOID=3D159885?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...CustomMitarbeiterstundenkontoBerechnung.cs | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/ReportImp/Ruhrstern/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/Ruhrstern/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs index 6f026b7a9..bcb9b05c0 100644 --- a/ReportImp/Ruhrstern/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Ruhrstern/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs @@ -58,7 +58,7 @@ namespace Ruhrstern //Berechne Soll, entweder aus Vertrag oder Arbeitszeiten if (HatArbeitszeitImZeitraum(ed.Employee.Arbeitszeiten, date, date)) { - sollDiesenTag = GetSollNachArbeitszeitenFuerTag(ed.Employee, date); + sollDiesenTag = GetSollNachArbeitszeitenTag(ed.Employee, date); } else @@ -109,5 +109,34 @@ namespace Ruhrstern return sollDiesenTag; } - } + + protected decimal GetSollNachArbeitszeitenTag(Employee emp, DateTime tag) + { + decimal soll = 0; + var fak = GetFeiertagsFaktor(tag); + + if (fak == 1) + { + fak = 0; + } + + if (fak < 1) + { + if (emp.Arbeitszeiten != null) + { + foreach (var az in emp.Arbeitszeiten) + { + if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) && + (!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag)) + { + var std = GetArbeitszeitStundenFuerTag(az, tag); + soll += (std * (1 - fak)); + } + } + } + } + + return soll; + } + } }