MH: VKM Hamm Stundenkonto

This commit is contained in:
2024-06-12 10:25:38 +02:00
parent 3aee83a65e
commit f951802017

View File

@@ -238,7 +238,7 @@ namespace VkmHamm
if (item.ServiceDescription != null &&
item.ServiceDescription.ServiceCategory != null)
{
if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit")
if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" && !IsUrlaubAbsenceServiceRecord(item) && !IsKrankAbsenceServiceRecord(item))
{
arbeitszeit += duration;
}
@@ -281,20 +281,21 @@ namespace VkmHamm
{
foreach (var ed in ro.EmployeeDetailList)
{
// Da deren Abwesenheiten ServiceRecords (Arbeitszeit) sind und die trotzdem vom Soll abgezogen werden, hat man die Stunden von der Abwesenheit doppelt.
// Daher muss nochmal die Anzahl Stunden von Abweseneheiten von den Überstunden abgezogen werden..
if (ed.TageKrankheit.HasValue)
{
ed.Ueberstunden -= ed.TageKrankheit.Value * ed.SollProTag;
ed.UeberstundenGesamt -= ed.TageKrankheit.Value * ed.SollProTag;
}
if (ed.TageUrlaub.HasValue)
{
ed.Ueberstunden -= ed.TageUrlaub.Value * ed.SollProTag;
ed.UeberstundenGesamt -= ed.TageUrlaub.Value * ed.SollProTag;
}
// Da deren Abwesenheiten ServiceRecords (Arbeitszeit) sind und die trotzdem vom Soll abgezogen werden, hat man die Stunden von der Abwesenheit doppelt.
// Daher muss nochmal die Anzahl Stunden von Abweseneheiten von den Überstunden abgezogen werden..
// >>> Mittlerweile wird die Zeit nicht mehr addiert, daher muss der Abzug raus, weil er sonst doppelt ist.
//if (ed.TageKrankheit.HasValue)
//{
// ed.Ueberstunden -= ed.TageKrankheit.Value * ed.SollProTag;
// ed.UeberstundenGesamt -= ed.TageKrankheit.Value * ed.SollProTag;
//}
//if (ed.TageUrlaub.HasValue)
//{
// ed.Ueberstunden -= ed.TageUrlaub.Value * ed.SollProTag;
// ed.UeberstundenGesamt -= ed.TageUrlaub.Value * ed.SollProTag;
//}
var contract = GetContractForDate(ed.Employee, ro.ReportStartDate, ro.ReportEndDate);
var contract = GetContractForDate(ed.Employee, ro.ReportStartDate, ro.ReportEndDate);
if (contract != null)
{
var toleranzstundenVorFaktor = contract.ProbationPeriod2;
@@ -307,7 +308,7 @@ namespace VkmHamm
ed.Custom15 = ueberstundenFuerFaktor * 1.25m; // Auf Stunden, die den Korridor überschritten haben, kommt der Faktor 1,25 drauf
ed.Ueberstunden = toleranzstundenVorFaktor; // Überstunden werden dann auf die Korridorstunden gesetzt, da die Stunden mit Faktor extra dargestellt werden
ed.UeberstundenGesamt += (ed.Ueberstunden + ed.Custom15) - (ed.Ueberstunden + ueberstundenFuerFaktor);
ed.UeberstundenGesamt += ed.Custom15 - ueberstundenFuerFaktor; // Auf ÜberstundenGesamt die Extrastunden durch den Faktor draufrechnen
}
}
}
@@ -321,12 +322,15 @@ namespace VkmHamm
if (start < new DateTime(2024, 02, 01))
return ueberstundenStd;
if (start >= new DateTime(2024, 04, 01))
{ };
if (ed.UeberstundenVormonat == null)
ed.UeberstundenVormonat = 0;
if (ed.UeberstundenGesamt == null)
ed.UeberstundenGesamt = 0;
var ueberstunden = ueberstundenStd - ed.UeberstundenVormonat - (ed.StundenSollMax - ed.StundenSollOhneUrlaubKrankheit);
var ueberstunden = ueberstundenStd - ed.UeberstundenVormonat;
if (contract.ProbationPeriod2.HasValue && contract.ProbationPeriod2.Value > 0 && ueberstunden > contract.ProbationPeriod2.Value)
{