86 lines
2.5 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|