Files
BeWoPlaner/ReportImp/DerKarrenSbd/CustomMitarbeiterstundenkontoBerechnung.cs

137 lines
4.9 KiB
C#

using System;
using System.Collections.Generic;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using BeWo.Service.Dienstplanung;
namespace DerKarrenSbd
{
public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
{
public override List<DateTime> GetFeiertage(int year)
{
var list = base.GetFeiertage(year);
list.Add(new DateTime(year, 12, 31));
return list;
}
public override bool IsKrankheitAbsenceTime(AbsenceTime absenceTime)
{
return !String.IsNullOrEmpty(absenceTime.AbsenceReason.Description) &&
(absenceTime.AbsenceReason.Description.ToLower().IndexOf("arbeitsunfähig") >= 0
|| absenceTime.AbsenceReason.Description.ToLower().IndexOf("krank") >= 0 || absenceTime.AbsenceReason.Description.ToLower() == "au" || absenceTime.AbsenceReason.Description.ToLower() == "quarantäne");
}
//public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item)
//{
// if (item.ServiceDescription != null && item.ServiceDescription.Category != null)
// {
// if (item.ServiceDescription.Category.Name == "Arbeitszeit")
// {
// return true;
// }
// }
// return false;
//}
//protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList<StundenkontoServiceRecord> groupFilteredRecords, DateTime berichtsAnfang,
// DateTime berichtsEnde)
//{
// decimal flsGesamt = 0;
// decimal arbeitszeit = 0;
// var sum = new ServiceRecordSummary();
// sum.RecordsImBerichtszeitraum = new List<StundenkontoServiceRecord>();
// base.CorrectOverlappingTimes(groupFilteredRecords);
// foreach (var item in groupFilteredRecords)
// {
// if (!IsServiceRecordFehlzeit(item))
// {
// if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde)
// {
// if (AddServiceRecordToDuration(item))
// {
// decimal duration = 0;
// if (item.GroupRoundedDuration.HasValue)
// {
// duration = item.GroupRoundedDuration.Value;
// }
// else
// {
// duration = item.RoundedDuration;
// }
// if (item.ServiceDescription != null &&
// item.ServiceDescription.Category != null)
// {
// if (item.ServiceDescription.Category.Name == "Arbeitszeit")
// {
// arbeitszeit += duration;
// }
// else if (item.ServiceDescription.Category.IsBillable)
// {
// flsGesamt += duration;
// }
// }
// sum.RecordsImBerichtszeitraum.Add(item);
// }
// }
// }
// sum.IstAbrechenbar = flsGesamt;
// sum.IstNichtAbrechenbar = arbeitszeit - flsGesamt;
// return sum;
// }
public override void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro)
{
//Setze Überstunden auf 0 ab 1.4.2019
DateTime startJahr = new DateTime(2019, 4, 1);
foreach (var ed in ro.EmployeeDetailList)
{
var newcontracts = new List<Contract>();
foreach (var ctr in ed.Employee.Contracts)
{
bool add = false;
if (!ctr.ContractEndDate.HasValue)
{
add = true;
}
else if (ctr.ContractEndDate >= startJahr)
{
add = true;
}
if (add)
{
newcontracts.Add(ctr);
if (!ctr.EntryDate.HasValue || ctr.EntryDate < startJahr)
{
ctr.EntryDate = startJahr;
}
}
}
ed.Employee.Contracts = newcontracts;
}
base.CreateEmployeeDetails(ro);
foreach (var ed in ro.EmployeeDetailList)
{
ed.Custom1 = ed.FlsIst - ed.StundenSollOhneUrlaubKrankheit;
}
}
}
}