diff --git a/BeWo/BeWo.csproj b/BeWo/BeWo.csproj
index 84087528f..854da3dc2 100644
--- a/BeWo/BeWo.csproj
+++ b/BeWo/BeWo.csproj
@@ -43,12 +43,12 @@
de-DE
BeWoPlaner
ownSoft GmbH
- 2.0.1.298
+ 2.0.1.299
true
publish.htm
false
true
- 299
+ 300
2.0.1.%2a
false
true
diff --git a/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs b/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs
index a7ac71d0b..fff4fd6d4 100644
--- a/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs
+++ b/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs
@@ -94,14 +94,9 @@ namespace BeWo.View.Detail.Report
try
{
- var filter = _SelectedFilter;
UrlaubsplanerRootObj = await Task.Run(() =>
- ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(filter)));
-
- var absenceOverview = await Task.Run(() =>
- ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(filter)));
-
- UpdateScheduler(false, absenceOverview);
+ ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(_SelectedFilter)));
+ UpdateScheduler(false);
ColorizeFeiertage();
ApplyFeiertagCellStyle();
}
@@ -276,14 +271,19 @@ namespace BeWo.View.Detail.Report
}
// Claude - optionaler Parameter absenceOverview: vorgeladene Daten aus Button_Click werden übergeben, um doppelten Serviceaufruf zu vermeiden
- public void UpdateScheduler(bool neuLaden, List absenceOverview = null)
+ public async void UpdateScheduler(bool neuLaden)
{
+ if (neuLaden || UrlaubsplanerRootObj == null)
+ {
+ UrlaubsplanerRootObj = await Task.Run(() =>
+ ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(_SelectedFilter)));
+
+ }
+
+
var absenceReasons = _AbsenceReasonDCs;
- if (absenceOverview == null)
- absenceOverview = ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(_SelectedFilter));
-
- _ListOfEmployee = absenceOverview;
+ _ListOfEmployee = UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs.Select(i => i.Employee).ToList();
var start = new DateTime(_SelectedFilter.Year, _SelectedFilter.Month, 1);
try
@@ -314,14 +314,14 @@ namespace BeWo.View.Detail.Report
_AppointmentStorage.Clear();
//UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs = new List();
int counter = 0;
- foreach (var employee in absenceOverview)
+ foreach (var employee in _ListOfEmployee)
{
- if (neuLaden == true)
- {
- var tageUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.CountUrlaubstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
- UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter].TageUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.CountUrlaubstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
- UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter].TageKrankheit = ServiceFacade.DoEmployeeServiceSync(s => s.CountKrankheitstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
- }
+ //if (neuLaden == true)
+ //{
+ // var tageUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.CountUrlaubstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
+ // UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter].TageUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.CountUrlaubstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
+ // UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter].TageKrankheit = ServiceFacade.DoEmployeeServiceSync(s => s.CountKrankheitstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
+ //}
#region auskommentiert
//AbwesenheitsInformationDC infoDC = new AbwesenheitsInformationDC
diff --git a/BeWo/View/Detail/UrlaubskontoView.xaml.cs b/BeWo/View/Detail/UrlaubskontoView.xaml.cs
index b0193d78b..4e70a7d04 100755
--- a/BeWo/View/Detail/UrlaubskontoView.xaml.cs
+++ b/BeWo/View/Detail/UrlaubskontoView.xaml.cs
@@ -71,7 +71,7 @@ namespace BeWo.View.Detail
urlaubskonto = new List();
urlaubskonto.Add(new UrlaubskontoDarstellungDC()
{
- Erlaeuterung = "Es existiert kein Vertrag für ausgewähltes Jahr",
+ Erlaeuterung = "Es existiert kein Vertrag für das ausgewählte Jahr",
});
button_openLeaveDayDialogue.Visibility = Visibility.Collapsed;
}
diff --git a/Host/ReportView.aspx.cs b/Host/ReportView.aspx.cs
index 073f4443b..500022f1a 100644
--- a/Host/ReportView.aspx.cs
+++ b/Host/ReportView.aspx.cs
@@ -44,9 +44,13 @@ namespace Host
var test = Request.Params["mode"];
- var report = CreateReport();
+ var sw = System.Diagnostics.Stopwatch.StartNew();
- using (var repxStream = new MemoryStream())
+ var report = CreateReport();
+ sw.Stop();
+ Console.WriteLine(sw.Elapsed.TotalMilliseconds);
+
+ using (var repxStream = new MemoryStream())
{
if (Request.Params["mode"] == "pdf")
{
diff --git a/Report/DefaultReportCreator.cs b/Report/DefaultReportCreator.cs
index fb21bde87..f0211b5ad 100644
--- a/Report/DefaultReportCreator.cs
+++ b/Report/DefaultReportCreator.cs
@@ -1369,17 +1369,18 @@ namespace BeWo.Report
public override XtraReport CreateAbsenceReport(DateTime dt, List abs, List empTypes, List teams, List feiertage)
{
var report = FindReportImp();
- var service = new OperationsServiceImp();
+ var es = new EmployeeServiceImp();
+ var os = new OperationsServiceImp();
var filter = new AbsenceOverviewFilterDC() { AbsenceReasons = abs, EmploymentType = empTypes, Year = dt.Year, Month = dt.Month, Teams = teams };
List compactTeams = new List();
if (teams != null)
{
if (teams.Count > 0)
- compactTeams = service.GetCertainTeamsById(teams);
+ compactTeams = os.GetCertainTeamsById(teams);
}
- report.SetReportDataSource(AbsenceRO.Create(service.GetAbsenceOverview(filter), filter, compactTeams, feiertage));
+ report.SetReportDataSource(AbsenceRO.Create(es.GetAbsenceOverview(filter), filter, compactTeams, feiertage));
return report as XtraReport;
}
diff --git a/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs b/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs
index 583ef64c9..03af4d755 100644
--- a/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs
+++ b/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs
@@ -1,19 +1,21 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Windows.Forms;
-using BeWo.Report;
+using BeWo.Data.Access;
using BeWo.Data.Entities;
-using BeWo.Data.Access;
+using BeWo.Report;
using BeWo.Service.Configuration;
+using BeWo.Service.DCEntityMapper;
+using BeWo.Service.Dienstplanung;
+using BeWo.Service.Plugins;
using BeWo.Service.ServiceImplementations;
using BS.Shared;
using BS.Shared.Core;
+using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using DevExpress.XtraCharts.Native;
-using BS.Shared.DataContracts;
-using BeWo.Service.Plugins;
-using BeWo.Service.DCEntityMapper;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Windows.Forms;
namespace BeWo.Report.ReportObjects
{
@@ -23,8 +25,9 @@ namespace BeWo.Report.ReportObjects
private AppSettings appSettings;
private const int ANZ_WOCHENTAGE = 5;
protected VacationService vacationService;
+ private IList serviceRecordPool = null;
- public MitarbeiterstundenkontoRO.EmployeeDetail AktuellBearbeitetesEmployeeDetail { get; set; }
+ public MitarbeiterstundenkontoRO.EmployeeDetail AktuellBearbeitetesEmployeeDetail { get; set; }
@@ -68,6 +71,10 @@ namespace BeWo.Report.ReportObjects
public virtual void CreateReport(MitarbeiterstundenkontoRO ro)
{
+ if (ro.AllServiceRecords == null)
+ {
+ ro.BerechneServiceRecordPool();
+ }
CreateEmployeeDetails(ro);
CreateTeamDetails(ro);
@@ -154,7 +161,7 @@ namespace BeWo.Report.ReportObjects
}
ServiceRecordSummary summaryTotal = new ServiceRecordSummary();
- summaryTotal.RecordsImBerichtszeitraum = new List();
+ summaryTotal.RecordsImBerichtszeitraum = new List();
decimal pause1 = 0;
decimal pause2 = 0;
@@ -169,14 +176,14 @@ namespace BeWo.Report.ReportObjects
decimal tatSollStdGesamt = 0;
decimal azDurchFeiertage = 0;
- IList groupFilteredRecords = empDetail.AllServiceRecords;
+ IList groupFilteredRecords = empDetail.AllServiceRecords;
if (groupFilteredRecords == null)
{
- IList recordsAll = DAOFactory.SearchDAO.FindServiceRecords(emp.Oid, null);
- recordsAll = AnalysisServiceImp.FilterActiveServiceRecords(recordsAll);
-
- //
- groupFilteredRecords = new List();
+ Debug.WriteLine($"Hole ServiceRecords with EmpOid: {emp.Oid}");
+ IList recordsAll = ro.AllServiceRecords.Where(s => s.EmployeeOid.HasValue && s.EmployeeOid == emp.Oid).ToList();
+ //IList recordsAll = new List();
+
+ groupFilteredRecords = new List();
Dictionary groupBookingDict = new Dictionary();
foreach (var item in recordsAll)
{
@@ -456,15 +463,15 @@ namespace BeWo.Report.ReportObjects
BerechneUeberstundenBis(empDetail, groupFilteredRecords, ro.ReportStartDate, out ueberstundenVormonat,
out alteExtraUeberstunden);
- var alleDiensteintraege = DAOFactory.GenericDAO.GetAllActive().Where(d => d.EmployeeOid == empDetail.Employee.Oid).ToList();
- var alleDienstvertretungen = DAOFactory.GenericDAO.GetAllActive().Where(d => d.EmployeeOid == empDetail.Employee.Oid).ToList();
+ //var alleDiensteintraege = DAOFactory.GenericDAO.GetAllActive().Where(d => d.EmployeeOid == empDetail.Employee.Oid).ToList();
+ //var alleDienstvertretungen = DAOFactory.GenericDAO.GetAllActive().Where(d => d.EmployeeOid == empDetail.Employee.Oid).ToList();
- decimal? ueberstundenVormonatFuerDienstplanung;
- decimal? alteExtraUeberstundenDienstplanung;
- empDetail.DienstplanIst += BerechneDienstplanIst(empDetail, alleDiensteintraege, alleDienstvertretungen, ro.ReportStartDate,
- out ueberstundenVormonatFuerDienstplanung, out alteExtraUeberstundenDienstplanung); // ABCDEF
+ //decimal? ueberstundenVormonatFuerDienstplanung;
+ //decimal? alteExtraUeberstundenDienstplanung;
+ //empDetail.DienstplanIst += BerechneDienstplanIst(empDetail, alleDiensteintraege, alleDienstvertretungen, ro.ReportStartDate,
+ // out ueberstundenVormonatFuerDienstplanung, out alteExtraUeberstundenDienstplanung); // ABCDEF
- var dienstplanIstAlsStunden = empDetail.DienstplanIst / 60;
+ //var dienstplanIstAlsStunden = empDetail.DienstplanIst / 60;
decimal extraStunden = 0;
@@ -495,9 +502,8 @@ namespace BeWo.Report.ReportObjects
GetAbsenceTimeDaysWithWorkWeeks(emp, new DateTime(monatsAnfang.Year, 1, 1), monatsEnde, empDetail.ArbeitstageProWoche).TageUrlaub;
// Aktuellen Resturlaub berechnen
- var vs = PluginLoader.FindClass();
- // Darstellungsvariante, da das normale Urlaubskonto nur den Resturlaubsstand vom Ende des Jahres anzeigt.
- var konto = vs.BerechneUrlaubskontoZurDarstellung(MapperFactory.EmployeeDC_Employee.MapToNewDC(emp), ro.ReportStartDate.Year, berichtsEnde.AddDays(-1));
+ // Darstellungsvariante, da das normale Urlaubskonto nur den Resturlaubsstand vom Ende des Jahres anzeigt.
+ var konto = vacationService.BerechneUrlaubskontoZurDarstellung(emp, ro.ReportStartDate.Year, berichtsEnde.AddDays(-1));
if (konto != null && konto.Count > 0)
{
var alleVertraglichenBudgets = konto
@@ -505,7 +511,7 @@ namespace BeWo.Report.ReportObjects
.ToList();
empDetail.Resturlaub = alleVertraglichenBudgets.Sum(b => Convert.ToDecimal(b.AnzahlTage));
-
+
// Jeder Entry enthält den Zeitraum und die abzuziehenden Tage vom Gesamtbudget.
foreach (var entry in konto)
{
@@ -520,7 +526,7 @@ namespace BeWo.Report.ReportObjects
}
}
}
-
+
CalculateEmployeeSalary(empDetail, berichtsAnfang, berichtsEnde);
}
@@ -766,7 +772,7 @@ namespace BeWo.Report.ReportObjects
}
- protected virtual AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
+ protected virtual AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
{
return null;
}
@@ -1002,7 +1008,7 @@ namespace BeWo.Report.ReportObjects
{
foreach (var sr in empDetail.ServiceRecordsInSelectedTimeSpan)
{
- if (sr.ServiceDescription.Name != "Freizeit" || sr.ServiceDescription.ServiceCategory.Name != "Selbstzahler Freizeit")
+ if (sr.ServiceDescription.Name != "Freizeit" || sr.ServiceDescription.Category.Name != "Selbstzahler Freizeit")
{
Contract con = empDetail.Employee.GetValidContractForDate(sr.Start);
if (con != null && con.HourlyRate.HasValue)
@@ -1017,21 +1023,21 @@ namespace BeWo.Report.ReportObjects
empDetail.EmployeeSalaryByHours = salary;
}
- protected virtual ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
+ protected virtual ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
{
decimal flsGesamt = 0;
decimal arbeitszeit = 0;
var sum = new ServiceRecordSummary();
- sum.RecordsImBerichtszeitraum = new List();
+ sum.RecordsImBerichtszeitraum = new List();
- empDetail.ServiceRecordsInSelectedTimeSpan = new List();
+ empDetail.ServiceRecordsInSelectedTimeSpan = new List();
foreach (var item in groupFilteredRecords)
{
if (!IsServiceRecordFehlzeit(item))
{
- if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde)
+ if (item.Start >= berichtsAnfang && item.Start < berichtsEnde)
{
//String test = String.Format("{0:dd.MM.yyyy HH:mm}, {1:0} Minuten, {2}, {3}", item.Start, item.RoundedDuration, item.ServiceDescription.Name, item.Notice);
@@ -1047,7 +1053,7 @@ namespace BeWo.Report.ReportObjects
{
arbeitszeit += duration;
}
- else if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.IsBillable)
+ else if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.IsBillable)
{
flsGesamt += duration;
}
@@ -1059,8 +1065,8 @@ namespace BeWo.Report.ReportObjects
decimal duration = GetDuration(item, empDetail);
if (item.ServiceDescription != null &&
- item.ServiceDescription.ServiceCategory != null &&
- item.ServiceDescription.ServiceCategory.IsBillable)
+ item.ServiceDescription.Category != null &&
+ item.ServiceDescription.Category.IsBillable)
sum.IstAbrechenbar += duration;
else
sum.IstNichtAbrechenbar += duration;
@@ -1072,9 +1078,9 @@ namespace BeWo.Report.ReportObjects
{
prozent = item.ServiceDescription.ProzentStundenkonto.Value;
}
- else if (item.ServiceDescription.ServiceCategory.ProzentStundenkonto.HasValue)
+ else if (item.ServiceDescription.Category.ProzentStundenkonto.HasValue)
{
- prozent = item.ServiceDescription.ServiceCategory.ProzentStundenkonto.Value;
+ prozent = item.ServiceDescription.Category.ProzentStundenkonto.Value;
}
if (prozent == 0)
{
@@ -1110,17 +1116,17 @@ namespace BeWo.Report.ReportObjects
return false;
}
- public virtual decimal BerechneAutoPausen(IList recordsThisMonth)
+ public virtual decimal BerechneAutoPausen(IList recordsThisMonth)
{
return 0;
}
- public virtual decimal BerechnePauseMinuten(IList srList)
+ public virtual decimal BerechnePauseMinuten(IList srList)
{
decimal pausenZeit = 0;
- List pausen = new List();
- List nichtpausen = new List();
+ List pausen = new List();
+ List nichtpausen = new List();
foreach (var sr in srList)
{
@@ -1140,20 +1146,20 @@ namespace BeWo.Report.ReportObjects
{
var pauseSpan = new DateTimeSpan
{
- StartDateTime = pause.Start.Value,
- EndDateTime = pause.Start.Value.AddMinutes((double)pause.RoundedDuration)
+ StartDateTime = pause.Start,
+ EndDateTime = pause.Start.AddMinutes((double)pause.RoundedDuration)
};
var arbeitszeitSpan = new DateTimeSpan
{
- StartDateTime = arbeitszeit.Start.Value,
- EndDateTime = arbeitszeit.Start.Value.AddMinutes((double)arbeitszeit.RoundedDuration)
+ StartDateTime = arbeitszeit.Start,
+ EndDateTime = arbeitszeit.Start.AddMinutes((double)arbeitszeit.RoundedDuration)
};
if (arbeitszeit.GroupOid.HasValue)
{
arbeitszeitSpan.EndDateTime =
- arbeitszeit.Start.Value.AddMinutes((double)(arbeitszeit.GroupRoundedDuration ?? 0));
+ arbeitszeit.Start.AddMinutes((double)(arbeitszeit.GroupRoundedDuration ?? 0));
}
@@ -1209,14 +1215,14 @@ namespace BeWo.Report.ReportObjects
return newEmpList;
}
- public virtual void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract)
+ public virtual void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract)
{
//do nothing
}
- public virtual void CorrectOverlappingTimes(IList serviceRecords)
+ public virtual void CorrectOverlappingTimes(IList serviceRecords)
{
- List oldRecords = new List();
+ List oldRecords = new List();
foreach (var newRecord in serviceRecords)
{
@@ -1224,7 +1230,7 @@ namespace BeWo.Report.ReportObjects
{
continue;
}
- if (newRecord.Start.HasValue && newRecord.Start.Value.Second > 0)
+ if (newRecord.Start.Second > 0)
{
continue;
}
@@ -1238,8 +1244,8 @@ namespace BeWo.Report.ReportObjects
}
var newSpan = new DateTimeSpan
{
- StartDateTime = newRecord.Start.Value,
- EndDateTime = newRecord.Start.Value.AddMinutes((double)minuten)
+ StartDateTime = newRecord.Start,
+ EndDateTime = newRecord.Start.AddMinutes((double)minuten)
};
foreach (var oldRecord in oldRecords)
@@ -1250,12 +1256,12 @@ namespace BeWo.Report.ReportObjects
}
var oldSpan = new DateTimeSpan
{
- StartDateTime = oldRecord.Start.Value,
- EndDateTime = oldRecord.Start.Value.AddMinutes((double)oldRecord.RoundedDuration)
+ StartDateTime = oldRecord.Start,
+ EndDateTime = oldRecord.Start.AddMinutes((double)oldRecord.RoundedDuration)
};
if (oldRecord.GroupRoundedDuration.HasValue)
{
- oldSpan.EndDateTime = oldRecord.Start.Value.AddMinutes((double)oldRecord.GroupRoundedDuration);
+ oldSpan.EndDateTime = oldRecord.Start.AddMinutes((double)oldRecord.GroupRoundedDuration);
}
if (oldSpan.Overlaps(newSpan))
@@ -1283,11 +1289,11 @@ namespace BeWo.Report.ReportObjects
if (!isGroup)
{
newRecord.RoundedDuration =
- (decimal)newRecord.End.Value.Subtract(newRecord.Start.Value).TotalMinutes;
+ (decimal)newRecord.End.Subtract(newRecord.Start).TotalMinutes;
}
else
{
- newRecord.GroupRoundedDuration = (decimal)newRecord.End.Value.Subtract(newRecord.Start.Value).TotalMinutes;
+ newRecord.GroupRoundedDuration = (decimal)newRecord.End.Subtract(newRecord.Start).TotalMinutes;
}
}
else
@@ -1304,11 +1310,11 @@ namespace BeWo.Report.ReportObjects
if (!oldRecord.GroupRoundedDuration.HasValue)
//if (!isGroup)
{
- oldRecord.RoundedDuration = (decimal)oldRecord.End.Value.Subtract(oldRecord.Start.Value).TotalMinutes;
+ oldRecord.RoundedDuration = (decimal)oldRecord.End.Subtract(oldRecord.Start).TotalMinutes;
}
else
{
- oldRecord.GroupRoundedDuration = (decimal)oldRecord.End.Value.Subtract(oldRecord.Start.Value).TotalMinutes;
+ oldRecord.GroupRoundedDuration = (decimal)oldRecord.End.Subtract(oldRecord.Start).TotalMinutes;
}
}
@@ -1320,12 +1326,12 @@ namespace BeWo.Report.ReportObjects
}
}
- public virtual bool CorrectOverlappingTime(ServiceRecord newRecord)
+ public virtual bool CorrectOverlappingTime(StundenkontoServiceRecord newRecord)
{
return true;
}
- public virtual bool CorrectOverlappingTime(ServiceRecord record1, ServiceRecord record2)
+ public virtual bool CorrectOverlappingTime(StundenkontoServiceRecord record1, StundenkontoServiceRecord record2)
{
return true;
}
@@ -1396,7 +1402,7 @@ namespace BeWo.Report.ReportObjects
return null;
}
- public virtual void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item)
+ public virtual void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item)
{
//do nothing
}
@@ -1416,7 +1422,7 @@ namespace BeWo.Report.ReportObjects
return false;
}
- public virtual IList CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ public virtual IList CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
{
if (ShouldCreateDayDetailsForEachServiceRecord())
{
@@ -1433,13 +1439,9 @@ namespace BeWo.Report.ReportObjects
foreach (var sr in recordsAll)
{
- if (sr.Start.HasValue && sr.Start >= berichtStart && sr.Start < berichtEnde && sr.End.HasValue)
+ if (sr.Start >= berichtStart && sr.Start < berichtEnde)
{
- if (sr.Start.Value.Year == 2023 && sr.Start.Value.Month == 10 && sr.Start.Value.Day == 3)
- {
- int test = 0;
- }
- var dd = dayToDetail[sr.Start.Value.Day];
+ var dd = dayToDetail[sr.Start.Day];
if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr))
{
@@ -1448,7 +1450,7 @@ namespace BeWo.Report.ReportObjects
TimeSpan tspan = TimeSpan.FromMinutes((double)dd.MinutesTotal);
dd.TimeTotal = String.Format("{0:00}:{1:00}", tspan.Hours, tspan.Minutes);
if (dd.ServiceRecords == null)
- dd.ServiceRecords = new List();
+ dd.ServiceRecords = new List();
dd.ServiceRecords.Add(sr);
CalculateSpecialHours(dd, sr, duration);
@@ -1474,14 +1476,14 @@ namespace BeWo.Report.ReportObjects
foreach (var sr in orderedList)
{
- if (sr.Start.HasValue && sr.Start.Value.Hour == 0 && sr.Start.Value.Second > 0)
+ if (sr.Start.Hour == 0 && sr.Start.Second > 0)
{
continue;
}
decimal duration = GetDuration(sr, ed);
- DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration);
+ DateTime dtEnd = sr.Start.AddMinutes((double)duration);
if (sr.Start > lastEnd)
{
gapCount++;
@@ -1507,7 +1509,7 @@ namespace BeWo.Report.ReportObjects
if (sr.Start < currentSpan.StartDateTime)
{
- currentSpan.StartDateTime = sr.Start.Value;
+ currentSpan.StartDateTime = sr.Start;
}
if (dtEnd > currentSpan.EndDateTime)
{
@@ -1568,21 +1570,21 @@ namespace BeWo.Report.ReportObjects
return dayToDetail.Values.OrderBy(dd => dd.Date).ToList();
}
- public virtual IList CreateDayDetailsForEachServiceRecord(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ public virtual IList CreateDayDetailsForEachServiceRecord(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
{
var details = new List();
foreach (var sr in recordsAll)
{
- if (sr.Start.HasValue && sr.Start >= berichtStart && sr.Start < berichtEnde && sr.End.HasValue)
+ if (sr.Start >= berichtStart && sr.Start < berichtEnde)
{
- if (sr.Start.Value.Day == 8)
+ if (sr.Start.Day == 8)
{
int test = 0;
}
if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr))
{
- var dd = CreateDayDetail(sr.Start.Value, ed);
+ var dd = CreateDayDetail(sr.Start, ed);
details.Add(dd);
decimal duration = GetDuration(sr, ed);
@@ -1592,14 +1594,14 @@ namespace BeWo.Report.ReportObjects
TimeSpan tspan = TimeSpan.FromMinutes((double)dd.MinutesTotal);
dd.TimeTotal = String.Format("{0:00}:{1:00}", tspan.Hours, tspan.Minutes);
if (dd.ServiceRecords == null)
- dd.ServiceRecords = new List();
+ dd.ServiceRecords = new List();
dd.ServiceRecords.Add(sr);
- dd.Date = sr.Start.Value;
+ dd.Date = sr.Start;
- if (sr.Start.Value.Second == 0)
+ if (sr.Start.Second == 0)
{
- DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration);
+ DateTime dtEnd = sr.Start.AddMinutes((double)duration);
dd.StartDateTime1 = sr.Start;
dd.EndDateTime1 = dtEnd;
@@ -1615,7 +1617,7 @@ namespace BeWo.Report.ReportObjects
return details.OrderBy(dd => dd.Date).ToList();
}
- protected virtual decimal GetDuration(ServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ protected virtual decimal GetDuration(StundenkontoServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed)
{
foreach (var at in ed.Employee.AbsenceTimes)
@@ -1660,13 +1662,13 @@ namespace BeWo.Report.ReportObjects
}
else
{
- duration = (decimal)sr.End.Value.Subtract(sr.Start.Value).TotalMinutes;
+ duration = (decimal)sr.End.Subtract(sr.Start).TotalMinutes;
}
}
if (UseServiceDescriptionPercentage())
{
- decimal prozent = sr.ServiceDescription.ServiceCategory.ProzentStundenkonto ?? sr.ServiceDescription.ServiceCategory.ProzentAbrechnung;
+ decimal prozent = sr.ServiceDescription.Category.ProzentStundenkonto ?? sr.ServiceDescription.Category.Percentage;
if (sr.ServiceDescription.ProzentStundenkonto.HasValue)
{
@@ -1681,9 +1683,9 @@ namespace BeWo.Report.ReportObjects
{
prozent = sr.ServiceDescription.ProzentStundenkonto.Value;
}
- else if (sr.ServiceDescription.ServiceCategory.ProzentStundenkonto.HasValue)
+ else if (sr.ServiceDescription.Category.ProzentStundenkonto.HasValue)
{
- prozent = sr.ServiceDescription.ServiceCategory.ProzentStundenkonto.Value;
+ prozent = sr.ServiceDescription.Category.ProzentStundenkonto.Value;
}
@@ -1695,42 +1697,42 @@ namespace BeWo.Report.ReportObjects
}
//Mit "SpecialHours" sind Sonderzeiten wie Nachtzeiten oder Arbeitszeiten sonn- und feiertags gemeint. Da diese gesondert abgerechnet werden können.
- public virtual void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration)
+ public virtual void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, StundenkontoServiceRecord sr, decimal duration)
{
//Prüfe, ob Start oder Ende des Eintrags an einem Sonntag sind, dann die am Sonntag geleisteten Minuten berechnen
//Todo: Bei mehrtägigen Einträgen prüfen, ob sie vor einem Sonntag anfangen und nach einem Sonntag enden. Unklar, ob das vorkommen kann und ob dann Sonntagszuschläge berechnet werden müssen
- if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday || sr.End.Value.DayOfWeek == DayOfWeek.Sunday)
+ if (sr.Start.DayOfWeek == DayOfWeek.Sunday || sr.End.DayOfWeek == DayOfWeek.Sunday)
{
- DateTime sonntag = sr.Start.Value.Date;
- if (sr.Start.Value.DayOfWeek != DayOfWeek.Sunday && sr.End.Value.DayOfWeek == DayOfWeek.Sunday)
+ DateTime sonntag = sr.Start.Date;
+ if (sr.Start.DayOfWeek != DayOfWeek.Sunday && sr.End.DayOfWeek == DayOfWeek.Sunday)
{
- sonntag = sr.End.Value.Date;
+ sonntag = sr.End.Date;
}
- var sonnatgsMinuten = GetOverlappingMinutes(sr.Start.Value, sr.End.Value, sonntag, sonntag.AddDays(1));
+ var sonnatgsMinuten = GetOverlappingMinutes(sr.Start, sr.End, sonntag, sonntag.AddDays(1));
dd.HoursSunday += (decimal)sonnatgsMinuten / 60;
}
//Prüfe, ob Start oder Ende des Eintrags an einem Feiertag sind, dann die am Feiertag geleisteten Minuten berechnen
//Todo: Bei mehrtägigen Einträgen prüfen, ob sie vor einem Feiertag anfangen und nach einem Feiertag enden. Unklar, ob das vorkommen kann
- else if (IstFeiertag(sr.Start.Value) || IstFeiertag(sr.End.Value))
+ else if (IstFeiertag(sr.Start) || IstFeiertag(sr.End))
{
var feiertagsMinuten = duration;
- DateTime feiertag = sr.Start.Value.Date;
- if (IstFeiertag(sr.Start.Value) && !IstFeiertag(sr.End.Value))
+ DateTime feiertag = sr.Start.Date;
+ if (IstFeiertag(sr.Start) && !IstFeiertag(sr.End))
{
- feiertagsMinuten = (decimal) GetOverlappingMinutes(sr.Start.Value, sr.End.Value, feiertag, feiertag.AddDays(1));
+ feiertagsMinuten = (decimal) GetOverlappingMinutes(sr.Start, sr.End, feiertag, feiertag.AddDays(1));
}
- else if (!IstFeiertag(sr.Start.Value) && IstFeiertag(sr.End.Value))
+ else if (!IstFeiertag(sr.Start) && IstFeiertag(sr.End))
{
- feiertag = sr.End.Value.Date;
- feiertagsMinuten = (decimal) GetOverlappingMinutes(sr.Start.Value, sr.End.Value, feiertag, feiertag.AddDays(1));
+ feiertag = sr.End.Date;
+ feiertagsMinuten = (decimal) GetOverlappingMinutes(sr.Start, sr.End, feiertag, feiertag.AddDays(1));
}
dd.HoursHoliday += feiertagsMinuten / 60;
}
- if (sr.Start.Value.Second == 0 && dd.NightEnd.HasValue && dd.NightStart.HasValue)
+ if (sr.Start.Second == 0 && dd.NightEnd.HasValue && dd.NightStart.HasValue)
{
- var minuten = CheckNachtzeiten(sr.Start.Value, dd.NightStart.Value, dd.NightEnd.Value, (double)duration);
+ var minuten = CheckNachtzeiten(sr.Start, dd.NightStart.Value, dd.NightEnd.Value, (double)duration);
if (minuten > 0)
{
@@ -2174,7 +2176,7 @@ namespace BeWo.Report.ReportObjects
}
- public virtual bool AddServiceRecordToDuration(ServiceRecord item)
+ public virtual bool AddServiceRecordToDuration(StundenkontoServiceRecord item)
{
if (Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung)
{
@@ -2185,11 +2187,11 @@ namespace BeWo.Report.ReportObjects
return true;
}
- public virtual bool IstArbeitszeit(ServiceRecord item)
+ public virtual bool IstArbeitszeit(StundenkontoServiceRecord item)
{
- if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null)
+ if (item.ServiceDescription != null && item.ServiceDescription.Category != null)
{
- if (item.ServiceDescription.Name.StartsWith("Arbeitszeit") || item.ServiceDescription.ServiceCategory.Name.StartsWith("Arbeitszeit")) //Arbeitszeit und Arbeitszeiterfassung etc.
+ if (item.ServiceDescription.Name.StartsWith("Arbeitszeit") || item.ServiceDescription.Category.Name.StartsWith("Arbeitszeit")) //Arbeitszeit und Arbeitszeiterfassung etc.
{
return true;
}
@@ -2202,7 +2204,7 @@ namespace BeWo.Report.ReportObjects
return 1;
}
- public virtual MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden)
+ public virtual MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden)
{
MitarbeiterstundenkontoRO.EmployeeDetail edTotal = new MitarbeiterstundenkontoRO.EmployeeDetail();
@@ -2218,7 +2220,7 @@ namespace BeWo.Report.ReportObjects
if (c != null)
{
- Dictionary> srDict = CreateServiceRecordDictByDate(records);
+ Dictionary> srDict = CreateServiceRecordDictByDate(records);
DateTime start = c.EntryDate.HasValue ? c.EntryDate.Value : new DateTime(2011, 1, 1);
if (BerechnungsStartdatum > start)
@@ -2260,14 +2262,14 @@ namespace BeWo.Report.ReportObjects
if (contractEnd < DateTime.MaxValue && contractEnd.Date.AddDays(1) < ende)
ende = contractEnd.Date.AddDays(1);
- IList recordsThisMonth = new List();
+ IList recordsThisMonth = new List();
String key = String.Format("{0:yyyyMM}", start);
if (srDict.ContainsKey(key))
{
foreach (var item in srDict[key])
{
- if (item.Start.HasValue && item.Start >= start && item.Start < ende)
+ if (item.Start >= start && item.Start < ende)
{
if (AddServiceRecordToDuration(item))
{
@@ -2278,8 +2280,8 @@ namespace BeWo.Report.ReportObjects
minutenMonat += duration;
if (item.ServiceDescription != null &&
- item.ServiceDescription.ServiceCategory != null &&
- item.ServiceDescription.ServiceCategory.IsBillable)
+ item.ServiceDescription.Category != null &&
+ item.ServiceDescription.Category.IsBillable)
flsIst += duration;
else
mittelbarIst += duration;
@@ -2783,35 +2785,34 @@ namespace BeWo.Report.ReportObjects
return stunden;
}
- public virtual Dictionary> CreateServiceRecordDictByDate(IList records)
+ public virtual Dictionary> CreateServiceRecordDictByDate(IList records)
{
- var dict = new Dictionary>();
+ var dict = new Dictionary>();
foreach (var item in records)
{
if (!IsServiceRecordFehlzeit(item))
{
- if (item.Start.HasValue)
- {
- String key = String.Format("{0:yyyyMM}", item.Start.Value);
+
+ String key = String.Format("{0:yyyyMM}", item.Start);
- IList list;
- if (!dict.ContainsKey(key))
- {
- list = new List();
- dict.Add(key, list);
- }
- else
- {
- list = dict[key];
- }
- list.Add(item);
+ IList list;
+ if (!dict.ContainsKey(key))
+ {
+ list = new List();
+ dict.Add(key, list);
}
+ else
+ {
+ list = dict[key];
+ }
+ list.Add(item);
+
}
}
return dict;
}
- public virtual decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ public virtual decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
{
decimal addHours = 0;
@@ -3497,13 +3498,13 @@ namespace BeWo.Report.ReportObjects
return GetAbsenceTimeDaysWithWorkWeeks(absenceTimes, start, end, ANZ_WOCHENTAGE);
}
- public virtual decimal? GetFehlzeiten(IList records, DateTime monat)
+ public virtual decimal? GetFehlzeiten(IList records, DateTime monat)
{
return GetFehlzeiten(records, monat, monat.AddMonths(1));
}
- public virtual decimal? GetFehlzeiten(IList records, DateTime start, DateTime ende)
+ public virtual decimal? GetFehlzeiten(IList records, DateTime start, DateTime ende)
{
decimal? stunden = null;
decimal minuten = 0;
@@ -3513,7 +3514,7 @@ namespace BeWo.Report.ReportObjects
{
if (IsServiceRecordFehlzeit(item))
{
- if (item.Start.Value >= start && item.Start.Value < ende)
+ if (item.Start >= start && item.Start < ende)
{
if (item.GroupRoundedDuration.HasValue)
{
@@ -3527,7 +3528,7 @@ namespace BeWo.Report.ReportObjects
}
else
{
- minuten += (decimal)item.End.Value.Subtract(item.Start.Value).TotalMinutes;
+ minuten += (decimal)item.End.Subtract(item.Start).TotalMinutes;
}
}
}
@@ -3684,9 +3685,9 @@ namespace BeWo.Report.ReportObjects
return VacationService.GetOsterSonntag(year);
}
- public virtual bool IsServiceRecordFehlzeit(ServiceRecord sr)
+ public virtual bool IsServiceRecordFehlzeit(StundenkontoServiceRecord sr)
{
- if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null && !String.IsNullOrEmpty(sr.ServiceDescription.ServiceCategory.Name) && sr.ServiceDescription.ServiceCategory.Name.ToLower().IndexOf("fehlzeit") >= 0)
+ if (sr.ServiceDescription != null && sr.ServiceDescription.Category != null && !String.IsNullOrEmpty(sr.ServiceDescription.Category.Name) && sr.ServiceDescription.Category.Name.ToLower().IndexOf("fehlzeit") >= 0)
return true;
return false;
}
@@ -3772,6 +3773,6 @@ namespace BeWo.Report.ReportObjects
public decimal IstNichtAbrechenbar { get; set; }
- public IList RecordsImBerichtszeitraum { get; set; }
+ public IList RecordsImBerichtszeitraum { get; set; }
}
}
diff --git a/Report/ReportObjects/MitarbeiterstundenkontoBerechnungMonate.cs b/Report/ReportObjects/MitarbeiterstundenkontoBerechnungMonate.cs
index a18bdf4c8..96640750d 100644
--- a/Report/ReportObjects/MitarbeiterstundenkontoBerechnungMonate.cs
+++ b/Report/ReportObjects/MitarbeiterstundenkontoBerechnungMonate.cs
@@ -1,15 +1,16 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Windows.Forms;
-using BeWo.Report;
+using BeWo.Data.Access;
using BeWo.Data.Entities;
-using BeWo.Data.Access;
+using BeWo.Report;
using BeWo.Service.Configuration;
+using BeWo.Service.Dienstplanung;
+using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.Extensions;
-using BeWo.Service.Plugins;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
namespace BeWo.Report.ReportObjects
{
@@ -20,6 +21,8 @@ namespace BeWo.Report.ReportObjects
DateTime start = ro.ReportStartDate;
var list = new List();
+ List allServiceRecords = null;
+
while (start < ro.ReportEndDate)
{
DateTime monatStart = new DateTime(start.Year, start.Month, 1);
@@ -27,6 +30,17 @@ namespace BeWo.Report.ReportObjects
MitarbeiterstundenkontoRO roMonat = MitarbeiterstundenkontoRO.Create(ro.EmployeeOid, ro.TeamOids,
monatStart, monatEnde, ro.EmployeeOids);
+
+ if (allServiceRecords == null)
+ {
+ roMonat.BerechneServiceRecordPool();
+ allServiceRecords = roMonat.AllServiceRecords;
+ }
+ else
+ {
+ roMonat.AllServiceRecords = allServiceRecords;
+ }
+
var b = CreateMitarbeiterstundenkontoBerechnung();
b.CreateReport(roMonat);
diff --git a/Report/ReportObjects/MitarbeiterstundenkontoRO.cs b/Report/ReportObjects/MitarbeiterstundenkontoRO.cs
index 9d7fd5ee9..9b571ef3d 100644
--- a/Report/ReportObjects/MitarbeiterstundenkontoRO.cs
+++ b/Report/ReportObjects/MitarbeiterstundenkontoRO.cs
@@ -1,13 +1,15 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using BS.Shared.Core;
-using BeWo.Data.Access;
+using BeWo.Data.Access;
using BeWo.Data.Entities;
+using BeWo.Service.DCEntityMapper;
+using BeWo.Service.Dienstplanung;
using BS.Shared;
+using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
+using System;
+using System.Collections.Generic;
using System.Diagnostics;
+using System.Linq;
namespace BeWo.Report.ReportObjects
{
@@ -15,8 +17,8 @@ namespace BeWo.Report.ReportObjects
{
List _EmployeeDetailList = new List();
List _TeamDetailList = new List();
-
- public DateTime ReportStartDate { get; set; }
+ List _AllServiceRecords = null;
+ public DateTime ReportStartDate { get; set; }
public DateTime ReportEndDate { get; set; }
public decimal SollGesamt { get; set; }
@@ -50,7 +52,13 @@ namespace BeWo.Report.ReportObjects
set { this._TeamDetailList = value; }
}
- public static MitarbeiterstundenkontoRO Create(long? employeeOid, IList teamOids, DateTime startDate, DateTime endDate, IEnumerable employeeOids)
+ public List AllServiceRecords
+ {
+ get { return this._AllServiceRecords; }
+ set { this._AllServiceRecords = value; }
+ }
+
+ public static MitarbeiterstundenkontoRO Create(long? employeeOid, IList teamOids, DateTime startDate, DateTime endDate, IEnumerable employeeOids)
{
Team team = null;
@@ -171,7 +179,73 @@ namespace BeWo.Report.ReportObjects
return ro;
}
-
+ public void BerechneServiceRecordPool()
+ {
+ _AllServiceRecords = new List();
+
+ var allServiceDescs = DAOFactory.GenericDAO.GetAll();
+ Dictionary serviceDict = new Dictionary();
+ foreach (var item in allServiceDescs)
+ {
+ serviceDict.Add(item.Oid.Value, MapperFactory.ServiceDescriptionDC_ServiceDescription.MapToNewDC(item));
+ }
+
+ String sql = "SELECT Oid, StartDate, EndDate, RoundedDuration, GroupEmployeeCount, GroupPersonCount, GroupRoundedDuration, GroupOid, DistanceInMeter, Betrag, CostBearer2SupportConceptOid, ServiceDescriptionOid, CustomerOid, EmployeeOid FROM servicerecord";
+ sql += String.Format(" WHERE EmployeeOid in ({0})", String.Join(",", EmployeeDetailList.Select(e => e.Employee.Oid.Value)));
+ sql += String.Format(" AND (CustomerOid is null OR CustomerOID not in (select oid from customer where isactive = 0))");
+ sql += String.Format(" AND (CostBearer2SupportConceptOid is null OR CostBearer2SupportConceptOid not in (select c2s.oid from CostBearer2SupportConcept c2s join supportconcept sc on c2s.SupportConceptOid = sc.Oid where sc.isactive = 0))");
+ var sqlresult = DAOFactory.SearchDAO.GetSqlResult(sql);
+ //
+ //update customer set debitornumber = '5' + debitornumber where debitornumber is not null
+ foreach (object[] srRow in sqlresult)
+ {
+ var sr = CreateServiceRecord(srRow, serviceDict);
+ _AllServiceRecords.Add(sr);
+ }
+
+ }
+
+ private static StundenkontoServiceRecord CreateServiceRecord(object[] sqlRow, Dictionary serviceDict)
+ {
+ var dc = new StundenkontoServiceRecord();
+ //"SELECT Oid, StartDate, EndDate, RoundedDuration, GroupEmployeeCount, GroupPersonCount, GroupRoundedDuration, GroupOid, DistanceInMeter, Betrag, CostBearer2SupportConceptOid, ServiceDescriptionOid, CustomerOid, EmployeeOid FROM servicerecord";
+ dc.ServiceRecordOid = (long?)sqlRow[0];
+ dc.Start = (DateTime)sqlRow[1];
+ dc.End = (DateTime)sqlRow[2];
+ dc.RoundedDuration = (decimal)sqlRow[3];
+ dc.GroupEmployeeCount = (int?)sqlRow[4];
+ dc.GroupPersonCount = (int?)sqlRow[5];
+ dc.GroupRoundedDuration = (decimal?)sqlRow[6];
+ dc.GroupOid = (long?)sqlRow[7];
+
+ var test = sqlRow[8];
+ if (test != null)
+ {
+ decimal meter = 0;
+
+ if (Decimal.TryParse(test.ToString(), out meter))
+ {
+ dc.DistanceInMeter = meter;
+ }
+ }
+ dc.Betrag = (decimal?)sqlRow[9];
+
+ dc.CostBearer2SupportConceptOid = (long?)sqlRow[10];
+
+
+ long? sdOid = (long?)sqlRow[11];
+ if (sdOid.HasValue && serviceDict.ContainsKey(sdOid.Value))
+ {
+ dc.ServiceDescription = serviceDict[sdOid.Value];
+ }
+
+ dc.CustomerOid = (long?)sqlRow[12];
+ dc.EmployeeOid = (long?)sqlRow[13];
+
+ return dc;
+
+ }
+
private static Contract GetNextValidContractForDate(DateTime dt, Employee emp)
{
Contract contractNextToStartDate = emp.GetValidContractForDate(dt);
@@ -277,9 +351,9 @@ namespace BeWo.Report.ReportObjects
public IList Days { get; set; }
- public IList AllServiceRecords { get; set; }
+ public IList AllServiceRecords { get; set; }
- public IList ServiceRecordsInSelectedTimeSpan { get; set; }
+ public IList ServiceRecordsInSelectedTimeSpan { get; set; }
public Employee Employee { get; set; }
@@ -488,7 +562,7 @@ namespace BeWo.Report.ReportObjects
public String Custom10 { get; set; }
- public IList ServiceRecords { get; set; }
+ public IList ServiceRecords { get; set; }
public int? NightStart { get; set; }
diff --git a/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/CustomReportCreator.cs b/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/CustomReportCreator.cs
new file mode 100644
index 000000000..423fec9d2
--- /dev/null
+++ b/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/CustomReportCreator.cs
@@ -0,0 +1,118 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using BeWo.Data;
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Report;
+using BeWo.Report.DefaultReports;
+using BeWo.Report.ReportObjects;
+using BeWo.Service.Plugins;
+using BS.Shared;
+using BS.Shared.Core;
+using BS.Shared.DataContracts;
+using DevExpress.XtraReports.UI;
+
+namespace LebenshilfeBadKreuznachAutismuszentrum
+{
+ public class CustomReportCreator : DefaultReportCreator
+ {
+ public override XtraReport CreateQueryReport(long queryOid, string queryReportId)
+ {
+ if (queryOid == 1000)
+ {
+ return CreateStundenkontrolleAbwNachWochen(CreateQueryRO(queryOid, queryReportId));
+ }
+ if (queryOid == 1100)
+ {
+ return CreateStundenkontrolleAbwGesamt(CreateQueryRO(queryOid, queryReportId));
+ }
+
+ return base.CreateQueryReport(queryOid, queryReportId);
+ }
+
+ private XtraReport CreateStundenkontrolleAbwNachWochen(QueryRO qro)
+ {
+ var ro = CreateFLSSollIstReportRO(qro);
+
+ if (ro != null)
+ {
+ var druck = new FLSSollIstWeeklyReport();
+ druck.SetReportDataSource(ro);
+
+ return druck;
+ }
+ return new XtraReport();
+ }
+
+ private XtraReport CreateStundenkontrolleAbwGesamt(QueryRO qro)
+ {
+ var ro = CreateFLSSollIstReportRO(qro);
+
+ if (ro != null)
+ {
+ var druck = new LebenshilfeBadKreuznachAutismuszentrum.FLSSollIstReport();
+ druck.SetReportDataSource(ro);
+
+ return druck;
+ }
+ return new XtraReport();
+ }
+
+ private FLSSollIstReportRO CreateFLSSollIstReportRO(QueryRO qro)
+ {
+
+ if (qro.Rows.Count > 0)
+ {
+ DateTime start = DateTime.Now;
+ start = new DateTime(start.Year, start.Month, 1);
+
+ DateTime dt = DateTime.Now;
+ if (DateTime.TryParse(qro.Rows[0].Field1.ToString(), out dt) && dt > DateTime.MinValue)
+ {
+ start = dt;
+
+ }
+
+ DateTime ende = start.AddMonths(1).AddTicks(-1);
+
+ if (DateTime.TryParse(qro.Rows[0].Field2.ToString(), out dt) && dt < DateTime.MaxValue.Date)
+ {
+ ende = dt.AddTicks(-1);
+
+ }
+
+ var config = new FLSAnalysisConfigDC();
+ config.StartDate = start;
+ config.EndDate = ende;
+ config.FetchApprovedFLS = true;
+ config.ReportType = FLSReportType.Customer;
+
+ if (qro.Rows[0].Field3 != null && Int64.TryParse(qro.Rows[0].Field3.ToString(), out var catOid))
+ {
+ if (catOid > 0)
+ {
+ config.ServiceDescriptionOids = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(catOid).Select(d => d.Oid.Value).ToList();
+ }
+ }
+
+ if (qro.Rows[0].Field4 != null && Int64.TryParse(qro.Rows[0].Field4.ToString(), out var teamOid))
+ {
+ if (teamOid > 0)
+ {
+ config.TeamOids = new List { teamOid };
+ }
+ }
+
+ var plugin = PluginLoader.FindClass();
+
+ var reportDcList = plugin.GetCustomerFLSAnalysis(config);
+
+ return FLSSollIstReportRO.Create(reportDcList, config);
+ }
+ return null;
+ }
+
+ }
+}
diff --git a/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/FLSSollIstReport.Designer.cs b/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/FLSSollIstReport.Designer.cs
new file mode 100644
index 000000000..2c27f0b1f
--- /dev/null
+++ b/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/FLSSollIstReport.Designer.cs
@@ -0,0 +1,835 @@
+using BeWo.Report.ReportObjects;
+namespace LebenshilfeBadKreuznachAutismuszentrum
+{
+ partial class FLSSollIstReport
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark();
+ this.Detail = new DevExpress.XtraReports.UI.DetailBand();
+ this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
+ this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
+ this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
+ this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
+ this.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand();
+ this.Detail2 = new DevExpress.XtraReports.UI.DetailBand();
+ this.xrTable4 = new DevExpress.XtraReports.UI.XRTable();
+ this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
+ this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell18 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
+ this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
+ this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
+ this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.GroupFooter3 = new DevExpress.XtraReports.UI.GroupFooterBand();
+ this.xrTable3 = new DevExpress.XtraReports.UI.XRTable();
+ this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
+ this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.formattingRuleDiffNegativ = new DevExpress.XtraReports.UI.FormattingRule();
+ this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
+ this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
+ this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
+ this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
+ this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
+ this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
+ this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand();
+ this.xrPageInfo2 = new DevExpress.XtraReports.UI.XRPageInfo();
+ this.xrPageInfo1 = new DevExpress.XtraReports.UI.XRPageInfo();
+ this.Title = new DevExpress.XtraReports.UI.XRControlStyle();
+ this.FieldCaption = new DevExpress.XtraReports.UI.XRControlStyle();
+ this.PageInfo = new DevExpress.XtraReports.UI.XRControlStyle();
+ this.DataField = new DevExpress.XtraReports.UI.XRControlStyle();
+ this.fieldFLS = new DevExpress.XtraReports.UI.CalculatedField();
+ this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
+ this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
+ this.fieldDifferenzWoche1 = new DevExpress.XtraReports.UI.CalculatedField();
+ this.fieldDifferenzWoche2 = new DevExpress.XtraReports.UI.CalculatedField();
+ this.fieldDifferenzWoche3 = new DevExpress.XtraReports.UI.CalculatedField();
+ this.fieldDifferenzWoche4 = new DevExpress.XtraReports.UI.CalculatedField();
+ this.fieldDifferenzGesamt = new DevExpress.XtraReports.UI.CalculatedField();
+ this.formattingRuleBetragNegativ = new DevExpress.XtraReports.UI.FormattingRule();
+ this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
+ //
+ // Detail
+ //
+ this.Detail.HeightF = 0F;
+ this.Detail.Name = "Detail";
+ this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
+ this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
+ //
+ // xrTableCell1
+ //
+ this.xrTableCell1.Borders = DevExpress.XtraPrinting.BorderSide.None;
+ this.xrTableCell1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.Name")});
+ this.xrTableCell1.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Bold);
+ this.xrTableCell1.Name = "xrTableCell1";
+ this.xrTableCell1.StylePriority.UseBorderColor = false;
+ this.xrTableCell1.StylePriority.UseBorders = false;
+ this.xrTableCell1.StylePriority.UseFont = false;
+ this.xrTableCell1.Text = "xrTableCell1";
+ this.xrTableCell1.Weight = 6.9183673469387754D;
+ //
+ // xrTableRow1
+ //
+ this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
+ this.xrTableCell1});
+ this.xrTableRow1.Name = "xrTableRow1";
+ this.xrTableRow1.Weight = 1D;
+ //
+ // xrTable1
+ //
+ this.xrTable1.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 30F);
+ this.xrTable1.Name = "xrTable1";
+ this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
+ this.xrTableRow1});
+ this.xrTable1.SizeF = new System.Drawing.SizeF(560F, 25F);
+ this.xrTable1.StylePriority.UseBorders = false;
+ this.xrTable1.StylePriority.UsePadding = false;
+ //
+ // Detail1
+ //
+ this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrTable1});
+ this.Detail1.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
+ new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
+ this.Detail1.HeightF = 69.66665F;
+ this.Detail1.KeepTogether = true;
+ this.Detail1.KeepTogetherWithDetailReports = true;
+ this.Detail1.Name = "Detail1";
+ this.Detail1.StylePriority.UseFont = false;
+ //
+ // DetailReport
+ //
+ this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
+ this.Detail1,
+ this.DetailReport1});
+ this.DetailReport.DataMember = "RootObjectList";
+ this.DetailReport.DataSource = this.bindingSource1;
+ this.DetailReport.Level = 0;
+ this.DetailReport.Name = "DetailReport";
+ //
+ // DetailReport1
+ //
+ this.DetailReport1.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
+ this.Detail2,
+ this.GroupHeader2,
+ this.GroupFooter3});
+ this.DetailReport1.DataMember = "RootObjectList.Groups";
+ this.DetailReport1.DataSource = this.bindingSource1;
+ this.DetailReport1.Level = 0;
+ this.DetailReport1.Name = "DetailReport1";
+ //
+ // Detail2
+ //
+ this.Detail2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrTable4});
+ this.Detail2.HeightF = 25F;
+ this.Detail2.Name = "Detail2";
+ //
+ // xrTable4
+ //
+ this.xrTable4.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
+ this.xrTable4.Name = "xrTable4";
+ this.xrTable4.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 0, 0, 0, 100F);
+ this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
+ this.xrTableRow4});
+ this.xrTable4.SizeF = new System.Drawing.SizeF(890F, 25F);
+ this.xrTable4.StylePriority.UseBorders = false;
+ this.xrTable4.StylePriority.UsePadding = false;
+ //
+ // xrTableRow4
+ //
+ this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
+ this.xrTableCell3,
+ this.xrTableCell9,
+ this.xrTableCell13,
+ this.xrTableCell4,
+ this.xrTableCell18,
+ this.xrTableCell17,
+ this.xrTableCell19});
+ this.xrTableRow4.Name = "xrTableRow4";
+ this.xrTableRow4.Weight = 1D;
+ //
+ // xrTableCell3
+ //
+ this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.Groups.Name", "{0:dd/MM/yyyy}")});
+ this.xrTableCell3.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F);
+ this.xrTableCell3.Name = "xrTableCell3";
+ this.xrTableCell3.StylePriority.UseFont = false;
+ this.xrTableCell3.Text = "xrTableCell3";
+ this.xrTableCell3.Weight = 1.3605442176870746D;
+ //
+ // xrTableCell9
+ //
+ this.xrTableCell9.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F);
+ this.xrTableCell9.Name = "xrTableCell9";
+ this.xrTableCell9.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell9.StylePriority.UseFont = false;
+ this.xrTableCell9.StylePriority.UsePadding = false;
+ this.xrTableCell9.StylePriority.UseTextAlignment = false;
+ this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell9.TextFormatString = "{0:0.00}";
+ this.xrTableCell9.Weight = 0.68027210884353728D;
+ //
+ // xrTableCell13
+ //
+ this.xrTableCell13.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.Groups.IstGesamt")});
+ this.xrTableCell13.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F);
+ this.xrTableCell13.Multiline = true;
+ this.xrTableCell13.Name = "xrTableCell13";
+ this.xrTableCell13.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell13.StylePriority.UseFont = false;
+ this.xrTableCell13.StylePriority.UsePadding = false;
+ this.xrTableCell13.StylePriority.UseTextAlignment = false;
+ this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell13.TextFormatString = "{0:0.00}";
+ this.xrTableCell13.Weight = 0.6802721088435375D;
+ //
+ // xrTableCell4
+ //
+ this.xrTableCell4.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F);
+ this.xrTableCell4.Multiline = true;
+ this.xrTableCell4.Name = "xrTableCell4";
+ this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell4.StylePriority.UseFont = false;
+ this.xrTableCell4.StylePriority.UsePadding = false;
+ this.xrTableCell4.StylePriority.UseTextAlignment = false;
+ this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell4.Weight = 0.6802721088435375D;
+ //
+ // xrTableCell17
+ //
+ this.xrTableCell17.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.Groups.CustomValue1")});
+ this.xrTableCell17.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F);
+ this.xrTableCell17.Multiline = true;
+ this.xrTableCell17.Name = "xrTableCell17";
+ this.xrTableCell17.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell17.StylePriority.UseFont = false;
+ this.xrTableCell17.StylePriority.UsePadding = false;
+ this.xrTableCell17.StylePriority.UseTextAlignment = false;
+ this.xrTableCell17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell17.Weight = 0.88435374149659873D;
+ //
+ // xrTableCell18
+ //
+ this.xrTableCell18.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.Groups.CustomValue2")});
+ this.xrTableCell18.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F);
+ this.xrTableCell18.Multiline = true;
+ this.xrTableCell18.Name = "xrTableCell18";
+ this.xrTableCell18.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell18.StylePriority.UseFont = false;
+ this.xrTableCell18.StylePriority.UsePadding = false;
+ this.xrTableCell18.StylePriority.UseTextAlignment = false;
+ this.xrTableCell18.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell18.Weight = 0.88435374149659873D;
+ //
+ // xrTableCell19
+ //
+ this.xrTableCell19.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.Groups.CustomValue3")});
+ this.xrTableCell19.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F);
+ this.xrTableCell19.Multiline = true;
+ this.xrTableCell19.Name = "xrTableCell19";
+ this.xrTableCell19.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell19.StylePriority.UseFont = false;
+ this.xrTableCell19.StylePriority.UsePadding = false;
+ this.xrTableCell19.StylePriority.UseTextAlignment = false;
+ this.xrTableCell19.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell19.Weight = 0.88435374149659873D;
+ //
+ // GroupHeader2
+ //
+ this.GroupHeader2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrTable2});
+ this.GroupHeader2.HeightF = 40F;
+ this.GroupHeader2.Name = "GroupHeader2";
+ this.GroupHeader2.RepeatEveryPage = true;
+ //
+ // xrTable2
+ //
+ this.xrTable2.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
+ | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrTable2.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
+ this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
+ this.xrTable2.Name = "xrTable2";
+ this.xrTable2.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 0, 0, 0, 100F);
+ this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
+ this.xrTableRow2});
+ this.xrTable2.SizeF = new System.Drawing.SizeF(890F, 40F);
+ this.xrTable2.StylePriority.UseBorders = false;
+ this.xrTable2.StylePriority.UseFont = false;
+ this.xrTable2.StylePriority.UsePadding = false;
+ //
+ // xrTableRow2
+ //
+ this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
+ this.xrTableCell5,
+ this.xrTableCell7,
+ this.xrTableCell12,
+ this.xrTableCell2,
+ this.xrTableCell15,
+ this.xrTableCell14,
+ this.xrTableCell16});
+ this.xrTableRow2.Name = "xrTableRow2";
+ this.xrTableRow2.Weight = 1.6D;
+ //
+ // xrTableCell5
+ //
+ this.xrTableCell5.Name = "xrTableCell5";
+ this.xrTableCell5.Text = "Mitarbeiter/in";
+ this.xrTableCell5.Weight = 1.3605442176870746D;
+ //
+ // xrTableCell7
+ //
+ this.xrTableCell7.Name = "xrTableCell7";
+ this.xrTableCell7.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell7.StylePriority.UsePadding = false;
+ this.xrTableCell7.StylePriority.UseTextAlignment = false;
+ this.xrTableCell7.Text = "Soll";
+ this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell7.Weight = 0.6802721088435375D;
+ //
+ // xrTableCell12
+ //
+ this.xrTableCell12.Multiline = true;
+ this.xrTableCell12.Name = "xrTableCell12";
+ this.xrTableCell12.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell12.StylePriority.UsePadding = false;
+ this.xrTableCell12.StylePriority.UseTextAlignment = false;
+ this.xrTableCell12.Text = "Ist";
+ this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell12.Weight = 0.68027210884353739D;
+ //
+ // xrTableCell2
+ //
+ this.xrTableCell2.Multiline = true;
+ this.xrTableCell2.Name = "xrTableCell2";
+ this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell2.StylePriority.UsePadding = false;
+ this.xrTableCell2.StylePriority.UseTextAlignment = false;
+ this.xrTableCell2.Text = "Diff.";
+ this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell2.Weight = 0.6802721088435375D;
+ //
+ // xrTableCell14
+ //
+ this.xrTableCell14.Multiline = true;
+ this.xrTableCell14.Name = "xrTableCell14";
+ this.xrTableCell14.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell14.StylePriority.UsePadding = false;
+ this.xrTableCell14.StylePriority.UseTextAlignment = false;
+ this.xrTableCell14.Text = "erwirtschafteter\r\nBetrag";
+ this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell14.Weight = 0.88435374149659862D;
+ //
+ // xrTableCell15
+ //
+ this.xrTableCell15.Multiline = true;
+ this.xrTableCell15.Name = "xrTableCell15";
+ this.xrTableCell15.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell15.StylePriority.UsePadding = false;
+ this.xrTableCell15.StylePriority.UseTextAlignment = false;
+ this.xrTableCell15.Text = "Möglicher Betrag";
+ this.xrTableCell15.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell15.Weight = 0.88435374149659862D;
+ //
+ // xrTableCell16
+ //
+ this.xrTableCell16.Multiline = true;
+ this.xrTableCell16.Name = "xrTableCell16";
+ this.xrTableCell16.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell16.StylePriority.UsePadding = false;
+ this.xrTableCell16.StylePriority.UseTextAlignment = false;
+ this.xrTableCell16.Text = "Differenz";
+ this.xrTableCell16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell16.Weight = 0.88435374149659862D;
+ //
+ // GroupFooter3
+ //
+ this.GroupFooter3.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrTable3});
+ this.GroupFooter3.HeightF = 25F;
+ this.GroupFooter3.Name = "GroupFooter3";
+ //
+ // xrTable3
+ //
+ this.xrTable3.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrTable3.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
+ this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
+ this.xrTable3.Name = "xrTable3";
+ this.xrTable3.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 0, 0, 0, 100F);
+ this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
+ this.xrTableRow3});
+ this.xrTable3.SizeF = new System.Drawing.SizeF(890F, 25F);
+ this.xrTable3.StylePriority.UseBorders = false;
+ this.xrTable3.StylePriority.UseFont = false;
+ this.xrTable3.StylePriority.UsePadding = false;
+ //
+ // xrTableRow3
+ //
+ this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
+ this.xrTableCell6,
+ this.xrTableCell8,
+ this.xrTableCell10,
+ this.xrTableCell11,
+ this.xrTableCell21,
+ this.xrTableCell20,
+ this.xrTableCell22});
+ this.xrTableRow3.Name = "xrTableRow3";
+ this.xrTableRow3.Weight = 1D;
+ //
+ // xrTableCell6
+ //
+ this.xrTableCell6.Name = "xrTableCell6";
+ this.xrTableCell6.Text = "Summe";
+ this.xrTableCell6.Weight = 1.3605442176870746D;
+ //
+ // xrTableCell8
+ //
+ this.xrTableCell8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.SollGesamt")});
+ this.xrTableCell8.Name = "xrTableCell8";
+ this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell8.StylePriority.UsePadding = false;
+ this.xrTableCell8.StylePriority.UseTextAlignment = false;
+ this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell8.TextFormatString = "{0:0.00}";
+ this.xrTableCell8.Weight = 0.6802721088435375D;
+ //
+ // xrTableCell10
+ //
+ this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.IstGesamt")});
+ this.xrTableCell10.Multiline = true;
+ this.xrTableCell10.Name = "xrTableCell10";
+ this.xrTableCell10.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell10.StylePriority.UsePadding = false;
+ this.xrTableCell10.StylePriority.UseTextAlignment = false;
+ this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell10.TextFormatString = "{0:0.00}";
+ this.xrTableCell10.Weight = 0.68027210884353739D;
+ //
+ // xrTableCell11
+ //
+ this.xrTableCell11.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.DifferenzSollIstGesamt")});
+ this.xrTableCell11.FormattingRules.Add(this.formattingRuleDiffNegativ);
+ this.xrTableCell11.Multiline = true;
+ this.xrTableCell11.Name = "xrTableCell11";
+ this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell11.StylePriority.UsePadding = false;
+ this.xrTableCell11.StylePriority.UseTextAlignment = false;
+ this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell11.TextFormatString = "{0:0.00}";
+ this.xrTableCell11.Weight = 0.6802721088435375D;
+ //
+ // formattingRuleDiffNegativ
+ //
+ this.formattingRuleDiffNegativ.Condition = "[DifferenzSollIstGesamt] < 0";
+ this.formattingRuleDiffNegativ.DataMember = "RootObjectList";
+ this.formattingRuleDiffNegativ.Formatting.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+ this.formattingRuleDiffNegativ.Name = "formattingRuleDiffNegativ";
+ //
+ // xrTableCell20
+ //
+ this.xrTableCell20.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.CustomValue1")});
+ this.xrTableCell20.Multiline = true;
+ this.xrTableCell20.Name = "xrTableCell20";
+ this.xrTableCell20.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell20.StylePriority.UsePadding = false;
+ this.xrTableCell20.StylePriority.UseTextAlignment = false;
+ this.xrTableCell20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell20.Weight = 0.88435374149659873D;
+ //
+ // xrTableCell21
+ //
+ this.xrTableCell21.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.CustomValue2")});
+ this.xrTableCell21.Multiline = true;
+ this.xrTableCell21.Name = "xrTableCell21";
+ this.xrTableCell21.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell21.StylePriority.UsePadding = false;
+ this.xrTableCell21.StylePriority.UseTextAlignment = false;
+ this.xrTableCell21.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell21.Weight = 0.88435374149659873D;
+ //
+ // xrTableCell22
+ //
+ this.xrTableCell22.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "RootObjectList.CustomValue3")});
+ this.xrTableCell22.FormattingRules.Add(this.formattingRuleBetragNegativ);
+ this.xrTableCell22.Multiline = true;
+ this.xrTableCell22.Name = "xrTableCell22";
+ this.xrTableCell22.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 100F);
+ this.xrTableCell22.StylePriority.UsePadding = false;
+ this.xrTableCell22.StylePriority.UseTextAlignment = false;
+ this.xrTableCell22.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrTableCell22.Weight = 0.88435374149659873D;
+ //
+ // ReportHeader
+ //
+ this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrLabel5,
+ this.xrLabel4,
+ this.xrLabel3,
+ this.xrLabel2,
+ this.xrLabel1});
+ this.ReportHeader.HeightF = 50F;
+ this.ReportHeader.Name = "ReportHeader";
+ //
+ // xrLabel5
+ //
+ this.xrLabel5.Font = new DevExpress.Drawing.DXFont("Arial", 12F);
+ this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(175F, 25F);
+ this.xrLabel5.Name = "xrLabel5";
+ this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
+ this.xrLabel5.SizeF = new System.Drawing.SizeF(17F, 25F);
+ this.xrLabel5.StylePriority.UseFont = false;
+ this.xrLabel5.StylePriority.UseTextAlignment = false;
+ this.xrLabel5.Text = "-";
+ this.xrLabel5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
+ //
+ // xrLabel4
+ //
+ this.xrLabel4.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "ReportEndDate", "{0:dd/MM/yyyy}")});
+ this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Arial", 12F);
+ this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(192.0001F, 25F);
+ this.xrLabel4.Name = "xrLabel4";
+ this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
+ this.xrLabel4.SizeF = new System.Drawing.SizeF(367.9999F, 25F);
+ this.xrLabel4.StylePriority.UseFont = false;
+ this.xrLabel4.Text = "xrLabel4";
+ //
+ // xrLabel3
+ //
+ this.xrLabel3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "ReportStartDate", "{0:dd/MM/yyyy}")});
+ this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Arial", 12F);
+ this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(83F, 25F);
+ this.xrLabel3.Name = "xrLabel3";
+ this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
+ this.xrLabel3.SizeF = new System.Drawing.SizeF(92F, 25F);
+ this.xrLabel3.StylePriority.UseFont = false;
+ this.xrLabel3.StylePriority.UseTextAlignment = false;
+ this.xrLabel3.Text = "xrLabel3";
+ this.xrLabel3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ //
+ // xrLabel2
+ //
+ this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Arial", 12F);
+ this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F);
+ this.xrLabel2.Name = "xrLabel2";
+ this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
+ this.xrLabel2.SizeF = new System.Drawing.SizeF(83F, 25F);
+ this.xrLabel2.StylePriority.UseFont = false;
+ this.xrLabel2.Text = "Zeitraum:";
+ //
+ // xrLabel1
+ //
+ this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Arial", 14F);
+ this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
+ this.xrLabel1.Multiline = true;
+ this.xrLabel1.Name = "xrLabel1";
+ this.xrLabel1.SizeF = new System.Drawing.SizeF(560F, 25F);
+ this.xrLabel1.StyleName = "Title";
+ this.xrLabel1.StylePriority.UseFont = false;
+ this.xrLabel1.Text = "Auswertung über geleistete Stunden";
+ //
+ // pageFooterBand1
+ //
+ this.pageFooterBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrPageInfo2,
+ this.xrPageInfo1});
+ this.pageFooterBand1.HeightF = 48F;
+ this.pageFooterBand1.Name = "pageFooterBand1";
+ //
+ // xrPageInfo2
+ //
+ this.xrPageInfo2.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
+ this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(938.9998F, 25F);
+ this.xrPageInfo2.Name = "xrPageInfo2";
+ this.xrPageInfo2.SizeF = new System.Drawing.SizeF(100F, 23F);
+ this.xrPageInfo2.StyleName = "PageInfo";
+ this.xrPageInfo2.StylePriority.UseFont = false;
+ this.xrPageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ this.xrPageInfo2.TextFormatString = "Seite {0} von {1}";
+ //
+ // xrPageInfo1
+ //
+ this.xrPageInfo1.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
+ this.xrPageInfo1.LocationFloat = new DevExpress.Utils.PointFloat(7.999878F, 25F);
+ this.xrPageInfo1.Name = "xrPageInfo1";
+ this.xrPageInfo1.PageInfo = DevExpress.XtraPrinting.PageInfo.DateTime;
+ this.xrPageInfo1.SizeF = new System.Drawing.SizeF(262.0001F, 23F);
+ this.xrPageInfo1.StyleName = "PageInfo";
+ this.xrPageInfo1.StylePriority.UseFont = false;
+ //
+ // Title
+ //
+ this.Title.BackColor = System.Drawing.Color.White;
+ this.Title.BorderColor = System.Drawing.SystemColors.ControlText;
+ this.Title.Borders = DevExpress.XtraPrinting.BorderSide.None;
+ this.Title.BorderWidth = 1F;
+ this.Title.Font = new DevExpress.Drawing.DXFont("Times New Roman", 24F);
+ this.Title.ForeColor = System.Drawing.Color.Black;
+ this.Title.Name = "Title";
+ //
+ // FieldCaption
+ //
+ this.FieldCaption.BackColor = System.Drawing.Color.White;
+ this.FieldCaption.BorderColor = System.Drawing.SystemColors.ControlText;
+ this.FieldCaption.Borders = DevExpress.XtraPrinting.BorderSide.None;
+ this.FieldCaption.BorderWidth = 1F;
+ this.FieldCaption.Font = new DevExpress.Drawing.DXFont("Times New Roman", 10F, DevExpress.Drawing.DXFontStyle.Bold);
+ this.FieldCaption.ForeColor = System.Drawing.Color.Black;
+ this.FieldCaption.Name = "FieldCaption";
+ //
+ // PageInfo
+ //
+ this.PageInfo.BackColor = System.Drawing.Color.White;
+ this.PageInfo.BorderColor = System.Drawing.SystemColors.ControlText;
+ this.PageInfo.Borders = DevExpress.XtraPrinting.BorderSide.None;
+ this.PageInfo.BorderWidth = 1F;
+ this.PageInfo.Font = new DevExpress.Drawing.DXFont("Times New Roman", 8F);
+ this.PageInfo.ForeColor = System.Drawing.Color.Black;
+ this.PageInfo.Name = "PageInfo";
+ //
+ // DataField
+ //
+ this.DataField.BackColor = System.Drawing.Color.White;
+ this.DataField.BorderColor = System.Drawing.SystemColors.ControlText;
+ this.DataField.Borders = DevExpress.XtraPrinting.BorderSide.None;
+ this.DataField.BorderWidth = 1F;
+ this.DataField.Font = new DevExpress.Drawing.DXFont("Times New Roman", 8F);
+ this.DataField.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.DataField.Name = "DataField";
+ //
+ // fieldFLS
+ //
+ this.fieldFLS.DataMember = "FLSReportGroups";
+ this.fieldFLS.Expression = "[TotalFLM] / 60";
+ this.fieldFLS.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
+ this.fieldFLS.Name = "fieldFLS";
+ //
+ // topMarginBand1
+ //
+ this.topMarginBand1.HeightF = 50F;
+ this.topMarginBand1.Name = "topMarginBand1";
+ //
+ // bottomMarginBand1
+ //
+ this.bottomMarginBand1.HeightF = 50F;
+ this.bottomMarginBand1.Name = "bottomMarginBand1";
+ //
+ // fieldDifferenzWoche1
+ //
+ this.fieldDifferenzWoche1.DataMember = "RootObjectList.Groups";
+ this.fieldDifferenzWoche1.Expression = "[Ist] - [Soll]";
+ this.fieldDifferenzWoche1.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
+ this.fieldDifferenzWoche1.Name = "fieldDifferenzWoche1";
+ //
+ // fieldDifferenzWoche2
+ //
+ this.fieldDifferenzWoche2.DataMember = "RootObjectList.Groups";
+ this.fieldDifferenzWoche2.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
+ this.fieldDifferenzWoche2.Name = "fieldDifferenzWoche2";
+ //
+ // fieldDifferenzWoche3
+ //
+ this.fieldDifferenzWoche3.DataMember = "RootObjectList.Groups";
+ this.fieldDifferenzWoche3.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
+ this.fieldDifferenzWoche3.Name = "fieldDifferenzWoche3";
+ //
+ // fieldDifferenzWoche4
+ //
+ this.fieldDifferenzWoche4.DataMember = "RootObjectList.Groups";
+ this.fieldDifferenzWoche4.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
+ this.fieldDifferenzWoche4.Name = "fieldDifferenzWoche4";
+ //
+ // fieldDifferenzGesamt
+ //
+ this.fieldDifferenzGesamt.DataMember = "RootObjectList.Groups";
+ this.fieldDifferenzGesamt.Expression = "[IstGesamt] - [SollGesamt]";
+ this.fieldDifferenzGesamt.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
+ this.fieldDifferenzGesamt.Name = "fieldDifferenzGesamt";
+ //
+ // formattingRuleBetragNegativ
+ //
+ this.formattingRuleBetragNegativ.Condition = "ToDecimal([CustomValue4]) < 0";
+ this.formattingRuleBetragNegativ.DataMember = "RootObjectList";
+ this.formattingRuleBetragNegativ.Formatting.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+ this.formattingRuleBetragNegativ.Name = "formattingRuleBetragNegativ";
+ //
+ // bindingSource1
+ //
+ this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.FLSSollIstReportRO);
+ //
+ // FLSSollIstReport
+ //
+ this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
+ this.Detail,
+ this.DetailReport,
+ this.ReportHeader,
+ this.pageFooterBand1,
+ this.topMarginBand1,
+ this.bottomMarginBand1});
+ this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
+ this.fieldFLS,
+ this.fieldDifferenzWoche1,
+ this.fieldDifferenzWoche2,
+ this.fieldDifferenzWoche3,
+ this.fieldDifferenzWoche4,
+ this.fieldDifferenzGesamt});
+ this.DataSource = this.bindingSource1;
+ this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
+ this.formattingRuleDiffNegativ,
+ this.formattingRuleBetragNegativ});
+ this.Landscape = true;
+ this.Margins = new DevExpress.Drawing.DXMargins(60F, 60F, 50F, 50F);
+ this.PageHeight = 827;
+ this.PageWidth = 1169;
+ this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
+ this.StyleSheet.AddRange(new DevExpress.XtraReports.UI.XRControlStyle[] {
+ this.Title,
+ this.FieldCaption,
+ this.PageInfo,
+ this.DataField});
+ this.Version = "23.2";
+ xrWatermark1.Id = "Watermark1";
+ this.Watermarks.Add(xrWatermark1);
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this)).EndInit();
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraReports.UI.DetailBand Detail;
+ private System.Windows.Forms.BindingSource bindingSource1;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
+ private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
+ private DevExpress.XtraReports.UI.XRTable xrTable1;
+ private DevExpress.XtraReports.UI.DetailBand Detail1;
+ private DevExpress.XtraReports.UI.DetailReportBand DetailReport;
+ private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel1;
+ private DevExpress.XtraReports.UI.PageFooterBand pageFooterBand1;
+ private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo2;
+ private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo1;
+ private DevExpress.XtraReports.UI.XRControlStyle Title;
+ private DevExpress.XtraReports.UI.XRControlStyle FieldCaption;
+ private DevExpress.XtraReports.UI.XRControlStyle PageInfo;
+ private DevExpress.XtraReports.UI.XRControlStyle DataField;
+ private DevExpress.XtraReports.UI.XRTable xrTable2;
+ private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
+ private DevExpress.XtraReports.UI.DetailReportBand DetailReport1;
+ private DevExpress.XtraReports.UI.DetailBand Detail2;
+ private DevExpress.XtraReports.UI.XRTable xrTable4;
+ private DevExpress.XtraReports.UI.XRTableRow xrTableRow4;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel5;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel4;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel3;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel2;
+ private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
+ private DevExpress.XtraReports.UI.CalculatedField fieldFLS;
+ private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
+ private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
+ private DevExpress.XtraReports.UI.CalculatedField fieldDifferenzWoche1;
+ private DevExpress.XtraReports.UI.CalculatedField fieldDifferenzWoche2;
+ private DevExpress.XtraReports.UI.CalculatedField fieldDifferenzWoche3;
+ private DevExpress.XtraReports.UI.CalculatedField fieldDifferenzWoche4;
+ private DevExpress.XtraReports.UI.CalculatedField fieldDifferenzGesamt;
+ private DevExpress.XtraReports.UI.XRTable xrTable3;
+ private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
+ private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter3;
+ private DevExpress.XtraReports.UI.FormattingRule formattingRuleDiffNegativ;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell15;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell17;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell18;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell19;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell20;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell21;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell22;
+ private DevExpress.XtraReports.UI.FormattingRule formattingRuleBetragNegativ;
+ }
+}
diff --git a/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/FLSSollIstReport.cs b/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/FLSSollIstReport.cs
new file mode 100644
index 000000000..768f7809b
--- /dev/null
+++ b/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/FLSSollIstReport.cs
@@ -0,0 +1,87 @@
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Report;
+using BeWo.Report.ReportObjects;
+using BeWo.Service.DCEntityMapper;
+using BS.Shared;
+using BS.Shared.Extensions;
+using System;
+
+namespace LebenshilfeBadKreuznachAutismuszentrum
+{
+ public partial class FLSSollIstReport : DevExpress.XtraReports.UI.XtraReport, IBeWoReport
+ {
+ public FLSSollIstReport()
+ {
+ InitializeComponent();
+ }
+
+ public void SetReportDataSource(FLSSollIstReportRO pRO)
+ {
+ //foreach (var group in pRO.FLSReportGroups)
+ //{
+ // foreach (var sr in group.ServiceRecords)
+ // {
+ // if (!sr.DistanceInMeter.HasValue && sr.ServiceRecordOid.HasValue)
+ // {
+ // var srBO = DAOFactory.GenericDAO.LoadByID(sr.ServiceRecordOid.Value);
+ // sr.DistanceInMeter = srBO.DistanceInMeter;
+ // }
+ // }
+ //}
+ BerechneBetraege(pRO);
+
+ this.bindingSource1.DataSource = pRO;
+ }
+
+ private void BerechneBetraege(FLSSollIstReportRO pRO)
+ {
+ decimal stundenSatz = BerechneStundensatz(pRO);
+ foreach (var item in pRO.RootObjectList)
+ {
+ foreach (var g in item.Groups)
+ {
+ decimal istPreisGruppe = 0;
+ decimal sollPreisGruppe = 0;
+
+ foreach (var week in g.WochenSummen)
+ {
+ istPreisGruppe += (week.IstStunden ?? 0) * stundenSatz;
+ sollPreisGruppe += (week.SollStunden ?? 0) * stundenSatz;
+ }
+
+ g.CustomValue1 = String.Format("{0:c}", istPreisGruppe);
+ }
+
+ item.CustomValue1 = String.Format("{0:c}", item.IstGesamt * stundenSatz);
+ item.CustomValue2 = String.Format("{0:c}", item.SollGesamt * stundenSatz);
+ item.CustomValue3 = String.Format("{0:c}", (item.IstGesamt - item.SollGesamt) * stundenSatz);
+ item.CustomValue4 = String.Format("{0:0.00}", (item.IstGesamt - item.SollGesamt) * stundenSatz);
+ }
+
+ }
+
+ private decimal BerechneStundensatz(FLSSollIstReportRO pRO)
+ {
+ decimal stundenSatz = 0;
+
+ if (pRO.ReportConfig.ServiceDescriptionOids != null && pRO.ReportConfig.ServiceDescriptionOids.Count > 0)
+ {
+ var cat = DAOFactory.GenericDAO.LoadByID(pRO.ReportConfig.ServiceDescriptionOids[0]).ServiceCategory;
+
+ var crps = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(cat.CostRatePeriods);
+
+ var cp = crps.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, pRO.ReportStartDate.Value);
+
+ if (cp != null && cp.CostRateValue.HasValue)
+ {
+ return cp.CostRateValue.Value;
+ }
+
+ }
+
+ return stundenSatz;
+ }
+
+ }
+}
diff --git a/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/FLSSollIstReport.resx b/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/FLSSollIstReport.resx
new file mode 100644
index 000000000..d58980a38
--- /dev/null
+++ b/ReportImp/LebenshilfeBadKreuznachAutismuszentrum/FLSSollIstReport.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ReportImp/PerspektivenEV/Service/CustomEmployeeServiceImp.cs b/ReportImp/PerspektivenEV/Service/CustomEmployeeServiceImp.cs
index 6ec02153b..091e37c5b 100644
--- a/ReportImp/PerspektivenEV/Service/CustomEmployeeServiceImp.cs
+++ b/ReportImp/PerspektivenEV/Service/CustomEmployeeServiceImp.cs
@@ -10,68 +10,5 @@ using System.Threading.Tasks;
namespace PerspektivenEV.Service
{
- public class CustomEmployeeServiceImp : EmployeeServiceImp
- {
- public override Dictionary GetSonderurlaubForEmployee(long empOid, int berechnungsjahr)
- {
- Dictionary sonderurlaub = new Dictionary();
- try
- {
- var emp = DAOFactory.GenericDAO.GetByID(empOid);
- Contract contract = null;
- foreach (var c in emp.Contracts)
- {
- if (c.EntryDate.HasValue && !c.ContractEndDate.HasValue || c.EntryDate.HasValue && c.ContractEndDate.HasValue &&
- berechnungsjahr >= c.EntryDate.Value.Year && berechnungsjahr <= c.ContractEndDate.Value.Year)
- {
- contract = c;
- break;
- }
- }
- // Wenn eine Behinderung von mind. 50 vorliegt stehen standardmäßig 5 Sonderurlaubstage zu
- if (contract != null && (contract.EntryDate.HasValue && contract.ContractEndDate.HasValue || contract.EntryDate.HasValue && !contract.ContractEndDate.HasValue))
- {
- var yearStart = new DateTime(berechnungsjahr, 1, 1);
- var yearEnd = new DateTime(berechnungsjahr, 12, 31);
-
- // Schnittmenge aus Vertrag + Ausweis
- var overlapStart = contract.EntryDate > emp.AusweisGueltigVon ? contract.EntryDate : emp.AusweisGueltigVon;
- var overlapEnd = (contract.ContractEndDate ?? DateTime.MaxValue) < (emp.AusweisGueltigBis ?? DateTime.MaxValue) ? (contract.ContractEndDate ?? DateTime.MaxValue) : (emp.AusweisGueltigBis ?? DateTime.MaxValue);
-
- // Jetzt prüfen: gibt es davon etwas im Jahr?
- if (overlapStart <= overlapEnd && overlapStart <= yearEnd && overlapEnd >= yearStart)
- {
- if (emp.GradDerBehinderung != null && emp.GradDerBehinderung != "")
- {
- int.TryParse(emp.GradDerBehinderung, out int grad);
- if (grad >= 50)
- {
- // TODO Anteilig berechnen, (wenn Behinderung erst im Berechnungsjahr beginnt nur die "aktiven" Monate anrechnen und ab
-
- // Wenn keine Anzahl der wöchentlichen Arbeitstage gesetzt ist, 5 Tage
- // Sonst Anzahl der wöchentlichen Arbeitstage (gesdetzlich so geregelt)
- sonderurlaub.Add("Sonderurlaub aufgrund von Behinderungsgrad über 50", 5);
- }
- }
- }
-
- // Anpassung für Perspektiven:
- // CancellationPeriod im Vertrag sind die Regenerationstage hier.
- // Die Anzahl Tage, die da drin steht, soll als Sonderurlaub gutgeschrieben werden
- if (contract.CancellationPeriod != null && contract.CancellationPeriod > 0)
- sonderurlaub.Add("Regenerationstage", contract.CancellationPeriod);
-
- }
-
- return sonderurlaub;
-
- }
- catch (Exception ex)
- {
- throw Utils.CreateBeWoFaultException(ex);
- }
-
- return sonderurlaub;
- }
- }
+
}
diff --git a/ReportImp/PerspektivenEV/Service/CustomVacationService.cs b/ReportImp/PerspektivenEV/Service/CustomVacationService.cs
index e834c2624..afdf46724 100644
--- a/ReportImp/PerspektivenEV/Service/CustomVacationService.cs
+++ b/ReportImp/PerspektivenEV/Service/CustomVacationService.cs
@@ -30,281 +30,15 @@ namespace PerspektivenEV.Service
return new DateTime(year, 12, 31);
}
- public override List BerechneUrlaubskontoZurDarstellung(EmployeeDC emp, int year, DateTime? endeDerBerechnung = null)
+ public override List BerechneUrlaubskontoZurDarstellung(Employee emp, int year, DateTime? endeDerBerechnung = null)
{
// Claude: Kein Urlaubskonto vor 2026
if (year < 2026)
return null;
- // ab hier Standard
- List dcs = new List();
- EmployeeServiceImp es = PluginLoader.FindClass();
-
- // Urlaubskonto erstellen
- var ent = DAOFactory.GenericDAO.LoadByID((long)emp.EmployeeOid);
- var urlaubskonten = BerechneUrlaubskonto(ent, year);
- var aktuellesKonto = urlaubskonten.First(u => u.Key == year);
-
- var geschenkteUrlaubstage = es.GetGeschenkteUrlaubstageForEmployee((long)emp.EmployeeOid);
- decimal sonderurlaub = 0;
-
-
- // Benötigt werden:
- // 1. Vetragliche Urlaubstage für´s Jahr
- List contracts = new List();
- Dictionary contractsAndWeeklyDays = new Dictionary();
-
- // Vertrag für Jahr raussuchen
- foreach (var c in emp.Contracts)
- {
- DateTime contractEndDate = new DateTime();
- if (c.ContractEndDate == null)
- contractEndDate = new DateTime(2099, 12, 31);
- else
- contractEndDate = c.ContractEndDate.Value;
-
- DateTime contractStartDate = new DateTime();
- if (c.EntryDate == null)
- contractStartDate = new DateTime(year, 01, 01);
- else
- contractStartDate = c.EntryDate.Value;
-
- if (year >= contractStartDate.Year && year <= contractEndDate.Year) // Wenn das ausgewählte Jahr zwischen Vertragsbeginn und -ende liegt
- {
- contracts.Add(c);
- contractsAndWeeklyDays.Add(c, c.WeeklyDays);
- }
- }
- if (contracts.Count == 0) // Kein Vertrag = kein Urlaubskonto
- return null;
-
-
- // 2. Abzuziehende Tage wegen Vertragsbeginn mitten im Jahr
- foreach (var contractAndWeeklyDays in contractsAndWeeklyDays)
- {
- var contract = contractAndWeeklyDays.Key;
- #region Vielleicht bald unnötig
- // Zahlen für Darstellung in View
- decimal tageNachAbzug = 0;
- decimal abzuziehendeTage = 0;
-
- int arbeitstage = contract.WeeklyDays; // Vertragliche Arbeitstage
- DateTime? endDate = contract.ContractEndDate == null ? new DateTime(year, 12, 31) : contract.ContractEndDate; // Ende des Vertrags auf letzten Tag des Jahres setzen, wenn kein Ende
- var leaveDays = contract.EmploymentType?.LeaveDays == null ? contract.LeaveDays : contract.EmploymentType.LeaveDays; // Vertragliche Urlaubstage
- if (!leaveDays.HasValue)
- {
- leaveDays = 0;
- }
- if (contract.EntryDate.HasValue && (contract.EntryDate.Value.Year == year || endDate.Value.Year == year)) // Wenn Vertrag im gewählten Jahr beginnt oder endet
- {
- if (contract.EntryDate.Value.Year == year) // Wenn Vertrag im gewählten Jahr beginnt
- {
- if (endDate >= new DateTime(contract.EntryDate.Value.Year, 12, 31)) // Wenn Vertrag länger gilt als das gewählte Jahr
- {
- int restlicheTageImJahr = Convert.ToInt32((new DateTime(contract.EntryDate.Value.Year, 12, 31) - contract.EntryDate.Value.Date).TotalDays);
- tageNachAbzug = CalcCorrectNumberOfLeaveDaysForSpecialContractSituation((DateTime)contract.EntryDate, endDate, arbeitstage, restlicheTageImJahr, leaveDays);
- }
- else // Wenn Ende des Vertrags im gleichen Jahr vor Jahresende ist
- {
- int restlicheTageImJahr = Convert.ToInt32((contract.ContractEndDate.Value.Date - contract.EntryDate.Value.Date).TotalDays);
- tageNachAbzug = CalcCorrectNumberOfLeaveDaysForSpecialContractSituation((DateTime)contract.EntryDate, endDate, arbeitstage, restlicheTageImJahr, leaveDays);
- }
- }
- else if (endDate.Value.Year == year) // Wenn Vertrag im gewählten Jahr endet
- {
- int restlicheTageImJahr = Convert.ToInt32(((DateTime)endDate - new DateTime(year, 1, 1)).TotalDays);
- tageNachAbzug = CalcCorrectNumberOfLeaveDaysForSpecialContractSituation((DateTime)contract.EntryDate, endDate, arbeitstage, restlicheTageImJahr, leaveDays);
- }
- // Abzuziehende Tage = Vertragliche Urlaubstage - Tage, die nach Abzug der verfallenden Tage übrig bleiben
- abzuziehendeTage = (decimal)leaveDays - tageNachAbzug;
- }
- #endregion
- if (contract == null || contract != null && !contract.EntryDate.HasValue)
- {
- continue;
- }
- var contractStart = contract.EntryDate.Value.ToString().Split(' ');
- var contractEnd = contract.ContractEndDate != null ? contract.ContractEndDate.Value.ToString().Split(' ') : null;
-
- var anzahlTage = leaveDays - abzuziehendeTage;
-
- var obereZeile = new UrlaubskontoDarstellungDC()
- {
- AnzahlTage = string.Format("{0:0.00}", anzahlTage),
- Herkunft = string.Format("EmpOid:{0} ContractOid:{1}", emp.EmployeeOid, contract.ContractOid),
- Tooltip = null,
- IsDeletable = false,
- DatumZurSortierung = null
- };
- obereZeile.Erlaeuterung = contractEnd == null ? "Urlaubstage laut Vertrag vom " + contractStart[0] + ":" : "Urlaubstage laut Vertrag vom " + contractStart[0] + " bis " + contractEnd[0] + ":";
- dcs.Add(obereZeile);
-
- // Standardmäßig Sonderurlaub bei Schwerbehinderung, aber modifizierbar
- List sonderurlaubItems = CreateSonderurlaubItems(emp, contract, es.GetSonderurlaubForEmployee(emp.EmployeeOid.Value, year), dcs);
- //List sonderurlaubItems = AddSonderurlaub(emp, contract, year);
- if (sonderurlaubItems.Count > 0 && !dcs.Any(d => d.Erlaeuterung == "Sonderurlaub aufgrund von Behinderungsgrad über 50"))
- {
- dcs.AddRange(sonderurlaubItems);
- sonderurlaub += sonderurlaubItems.Sum(s => Convert.ToDecimal(s.AnzahlTage));
- }
-
- #region Würde Code von 2. sparen, klappt aber leider nur dann, wenn es nicht mehr als einen Vertrag im Jahr gibt
- //decimal anzGeschenkteTage = 0.0m;
- //if (geschenkteUrlaubstage != null)
- //{
- // foreach (var item in geschenkteUrlaubstage)
- // {
- // if (item.Date.Year == year)
- // anzGeschenkteTage += item.AnzahlTage;
- // }
- //}
- //var testvar = aktuellesKonto.Value.Urlaubsanspruch - anzGeschenkteTage;
- //var obereZeile = new UrlaubskontoDarstellungDC()
- //{
- // AnzahlTage = testvar,
- // Herkunft = string.Format("EmpOid:{0} ContractOid:{1}", emp.EmployeeOid, contract.ContractOid),
- // Tooltip = null,
- // IsDeletable = false,
- // DatumZurSortierung = null
- //};
- //obereZeile.Erlaeuterung = contractEnd == null ? "Urlaubstage laut Vertrag vom " + contractStart[0] + ":" : "Urlaubstage laut Vertrag vom " + contractStart[0] + " bis " + contractEnd[0] + ":";
- //dcs.Add(obereZeile);
- #endregion
- }
-
- // 3. Geschenkte Urlaubstage im Jahr
- if (geschenkteUrlaubstage.Count > 0 && geschenkteUrlaubstage.Any(g => g.Date.Year == year))
- {
- // Einen Eintrag pro geschenktem Urlaubstag
- foreach (var eintrag in geschenkteUrlaubstage)
- {
- if (eintrag.Date.Year == year)
- {
- var tempDate = eintrag.Date.ToString().Split(' ');
- dcs.Add(new UrlaubskontoDarstellungDC()
- {
- Erlaeuterung = string.Format("Tage geschenkt am {0} von {1} ({2})", tempDate[0], eintrag.InsUser, eintrag.GeschenkterUrlaubstagNotice),
- AnzahlTage = eintrag.AnzahlTage > 0 ? string.Format("+{0:0.00}", eintrag.AnzahlTage) : string.Format("{0:0.00}", eintrag.AnzahlTage),
- Herkunft = string.Format("GeschenkterUrlaubstagOid:{0}", eintrag.GeschenkterUrlaubstagOid),
- Tooltip = eintrag.GeschenkterUrlaubstagNotice,
- IsDeletable = true,
- DatumZurSortierung = eintrag.Date
- });
- }
- }
- }
-
- // 4. Verfallener Resturlaub
- // Verfallsdatum der Urlaubstage des letzten Jahres zur Darstellung (also ohne Uhrzeit)
-
-
- // Resturlaub und den verbleibenden Resturlaub nach Verfall erstellen
- if (aktuellesKonto.Value.ResturlaubVorjahrTotal > 0) // Wenn Urlaub aus dem Vorjahr mitgenommen wurde
- {
- dcs.Add(new UrlaubskontoDarstellungDC()
- {
- Erlaeuterung = "Resturlaub aus " + (year - 1) + " :",
- AnzahlTage = string.Format("+{0:0.00}", aktuellesKonto.Value.ResturlaubVorjahrTotal),
- Herkunft = string.Format("EmpOid:{0} Urlaubskonto:{1}", emp.EmployeeOid, year),
- Tooltip = null,
- IsDeletable = false
- });
- }
- else if (urlaubskonten.ContainsKey(year - 1) && urlaubskonten[year - 1].Resturlaub > 0)
- {
- var vorherigesKonto = urlaubskonten[year - 1];
- aktuellesKonto.Value.ResturlaubVorjahrTotal += vorherigesKonto.Resturlaub;
- aktuellesKonto.Value.ResturlaubVorjahr += vorherigesKonto.Resturlaub;
-
- dcs.Add(new UrlaubskontoDarstellungDC()
- {
- Erlaeuterung = "Resturlaub aus " + (year - 1) + " :",
- AnzahlTage = string.Format("+{0:0.00}", aktuellesKonto.Value.ResturlaubVorjahrTotal),
- Herkunft = string.Format("EmpOid:{0} Urlaubskonto:{1}", emp.EmployeeOid, year),
- Tooltip = null,
- IsDeletable = false
- });
- }
- var expDate = GetExpirationDate(year);
- if (expDate != null)
- {
- var expDateString = GetExpirationDate(year).ToString().Split(' ');
-
- if (aktuellesKonto.Value.VerfallenerUrlaub > 0) // Wenn Urlaubstage verfallen sind
- {
- dcs.Add(new UrlaubskontoDarstellungDC()
- {
- Erlaeuterung = string.Format("Urlaub am {0} verfallen: ", expDateString[0]),
- AnzahlTage = string.Format("-{0:0.00}", aktuellesKonto.Value.VerfallenerUrlaub),
- DatumZurSortierung = GetExpirationDate(year),
- Tooltip = null,
- IsDeletable = false
- });
- }
- }
-
-
-
- // 5. Alle Urlaube, die Anfang oder Ende im gewählten Jahr haben
- var absences = GetAllVacationAbsences(emp.AbsenceTimes, year, true);
-
- if (absences.Count > 0) // Wenn es Urlaube in dem Jahr gibt
- {
- // Urlaube durchgehen und die Tage zählen
- foreach (var spanne in absences)
- {
- // Im Stundenkonto wird auch Resturlaub angezeigt. Geht eine Abwesenheit über das Ende des Stundenkontomonats hinaus,
- // Abwesenheit auf endeDerBerechnung setzen, damit Urlaubstage vom nachfolgenden Monat nicht zu früh abgezogen werden
- if (endeDerBerechnung.HasValue && spanne.End.HasValue && spanne.End.Value > endeDerBerechnung.Value)
- spanne.End = endeDerBerechnung;
- if (spanne.End.HasValue && spanne.End.Value.Year > year)
- spanne.End = new DateTime(year, 12, 31);
- if (spanne.Start.HasValue && spanne.Start.Value.Year < year)
- spanne.Start = new DateTime(year, 01, 01);
-
- decimal summeTage = 0;
-
- #region Urlaubstage zählen
- summeTage = CountAbwesenheitstage(emp, spanne, year, contractsAndWeeklyDays);
-
-
- #endregion
-
- // Start- und Enddatum des Urlaubs für Darstellung vorbereiten
- var startAsArray = spanne.Start.Value.ToString().Split(' ');
- var endAsArray = spanne.End.Value.ToString().Split(' ');
- // Eintrag für Urlaubstag setzen (Erläuterung abhängig davon, ob Urlaub nur ein Tag geht oder über mehrere
- dcs.Add(new UrlaubskontoDarstellungDC()
- {
- Erlaeuterung = startAsArray[0] == endAsArray[0] ? string.Format("Urlaub genommen am {0}", startAsArray[0]) :
- string.Format("Urlaub genommen vom {0} bis {1}", startAsArray[0], endAsArray[0]),
- AnzahlTage = string.Format("-{0:0.00}", summeTage),
- AnzahlTageUrlaub = summeTage,
- Herkunft = string.Format("AbsenceOid: {0}", spanne.AbsenceTimeOid),
- Tooltip = spanne.Notice,
- IsDeletable = false,
- DatumZurSortierung = spanne.Start.Value
- });
- }
- }
-
- // 6. Anzahl der aus 1.-5. resultierenden Resturlaubstage fürs Jahr, also Resturlaub vom Urlaubskonto
- var anzTage = aktuellesKonto.Value.ResturlaubVorjahrTotal > 0 && aktuellesKonto.Value.VerfallenerUrlaub <= 0 ? aktuellesKonto.Value.Resturlaub + aktuellesKonto.Value.ResturlaubVorjahr : aktuellesKonto.Value.Resturlaub;
- dcs.Add(new UrlaubskontoDarstellungDC()
- {
- AnzahlTage = string.Format("{0:0.00}", anzTage),
- Erlaeuterung = "Summe der verbleibenden Urlaubstage: ",
- Herkunft = "UrlaubskontoEmpOid" + aktuellesKonto.Value.EmployeeOid,
- Tooltip = null,
- IsDeletable = false,
- DatumZurSortierung = new DateTime(2999, 12, 31)
- });
-
- // 7. Liste der DCs nach Datum sortieren, um eine zeitliche Hierarchie zu schaffen
- var sortierteDCs = dcs.OrderBy(dc => dc.DatumZurSortierung).ToList();
-
- return sortierteDCs;
+ return base.BerechneUrlaubskontoZurDarstellung(emp, year, endeDerBerechnung);
}
+
public override Dictionary BerechneUrlaubskonto(Employee emp, int year)
{
try
@@ -346,12 +80,12 @@ namespace PerspektivenEV.Service
int? workdays = 0;
List arbeitszeiten = new List();
- Dictionary contractsAndWeeklyDays = new Dictionary();
+ Dictionary contractsAndWeeklyDays = new Dictionary();
// Jahresurlaubanspruch berechnen (noch kein Resturlaub Vorjahr in dieser Schleife, nur Jahresanspruch + Sonderfall Vertragsstart oder -ende mitten im Jahr)
foreach (var contract in emp.Contracts)
{
- contractsAndWeeklyDays.Add(MapperFactory.ContractDC_Contract.MapToNewDC(contract), contract.WeeklyDays.HasValue ? contract.WeeklyDays.Value : 0);
+ contractsAndWeeklyDays.Add(contract, contract.WeeklyDays ?? 5);
var start = contract.EntryDate?.Year ?? firstYear;
var end = contract.ContractEndDate?.Year ?? year;
@@ -436,7 +170,7 @@ namespace PerspektivenEV.Service
absencesYear = absencesYear.OrderBy(x => x.Item1).ToList();
Dictionary zuVerfallZuAddieren = new Dictionary();
- var geschenkteUrlaubstage = empService.GetGeschenkteUrlaubstageForEmployee((long)emp.Oid);
+ var geschenkteUrlaubstage = GetGeschenkteUrlaubstageForEmployee((long)emp.Oid);
// Alle Abwesenheiten durchlaufen, deren Dauer berechnen und vom Resturlaub + Geschenkte Tage Vorjahr abziehen, sofern es nicht nutzbaren Resturlaub vom Vorjahr gibt
// Tuple = Key-Value-Paar
@@ -456,7 +190,7 @@ namespace PerspektivenEV.Service
while (berechnungsjahr < absYear)
{
var geschenkteTageFuerAbrechnungsjahr = geschenkteUrlaubstage.Where(g => g.Date.Year == berechnungsjahr).ToList();
- var sonderurlaubFuerAbrechnungsjahr = empService.GetSonderurlaubForEmployee((long)emp.Oid, berechnungsjahr);
+ var sonderurlaubFuerAbrechnungsjahr = GetSonderurlaubForEmployee(emp, berechnungsjahr);
var tmp = konten[berechnungsjahr];
@@ -488,7 +222,7 @@ namespace PerspektivenEV.Service
if (absence.Start.HasValue && absence.Start.Value.Year < absYear)
absence.Start = new DateTime(absYear, 01, 01);
- dauer = CountAbwesenheitstage(MapperFactory.EmployeeDC_Employee.MapToNewDC(emp), absence, absYear, contractsAndWeeklyDays);
+ dauer = CountAbwesenheitstage(emp, absence, absYear, contractsAndWeeklyDays);
//dauer = BerechneAnzahlUrlaubstage(absence, null, absYear, workdays); // HIER MÜSSEN PARAMETER FÜR ISTWOCHENENDE() MITGEGEBEN WERDEN
// Verfallsdatum des Urlaubs festlegen
@@ -573,7 +307,7 @@ namespace PerspektivenEV.Service
konto.Value.Resturlaub += anzGeschenkteTage;
}
// Wenn es Sonderurlaube gibt, Liste durchlaufen und für jeden Eintrag den Zähler entsprechend der Tage erhöhen
- var sonderurlaube = empService.GetSonderurlaubForEmployee((long)emp.Oid, i);
+ var sonderurlaube = GetSonderurlaubForEmployee(emp, i);
if (sonderurlaube != null)
{
decimal anzSonderurlaubTage = 0.0m;
@@ -597,6 +331,59 @@ namespace PerspektivenEV.Service
}
}
+ public override Dictionary GetSonderurlaubForEmployee(Employee employee, int berechnungsjahr)
+ {
+ Dictionary sonderurlaub = new Dictionary();
+
+ Contract contract = null;
+ foreach (var c in employee.Contracts)
+ {
+ if (c.EntryDate.HasValue && !c.ContractEndDate.HasValue || c.EntryDate.HasValue && c.ContractEndDate.HasValue &&
+ berechnungsjahr >= c.EntryDate.Value.Year && berechnungsjahr <= c.ContractEndDate.Value.Year)
+ {
+ contract = c;
+ break;
+ }
+ }
+ // Wenn eine Behinderung von mind. 50 vorliegt stehen standardmäßig 5 Sonderurlaubstage zu
+ if (contract != null && (contract.EntryDate.HasValue && contract.ContractEndDate.HasValue || contract.EntryDate.HasValue && !contract.ContractEndDate.HasValue))
+ {
+ var yearStart = new DateTime(berechnungsjahr, 1, 1);
+ var yearEnd = new DateTime(berechnungsjahr, 12, 31);
+
+ // Schnittmenge aus Vertrag + Ausweis
+ var overlapStart = contract.EntryDate > employee.AusweisGueltigVon ? contract.EntryDate : employee.AusweisGueltigVon;
+ var overlapEnd = (contract.ContractEndDate ?? DateTime.MaxValue) < (employee.AusweisGueltigBis ?? DateTime.MaxValue) ? (contract.ContractEndDate ?? DateTime.MaxValue) : (employee.AusweisGueltigBis ?? DateTime.MaxValue);
+
+ // Jetzt prüfen: gibt es davon etwas im Jahr?
+ if (overlapStart <= overlapEnd && overlapStart <= yearEnd && overlapEnd >= yearStart)
+ {
+ if (employee.GradDerBehinderung != null && employee.GradDerBehinderung != "")
+ {
+ int.TryParse(employee.GradDerBehinderung, out int grad);
+ if (grad >= 50)
+ {
+ // TODO Anteilig berechnen, (wenn Behinderung erst im Berechnungsjahr beginnt nur die "aktiven" Monate anrechnen und ab
+
+ // Wenn keine Anzahl der wöchentlichen Arbeitstage gesetzt ist, 5 Tage
+ // Sonst Anzahl der wöchentlichen Arbeitstage (gesdetzlich so geregelt)
+ sonderurlaub.Add("Sonderurlaub aufgrund von Behinderungsgrad über 50", 5);
+ }
+ }
+ }
+
+ // Anpassung für Perspektiven:
+ // CancellationPeriod im Vertrag sind die Regenerationstage hier.
+ // Die Anzahl Tage, die da drin steht, soll als Sonderurlaub gutgeschrieben werden
+ if (contract.CancellationPeriod > 0)
+ sonderurlaub.Add("Regenerationstage", contract.CancellationPeriod);
+
+ }
+
+ return sonderurlaub;
+
+ }
+
public override List GetVacationReasonIDs()
{
var res = new List();
diff --git a/ReportImp/SHKServiceSBD/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SHKServiceSBD/CustomMitarbeiterstundenkontoBerechnung.cs
index 64cb7ce0d..3f8fa0068 100644
--- a/ReportImp/SHKServiceSBD/CustomMitarbeiterstundenkontoBerechnung.cs
+++ b/ReportImp/SHKServiceSBD/CustomMitarbeiterstundenkontoBerechnung.cs
@@ -4,6 +4,7 @@ using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
+using BeWo.Service.Dienstplanung;
using BS.Shared;
using BS.Shared.DataContracts;
@@ -365,13 +366,13 @@ namespace SHKServiceSBD
return false;
}
- public override bool AddServiceRecordToDuration(ServiceRecord item)
+ public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item)
{
- if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null)
+ if (item.ServiceDescription != null && item.ServiceDescription.Category != null)
{
if (!item.ServiceDescription.Name.Contains("Pause") && item.ServiceDescription.Name != "Zeitabzug")
{
- if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" || item.ServiceDescription.ServiceCategory.Name == "Buchhaltung")
+ if (item.ServiceDescription.Category.Name == "Arbeitszeit" || item.ServiceDescription.Category.Name == "Buchhaltung")
{
return true;
}
@@ -409,21 +410,21 @@ namespace SHKServiceSBD
}
- protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang,
+ protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang,
DateTime berichtsEnde)
{
decimal flsGesamt = 0;
decimal arbeitszeit = 0;
var sum = new ServiceRecordSummary();
- sum.RecordsImBerichtszeitraum = new List();
+ sum.RecordsImBerichtszeitraum = new List();
//base.CorrectOverlappingTimes(groupFilteredRecords);
foreach (var item in groupFilteredRecords)
{
if (!IsServiceRecordFehlzeit(item))
{
- if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde)
+ if (item.Start >= berichtsAnfang && item.Start < berichtsEnde)
{
//if (AddServiceRecordToDuration(item))
//{
@@ -431,9 +432,9 @@ namespace SHKServiceSBD
if (item.ServiceDescription != null &&
- item.ServiceDescription.ServiceCategory != null)
+ item.ServiceDescription.Category != null)
{
- if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" || item.ServiceDescription.ServiceCategory.Name == "Buchhaltung")
+ if (item.ServiceDescription.Category.Name == "Arbeitszeit" || item.ServiceDescription.Category.Name == "Buchhaltung")
{
if (!item.ServiceDescription.Name.Contains("Pause"))
{
@@ -444,7 +445,7 @@ namespace SHKServiceSBD
//arbeitszeit -= duration;
}
}
- else if (item.ServiceDescription.ServiceCategory.IsBillable)
+ else if (item.ServiceDescription.Category.IsBillable)
{
flsGesamt += duration;
}
@@ -462,7 +463,7 @@ namespace SHKServiceSBD
}
- public override IList CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ public override IList CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
{
var list = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll);
foreach (var dd in list)
@@ -471,7 +472,7 @@ namespace SHKServiceSBD
foreach (var sr in recordsAll)
{
- if (sr.Start.HasValue && sr.Start >= berichtStart && sr.Start < berichtEnde && sr.End.HasValue && sr.Start.Value.Day == dd.Date.Day)
+ if (sr.Start >= berichtStart && sr.Start < berichtEnde && sr.Start.Day == dd.Date.Day)
{
decimal duration = GetDuration(sr, ed);
@@ -857,11 +858,11 @@ namespace SHKServiceSBD
return dd;
}
- protected override decimal GetDuration(ServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ protected override decimal GetDuration(StundenkontoServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed)
{
var d = base.GetDuration(sr, ed);
- if (sr.ServiceDescription.ServiceCategory.Name == "Buchhaltung" && sr.ServiceDescription.Name.Contains("negativ"))
+ if (sr.ServiceDescription.Category.Name == "Buchhaltung" && sr.ServiceDescription.Name.Contains("negativ"))
{
d *= -1;
}
@@ -891,13 +892,13 @@ namespace SHKServiceSBD
return base.GetFeiertagsFaktor(start);
}
- public override decimal BerechnePauseMinuten(IList srListAlle)
+ public override decimal BerechnePauseMinuten(IList srListAlle)
{
- var srList = srListAlle.Where(s => s.ServiceDescription.ServiceCategory.Name == "Arbeitszeit");
+ var srList = srListAlle.Where(s => s.ServiceDescription.Category.Name == "Arbeitszeit");
decimal pausenZeit = 0;
- List pausen = new List();
- List nichtpausen = new List();
+ List pausen = new List();
+ List nichtpausen = new List();
foreach (var sr in srList)
{
diff --git a/ReportImp/SHKServiceSBD/CustomMitarbeiterstundenkontoBerechnungMonate.cs b/ReportImp/SHKServiceSBD/CustomMitarbeiterstundenkontoBerechnungMonate.cs
index c03a0841c..c873a0f69 100644
--- a/ReportImp/SHKServiceSBD/CustomMitarbeiterstundenkontoBerechnungMonate.cs
+++ b/ReportImp/SHKServiceSBD/CustomMitarbeiterstundenkontoBerechnungMonate.cs
@@ -1,48 +1,53 @@
-using System;
+using BeWo.Data.Entities;
+using BeWo.Report;
+using BeWo.Report.ReportObjects;
+using BeWo.Service.Dienstplanung;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
-using BeWo.Report;
-using BeWo.Data.Entities;
-using BeWo.Report.ReportObjects;
namespace SHKServiceSBD
{
public class CustomMitarbeiterstundenkontoBerechnungMonate : MitarbeiterstundenkontoBerechnungMonate
{
- public override void CreateReport(MitarbeiterstundenkontoMonateRO ro)
- {
- DateTime start = ro.ReportStartDate;
+ //public override void CreateReport(MitarbeiterstundenkontoMonateRO ro)
+ //{
+ // DateTime start = ro.ReportStartDate;
- var roDieserMonat = MitarbeiterstundenkontoRO.Create(ro.EmployeeOid, ro.TeamOids, start, start.AddMonths(1), ro.EmployeeOids);
- var b = CreateMitarbeiterstundenkontoBerechnung();
- b.CreateReport(roDieserMonat);
+ // var roDieserMonat = MitarbeiterstundenkontoRO.Create(ro.EmployeeOid, ro.TeamOids, start, start.AddMonths(1), ro.EmployeeOids);
+ // var b = CreateMitarbeiterstundenkontoBerechnung();
+ // b.CreateReport(roDieserMonat);
- var list = new List();
- while (start < ro.ReportEndDate)
- {
- DateTime monatStart = new DateTime(start.Year, start.Month, 1);
- DateTime monatEnde = monatStart.AddMonths(1);
+ // var list = new List();
+ // List allServiceRecords = roDieserMonat.AllServiceRecords;
- if (monatStart == ro.ReportStartDate)
- {
- MitarbeiterstundenkontoRO roMonat = MitarbeiterstundenkontoRO.Create(ro.EmployeeOid, ro.TeamOids, monatStart, monatEnde, ro.EmployeeOids);
- b = CreateMitarbeiterstundenkontoBerechnung();
- b.CreateReport(roMonat);
+ // while (start < ro.ReportEndDate)
+ // {
+ // DateTime monatStart = new DateTime(start.Year, start.Month, 1);
+ // DateTime monatEnde = monatStart.AddMonths(1);
- list.Add(roMonat);
- }
- else
- {
- //Schon oben erzeugt
- list.Add(roDieserMonat);
- }
- start = start.AddMonths(1);
- }
+ // if (monatStart == ro.ReportStartDate)
+ // {
+ // MitarbeiterstundenkontoRO roMonat = MitarbeiterstundenkontoRO.Create(ro.EmployeeOid, ro.TeamOids, monatStart, monatEnde, ro.EmployeeOids);
+ // roMonat.AllServiceRecords = allServiceRecords;
+ // b = CreateMitarbeiterstundenkontoBerechnung();
+ // b.CreateReport(roMonat);
+
+ // list.Add(roMonat);
+ // }
+ // else
+ // {
+ // //Schon oben erzeugt
+ // list.Add(roDieserMonat);
+ // }
+ // start = start.AddMonths(1);
+ // }
+
+ // InitData(ro, list);
+ //}
- InitData(ro, list);
- }
public override MitarbeiterstundenkontoBerechnung CreateMitarbeiterstundenkontoBerechnung()
{
return new CustomMitarbeiterstundenkontoBerechnung();
diff --git a/Service/Dienstplanung/DienstplanungsManager.cs b/Service/Dienstplanung/DienstplanungsManager.cs
index 7f8739239..df33270e3 100644
--- a/Service/Dienstplanung/DienstplanungsManager.cs
+++ b/Service/Dienstplanung/DienstplanungsManager.cs
@@ -870,10 +870,10 @@ namespace BeWo.Service.Dienstplanung
public static List BerechneSollSaldoUndIst(DienstplanerRootDC root, DateTime date, List empOids)
{
VacationService vs = PluginLoader.FindClass();
- var konto = MitarbeiterstundenkontoRO.Create(null, null, date, date.AddMonths(1), empOids);
+ var konto = MitarbeiterstundenkontoRONeu.Create(null, null, date, date.AddMonths(1), empOids);
DienstplanungsManager manager = PluginLoader.FindClass();
- var berechnung = PluginLoader.FindClass();
+ var berechnung = PluginLoader.FindClass();
berechnung.CreateReport(konto);
List monatsZusammenfassung = new List();
root.StundenBeiAbwesenheit = new Dictionary();
@@ -1066,9 +1066,9 @@ namespace BeWo.Service.Dienstplanung
{
VacationService vs = new VacationService();
List empOids = new List() { empOid };
- var konto = MitarbeiterstundenkontoRO.Create(null, null, date, date.AddMonths(1), empOids);
+ var konto = MitarbeiterstundenkontoRONeu.Create(null, null, date, date.AddMonths(1), empOids);
- var berechnung = PluginLoader.FindClass();
+ var berechnung = PluginLoader.FindClass();
berechnung.CreateReport(konto);
DienstplanerMonthlySummaryDC dc = new DienstplanerMonthlySummaryDC();
diff --git a/Service/Dienstplanung/Mitarbeiterstundenkonto.cs b/Service/Dienstplanung/Mitarbeiterstundenkonto.cs
index 50bca5ab1..52e696209 100644
--- a/Service/Dienstplanung/Mitarbeiterstundenkonto.cs
+++ b/Service/Dienstplanung/Mitarbeiterstundenkonto.cs
@@ -11,7 +11,7 @@ using System.Diagnostics;
namespace BeWo.Service.Dienstplanung
{
- public class MitarbeiterstundenkontoRO
+ public class MitarbeiterstundenkontoRONeu
{
List _EmployeeDetailList = new List();
List _TeamDetailList = new List();
@@ -48,13 +48,13 @@ namespace BeWo.Service.Dienstplanung
set { this._TeamDetailList = value; }
}
- public static MitarbeiterstundenkontoRO Create(long? employeeOid, IList teamOids, DateTime startDate, DateTime endDate, IEnumerable employeeOids)
+ public static MitarbeiterstundenkontoRONeu Create(long? employeeOid, IList teamOids, DateTime startDate, DateTime endDate, IEnumerable employeeOids)
{
Team team = null;
Dictionary empOidDict = new Dictionary();
- var ro = new MitarbeiterstundenkontoRO {ReportStartDate = startDate, ReportEndDate = endDate};
+ var ro = new MitarbeiterstundenkontoRONeu {ReportStartDate = startDate, ReportEndDate = endDate};
IList employees = null;
@@ -324,7 +324,7 @@ namespace BeWo.Service.Dienstplanung
public decimal ArbeitstageImBerichtszeitraum { get; set; }
- public AbsenceTimeDays AbsenceTimeDays { get; set; }
+ public AbsenceTimeDaysNeu AbsenceTimeDays { get; set; }
public decimal? HourlyRate { get; set; }
public decimal? WeeklyFLS { get; set; }
public decimal? EmployeeSalaryByContract { get; set; }
diff --git a/Service/Dienstplanung/MitarbeiterstundenkontoBerechnung.cs b/Service/Dienstplanung/MitarbeiterstundenkontoBerechnung.cs
index c215c9d92..1fe76aedc 100644
--- a/Service/Dienstplanung/MitarbeiterstundenkontoBerechnung.cs
+++ b/Service/Dienstplanung/MitarbeiterstundenkontoBerechnung.cs
@@ -14,27 +14,27 @@ using DevExpress.XtraCharts.Native;
namespace BeWo.Service.Dienstplanung
{
- public class MitarbeiterstundenkontoBerechnung
+ public class MitarbeiterstundenkontoBerechnungNeu
{
private decimal maxWochenstunden = 40;
private AppSettings appSettings;
private const int ANZ_WOCHENTAGE = 5;
- public MitarbeiterstundenkontoBerechnung()
+ public MitarbeiterstundenkontoBerechnungNeu()
{
appSettings = AppSettings.CreateSettings();
CheckIst = true;
}
- public MitarbeiterstundenkontoBerechnung(decimal maxWochenstunden) : this()
+ public MitarbeiterstundenkontoBerechnungNeu(decimal maxWochenstunden) : this()
{
this.maxWochenstunden = maxWochenstunden;
}
public bool CheckIst { get; set; }
- public virtual void CreateReport(MitarbeiterstundenkontoRO ro)
+ public virtual void CreateReport(MitarbeiterstundenkontoRONeu ro)
{
CreateEmployeeDetails(ro);
@@ -45,7 +45,7 @@ namespace BeWo.Service.Dienstplanung
}
- public virtual void CreateTotals(MitarbeiterstundenkontoRO ro)
+ public virtual void CreateTotals(MitarbeiterstundenkontoRONeu ro)
{
foreach (var empDetail in ro.EmployeeDetailList)
{
@@ -65,7 +65,7 @@ namespace BeWo.Service.Dienstplanung
ro.RelationFlsZuMittelbar = (ro.FlsIstGesamt / (ro.FlsIstGesamt + ro.MittelbarIst)) * 100;
}
- public virtual void CreateTeamDetails(MitarbeiterstundenkontoRO ro)
+ public virtual void CreateTeamDetails(MitarbeiterstundenkontoRONeu ro)
{
foreach (var teamDetail in ro.TeamDetailList)
{
@@ -89,7 +89,7 @@ namespace BeWo.Service.Dienstplanung
}
- public virtual void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro)
+ public virtual void CreateEmployeeDetails(MitarbeiterstundenkontoRONeu ro)
{
foreach (var empDetail in ro.EmployeeDetailList)
{
@@ -117,7 +117,7 @@ namespace BeWo.Service.Dienstplanung
empDetail.HasContract = true;
}
- ServiceRecordSummary summaryTotal = new ServiceRecordSummary();
+ var summaryTotal = new ServiceRecordSummaryNeu();
summaryTotal.RecordsImBerichtszeitraum = new List();
decimal pause1 = 0;
@@ -432,7 +432,7 @@ namespace BeWo.Service.Dienstplanung
}
- protected virtual AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
+ protected virtual AbsenceTimeHoursNeu GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRONeu.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
{
return null;
}
@@ -632,7 +632,7 @@ namespace BeWo.Service.Dienstplanung
return false;
}
- protected virtual void CalculateEmployeeSalary(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, DateTime start, DateTime ende)
+ protected virtual void CalculateEmployeeSalary(MitarbeiterstundenkontoRONeu.EmployeeDetail empDetail, DateTime start, DateTime ende)
{
decimal maxpayment = 0;
@@ -689,9 +689,9 @@ namespace BeWo.Service.Dienstplanung
empDetail.EmployeeSalaryByHours = salary;
}
- protected virtual ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
+ protected virtual ServiceRecordSummaryNeu BerechneStunden(MitarbeiterstundenkontoRONeu.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
{
- var sum = new ServiceRecordSummary();
+ var sum = new ServiceRecordSummaryNeu();
sum.RecordsImBerichtszeitraum = new List();
empDetail.ServiceRecordsInSelectedTimeSpan = new List();
@@ -837,9 +837,9 @@ namespace BeWo.Service.Dienstplanung
return false;
}
- public virtual List FilterEmployeeList(List employeeDetailList)
+ public virtual List FilterEmployeeList(List employeeDetailList)
{
- List newEmpList = new List();
+ List newEmpList = new List();
foreach (var ed in employeeDetailList)
{
@@ -859,7 +859,7 @@ namespace BeWo.Service.Dienstplanung
return newEmpList;
}
- public virtual void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract)
+ public virtual void HandleServiceRecords(MitarbeiterstundenkontoRONeu.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract)
{
//do nothing
}
@@ -1037,7 +1037,7 @@ namespace BeWo.Service.Dienstplanung
return null;
}
- public virtual void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item)
+ public virtual void HandleServiceRecord(MitarbeiterstundenkontoRONeu.EmployeeDetail emp, ServiceRecord item)
{
//do nothing
}
@@ -1052,18 +1052,18 @@ namespace BeWo.Service.Dienstplanung
return false;
}
- public virtual IList CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ public virtual IList CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRONeu.EmployeeDetail ed, IList recordsAll)
{
if (ShouldCreateDayDetailsForEachServiceRecord())
{
return CreateDayDetailsForEachServiceRecord(berichtStart, berichtEnde, ed, recordsAll);
}
- Dictionary dayToDetail = new Dictionary();
+ Dictionary dayToDetail = new Dictionary();
for (int i = berichtStart.Day; i <= berichtEnde.AddDays(-1).Day; i++)
{
- MitarbeiterstundenkontoRO.DayDetail dd = CreateDayDetail(new DateTime(berichtStart.Year, berichtStart.Month, i), ed);
+ MitarbeiterstundenkontoRONeu.DayDetail dd = CreateDayDetail(new DateTime(berichtStart.Year, berichtStart.Month, i), ed);
dayToDetail.Add(i, dd);
}
@@ -1200,9 +1200,9 @@ namespace BeWo.Service.Dienstplanung
return dayToDetail.Values.OrderBy(dd => dd.Date).ToList();
}
- public virtual IList CreateDayDetailsForEachServiceRecord(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ public virtual IList CreateDayDetailsForEachServiceRecord(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRONeu.EmployeeDetail ed, IList recordsAll)
{
- var details = new List();
+ var details = new List();
foreach (var sr in recordsAll)
{
@@ -1268,7 +1268,7 @@ namespace BeWo.Service.Dienstplanung
return duration;
}
- public virtual void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration)
+ public virtual void CalculateSpecialHours(MitarbeiterstundenkontoRONeu.DayDetail dd, ServiceRecord sr, decimal duration)
{
if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday)
{
@@ -1348,9 +1348,9 @@ namespace BeWo.Service.Dienstplanung
return 0;
}
- public virtual MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ public virtual MitarbeiterstundenkontoRONeu.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRONeu.EmployeeDetail ed)
{
- MitarbeiterstundenkontoRO.DayDetail dd = new MitarbeiterstundenkontoRO.DayDetail();
+ MitarbeiterstundenkontoRONeu.DayDetail dd = new MitarbeiterstundenkontoRONeu.DayDetail();
dd.ZusammenhaengendeZeitraeume = new List();
dd.Date = date.Date;
@@ -1363,7 +1363,7 @@ namespace BeWo.Service.Dienstplanung
return dd;
}
- public virtual void CalculateAbsenceTimesForDay(MitarbeiterstundenkontoRO.DayDetail dd, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ public virtual void CalculateAbsenceTimesForDay(MitarbeiterstundenkontoRONeu.DayDetail dd, MitarbeiterstundenkontoRONeu.EmployeeDetail ed)
{
var absenceTimes = ed.Employee.AbsenceTimes;
@@ -1483,9 +1483,9 @@ namespace BeWo.Service.Dienstplanung
return 1;
}
- public virtual MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden)
+ public virtual MitarbeiterstundenkontoRONeu.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRONeu.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden)
{
- MitarbeiterstundenkontoRO.EmployeeDetail edTotal = new MitarbeiterstundenkontoRO.EmployeeDetail();
+ MitarbeiterstundenkontoRONeu.EmployeeDetail edTotal = new MitarbeiterstundenkontoRONeu.EmployeeDetail();
ueberstunden = null;
alteExtraUeberstunden = 0;
@@ -1628,9 +1628,9 @@ namespace BeWo.Service.Dienstplanung
sollMitarbeiter -= fehlzeit.Value;
}
-
- MitarbeiterstundenkontoRO.EmployeeDetail ed = new MitarbeiterstundenkontoRO.EmployeeDetail();
+
+ MitarbeiterstundenkontoRONeu.EmployeeDetail ed = new MitarbeiterstundenkontoRONeu.EmployeeDetail();
ed.SollProTag = weeklyTotalHours / arbeitstageProWoche;
ed.ArbeitstageProWoche = arbeitstageProWoche;
ed.ArbeitstageImBerichtszeitraum = arbeitstage;
@@ -1764,12 +1764,12 @@ namespace BeWo.Service.Dienstplanung
return edTotal;
}
- protected virtual decimal? BerechneUeberstunden(MitarbeiterstundenkontoRO.EmployeeDetail ed, decimal? ueberstundenStd, Contract contract, DateTime start, DateTime ende)
+ protected virtual decimal? BerechneUeberstunden(MitarbeiterstundenkontoRONeu.EmployeeDetail ed, decimal? ueberstundenStd, Contract contract, DateTime start, DateTime ende)
{
return ueberstundenStd;
}
- public virtual decimal BerechneSollProWoche(Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ public virtual decimal BerechneSollProWoche(Contract c, MitarbeiterstundenkontoRONeu.EmployeeDetail ed)
{
if (c != null)
{
@@ -1796,7 +1796,7 @@ namespace BeWo.Service.Dienstplanung
}
- public virtual decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDays ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ public virtual decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDaysNeu ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRONeu.EmployeeDetail ed)
{
if (BerechneAlteAbwesenheitsStunden(start))
{
@@ -1938,7 +1938,7 @@ namespace BeWo.Service.Dienstplanung
return false;
}
- private decimal BerechneStundenDurchAbwesenheitenAlt(AbsenceTimeDays ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ private decimal BerechneStundenDurchAbwesenheitenAlt(AbsenceTimeDaysNeu ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRONeu.EmployeeDetail ed)
{
decimal? sollProMonat = BerechneSollProMonat(ed.Employee, start, ende);
@@ -1982,7 +1982,7 @@ namespace BeWo.Service.Dienstplanung
}
}
- public virtual decimal GetSollArbeitszeitProArbeitstag(Contract contract, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ public virtual decimal GetSollArbeitszeitProArbeitstag(Contract contract, MitarbeiterstundenkontoRONeu.EmployeeDetail ed)
{
if (contract.MonthlyTotalHours.HasValue && contract.MonthlyTotalHours.Value > 0 && ed.ArbeitstageImBerichtszeitraum > 0)
{
@@ -1997,7 +1997,7 @@ namespace BeWo.Service.Dienstplanung
}
//Wird nicht mehr benutzt
- public virtual decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDays ath, DateTime start, DateTime ende, int arbeitstageProWoche, decimal sollProWoche)
+ public virtual decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDaysNeu ath, DateTime start, DateTime ende, int arbeitstageProWoche, decimal sollProWoche)
{
decimal stunden = 0;
@@ -2057,7 +2057,7 @@ namespace BeWo.Service.Dienstplanung
return dict;
}
- public virtual decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ public virtual decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRONeu.EmployeeDetail ed, IList recordsAll)
{
decimal addHours = 0;
@@ -2077,7 +2077,7 @@ namespace BeWo.Service.Dienstplanung
return addHours;
}
- public virtual decimal CalculateBreakMinutes(MitarbeiterstundenkontoRO.DayDetail dayDetail, int maxHoursUntilBreak, int breakMinutes)
+ public virtual decimal CalculateBreakMinutes(MitarbeiterstundenkontoRONeu.DayDetail dayDetail, int maxHoursUntilBreak, int breakMinutes)
{
decimal addHours = 0;
@@ -2175,7 +2175,7 @@ namespace BeWo.Service.Dienstplanung
return contractNextToStartDate;
}
- public virtual AbsenceTimeDays GetAbsenceTimeDaysWithWorkWeeks(Employee emp, DateTime start, DateTime end, int arbeitstageProWoche)
+ public virtual AbsenceTimeDaysNeu GetAbsenceTimeDaysWithWorkWeeks(Employee emp, DateTime start, DateTime end, int arbeitstageProWoche)
{
if (HatArbeitszeitImZeitraum(emp.Arbeitszeiten, start, end))
{
@@ -2185,9 +2185,9 @@ namespace BeWo.Service.Dienstplanung
}
- public virtual AbsenceTimeDays GetAbsenceTimeDaysNachArbeitszeiten(Employee emp, DateTime start, DateTime end, int arbeitstageProWoche)
+ public virtual AbsenceTimeDaysNeu GetAbsenceTimeDaysNachArbeitszeiten(Employee emp, DateTime start, DateTime end, int arbeitstageProWoche)
{
- var atd = new AbsenceTimeDays();
+ var atd = new AbsenceTimeDaysNeu();
decimal? tage = null;
@@ -2204,7 +2204,7 @@ namespace BeWo.Service.Dienstplanung
return atd;
}
- public virtual void AddAbsenceDaysNachArbeitszeitenFuerTag(AbsenceTimeDays atd, Employee emp, DateTime tag)
+ public virtual void AddAbsenceDaysNachArbeitszeitenFuerTag(AbsenceTimeDaysNeu atd, Employee emp, DateTime tag)
{
Dictionary daysDict = new Dictionary();
foreach (var az in emp.Arbeitszeiten)
@@ -2241,7 +2241,7 @@ namespace BeWo.Service.Dienstplanung
}
}
- private void AddAbsenceDaysFuerTag(AbsenceTimeDays atd, Employee emp, DateTime arbeitstagStart, DateTime arbeitstagEnde)
+ private void AddAbsenceDaysFuerTag(AbsenceTimeDaysNeu atd, Employee emp, DateTime arbeitstagStart, DateTime arbeitstagEnde)
{
var hours = (decimal)arbeitstagEnde.Subtract(arbeitstagStart).TotalHours;
@@ -2290,9 +2290,9 @@ namespace BeWo.Service.Dienstplanung
}
- public virtual AbsenceTimeDays GetAbsenceTimeDaysWithWorkWeeks(IList absenceTimes, DateTime start, DateTime end, int arbeitstageProWoche)
+ public virtual AbsenceTimeDaysNeu GetAbsenceTimeDaysWithWorkWeeks(IList absenceTimes, DateTime start, DateTime end, int arbeitstageProWoche)
{
- var atd = new AbsenceTimeDays();
+ var atd = new AbsenceTimeDaysNeu();
var totalSpan = new DateTimeSpan();
totalSpan.StartDate = start;
totalSpan.EndDate = end.AddDays(-1);
@@ -2413,7 +2413,7 @@ namespace BeWo.Service.Dienstplanung
}
- public virtual AbsenceTimeDays GetAbsenceTimeDays(IList absenceTimes, DateTime start, DateTime end)
+ public virtual AbsenceTimeDaysNeu GetAbsenceTimeDays(IList absenceTimes, DateTime start, DateTime end)
{
return GetAbsenceTimeDaysWithWorkWeeks(absenceTimes, start, end, ANZ_WOCHENTAGE);
}
@@ -2640,7 +2640,7 @@ namespace BeWo.Service.Dienstplanung
}
}
- public class AbsenceTimeDays
+ public class AbsenceTimeDaysNeu
{
public decimal? TageUrlaub;
public decimal? TageKrankheit;
@@ -2650,14 +2650,14 @@ namespace BeWo.Service.Dienstplanung
public Dictionary RestStundenProWocheDict;
}
- public class AbsenceTimeHours
+ public class AbsenceTimeHoursNeu
{
public decimal StundenUrlaub;
public decimal StundenKrankheit;
public decimal StundenSonstiges;
}
- public class ServiceRecordSummary
+ public class ServiceRecordSummaryNeu
{
public decimal IstAbrechenbar { get; set; }
diff --git a/Service/Dienstplanung/StundenkontoServiceRecord.cs b/Service/Dienstplanung/StundenkontoServiceRecord.cs
new file mode 100644
index 000000000..d50f8e02e
--- /dev/null
+++ b/Service/Dienstplanung/StundenkontoServiceRecord.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Ink;
+using BS.Shared.Core;
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BS.Shared;
+using BS.Shared.Extensions;
+using System.Diagnostics;
+using BS.Shared.DataContracts;
+
+namespace BeWo.Service.Dienstplanung
+{
+ public class StundenkontoServiceRecord
+ {
+ public long? ServiceRecordOid { get; set; }
+ public DateTime Start { get; set; }
+ public DateTime End { get; set; }
+ public decimal RoundedDuration { get; set; }
+ public int? GroupEmployeeCount { get; set; }
+ public int? GroupPersonCount { get; set; }
+ public decimal? GroupRoundedDuration { get; set; }
+ public long? GroupOid { get; set; }
+ public decimal DistanceInMeter { get; set; }
+ public decimal? Betrag { get; set; }
+ public ServiceDescriptionDC ServiceDescription { get; set; }
+ public long? CostBearer2SupportConceptOid { get; set; }
+ public long? CustomerOid { get; set; }
+ public long? EmployeeOid { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Service/Plugins/PluginLoader.cs b/Service/Plugins/PluginLoader.cs
index 428f78c1a..18f4175c4 100644
--- a/Service/Plugins/PluginLoader.cs
+++ b/Service/Plugins/PluginLoader.cs
@@ -330,7 +330,7 @@ namespace BeWo.Service.Plugins
//t = "5065709552"; // Biotop e.V.
//t = "9094672461"; // Transkulturelles Betreuungsbüro (Toprak GmbH)
//t = "9008813932"; // Aids Hilfe Giessen
- //t = "4052216789"; // Perspektiven e.V.
+ t = "4052216789"; // Perspektiven e.V.
//t = "7663765314"; // Christina Frommen (Frommen BeWo)
//t = "5462295916"; // BeWo Dellbrueck
//t = "2120989920"; // Sozialbüro Schüßler und Wilckens GbR
@@ -407,7 +407,7 @@ namespace BeWo.Service.Plugins
//t = "9520730180"; // Arbeitskreis Jugend- und Drogenberatung Waf
//t = "8365918329"; // Lebenshilfe Stade e.V. Schulbegleitender Dienst
//t = "6203102637"; // BeWo Neuss-Lauth u. Lauth GbR
- t = "7060431533"; // Arche Tecklenburg e.V.
+ //t = "7060431533"; // Arche Tecklenburg e.V.
//t = "1159580198"; // Wendepunkt Velbert gGmbH
//t = "5094575560"; // Christopherus Haus MID
//t = "5261046426"; // SelbstWerk EN / Bettina Heckrodt
diff --git a/Service/Plugins/VacationService.cs b/Service/Plugins/VacationService.cs
index 6a5042316..56563fc57 100644
--- a/Service/Plugins/VacationService.cs
+++ b/Service/Plugins/VacationService.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text.RegularExpressions;
-using BeWo.Data.Access;
+using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.ServiceImplementations;
@@ -11,12 +7,20 @@ using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using DevExpress.CodeParser;
+using DevExpress.XtraRichEdit.Import.Html;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text.RegularExpressions;
namespace BeWo.Service.Plugins
{
public class VacationService : AbstractIDSpecificDefaultClass
{
private List databaseFeiertage = null;
+ private IList allAbsenceReasons = null;
+ private IList allGeschenkteUrlaubstage = null;
private List _Feiertage { get;set; }
private string _Bundesland = "NRW";
@@ -141,6 +145,31 @@ namespace BeWo.Service.Plugins
return databaseFeiertage.Where(f => f.Datum >= new DateTime(year, 1, 1) && f.Datum < new DateTime(year + 1, 1, 1)).ToList();
}
+ private IList AllAbsenceReasons
+ {
+ get
+ {
+ if (allAbsenceReasons == null)
+ {
+ allAbsenceReasons = DAOFactory.GenericDAO.GetAll();
+ }
+
+ return allAbsenceReasons;
+ }
+ }
+
+ private IList AllGeschenkteUrlaubstage
+ {
+ get
+ {
+ return allGeschenkteUrlaubstage;
+ }
+ set
+ {
+ allGeschenkteUrlaubstage = value;
+ }
+ }
+
public static DateTime GetOsterSonntag(int year)
{
@@ -456,54 +485,37 @@ namespace BeWo.Service.Plugins
_Feiertage = GetFeiertage(year);
}
- public virtual List