121 lines
4.6 KiB
C#
121 lines
4.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using BeWo.Data.Entities;
|
|
using BeWo.Report.ReportObjects;
|
|
using BeWo.Service.Configuration;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BeWo.Service.Dienstplanung;
|
|
|
|
namespace ChristinaFrommen
|
|
{
|
|
public class CustomMitarbeiterStundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
|
|
{
|
|
public override List<DateTime> GetFeiertage(int year)
|
|
{
|
|
var feiertage = base.GetFeiertage(year);
|
|
|
|
feiertage.Add(new DateTime(year, 12, 31));
|
|
|
|
return feiertage;
|
|
}
|
|
public override decimal GetFeiertagsFaktor(DateTime start)
|
|
{
|
|
if (start.Month == 12 && (start.Day == 24 || start.Day == 31))
|
|
return 0.5m;
|
|
else
|
|
return base.GetFeiertagsFaktor(start);
|
|
}
|
|
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;
|
|
}
|
|
|
|
protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList<StundenkontoServiceRecord> groupFilteredRecords, DateTime berichtsAnfang,
|
|
DateTime berichtsEnde)
|
|
{
|
|
var sum = new ServiceRecordSummary();
|
|
sum.RecordsImBerichtszeitraum = new List<StundenkontoServiceRecord>();
|
|
var settings = AppSettings.CreateSettings();
|
|
|
|
empDetail.ServiceRecordsInSelectedTimeSpan = new List<StundenkontoServiceRecord>();
|
|
|
|
foreach (var item in groupFilteredRecords)
|
|
{
|
|
if (!IsServiceRecordFehlzeit(item))
|
|
{
|
|
if (item.Start >= berichtsAnfang && item.Start < 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);
|
|
if (AddServiceRecordToDuration(item))
|
|
{
|
|
empDetail.ServiceRecordsInSelectedTimeSpan.Add(item);
|
|
|
|
String test = String.Format("{0:dd.MM. HH:mm} - {1:HH:mm}, {2}", item.Start, item.End, item.RoundedDuration);
|
|
|
|
decimal duration = 0;
|
|
decimal durationNA = 0;
|
|
|
|
if (item.GroupRoundedDuration.HasValue)
|
|
{
|
|
duration = item.GroupRoundedDuration.Value;
|
|
}
|
|
else
|
|
{
|
|
if (settings.ShowRoundedDurationInEmployeeAnalysis)
|
|
{
|
|
duration = item.RoundedDuration;
|
|
}
|
|
else
|
|
{
|
|
duration = (decimal)item.End.Subtract(item.Start).TotalMinutes;
|
|
}
|
|
}
|
|
|
|
if (item.ServiceDescription.Name.Contains("Fehlkontakt"))
|
|
{
|
|
durationNA = duration * 0.2m;
|
|
duration *= 0.8m;
|
|
}
|
|
|
|
|
|
if (item.ServiceDescription != null &&
|
|
item.ServiceDescription.Category != null &&
|
|
item.ServiceDescription.Category.IsBillable)
|
|
{
|
|
sum.IstAbrechenbar += duration;
|
|
sum.IstNichtAbrechenbar += durationNA;
|
|
}
|
|
else
|
|
sum.IstNichtAbrechenbar += duration;
|
|
|
|
if (durationNA > 0)
|
|
{
|
|
int test2 = 0;
|
|
}
|
|
}
|
|
sum.RecordsImBerichtszeitraum.Add(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
return sum;
|
|
}
|
|
}
|
|
}
|
|
|