167 lines
5.8 KiB
C#
167 lines
5.8 KiB
C#
using System;
|
|
using BeWo.Report.ReportObjects;
|
|
using BeWo.Report;
|
|
using BS.Shared.Core;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using BeWo.Data.Access;
|
|
using BeWo.Data.Entities;
|
|
|
|
namespace BeWo.SeWo
|
|
{
|
|
public partial class Leistungsdokumentation : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<FLSReportRO>
|
|
{
|
|
private DateTime reportDate;
|
|
public Leistungsdokumentation()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void SetReportDataSource(FLSReportRO pRO)
|
|
{
|
|
//DetailReport1.Visible = false;
|
|
StundenBerechnungHelper.CorrectOverlappingTimes(pRO);
|
|
|
|
reportDate = pRO.ReportStartDate.Value;
|
|
pRO.TotalFLM = 0;
|
|
bool nachMaGruppiert = true;
|
|
|
|
if (!pRO.GroupTypeHeader.Contains("Klient"))
|
|
{
|
|
nachMaGruppiert = false;
|
|
}
|
|
|
|
foreach (var group in pRO.FLSReportGroups)
|
|
{
|
|
group.TotalFLM = 0;
|
|
|
|
foreach (var sr in group.ServiceRecords)
|
|
{
|
|
|
|
//TEilnehmer der Gruppen anzeigen
|
|
var minuten = sr.RoundedDuration;
|
|
if (sr.ServiceDescription != "Pause")
|
|
{
|
|
if (sr.ServiceRecordOid.HasValue)
|
|
{
|
|
var srDb = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(sr.ServiceRecordOid.Value);
|
|
|
|
if (srDb.ServiceDescription.ServiceCategory.Percentage != 100)
|
|
{
|
|
minuten *= (srDb.ServiceDescription.ServiceCategory.Percentage)/100;
|
|
sr.RoundedDuration = minuten;
|
|
}
|
|
sr.Notice2 = srDb.Notice2;
|
|
sr.Notice3 = srDb.Notice3;
|
|
|
|
if (srDb.GroupOid.HasValue)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
Dictionary<String, bool> empDict = new Dictionary<string, bool>();
|
|
|
|
var groupList = srDb.Group.ServiceRecordList;
|
|
|
|
foreach (var srGroup in groupList)
|
|
{
|
|
String name = "";
|
|
|
|
if (nachMaGruppiert)
|
|
{
|
|
name = String.Format("{0}, {1}", srGroup.Customer.Person.LastName,
|
|
srGroup.Customer.Person.FirstName);
|
|
}
|
|
else
|
|
{
|
|
var groupEmp = srGroup.Employee;
|
|
name = String.Format("{0}, {1}", groupEmp.Person.LastName,
|
|
groupEmp.Person.FirstName);
|
|
}
|
|
|
|
|
|
if (!empDict.ContainsKey(name))
|
|
{
|
|
if (sb.Length > 0)
|
|
{
|
|
sb.Append(", ");
|
|
}
|
|
sb.Append(name);
|
|
empDict.Add(name, true);
|
|
}
|
|
|
|
sr.GroupName = sb.ToString();
|
|
}
|
|
}
|
|
//sr.Notice = String.Format("{0}", srDb.ServiceDescription.ServiceCategory.Percentage);
|
|
}
|
|
group.TotalFLM += minuten;
|
|
}
|
|
else
|
|
{
|
|
sr.Notice2 = "Pause";
|
|
}
|
|
|
|
sr.Notice = sr.Notice2;
|
|
}
|
|
|
|
decimal pausenZeit = StundenBerechnungHelper.BerechnePausenZeit(group.ServiceRecords);
|
|
group.TotalFLM -= pausenZeit;
|
|
|
|
pRO.TotalFLM += group.TotalFLM;
|
|
}
|
|
|
|
this.bindingSource1.DataSource = pRO;
|
|
}
|
|
|
|
//private void xrSubreport1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
|
|
//{
|
|
// var row = DetailReport.GetCurrentRow() as FLSReportRO.FLSReportGroup;
|
|
// if (row != null)
|
|
// {
|
|
// bool hatFahrtkosten = false;
|
|
// foreach (var sr in row.ServiceRecords)
|
|
// {
|
|
// if (sr.DistanceInMeter.HasValue && sr.DistanceInMeter.Value > 0)
|
|
// {
|
|
// hatFahrtkosten = true;
|
|
// }
|
|
// }
|
|
// if (hatFahrtkosten)
|
|
// {
|
|
// var report = xrSubreport1.ReportSource as Fahrtkosten;
|
|
// report.SetReportDataSource(row, reportDate);
|
|
// }
|
|
// else
|
|
// {
|
|
// e.Cancel = true;
|
|
// }
|
|
// }
|
|
|
|
//}
|
|
|
|
private void GroupFooter2_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
|
|
{
|
|
var row = DetailReport.GetCurrentRow() as FLSReportRO.FLSReportGroup;
|
|
if (row != null)
|
|
{
|
|
bool hatFahrtkosten = false;
|
|
foreach (var sr in row.ServiceRecords)
|
|
{
|
|
if (sr.DistanceInMeter.HasValue && sr.DistanceInMeter.Value > 0)
|
|
{
|
|
hatFahrtkosten = true;
|
|
}
|
|
}
|
|
if (hatFahrtkosten)
|
|
{
|
|
var report = xrSubreport1.ReportSource as Fahrtkosten;
|
|
report.SetReportDataSource(row, reportDate);
|
|
}
|
|
else
|
|
{
|
|
e.Cancel = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|