MH: Monvita Stundenkonto WorkTime erst ab 01.03.26
This commit is contained in:
126
ReportImp/Monvita/CustomMitarbeiterstundenkontoBerechnung.cs
Normal file
126
ReportImp/Monvita/CustomMitarbeiterstundenkontoBerechnung.cs
Normal file
@@ -0,0 +1,126 @@
|
||||
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 Monvita
|
||||
{
|
||||
public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
|
||||
{
|
||||
protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList<ServiceRecord> groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
|
||||
{
|
||||
#region Standard
|
||||
decimal flsGesamt = 0;
|
||||
decimal arbeitszeit = 0;
|
||||
|
||||
var sum = new ServiceRecordSummary();
|
||||
sum.RecordsImBerichtszeitraum = new List<ServiceRecord>();
|
||||
|
||||
empDetail.ServiceRecordsInSelectedTimeSpan = new List<ServiceRecord>();
|
||||
|
||||
foreach (var item in groupFilteredRecords)
|
||||
{
|
||||
if (!IsServiceRecordFehlzeit(item))
|
||||
{
|
||||
if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde)
|
||||
{
|
||||
//String test = String.Format("{0:dd.MM.yyyy HH:mm}, {1:0} Minuten, {2}, {3}", item.Start, item.RoundedDuration, item.ServiceDescription.Name, item.Notice);
|
||||
|
||||
HandleServiceRecord(empDetail, item);
|
||||
#endregion
|
||||
// Die Workttime-Settings sollen erst ab dem 01.03.2026 greifen
|
||||
if (berichtsAnfang >= new DateTime(2026, 03, 01) && Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung)
|
||||
{
|
||||
empDetail.ServiceRecordsInSelectedTimeSpan.Add(item);
|
||||
|
||||
decimal duration = GetDuration(item, empDetail);
|
||||
|
||||
if (IstArbeitszeit(item))
|
||||
{
|
||||
arbeitszeit += duration;
|
||||
}
|
||||
else if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.IsBillable)
|
||||
{
|
||||
flsGesamt += duration;
|
||||
}
|
||||
}
|
||||
else if (AddServiceRecordToDuration(item))
|
||||
{
|
||||
empDetail.ServiceRecordsInSelectedTimeSpan.Add(item);
|
||||
|
||||
decimal duration = GetDuration(item, empDetail);
|
||||
|
||||
if (item.ServiceDescription != null &&
|
||||
item.ServiceDescription.ServiceCategory != null &&
|
||||
item.ServiceDescription.ServiceCategory.IsBillable)
|
||||
sum.IstAbrechenbar += duration;
|
||||
else
|
||||
sum.IstNichtAbrechenbar += duration;
|
||||
|
||||
|
||||
//Prüfe ProzentStundenkonto, wenn der Wert != 100 ist, dann packe die prozentuale Differenz von abbrechenbar auf nicht abbrechenbar
|
||||
decimal prozent = 100;
|
||||
if (item.ServiceDescription.ProzentStundenkonto.HasValue)
|
||||
{
|
||||
prozent = item.ServiceDescription.ProzentStundenkonto.Value;
|
||||
}
|
||||
else if (item.ServiceDescription.ServiceCategory.ProzentStundenkonto.HasValue)
|
||||
{
|
||||
prozent = item.ServiceDescription.ServiceCategory.ProzentStundenkonto.Value;
|
||||
}
|
||||
if (prozent == 0)
|
||||
{
|
||||
int test = 0;
|
||||
}
|
||||
if (prozent != 100 && prozent > 0)
|
||||
{
|
||||
var ohneProzent = duration / prozent * 100;
|
||||
|
||||
var diff = duration - ohneProzent;
|
||||
|
||||
sum.IstAbrechenbar -= diff;
|
||||
sum.IstNichtAbrechenbar += diff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
sum.RecordsImBerichtszeitraum.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (berichtsAnfang >= new DateTime(2026, 03, 01) && Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung)
|
||||
{
|
||||
sum.IstAbrechenbar = flsGesamt;
|
||||
sum.IstNichtAbrechenbar = arbeitszeit - flsGesamt;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
public override void ConfigurePauseSettings(MitarbeiterstundenkontoRO.DayDetail dd)
|
||||
{
|
||||
if (dd.Date >= new DateTime(2026, 03, 01) && Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung)
|
||||
{
|
||||
if (Settings.EnableAutomaticPauses)
|
||||
{
|
||||
dd.MaxHoursUntilBreak = 6;
|
||||
dd.BreakMinutes = 30;
|
||||
dd.MaxHoursUntilBreak2 = 9;
|
||||
dd.BreakMinutes2 = 15;
|
||||
}
|
||||
}
|
||||
}
|
||||
public override bool AddServiceRecordToDuration(ServiceRecord item)
|
||||
{
|
||||
if (item.Start.HasValue && item.Start.Value >= new DateTime(2026, 03, 01) && Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung)
|
||||
{
|
||||
return IstArbeitszeit(item);
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 Monvita
|
||||
{
|
||||
public class CustomMitarbeiterstundenkontoBerechnungMonate : MitarbeiterstundenkontoBerechnungMonate
|
||||
{
|
||||
public override MitarbeiterstundenkontoBerechnung CreateMitarbeiterstundenkontoBerechnung()
|
||||
{
|
||||
return new CustomMitarbeiterstundenkontoBerechnung();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,12 +33,14 @@
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<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.Pdf.v23.2.Core, 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.Xpo.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<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.Wizard, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
@@ -70,6 +72,8 @@
|
||||
<Compile Include="CustomerDataReport.Designer.cs">
|
||||
<DependentUpon>CustomerDataReport.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomMitarbeiterstundenkontoBerechnung.cs" />
|
||||
<Compile Include="CustomMitarbeiterstundenkontoBerechnungMonate.cs" />
|
||||
<Compile Include="CustomReportCreator.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ServicesOverviewReportAlt.cs">
|
||||
@@ -101,10 +105,18 @@
|
||||
</EmbeddedResource>
|
||||
</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>
|
||||
|
||||
Reference in New Issue
Block a user