205 lines
7.8 KiB
C#
205 lines
7.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using BeWo.Report;
|
|
using BeWo.Report.ReportObjects;
|
|
using BS.Shared.Core;
|
|
|
|
|
|
namespace LebenshilfeKoblenz
|
|
{
|
|
[IDSpecificClass(Identifier = "Mitarbeiterstundenkonto")]
|
|
public partial class Mitarbeiterstundenkonto : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<MitarbeiterstundenkontoRO>
|
|
{
|
|
|
|
|
|
public Mitarbeiterstundenkonto()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void SetReportDataSource(MitarbeiterstundenkontoRO pRO)
|
|
{
|
|
cellMonat.Text = String.Format("{0:MM} / {0:yyyy}", pRO.ReportStartDate);
|
|
|
|
var msb = new CustomerMitarbeiterstundenkontoBerechnung();
|
|
msb.CreateReport(pRO);
|
|
|
|
|
|
|
|
foreach (var ed in pRO.EmployeeDetailList)
|
|
{
|
|
decimal zzSumme = 0;
|
|
decimal summeDienstzeit1 = 0;
|
|
decimal summeDienstzeit2 = 0;
|
|
decimal summeDienstzeit3 = 0;
|
|
decimal gesamtDienstzeit = 0;
|
|
decimal gesamtWochenzeit = 0;
|
|
|
|
if (ed.Days != null)
|
|
{
|
|
var newDays = new List<MitarbeiterstundenkontoRO.DayDetail>();
|
|
decimal sum = 0;
|
|
bool addedSumRow = false;
|
|
|
|
foreach (var dayDetail in ed.Days)
|
|
{
|
|
addedSumRow = false;
|
|
|
|
//if (dayDetail.ZusammenhaengendeZeitraeume != null)
|
|
//{
|
|
// foreach (var dateTimeSpan in dayDetail.ZusammenhaengendeZeitraeume)
|
|
// {
|
|
// if (!dayDetail.StartDateTime1.HasValue || dateTimeSpan.StartDateTime < dayDetail.StartDateTime1)
|
|
// {
|
|
// dayDetail.StartDateTime1 = dateTimeSpan.StartDateTime;
|
|
// }
|
|
// if (!dayDetail.EndDateTime1.HasValue || dateTimeSpan.EndDateTime > dayDetail.EndDateTime1)
|
|
// {
|
|
// dayDetail.EndDateTime1 = dateTimeSpan.EndDateTime;
|
|
// }
|
|
// }
|
|
//}
|
|
//var pause = msb.CalculateBreakMinutes(dayDetail, dayDetail.MaxHoursUntilBreak ?? 0, dayDetail.BreakMinutes?? 0);
|
|
//pause += msb.CalculateBreakMinutes(dayDetail, 9, 15);
|
|
|
|
//dayDetail.BreakMinutes = (int)Math.Abs(pause);
|
|
|
|
//dayDetail.Custom3 = String.Format("{0:ddd}", dayDetail.Date);
|
|
//dayDetail.Custom4 = String.Format("{0:dd.MM.}", dayDetail.Date);
|
|
decimal zz = 0;
|
|
|
|
if (dayDetail.ServiceRecords != null)
|
|
{
|
|
foreach (var sr in dayDetail.ServiceRecords)
|
|
{
|
|
if (sr.ServiceDescription.Name == "Zeitzuschlag")
|
|
{
|
|
zz += sr.RoundedDuration;
|
|
}
|
|
}
|
|
}
|
|
if (zz > 0)
|
|
{
|
|
zzSumme += zz;
|
|
dayDetail.Custom3 = String.Format("{0:0.00}", zz / 60);
|
|
}
|
|
|
|
if (dayDetail.StartDateTime1.HasValue && dayDetail.EndDateTime1.HasValue)
|
|
{
|
|
summeDienstzeit1 += (decimal)dayDetail.EndDateTime1.Value.Subtract(dayDetail.StartDateTime1.Value).TotalMinutes;
|
|
}
|
|
|
|
if (dayDetail.StartDateTime2.HasValue && dayDetail.EndDateTime2.HasValue)
|
|
{
|
|
summeDienstzeit2 += (decimal)dayDetail.EndDateTime2.Value.Subtract(dayDetail.StartDateTime2.Value).TotalMinutes;
|
|
}
|
|
|
|
if (dayDetail.StartDateTime3.HasValue && dayDetail.EndDateTime3.HasValue)
|
|
{
|
|
summeDienstzeit3 += (decimal)dayDetail.EndDateTime3.Value.Subtract(dayDetail.StartDateTime3.Value).TotalMinutes;
|
|
}
|
|
|
|
newDays.Add(dayDetail);
|
|
sum += dayDetail.MinutesTotal;
|
|
gesamtDienstzeit += dayDetail.MinutesTotal;
|
|
|
|
if (dayDetail.Date.DayOfWeek == DayOfWeek.Saturday)
|
|
{
|
|
dayDetail.Custom2 = "WE";
|
|
}
|
|
bool isSonntag = (dayDetail.Date.DayOfWeek == DayOfWeek.Sunday);
|
|
|
|
if (isSonntag)
|
|
{
|
|
|
|
dayDetail.Custom2 = "WE";
|
|
dayDetail.Custom4 = String.Format("{0:0.00}", sum / 60);
|
|
|
|
gesamtWochenzeit += sum;
|
|
|
|
//MitarbeiterstundenkontoRO.DayDetail ddSum = new MitarbeiterstundenkontoRO.DayDetail();
|
|
//ddSum.MinutesTotal = sum;
|
|
//ddSum.Custom2 = "SUM";
|
|
//newDays.Add(ddSum);
|
|
addedSumRow = true;
|
|
sum = 0;
|
|
}
|
|
|
|
if (msb.IstFeiertag(dayDetail.Date))
|
|
{
|
|
dayDetail.Custom2 = "FT";
|
|
dayDetail.Custom1 = "Feiertag";
|
|
}
|
|
|
|
if (dayDetail.AbsenceTimes != null && dayDetail.AbsenceTimes.Count > 0)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
foreach (var at in dayDetail.AbsenceTimes)
|
|
{
|
|
if (sb.Length > 0)
|
|
{
|
|
sb.Append(", ");
|
|
}
|
|
sb.Append(at.AbsenceReason.Description);
|
|
}
|
|
dayDetail.Custom1 = sb.ToString();
|
|
}
|
|
|
|
if (dayDetail.ServiceRecords != null)
|
|
{
|
|
StringBuilder notice = new StringBuilder();
|
|
foreach (var sr in dayDetail.ServiceRecords)
|
|
{
|
|
if (!String.IsNullOrWhiteSpace(sr.Notice3))
|
|
{
|
|
if (notice.Length > 0)
|
|
notice.Append(", ");
|
|
notice.Append(sr.Notice3);
|
|
}
|
|
}
|
|
|
|
if (notice.Length > 0)
|
|
{
|
|
dayDetail.Custom1 = notice.ToString();
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!addedSumRow)
|
|
{
|
|
MitarbeiterstundenkontoRO.DayDetail ddSum = new MitarbeiterstundenkontoRO.DayDetail();
|
|
//ddSum.MinutesTotal = sum;
|
|
ddSum.Custom4 = String.Format("{0:0.00}", sum / 60);
|
|
ddSum.Custom2 = "SUM";
|
|
|
|
gesamtWochenzeit += sum;
|
|
|
|
newDays.Add(ddSum);
|
|
}
|
|
|
|
ed.Days = newDays;
|
|
}
|
|
|
|
ed.Custom1 = summeDienstzeit1 / 60;
|
|
ed.Custom2 = summeDienstzeit2 / 60;
|
|
ed.Custom3 = summeDienstzeit3 / 60;
|
|
ed.Custom4 = zzSumme / 60;
|
|
|
|
ed.Custom5 = gesamtDienstzeit / 60;
|
|
ed.Custom6 = gesamtWochenzeit / 60;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
this.bindingSource1.DataSource = pRO;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|