Files
BeWoPlaner/ReportImp/LebenshilfeKoblenz/Mitarbeiterstundenkonto.cs
Christian b76d6ea7d1 Merge branch 'master' of ssh://float.beyondsoft.de/git/beyondSoft/BeWo
# Conflicts:
#	Data/Access/SearchDAO.cs
2018-03-02 16:24:55 +01:00

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;
}
}
}