Files
BeWoPlaner/ReportImp/ArcheTecklenburg/Mitarbeiterstundenkonto.cs

65 lines
1.8 KiB
C#

using System;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
using BS.Shared.Extensions;
namespace ArcheTecklenburg
{
[IDSpecificClass(Identifier = "Mitarbeiterstundenkonto")]
public partial class Mitarbeiterstundenkonto : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<MitarbeiterstundenkontoRO>
{
public Mitarbeiterstundenkonto()
{
InitializeComponent();
}
public void SetReportDataSource(MitarbeiterstundenkontoRO pRO)
{
var msb = new CustomMitarbeiterstundenkontoBerechnung();
msb.CreateReport(pRO);
int startDerSamstagszeit = 13;
int endeDerSamstagszeit = 21;
foreach (var emp in pRO.EmployeeDetailList)
{
foreach (var day in emp.Days)
{
// Custom1 Samstagsarbeit 13-21 Uhr
if (day.ServiceRecords != null && day.ServiceRecords.Count > 0)
{
foreach (var sr in day.ServiceRecords)
{
var d1 = sr.Start;
var duration = sr.GroupRoundedDuration != null ? Convert.ToDouble(sr.GroupRoundedDuration.Value) : sr.DurationMinutes;
var saturday = d1.GetNextDayOfWeek(DayOfWeek.Saturday);
var unroundedEnd = d1.AddMinutes(duration);
var saturdayStart = new DateTime(saturday.Year, saturday.Month, saturday.Day, 13, 0, 0);
var saturdayEnd = new DateTime(saturday.Year, saturday.Month, saturday.Day, 21, 0, 0);
emp.Custom1 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, saturdayStart, saturdayEnd) / 60, 2, MidpointRounding.AwayFromZero);
}
}
// Custom2 Sonntagsarbeit
emp.Custom2 += day.HoursSunday;
// Custom3 Feiertagsarbeit
emp.Custom3 += day.HoursHoliday;
// Custom4 Nachtarbeit 21-05:59 Uhr
emp.Custom4 += day.SpecialHours;
}
}
this.bindingSource1.DataSource = pRO;
}
}
}