137 lines
4.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|