91 lines
2.9 KiB
C#
91 lines
2.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using BeWo.Data.Access;
|
|
using BeWo.Data.Entities;
|
|
using BeWo.Report.ReportObjects;
|
|
using BeWo.Service.ServiceImplementations;
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.Extensions;
|
|
using BeWo.Service.Dienstplanung;
|
|
using static BeWo.Report.ReportObjects.MitarbeiterauslastungRO;
|
|
|
|
namespace LebenshilfeStade
|
|
{
|
|
public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
|
|
{
|
|
private decimal maxWochenstunden = 40;
|
|
private const int ANZ_WOCHENTAGE = 5;
|
|
private Contract currentContract = null;
|
|
|
|
//private decimal GetFaktorStunden(Contract c, decimal geleisteteStunden, DateTime monat)
|
|
//{
|
|
// // Erst ab 2024 soll ein Faktor auf die Gesamtstunden draufgerechnet werden, der den Wochenstunden / Wochen-FLS aus dem Vertrag entspricht
|
|
// if (monat.Year < 2024 || c == null)
|
|
// return 0;
|
|
|
|
// decimal faktor = 1.25m;
|
|
// if (c.WeeklyFLS.HasValue && c.WeeklyFLS.Value != 0 && c.WeeklyTotalHours.HasValue && c.WeeklyTotalHours.Value != 0)
|
|
// faktor = c.WeeklyTotalHours.Value / c.WeeklyFLS.Value;
|
|
// var faktorStunden = geleisteteStunden * faktor - geleisteteStunden;
|
|
|
|
// return faktorStunden;
|
|
//}
|
|
|
|
public override decimal AddiereBenutzerdefiniertenWertAufIstStunden(Contract c, decimal istStunden, DateTime monat)
|
|
{
|
|
// Erst ab 2024 soll ein Faktor auf die Gesamtstunden draufgerechnet werden, der den Wochenstunden / Wochen-FLS aus dem Vertrag entspricht
|
|
if (monat.Year < 2024 || c == null)
|
|
return 0;
|
|
|
|
decimal faktor = 1.25m;
|
|
if (c.WeeklyFLS.HasValue && c.WeeklyFLS.Value != 0 && c.WeeklyTotalHours.HasValue && c.WeeklyTotalHours.Value != 0)
|
|
faktor = c.WeeklyTotalHours.Value / c.WeeklyFLS.Value;
|
|
var faktorStunden = istStunden * faktor - istStunden;
|
|
|
|
return faktorStunden;
|
|
}
|
|
|
|
public override bool ShouldCreateDayDetails()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
|
|
public override MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
|
{
|
|
var dd = base.CreateDayDetail(date, ed);
|
|
dd.MaxHoursUntilBreak = null;
|
|
dd.MaxHoursUntilBreak2 = null;
|
|
dd.BreakMinutes = null;
|
|
dd.BreakMinutes2 = null;
|
|
|
|
return dd;
|
|
}
|
|
|
|
public override List<DateTime> GetFeiertage(int year)
|
|
{
|
|
var list = base.GetFeiertage(year);
|
|
|
|
if (year > 2017)
|
|
{
|
|
list.Add(new DateTime(year, 10, 31)); // , "Reformationstag"));
|
|
}
|
|
|
|
DateTime osterSonntag = GetOsterSonntag(year);
|
|
|
|
list.Remove(osterSonntag.AddDays(60)); // Fronleichnam
|
|
|
|
list.Remove(new DateTime(year, 11, 1)); // Allerheiligen
|
|
|
|
list.Add(new DateTime(year, 12, 31));
|
|
|
|
//list.Remove(new DateTime(year, 12, 24)); // Heiligabend
|
|
|
|
return list;
|
|
}
|
|
}
|
|
}
|