Files
BeWoPlaner/ReportImp/SHKServiceSBD/Mitarbeiterarbeitszeitkonto.cs

86 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
using DevExpress.XtraReports.UI;
namespace SHKServiceSBD
{
[IDSpecificClass(Identifier = "Mitarbeiterarbeitszeitkonto")]
public partial class Mitarbeiterarbeitszeitkonto : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<MitarbeiterstundenkontoRO>
{
public Mitarbeiterarbeitszeitkonto()
{
InitializeComponent();
}
public void SetReportDataSource(MitarbeiterstundenkontoRO pRO)
{
var msb = new CustomMitarbeiterstundenkontoBerechnung();
msb.CreateReport(pRO);
foreach (var ed in pRO.EmployeeDetailList)
{
ed.FirstName = ed.Employee.PersonnelNumber;
var c = ed.Employee.GetValidContractForDate(pRO.ReportStartDate);
if (c != null)
{
if (c.MonthlyTotalHours.HasValue && c.MonthlyTotalHours.Value > 0)
{
ed.Regelarbeitszeit = String.Format("{0:0.00} Stunden im Monat", c.MonthlyTotalHours);
}
else if (c.WeeklyTotalHours.HasValue)
{
ed.Regelarbeitszeit = String.Format("{0:0.00} Stunden pro Woche", c.WeeklyTotalHours);
}
}
ed.UrlaubUndKrankheit = 0;
foreach (var day in ed.Days)
{
ed.UrlaubUndKrankheit += (day.HoursSick + day.HoursInVacation);
}
foreach (var dd in ed.Days)
{
dd.Custom10 = dd.ZeitraeumeString;
if (dd.IstFeiertag && dd.AbsenceTimes != null && dd.AbsenceTimes.Count > 0)
{
if (!dd.Custom10.Contains(dd.AbsenceTimes[0].AbsenceReason.Description))
{
if (!String.IsNullOrEmpty(dd.Custom10) && dd.Custom10.Length > 0)
{
dd.Custom10 += ", ";
}
dd.Custom10 += dd.AbsenceTimes[0].AbsenceReason.Description;
}
}
if (dd.AbsenceTimes != null && dd.AbsenceTimes.Count > 0 &&
(dd.AbsenceTimes[0].AbsenceReason.Description.Contains("Krankengeld") ||
dd.AbsenceTimes[0].AbsenceReason.Description.Contains("Elternzeit") ||
dd.AbsenceTimes[0].AbsenceReason.Description.Contains("ohne Lohnfortzahlung")))
{
ed.StundenSollMax -= dd.HoursSick;
ed.UrlaubUndKrankheit -= dd.HoursSick;
dd.HoursSick = 0;
}
}
}
this.bindingSource1.DataSource = pRO;
}
}
}