diff --git a/BeWoAllReports.sln b/BeWoAllReports.sln index f5f79b32e..90c37f309 100644 --- a/BeWoAllReports.sln +++ b/BeWoAllReports.sln @@ -994,6 +994,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AryaSteffensHeviaTherapie", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SonjaZoeller", "ReportImp\SonjaZoeller\SonjaZoeller.csproj", "{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HwHilfswerkInklusionUndTeilhabe", "ReportImp\HwHilfswerkInklusionUndTeilhabe\HwHilfswerkInklusionUndTeilhabe.csproj", "{A65F19C6-A523-4566-8855-9141B9435B95}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|.NET = Debug|.NET @@ -12188,6 +12190,30 @@ Global {B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|Mixed Platforms.Build.0 = Release|Any CPU {B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|x86.ActiveCfg = Release|Any CPU {B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|x86.Build.0 = Release|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Debug|.NET.ActiveCfg = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Debug|.NET.Build.0 = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Debug|x86.ActiveCfg = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Debug|x86.Build.0 = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|.NET.Build.0 = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|x86.ActiveCfg = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|x86.Build.0 = Debug|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Release|.NET.ActiveCfg = Release|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Release|.NET.Build.0 = Release|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Release|Any CPU.Build.0 = Release|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Release|x86.ActiveCfg = Release|Any CPU + {A65F19C6-A523-4566-8855-9141B9435B95}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -12679,6 +12705,7 @@ Global {E0B2DAB1-3926-408F-95E5-3CDD54B3421C} = {D8A691C5-146D-4613-86CC-438F02FE9106} {E23C4943-8677-40DA-A45F-1322D1AD2443} = {D8A691C5-146D-4613-86CC-438F02FE9106} {B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA} = {D8A691C5-146D-4613-86CC-438F02FE9106} + {A65F19C6-A523-4566-8855-9141B9435B95} = {D8A691C5-146D-4613-86CC-438F02FE9106} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9} diff --git a/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs new file mode 100644 index 000000000..ae911b90c --- /dev/null +++ b/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs @@ -0,0 +1,88 @@ +using BeWo.Data.Entities; +using BeWo.Report.ReportObjects; +using BS.Shared.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HwHilfswerkInklusionUndTeilhabe +{ + public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung + { + // Im ZeitraeumeString soll die originale Endzeit dargestellt werden. + // Eine ServiceDescription mit ProzentStundenkonto < 100% reduziert normalerweise auch + // die Endzeit der zusammenhängenden Zeiträume (über GetDuration). Diese Reduktion soll + // NUR für die Darstellung NICHT greifen - die Dauer für MinutesTotal bleibt wie gehabt + // reduziert (das übernimmt unverändert die Basisklasse). + public override IList CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + { + var days = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll); + + foreach (var dd in days) + { + if (dd.ZusammenhaengendeZeitraeume == null || dd.ServiceRecords == null) + { + continue; + } + + foreach (var span in dd.ZusammenhaengendeZeitraeume) + { + DateTime originalEnd = span.EndDateTime; + + foreach (var sr in dd.ServiceRecords) + { + if (!sr.Start.HasValue) + { + continue; + } + + // Nur ServiceRecords betrachten, die zu diesem (durch die Basis bereits + // gebildeten) Zeitraum gehören. Die Basis gruppiert anhand der reduzierten + // Endzeit, daher liegt der Start dieser Records in [Start; reduziertes Ende]. + if (sr.Start.Value < span.StartDateTime || sr.Start.Value > span.EndDateTime) + { + continue; + } + + // Liefert GetDuration 0 (z.B. Abwesenheit), wird der Record für die + // Darstellung nicht berücksichtigt - genau wie in der Basisberechnung. + if (GetDuration(sr, ed) <= 0) + { + continue; + } + + DateTime srOriginalEnd = sr.Start.Value.AddMinutes((double)GetUnreduzierteDauer(sr)); + if (srOriginalEnd > originalEnd) + { + originalEnd = srOriginalEnd; + } + } + + span.EndDateTime = originalEnd; + } + } + + return days; + } + + // Originale (nicht durch ProzentStundenkonto reduzierte) Dauer eines ServiceRecords. + // Verwendet dieselbe Grunddauer-Ermittlung wie GetDuration in der Basisklasse, lässt + // aber die prozentuale Reduktion weg. + private decimal GetUnreduzierteDauer(ServiceRecord sr) + { + if (sr.GroupRoundedDuration.HasValue) + { + return sr.GroupRoundedDuration.Value; + } + + if (Settings.ShowRoundedDurationInEmployeeAnalysis) + { + return sr.RoundedDuration; + } + + return (decimal)sr.End.Value.Subtract(sr.Start.Value).TotalMinutes; + } + } +} diff --git a/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnungMonate.cs b/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnungMonate.cs new file mode 100644 index 000000000..40bcc8cfe --- /dev/null +++ b/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnungMonate.cs @@ -0,0 +1,17 @@ +using BeWo.Report.ReportObjects; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HwHilfswerkInklusionUndTeilhabe +{ + public class CustomMitarbeiterstundenkontoBerechnungMonate : MitarbeiterstundenkontoBerechnungMonate + { + public override MitarbeiterstundenkontoBerechnung CreateMitarbeiterstundenkontoBerechnung() + { + return new CustomMitarbeiterstundenkontoBerechnung(); + } + } +} diff --git a/ReportImp/HwHilfswerkInklusionUndTeilhabe/HwHilfswerkInklusionUndTeilhabe.csproj b/ReportImp/HwHilfswerkInklusionUndTeilhabe/HwHilfswerkInklusionUndTeilhabe.csproj new file mode 100644 index 000000000..b725a2b91 --- /dev/null +++ b/ReportImp/HwHilfswerkInklusionUndTeilhabe/HwHilfswerkInklusionUndTeilhabe.csproj @@ -0,0 +1,81 @@ + + + + + Debug + AnyCPU + {A65F19C6-A523-4566-8855-9141B9435B95} + Library + Properties + HwHilfswerkInklusionUndTeilhabe + 1996525562_Reports + v4.7.2 + 512 + + + + true + full + false + ..\..\CustomerDlls\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\..\CustomerDlls\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE} + Data + + + {40d8b312-ea64-49e3-a31a-5e57ed4d5654} + Report + + + {094331c3-ecee-4c89-bbfd-4c9ded89f0ef} + Service + + + {2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4} + Shared + + + + \ No newline at end of file diff --git a/ReportImp/HwHilfswerkInklusionUndTeilhabe/Properties/AssemblyInfo.cs b/ReportImp/HwHilfswerkInklusionUndTeilhabe/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..930888dd6 --- /dev/null +++ b/ReportImp/HwHilfswerkInklusionUndTeilhabe/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("KundeXyz")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("KundeXyz")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("c1fed668-adb9-47e0-b589-1389618e1b6e")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")]