70 lines
2.0 KiB
C#
70 lines
2.0 KiB
C#
using System;
|
|
using BeWo.Report;
|
|
using BeWo.Report.ReportObjects;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.Extensions;
|
|
|
|
namespace Mittelpunkt
|
|
{
|
|
[IDSpecificClass(Identifier = "MitarbeiterstundenkontoJahr")]
|
|
public partial class MitarbeiterstundenkontoJahr : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<MitarbeiterstundenkontoMonateRO>
|
|
{
|
|
|
|
|
|
public MitarbeiterstundenkontoJahr()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void SetReportDataSource(MitarbeiterstundenkontoMonateRO pRO)
|
|
{
|
|
var msb = new CustomMitarbeiterstundenkontoBerechnungMonate();
|
|
msb.CreateReport(pRO);
|
|
|
|
int startDerSamstagszeit = 13;
|
|
int endeDerSamstagszeit = 21;
|
|
|
|
foreach (var info in pRO.EmployeeInfoList)
|
|
{
|
|
foreach (var detail in info.EmployeeDetails)
|
|
{
|
|
foreach (var day in detail.EmployeeDetail.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);
|
|
|
|
detail.EmployeeDetail.Custom1 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, saturdayStart, saturdayEnd) / 60, 2, MidpointRounding.AwayFromZero);
|
|
}
|
|
}
|
|
|
|
// Custom2 Sonntagsarbeit
|
|
detail.EmployeeDetail.Custom2 += day.HoursSunday;
|
|
|
|
// Custom3 Feiertagsarbeit
|
|
detail.EmployeeDetail.Custom3 += day.HoursHoliday;
|
|
|
|
// Custom4 Nachtarbeit 21-05:59 Uhr
|
|
detail.EmployeeDetail.Custom4 += day.SpecialHours;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
this.bindingSource1.DataSource = pRO;
|
|
}
|
|
|
|
}
|
|
}
|