MH: Neuprojekt HwHilfswerkInklusionUndTeilhabe Zeitdarstellung bei weniger % Stundenkonto

SupportOID=164224
This commit is contained in:
2026-06-02 16:58:14 +02:00
parent c4377e93f5
commit 8845a852ce
5 changed files with 249 additions and 0 deletions

View File

@@ -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}

View File

@@ -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<MitarbeiterstundenkontoRO.DayDetail> CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList<ServiceRecord> 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;
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A65F19C6-A523-4566-8855-9141B9435B95}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>HwHilfswerkInklusionUndTeilhabe</RootNamespace>
<AssemblyName>1996525562_Reports</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\CustomerDlls\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\CustomerDlls\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Drawing.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Office.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Export, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CustomMitarbeiterstundenkontoBerechnung.cs" />
<Compile Include="CustomMitarbeiterstundenkontoBerechnungMonate.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\..\Report\Report.csproj">
<Project>{40d8b312-ea64-49e3-a31a-5e57ed4d5654}</Project>
<Name>Report</Name>
</ProjectReference>
<ProjectReference Include="..\..\Service\Service.csproj">
<Project>{094331c3-ecee-4c89-bbfd-4c9ded89f0ef}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\..\Shared\Shared.csproj">
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -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")]