From 88185d7382cfa47eaddad9516038f1b215fc89ba Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 17 Jul 2026 02:40:28 +0200 Subject: [PATCH] Kundenanpassungen an Mitarbeiterstundenkonto Refactoring --- .../MitarbeiterstundenkontoBerechnung.cs | 78 +- .../MitarbeiterstundenkontoRO.cs | 46 +- ReportImp/AKGG/Mitarbeiterarbeitszeitkonto.cs | 8 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 37 +- .../Mitarbeiterarbeitszeitkonto.cs | 2 +- .../Service/CustomVacationService.cs | 16 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 510 ++----------- .../AdikMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 3 +- .../AkggMid/Mitarbeiterarbeitszeitkonto.cs | 15 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 41 +- .../ApiMitarbeiterstundenkontoBerechnung.cs | 27 +- .../ApiBerlin/Mitarbeiterarbeitszeitkonto.cs | 6 +- ...eiterstundenkontoBerechnungTagesansicht.cs | 3 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- .../Mitarbeiterstundenkonto.cs | 2 +- .../MitarbeiterstundenkontoJahr.cs | 2 +- .../ArcheTecklenburg/Teamstundenkonto.cs | 2 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 37 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 5 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 15 +- ...stomerMitarbeiterstundenkontoBerechnung.cs | 25 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 23 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 58 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 35 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 35 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 15 +- ReportImp/BeWoDarmstadt/Zeitzuschlagsbeleg.cs | 37 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...DirektMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 5 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 25 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 3 +- .../Mitarbeiterstundenkonto.cs | 8 +- .../BWARMitarbeiterstundenkontoBerechnung.cs | 45 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 37 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 7 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 5 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 25 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...ckeABWMitarbeiterstundenkontoBerechnung.cs | 5 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 15 +- .../Mitarbeiterstundenkonto.cs | 2 +- .../MitarbeiterstundenkontoJahr.cs | 2 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- .../Service/CustomVacationService.cs | 5 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 214 +++--- ...Club74MitarbeiterstundenkontoBerechnung.cs | 25 +- ...Club74MitarbeiterstundenkontoBerechnung.cs | 25 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 17 +- ...eiterstundenkontoBerechnungTagesansicht.cs | 3 +- ...KKleveMitarbeiterstundenkontoBerechnung.cs | 27 +- ...eDueneMitarbeiterstundenkontoBerechnung.cs | 21 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 11 +- .../Reports/Mitarbeiterarbeitszeitkonto.cs | 2 +- .../FabEvMitarbeiterstundenkontoBerechnung.cs | 9 +- .../FabEvMitarbeiterstundenkontoBerechnung.cs | 9 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 5 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 37 +- ...GerdasMitarbeiterstundenkontoBerechnung.cs | 15 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 39 +- .../ListeTherapieeinheitenJahr.cs | 3 +- .../ListeTherapieeinheitenSollIst.cs | 3 +- .../ListeTherapieeinheitenSollIstGesamt.cs | 3 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 16 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 8 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 21 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...eiterstundenkontoBerechnungTagesansicht.cs | 3 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 21 +- .../IntegraHeinsbergReports.csproj | 4 + ...CustomMitarbeiterstundenkontoBerechnung.cs | 17 +- ...eiterstundenkontoBerechnungTagesansicht.cs | 39 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 25 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 41 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...eiterstundenkontoBerechnungTagesansicht.cs | 29 +- .../Reporting/CustomReportCreator.cs | 11 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 23 +- ...HEssenMitarbeiterstundenkontoBerechnung.cs | 29 +- ...stomerMitarbeiterstundenkontoBerechnung.cs | 25 +- .../MitarbeiterstundenkontoBerechnung.cs | 672 +----------------- ...CustomMitarbeiterstundenkontoBerechnung.cs | 3 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 20 +- ...deckerMitarbeiterstundenkontoBerechnung.cs | 7 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 11 +- .../ArbeitstageMehrAls8h.designer.cs | 29 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 25 +- ReportImp/Mittelpunkt/CustomReportCreator.cs | 73 +- .../Mitarbeiterarbeitszeitkonto.cs | 2 +- .../MitarbeiterarbeitszeitkontoSeite2.cs | 2 +- .../Mittelpunkt/Mitarbeiterstundenkonto.cs | 2 +- .../MitarbeiterstundenkontoJahr.cs | 2 +- ReportImp/Mittelpunkt/Teamstundenkonto.cs | 2 +- ReportImp/Mittelpunkt/ZuschlaegeArbeit.cs | 34 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ReportImp/Mittendrin/Mittendrin.csproj | 4 + ...CustomMitarbeiterstundenkontoBerechnung.cs | 37 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 23 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 33 +- ...eiterstundenkontoBerechnungTagesansicht.cs | 3 +- .../Service/CustomVacationService.cs | 4 +- ...eiterstundenkontoBerechnungTagesansicht.cs | 3 +- .../MitarbeiterstundenkontoBerechnung.cs | 23 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 25 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- .../Mitarbeiterstundenzettel.cs | 11 +- ...iterstundenkontoBerechnungStundenzettel.cs | 23 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 37 +- .../ApiMitarbeiterstundenkontoBerechnung.cs | 9 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 45 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 3 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 49 +- .../SKMKrefeld/Mitarbeiterarbeitszeitkonto.cs | 2 +- .../SKMKrefeld/Mitarbeiterstundenkonto.cs | 2 +- .../SKMKrefeld/MitarbeiterstundenkontoJahr.cs | 2 +- ReportImp/SKMKrefeld/Teamstundenkonto.cs | 2 +- ...eiterstundenkontoBerechnungTagesansicht.cs | 3 +- .../SeWo/MitarbeiterstundenkontoBerechnung.cs | 49 +- ReportImp/SeWo/StundenBerechnungHelper.cs | 119 +++- ReportImp/SeWo/Zeitzuschlagsbeleg.cs | 45 +- ReportImp/SeWo/ZeitzuschlagsbelegAlt.cs | 41 +- .../CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- .../MitarbeiterstundenkontoBerechnung.cs | 45 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 7 +- .../Mitarbeiterstundenkonto.cs | 2 +- .../Teamstundenkonto.cs | 9 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...eiterstundenkontoBerechnungTagesansicht.cs | 37 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- .../TranskulturellesBBBasaran.csproj | 4 + ...CustomMitarbeiterstundenkontoBerechnung.cs | 33 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 7 +- .../VereinDuerenerChristenReports.csproj | 4 + ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 5 +- ...stomerMitarbeiterstundenkontoBerechnung.cs | 55 +- .../VkmHamm/Mitarbeiterarbeitszeitkonto.cs | 4 +- .../VkmHamm/Reports/VkmHammReportCreator.cs | 12 +- ...stomerMitarbeiterstundenkontoBerechnung.cs | 7 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- .../Service/CustomVacationService.cs | 4 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 19 +- .../StundenkontoServiceRecord.cs | 64 ++ Service/Plugins/PluginLoader.cs | 7 +- Service/Plugins/VacationService.cs | 14 +- Service/ServiceContracts/IEmployeeService.cs | 6 +- .../EmployeeServiceImp.cs | 130 ++-- .../Urlaubsplanung/UrlaubsplanungsManager.cs | 1 + 169 files changed, 2004 insertions(+), 2670 deletions(-) diff --git a/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs b/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs index 03af4d755..1402fa746 100644 --- a/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs +++ b/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs @@ -25,7 +25,6 @@ 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; } @@ -130,7 +129,10 @@ namespace BeWo.Report.ReportObjects { foreach (var empDetail in ro.EmployeeDetailList) { - + if (empDetail.Employee.Oid == 8) + { + int test = 0; + } DateTime monatsAnfang = ro.ReportStartDate; DateTime monatsEnde = monatsAnfang.AddMonths(1); DateTime berichtsAnfang = monatsAnfang; @@ -446,6 +448,9 @@ namespace BeWo.Report.ReportObjects empDetail.StundenMittelbarIst = summaryTotal.IstNichtAbrechenbar; empDetail.StundenGesamtIst = summaryTotal.IstAbrechenbar + summaryTotal.IstNichtAbrechenbar; + var addStunden = AddiereBenutzerdefiniertenWertAufIstStunden(c, empDetail.FlsIst, ro.ReportStartDate); + empDetail.StundenGesamtIst += addStunden; + empDetail.StundenGesamtIst -= pause1 / 60; empDetail.StundenGesamtIst -= pause2 / 60; @@ -500,32 +505,8 @@ namespace BeWo.Report.ReportObjects //Urlaubskonto (todo) empDetail.UrlaubGesamtImAktuellenJahr = GetAbsenceTimeDaysWithWorkWeeks(emp, new DateTime(monatsAnfang.Year, 1, 1), monatsEnde, empDetail.ArbeitstageProWoche).TageUrlaub; - - // Aktuellen Resturlaub berechnen - // 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 - .Where(k => k.DatumZurSortierung == null && ZaehltZuUrlaubsbudget(k.Erlaeuterung)) - .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) - { - // Hat entry kein Datum, dann ist es nur eine Überschrift in der Darstellung und hat hier keinen Nutzen - if (entry.DatumZurSortierung != null || entry.Erlaeuterung.Contains("Resturlaub aus")) - { - // Ist das Datum nach dem Enddatum des Stundenkontos braucht nicht weitergerechnet werden - if (entry.DatumZurSortierung > ro.ReportEndDate.AddTicks(-1)) - break; - - empDetail.Resturlaub += Convert.ToDecimal(entry.AnzahlTage); // += weil Tage immer als Minus dargestellt sind - } - } - } + + BerechneUrlaubskonto(empDetail, ro, berichtsEnde); CalculateEmployeeSalary(empDetail, berichtsAnfang, berichtsEnde); } @@ -533,7 +514,42 @@ namespace BeWo.Report.ReportObjects ro.EmployeeDetailList = FilterEmployeeList(ro.EmployeeDetailList); } - public virtual bool ZaehltZuUrlaubsbudget(string erlaueterung) + public virtual decimal AddiereBenutzerdefiniertenWertAufIstStunden(Contract c, decimal istStunden, DateTime monat) + { + return 0; + // Nur für abgeleitete Klassen + } + + public virtual void BerechneUrlaubskonto(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, MitarbeiterstundenkontoRO ro, DateTime berichtsEnde) + { + // Aktuellen Resturlaub berechnen + // Darstellungsvariante, da das normale Urlaubskonto nur den Resturlaubsstand vom Ende des Jahres anzeigt. + var konto = vacationService.BerechneUrlaubskontoZurDarstellung(empDetail.Employee, ro.ReportStartDate.Year, berichtsEnde.AddDays(-1)); + if (konto != null && konto.Count > 0) + { + var alleVertraglichenBudgets = konto + .Where(k => k.DatumZurSortierung == null && ZaehltZuUrlaubsbudget(k.Erlaeuterung)) + .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) + { + // Hat entry kein Datum, dann ist es nur eine Überschrift in der Darstellung und hat hier keinen Nutzen + if (entry.DatumZurSortierung != null || entry.Erlaeuterung.Contains("Resturlaub aus")) + { + // Ist das Datum nach dem Enddatum des Stundenkontos braucht nicht weitergerechnet werden + if (entry.DatumZurSortierung > ro.ReportEndDate.AddTicks(-1)) + break; + + empDetail.Resturlaub += Convert.ToDecimal(entry.AnzahlTage); // += weil Tage immer als Minus dargestellt sind + } + } + } + } + + public virtual bool ZaehltZuUrlaubsbudget(string erlaueterung) { if (erlaueterung.Contains("Urlaubstage laut Vertrag") || erlaueterung.Contains("Sonderurlaub") || @@ -2404,10 +2420,12 @@ namespace BeWo.Report.ReportObjects decimal stundenMonat = minutenMonat / 60m; stundenMonat = ((flsIst * AddRateFactorToIst()) + mittelbarIst) / 60m; + var faktorStunden = AddiereBenutzerdefiniertenWertAufIstStunden(c, flsIst / 60, start); + if (!ueberstunden.HasValue) ueberstunden = 0; - ueberstunden += stundenMonat - sollMitarbeiter; + ueberstunden += stundenMonat + faktorStunden - sollMitarbeiter; if (SollPauseBerechnen()) { diff --git a/Report/ReportObjects/MitarbeiterstundenkontoRO.cs b/Report/ReportObjects/MitarbeiterstundenkontoRO.cs index 9b571ef3d..a6af2b383 100644 --- a/Report/ReportObjects/MitarbeiterstundenkontoRO.cs +++ b/Report/ReportObjects/MitarbeiterstundenkontoRO.cs @@ -183,26 +183,28 @@ namespace BeWo.Report.ReportObjects { _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)); - } + if (EmployeeDetailList.Count > 0) + { + 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); - } - + String sql = "SELECT Oid, StartDate, EndDate, RoundedDuration, GroupEmployeeCount, GroupPersonCount, GroupRoundedDuration, GroupOid, DistanceInMeter, Betrag, CostBearer2SupportConceptOid, ServiceDescriptionOid, CustomerOid, EmployeeOid, Notice, Notice2, Notice3, InsUser, InsTs, Relevance 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) @@ -241,6 +243,12 @@ namespace BeWo.Report.ReportObjects dc.CustomerOid = (long?)sqlRow[12]; dc.EmployeeOid = (long?)sqlRow[13]; + dc.Notice = (String)sqlRow[14]; + dc.Notice2 = (String)sqlRow[15]; + dc.Notice3 = (String)sqlRow[16]; + dc.InsUser = (String)sqlRow[17]; + dc.InsTs = (DateTime?)sqlRow[18]; + dc.Relevance = (int?)sqlRow[19]; return dc; diff --git a/ReportImp/AKGG/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/AKGG/Mitarbeiterarbeitszeitkonto.cs index 0bf964d39..e967ae619 100644 --- a/ReportImp/AKGG/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/AKGG/Mitarbeiterarbeitszeitkonto.cs @@ -4,7 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; - +using BeWo.Service.Dienstplanung; using BS.Shared.Core; using DevExpress.XtraReports.UI; using static BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO; @@ -68,7 +68,7 @@ namespace Akgg { var dd = new MitarbeiterstundenkontoRO.DayDetail(); dd.Date = day.Date; - dd.ServiceRecords = new List(); + dd.ServiceRecords = new List(); dd.ServiceRecords.Add(sr); added = true; newDayList.Add(dd); @@ -104,8 +104,8 @@ namespace Akgg { foreach (var sr in day.ServiceRecords) { - custom6 += sr.SupportConcept != null ? sr.SupportConcept.Customer.Person.FirstNameLastName + "\n" : "keine*r\n"; - custom7 += sr.ServiceDescription.ServiceCategory.Name + "\n"; + custom6 += sr.CostBearer2SupportConcept?.SupportConcept != null ? sr.CostBearer2SupportConcept.SupportConcept.Customer.Person.FirstNameLastName + "\n" : "keine*r\n"; + custom7 += sr.ServiceDescription.Category.Name + "\n"; custom8 += sr.ServiceDescription.Name + "\n"; custom9 += string.Format("{0:0.00}\n", sr.RoundedDuration / 60); } diff --git a/ReportImp/AWOMuensterlandRecklinghausen/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AWOMuensterlandRecklinghausen/CustomMitarbeiterstundenkontoBerechnung.cs index 7e0f0f36e..51997bd1b 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AWOMuensterlandRecklinghausen/CustomMitarbeiterstundenkontoBerechnung.cs @@ -8,6 +8,7 @@ using BeWo.Service.Configuration; using BeWo.Service.ServiceImplementations; using BS.Shared.DataContracts; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace AWOMuensterlandRecklinghausen { @@ -160,30 +161,30 @@ namespace AWOMuensterlandRecklinghausen return true; } - public override IList CreateDayDetailsForEachServiceRecord(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + public override IList CreateDayDetailsForEachServiceRecord(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) { var details = new List(); Dictionary dayToDetail = new Dictionary(); 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 (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr) && !(sr.ServiceDescription.Name.Contains("TAN") && sr.DurationMinutes == 0)) { - var dd = CreateDayDetail(sr.Start.Value, ed); + var dd = CreateDayDetail(sr.Start, ed); details.Add(dd); decimal duration = GetDuration(sr, ed); dd.MinutesTotal += duration; 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; } @@ -345,7 +346,7 @@ namespace AWOMuensterlandRecklinghausen { foreach (var item in ed.AllServiceRecords) { - if (item.ServiceDescription != null && (item.ServiceDescription.Name.Contains("UT") || item.ServiceDescription.Name.Contains("Unterrichtsfrei") || item.ServiceDescription.Name.Contains("Regeneration")) && item.Start.Value.Date == date.Date) + if (item.ServiceDescription != null && (item.ServiceDescription.Name.Contains("UT") || item.ServiceDescription.Name.Contains("Unterrichtsfrei") || item.ServiceDescription.Name.Contains("Regeneration")) && item.Start.Date == date.Date) { if (HatArbeitszeitImZeitraum(ed.Employee.Arbeitszeiten, date, date)) { @@ -385,15 +386,15 @@ namespace AWOMuensterlandRecklinghausen return sollDiesenTag; } - public override void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration) + public override void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, StundenkontoServiceRecord sr, decimal duration) { - if (!sr.Start.HasValue || dd.NightStart == null || dd.NightEnd == null) + if (dd.NightStart == null || dd.NightEnd == null) { base.CalculateSpecialHours(dd, sr, duration); return; } - var d1 = sr.Start.Value; + var d1 = sr.Start; var saturday = d1.GetNextDayOfWeek(DayOfWeek.Saturday); var sunday = d1.GetNextDayOfWeek(DayOfWeek.Sunday); var unroundedEnd = d1.AddMinutes((double)duration); @@ -415,13 +416,13 @@ namespace AWOMuensterlandRecklinghausen dd.HoursSaturday += (decimal)d1.GetIntersectingMinutes(unroundedEnd, saturdayStart, saturdayEnd); } - protected override decimal GetDuration(ServiceRecord item, MitarbeiterstundenkontoRO.EmployeeDetail ed) + protected override decimal GetDuration(StundenkontoServiceRecord item, MitarbeiterstundenkontoRO.EmployeeDetail ed) { var duration = base.GetDuration(item, ed); if (item.ServiceDescription != null && (item.ServiceDescription.Name.Contains("UT") || item.ServiceDescription.Name.Contains("Unterrichtsfrei") || item.ServiceDescription.Name.Contains("Regeneration"))) { - var c = ed.Employee.GetValidContractForDate(item.Start.Value.Date); + var c = ed.Employee.GetValidContractForDate(item.Start.Date); if (c != null) { if (c.EmploymentType != null && c.EmploymentType.Name.StartsWith("MA mit")) @@ -454,7 +455,7 @@ namespace AWOMuensterlandRecklinghausen duration = 645; } - var d1 = item.Start.Value; + var d1 = item.Start; //if (item.Start.Value > new DateTime(2023, 05, 19)) //{ // string test = "jep"; @@ -480,7 +481,7 @@ namespace AWOMuensterlandRecklinghausen } - public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) { //groupFilteredRecords = groupFilteredRecords.Where(r => r.ServiceDescription != null && r.ServiceDescription.Name.Contains("TAN")).ToList(); CorrectOverlappingTimes(groupFilteredRecords.OrderBy(s => s.Start).ToList()); @@ -588,7 +589,7 @@ namespace AWOMuensterlandRecklinghausen ro.EmployeeDetailList.RemoveRange(toRemove); } - protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, + protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { var test = empDetail.EmploymentType?.Name; @@ -600,7 +601,7 @@ namespace AWOMuensterlandRecklinghausen { foreach (var item in groupFilteredRecords) { - if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde) + if (item.Start >= berichtsAnfang && item.Start < berichtsEnde) { if (IsUrlaubAbsenceServiceRecord(item)) { @@ -624,7 +625,7 @@ namespace AWOMuensterlandRecklinghausen return ath; } - private bool IsUrlaubAbsenceServiceRecord(ServiceRecord item) + private bool IsUrlaubAbsenceServiceRecord(StundenkontoServiceRecord item) { var service = item.ServiceDescription.Name.ToLower(); diff --git a/ReportImp/AWOMuensterlandRecklinghausen/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/AWOMuensterlandRecklinghausen/Mitarbeiterarbeitszeitkonto.cs index 07cd07b14..c1e98b38c 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/AWOMuensterlandRecklinghausen/Mitarbeiterarbeitszeitkonto.cs @@ -71,7 +71,7 @@ namespace AWOMuensterlandRecklinghausen { // Art des Kontakts day.Custom1 = "AA"; - if (day.ServiceRecords[0].ServiceDescription.ServiceCategory.IsBillable) + if (day.ServiceRecords[0].ServiceDescription.Category.IsBillable) { day.Custom1 = "SB"; sbStunden += day.MinutesTotal / 60; diff --git a/ReportImp/AachenerLaienhelfer/Service/CustomVacationService.cs b/ReportImp/AachenerLaienhelfer/Service/CustomVacationService.cs index 47b640977..a78fd3c8e 100644 --- a/ReportImp/AachenerLaienhelfer/Service/CustomVacationService.cs +++ b/ReportImp/AachenerLaienhelfer/Service/CustomVacationService.cs @@ -132,19 +132,19 @@ namespace AachenerLaienhelfer.Service } int? workdays = 0; - List arbeitszeiten = new List(); - Dictionary contractsAndWeeklyDays = new Dictionary(); + var arbeitszeiten = new List(); + 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.HasValue ? contract.WeeklyDays.Value : 0); var start = contract.EntryDate?.Year ?? firstYear; var end = contract.ContractEndDate?.Year ?? year; if (emp.Arbeitszeiten != null && emp.Arbeitszeiten.Count > 0) - arbeitszeiten = MapperFactory.ArbeitszeitDC_Arbeitszeit.MapToNewDCs(emp.Arbeitszeiten); + arbeitszeiten = emp.Arbeitszeiten.ToList(); if (year >= start && year <= end) workdays = contract.WeeklyDays; @@ -218,7 +218,7 @@ namespace AachenerLaienhelfer.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 @@ -235,7 +235,7 @@ namespace AachenerLaienhelfer.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]; @@ -272,10 +272,10 @@ namespace AachenerLaienhelfer.Service { foreach (var az in arbeitszeiten) { - if (az.Eintraege.Count > 0 && az.GueltigVon.HasValue) + if (az.ArbeitszeitEintraege.Count > 0 && az.GueltigVon.HasValue) { var azEnde = !az.GueltigBis.HasValue ? new DateTime(year, 12, 31) : az.GueltigBis.Value; - if (new DateTimeSpan(az.GueltigVon.Value, azEnde).ContainsDate(spanne.AbsenceSpan.StartDate) && az.Eintraege != null && az.Eintraege.Count > 0) + if (new DateTimeSpan(az.GueltigVon.Value, azEnde).ContainsDate(spanne.AbsenceSpan.StartDate) && az.ArbeitszeitEintraege != null && az.ArbeitszeitEintraege.Count > 0) { dauer = CountAbwesenheitstageArbeitszeiten(spanne, absYear, az); break; diff --git a/ReportImp/AbwIlseFretz/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AbwIlseFretz/CustomMitarbeiterstundenkontoBerechnung.cs index c5cd338fd..a0f5e7a8d 100644 --- a/ReportImp/AbwIlseFretz/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AbwIlseFretz/CustomMitarbeiterstundenkontoBerechnung.cs @@ -10,462 +10,74 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using BeWo.Service.Dienstplanung; namespace AbwIlseFretz { - public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - private const int ANZ_WOCHENTAGE = 5; - private decimal maxWochenstunden = 40; - - public override void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro) - { - #region Standard - foreach (var empDetail in ro.EmployeeDetailList) - { - - DateTime monatsAnfang = ro.ReportStartDate; - DateTime monatsEnde = monatsAnfang.AddMonths(1); - DateTime berichtsAnfang = monatsAnfang; - DateTime berichtsEnde = monatsEnde; - - Employee emp = empDetail.Employee; - - decimal bu = 0; - - var c = GetContractForDate(emp, ro.ReportStartDate, ro.ReportEndDate); - - if (c != null) - { - if (c.EntryDate.HasValue && c.EntryDate > monatsAnfang) - { - berichtsAnfang = c.EntryDate.Value; - } - if (c.ContractEndDate.HasValue && c.ContractEndDate < monatsEnde) - { - berichtsEnde = c.ContractEndDate.Value.Date.AddDays(1); - } - empDetail.HasContract = true; - } - - if (BerechnungsStartdatum > berichtsAnfang) - { - berichtsAnfang = BerechnungsStartdatum; - } - - ServiceRecordSummary summaryTotal = new ServiceRecordSummary(); - summaryTotal.RecordsImBerichtszeitraum = new List(); - - decimal pause1 = 0; - decimal pause2 = 0; - decimal weeklyTotalHours = 0; - decimal flsSollGesamt = 0; - decimal? fehlZeitenGesamt = null; - decimal? tageUrlaubGesamt = null; - decimal? tageKrankheitGesamt = null; - decimal? abwesenheitTageGesamt = null; - decimal workdaysTotal = 0; - decimal stundenSollGesamt = 0; - decimal tatSollStdGesamt = 0; - decimal azDurchFeiertage = 0; - - IList groupFilteredRecords = empDetail.AllServiceRecords; - if (groupFilteredRecords == null) - { - IList recordsAll = DAOFactory.SearchDAO.FindServiceRecords(emp.Oid, null); - recordsAll = AnalysisServiceImp.FilterActiveServiceRecords(recordsAll); - - // - groupFilteredRecords = new List(); - Dictionary groupBookingDict = new Dictionary(); - foreach (var item in recordsAll) - { - - if (!item.GroupOid.HasValue || !groupBookingDict.ContainsKey(item.GroupOid.Value)) - { - groupFilteredRecords.Add(item); - if (item.GroupOid.HasValue) - { - groupBookingDict.Add(item.GroupOid.Value, true); - } - } - } - - empDetail.AllServiceRecords = groupFilteredRecords; - } - - while (berichtsAnfang < berichtsEnde) - { - - - - StarteBerechnung(berichtsAnfang, berichtsEnde, empDetail); - - empDetail.ArbeitstageImBerichtszeitraum = GetArbeitstageImBereich(berichtsAnfang, berichtsEnde, emp); - empDetail.ArbeitstageProWoche = ANZ_WOCHENTAGE; - - - workdaysTotal += empDetail.ArbeitstageImBerichtszeitraum; - weeklyTotalHours = 0; - - if (c != null) - { - if (c.WeeklyTotalHours.HasValue) - { - weeklyTotalHours = c.WeeklyTotalHours.Value; - bu = c.WeeklyTotalHours.Value / this.maxWochenstunden; - } - if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0) - { - empDetail.ArbeitstageProWoche = c.WeeklyDays.Value; - } - - empDetail.WeeklyFLS = c.WeeklyFLS; - empDetail.HourlyRate = c.HourlyRate; - empDetail.EmploymentType = c.EmploymentType; - - - } - empDetail.SollProTag = (weeklyTotalHours / empDetail.ArbeitstageProWoche); - empDetail.SollProWoche = BerechneSollProWoche(c, empDetail); - if (empDetail.SollProTag == 0 && empDetail.SollProWoche > 0 && empDetail.ArbeitstageProWoche > 0) - { - empDetail.SollProTag = empDetail.SollProWoche / empDetail.ArbeitstageProWoche; - - } - HandleServiceRecords(empDetail, groupFilteredRecords, c); - - if (CheckIst) - { - - var summary = BerechneStunden(empDetail, groupFilteredRecords, berichtsAnfang, berichtsEnde); - summaryTotal.IstAbrechenbar += summary.IstAbrechenbar; - summaryTotal.IstNichtAbrechenbar += summary.IstNichtAbrechenbar; - summaryTotal.RecordsImBerichtszeitraum.AddRange(summary.RecordsImBerichtszeitraum); - - if (SollPauseBerechnen()) - { - pause1 += BerechnePauseMinuten(summary.RecordsImBerichtszeitraum); - pause2 += BerechneAutoPausen(summary.RecordsImBerichtszeitraum); - - } - } - - - decimal? stundenSollProMonat = null; - decimal? stundenSollImVertragsUndBerichtzeitraum = null; - if (empDetail.HasContract) - { - stundenSollImVertragsUndBerichtzeitraum = GetSollNachArbeitszeiten(empDetail.Employee, berichtsAnfang, berichtsEnde); - } - - if (!stundenSollImVertragsUndBerichtzeitraum.HasValue) - { - stundenSollProMonat = BerechneSollProMonat(emp, berichtsAnfang, berichtsEnde); - stundenSollImVertragsUndBerichtzeitraum = stundenSollProMonat; - } - - if (!stundenSollImVertragsUndBerichtzeitraum.HasValue) - { - if (!stundenSollImVertragsUndBerichtzeitraum.HasValue) - { - if (empDetail.ArbeitstageProWoche <= 5) - { - stundenSollImVertragsUndBerichtzeitraum = - empDetail.ArbeitstageImBerichtszeitraum * (weeklyTotalHours / 5); - } - else - { - stundenSollImVertragsUndBerichtzeitraum = - empDetail.ArbeitstageImBerichtszeitraum * (weeklyTotalHours / empDetail.ArbeitstageProWoche); - } - } - } - - - stundenSollGesamt += stundenSollImVertragsUndBerichtzeitraum ?? 0; - - - empDetail.StundenSollMax = stundenSollGesamt; - - - var tatSollStdImVertragsUndBerichtzeitraum = stundenSollImVertragsUndBerichtzeitraum ?? 0; - - - decimal? fehlZeiten = GetFehlzeiten(groupFilteredRecords, berichtsAnfang, berichtsEnde); - if (fehlZeiten.HasValue) - { - if (!fehlZeitenGesamt.HasValue) - fehlZeitenGesamt = 0; - fehlZeitenGesamt += fehlZeiten; - - tatSollStdImVertragsUndBerichtzeitraum -= fehlZeiten.Value; - } - - AktuellBearbeitetesEmployeeDetail = empDetail; - var ath = GetAbsenceTimeDaysWithWorkWeeks(emp, berichtsAnfang, berichtsEnde, empDetail.ArbeitstageProWoche); - empDetail.AbsenceTimeDays = ath; - - if (ath.TageUrlaub.HasValue) - { - if (!tageUrlaubGesamt.HasValue) - tageUrlaubGesamt = 0; - tageUrlaubGesamt += ath.TageUrlaub; - } - if (ath.TageKrankheit.HasValue) - { - if (!tageKrankheitGesamt.HasValue) - tageKrankheitGesamt = 0; - tageKrankheitGesamt += ath.TageKrankheit; - } - - - if (ath.TageGesamt.HasValue) - { - if (!abwesenheitTageGesamt.HasValue) - abwesenheitTageGesamt = 0; - abwesenheitTageGesamt += ath.TageGesamt; - - var minusStunden = BerechneStundenDurchAbwesenheiten(ath, berichtsAnfang, berichtsEnde, c, empDetail); - tatSollStdImVertragsUndBerichtzeitraum -= minusStunden; - if (tatSollStdImVertragsUndBerichtzeitraum < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein()) - { - - tatSollStdImVertragsUndBerichtzeitraum = 0; - - } - - } - - - var ath2 = GetAbwesenheitenDurchServiceRecords(empDetail, c, groupFilteredRecords, berichtsAnfang, berichtsEnde); - - if (ath2 != null) - { - - var stunden = ath2.StundenKrankheit + ath2.StundenUrlaub + ath2.StundenSonstiges; - - tatSollStdImVertragsUndBerichtzeitraum -= stunden; - - if (tatSollStdImVertragsUndBerichtzeitraum < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein()) - { - tatSollStdImVertragsUndBerichtzeitraum = 0; - } - - if (empDetail.SollProTag > 0) - { - if (!abwesenheitTageGesamt.HasValue) - abwesenheitTageGesamt = 0; - abwesenheitTageGesamt += stunden / empDetail.SollProTag; - - if (ath2.StundenKrankheit > 0) - { - if (!tageKrankheitGesamt.HasValue) - { - tageKrankheitGesamt = 0; - } - tageKrankheitGesamt += ath2.StundenKrankheit / empDetail.SollProTag; - } - - if (ath2.StundenUrlaub > 0) - { - if (!tageUrlaubGesamt.HasValue) - { - tageUrlaubGesamt = 0; - } - tageUrlaubGesamt += ath2.StundenUrlaub / empDetail.SollProTag; - } - } - - - } - - tatSollStdGesamt += tatSollStdImVertragsUndBerichtzeitraum; - - - flsSollGesamt += BerechneFlsSoll(emp, c, berichtsAnfang, berichtsEnde, tatSollStdImVertragsUndBerichtzeitraum, stundenSollProMonat); - - if (ath.StundenAlsIst > 0) - { - tatSollStdGesamt += ath.StundenAlsIst; - summaryTotal.IstNichtAbrechenbar += ath.StundenAlsIst * 60; - } - - azDurchFeiertage += BerechneGesamtArbeitszeitDurchFeiertage(empDetail, berichtsAnfang, berichtsEnde); - - - berichtsAnfang = berichtsEnde; - berichtsEnde = monatsEnde; - c = GetNextValidContractForDate(berichtsAnfang, emp); - - if (c != null) - { - if (c.EntryDate.HasValue && c.EntryDate >= berichtsAnfang) - berichtsAnfang = c.EntryDate.Value; - if (c.ContractEndDate.HasValue && c.ContractEndDate < monatsEnde) - { - berichtsEnde = c.ContractEndDate.Value.Date.AddDays(1); - } - } - } - - if (AddRateFactorToIst() != 1) - { - summaryTotal.IstAbrechenbar *= AddRateFactorToIst(); - } - summaryTotal.IstAbrechenbar /= 60m; - summaryTotal.IstNichtAbrechenbar /= 60m; - - empDetail.WorkDaysThisMonth = workdaysTotal; - //decimal stundenSollMax = arbeitstage * (maxWochenstunden / xxx) * bu; - - - - empDetail.Fehlzeiten = fehlZeitenGesamt; - empDetail.TageUrlaub = tageUrlaubGesamt; - empDetail.TageKrankheit = tageKrankheitGesamt; - empDetail.UrlaubUndKrankheit = abwesenheitTageGesamt; - - empDetail.StundenSollOhneUrlaubKrankheit = tatSollStdGesamt; - - empDetail.FlsSoll = flsSollGesamt; - - - - empDetail.MittelbarIst = summaryTotal.IstNichtAbrechenbar; - empDetail.Bu = bu; - empDetail.FlsIst = summaryTotal.IstAbrechenbar; - empDetail.FlsDiff = summaryTotal.IstAbrechenbar - empDetail.FlsSoll; - empDetail.StundenMittelbarIst = summaryTotal.IstNichtAbrechenbar; - empDetail.StundenGesamtIst = summaryTotal.IstAbrechenbar + summaryTotal.IstNichtAbrechenbar; - - empDetail.StundenGesamtIst -= pause1 / 60; - empDetail.StundenGesamtIst -= pause2 / 60; - - empDetail.StundenGesamtIst += azDurchFeiertage; - - if (empDetail.FlsSoll != 0) - empDetail.RelationIstSoll = (empDetail.FlsIst / empDetail.FlsSoll) * 100m; - - - decimal? ueberstunden = empDetail.StundenGesamtIst - empDetail.StundenSollOhneUrlaubKrankheit; - decimal? ueberstundenVormonat; - - - decimal alteExtraUeberstunden = 0; - 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(); - - decimal? ueberstundenVormonatFuerDienstplanung; - decimal? alteExtraUeberstundenDienstplanung; - empDetail.DienstplanIst += BerechneDienstplanIst(empDetail, alleDiensteintraege, alleDienstvertretungen, ro.ReportStartDate, - out ueberstundenVormonatFuerDienstplanung, out alteExtraUeberstundenDienstplanung); // ABCDEF - - var dienstplanIstAlsStunden = empDetail.DienstplanIst / 60; - - decimal extraStunden = 0; - - BerechneExtraUeberstunden(emp, monatsAnfang, monatsEnde, out extraStunden); // OverTimes - - if (ShouldCreateDayDetails()) - { - - empDetail.Days = CreateDayDetails(monatsAnfang, monatsEnde, empDetail, summaryTotal.RecordsImBerichtszeitraum); - var ah = GetAdditionalHours(empDetail.Days, monatsAnfang, monatsEnde, empDetail, summaryTotal.RecordsImBerichtszeitraum); - ueberstunden += ah; - empDetail.StundenGesamtIst += ah; - } - - if (empDetail.StundenGesamtIst != 0) - empDetail.RelationFlsZuMittelbar = (summaryTotal.IstAbrechenbar / empDetail.StundenGesamtIst) * 100; - - empDetail.Ueberstunden = ueberstunden; - empDetail.UeberstundenVormonat = ueberstundenVormonat; - if (!empDetail.UeberstundenGesamt.HasValue) - empDetail.UeberstundenGesamt = ((ueberstundenVormonat ?? 0) + (ueberstunden ?? 0)) + extraStunden; - else - empDetail.UeberstundenGesamt += ((ueberstundenVormonat ?? 0) + (ueberstunden ?? 0)) + extraStunden; - empDetail.UeberstundenAusbezahlt = extraStunden; - - //Urlaubskonto (todo) - empDetail.UrlaubGesamtImAktuellenJahr = - GetAbsenceTimeDaysWithWorkWeeks(emp, new DateTime(monatsAnfang.Year, 1, 1), monatsEnde, empDetail.ArbeitstageProWoche).TageUrlaub; - #endregion - - // ANPASSUNG: Zusätzlich zum Resturlaub Jahresanspruch und bis dato genommenen Urlaub setzen + Alle AUs im Jahr - - // 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)); - if (konto != null && konto.Count > 0) - { - var alleVertraglichenBudgets = konto - .Where(k => k.DatumZurSortierung == null && ZaehltZuUrlaubsbudget(k.Erlaeuterung)) - .ToList(); - - empDetail.Custom1 = alleVertraglichenBudgets.Sum(b => Convert.ToDecimal(b.AnzahlTage)); // Gesamter Jahresanspruch - 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) - { - // Hat entry kein Datum, dann ist es nur eine Überschrift in der Darstellung und hat hier keinen Nutzen - if (entry.DatumZurSortierung != null || entry.Erlaeuterung.Contains("Resturlaub aus")) - { - // Ist das Datum nach dem Enddatum des Stundenkontos braucht nicht weitergerechnet werden - if (entry.DatumZurSortierung > ro.ReportEndDate.AddTicks(-1)) - break; - - empDetail.Resturlaub += Convert.ToDecimal(entry.AnzahlTage); // += weil Tage immer als Minus dargestellt sind - - // Da Custom1 NUR das Budget + Resturlaub sein soll, durch Urlaub nicht mehr reduzieren - if (entry.DatumZurSortierung == null || entry.Herkunft.Contains("GeschenkterUrlaubstag")) - empDetail.Custom1 += Convert.ToDecimal(entry.AnzahlTage); // += weil Tage immer als Minus dargestellt sind - } - } - } - - // In Custom2 alle Krankheiten und Klinikaufenthalte zusammenfassen bis ro.ReportEndDate - var alleKrankheitenImJahr = emp.AbsenceTimes.Where(a => a.Start.HasValue && a.End.HasValue && IsKrankheitAbsenceTime(a) && - (a.Start.Value <= ro.ReportEndDate && a.End.Value >= new DateTime(ro.ReportStartDate.Year, 01, 01))).ToList(); - var summeKrankheiten = 0m; - - // Jede Krankheit durchgehen und evtl. Start und Enddatum anpassen, wenn vor Bericht beginnt oder danach endet - foreach (var abs in alleKrankheitenImJahr) + public override void BerechneUrlaubskonto(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, MitarbeiterstundenkontoRO ro, DateTime berichtsEnde) + { + // Darstellungsvariante, da das normale Urlaubskonto nur den Resturlaubsstand vom Ende des Jahres anzeigt. + var konto = vacationService.BerechneUrlaubskontoZurDarstellung(empDetail.Employee, ro.ReportStartDate.Year, berichtsEnde.AddDays(-1)); + if (konto != null && konto.Count > 0) + { + var alleVertraglichenBudgets = konto + .Where(k => k.DatumZurSortierung == null && ZaehltZuUrlaubsbudget(k.Erlaeuterung)) + .ToList(); + + empDetail.Custom1 = alleVertraglichenBudgets.Sum(b => Convert.ToDecimal(b.AnzahlTage)); // Gesamter Jahresanspruch + 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) { - if (abs.Start.Value.Year != ro.ReportEndDate.AddDays(-1).Year) - abs.Start = new DateTime(ro.ReportEndDate.Year, 01, 01); - else if (abs.End.Value.Year != ro.ReportEndDate.AddDays(-1).Year) - abs.End = new DateTime(ro.ReportEndDate.Year, 12, 31); - - // Jeden Krankheitstag einzeln prüfen, ob überhaupt gearbeitet werden müsste - var start = abs.Start; - while (start <= abs.End) + // Hat entry kein Datum, dann ist es nur eine Überschrift in der Darstellung und hat hier keinen Nutzen + if (entry.DatumZurSortierung != null || entry.Erlaeuterung.Contains("Resturlaub aus")) { - var soll = BerechneSollStundenFuerTag(empDetail, start.Value); - // Wenn Soll an dem aktuellen Tag nicht 0 ist, einen Krankheitstag hinzufügen - if (soll > 0) - summeKrankheiten++; + // Ist das Datum nach dem Enddatum des Stundenkontos braucht nicht weitergerechnet werden + if (entry.DatumZurSortierung > ro.ReportEndDate.AddTicks(-1)) + break; - start = start.Value.AddDays(1); - } - } - empDetail.Custom2 = summeKrankheiten; - // Custom4 ist FLS-Ist bis Auswertungstag - // Custom5 ist FLS-Soll Ist bis Auswertungstag - empDetail.Custom3 = BerechneFlsIstZuSollQuote(empDetail, ro.ReportStartDate, ro.ReportEndDate); + empDetail.Resturlaub += Convert.ToDecimal(entry.AnzahlTage); // += weil Tage immer als Minus dargestellt sind - // Hier wieder Standard - CalculateEmployeeSalary(empDetail, berichtsAnfang, berichtsEnde); - } + // Da Custom1 NUR das Budget + Resturlaub sein soll, durch Urlaub nicht mehr reduzieren + if (entry.DatumZurSortierung == null || entry.Herkunft.Contains("GeschenkterUrlaubstag")) + empDetail.Custom1 += Convert.ToDecimal(entry.AnzahlTage); // += weil Tage immer als Minus dargestellt sind + } + } + } - ro.EmployeeDetailList = FilterEmployeeList(ro.EmployeeDetailList); - } + // In Custom2 alle Krankheiten und Klinikaufenthalte zusammenfassen bis ro.ReportEndDate + var alleKrankheitenImJahr = empDetail.Employee.AbsenceTimes.Where(a => a.Start.HasValue && a.End.HasValue && IsKrankheitAbsenceTime(a) && + (a.Start.Value <= ro.ReportEndDate && a.End.Value >= new DateTime(ro.ReportStartDate.Year, 01, 01))).ToList(); + var summeKrankheiten = 0m; + + // Jede Krankheit durchgehen und evtl. Start und Enddatum anpassen, wenn vor Bericht beginnt oder danach endet + foreach (var abs in alleKrankheitenImJahr) + { + if (abs.Start.Value.Year != ro.ReportEndDate.AddDays(-1).Year) + abs.Start = new DateTime(ro.ReportEndDate.Year, 01, 01); + else if (abs.End.Value.Year != ro.ReportEndDate.AddDays(-1).Year) + abs.End = new DateTime(ro.ReportEndDate.Year, 12, 31); + + // Jeden Krankheitstag einzeln prüfen, ob überhaupt gearbeitet werden müsste + var start = abs.Start; + while (start <= abs.End) + { + var soll = BerechneSollStundenFuerTag(empDetail, start.Value); + // Wenn Soll an dem aktuellen Tag nicht 0 ist, einen Krankheitstag hinzufügen + if (soll > 0) + summeKrankheiten++; + + start = start.Value.AddDays(1); + } + } + empDetail.Custom2 = summeKrankheiten; + // Custom4 ist FLS-Ist bis Auswertungstag + // Custom5 ist FLS-Soll Ist bis Auswertungstag + empDetail.Custom3 = BerechneFlsIstZuSollQuote(empDetail, ro.ReportStartDate, ro.ReportEndDate); + } public override bool IsKrankheitAbsenceTime(AbsenceTime absenceTime) { @@ -492,13 +104,13 @@ namespace AbwIlseFretz start = start.AddDays(1); } - var serviceRecords = empDetail.AllServiceRecords.Where(s => s.Start.Value.Date >= reportStartDate && s.Start.Value.Date <= reportEndDate).ToList(); + var serviceRecords = empDetail.AllServiceRecords.Where(s => s.Start.Date >= reportStartDate && s.Start.Date <= reportEndDate).ToList(); decimal flmInZeitraum = 0; foreach (var item in serviceRecords) { - if (item.Start.Value.Date <= reportEndDate.Date) + if (item.Start.Date <= reportEndDate.Date) { - if (item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription.Category.IsBillable) { flmInZeitraum += GetDuration(item, empDetail); } diff --git a/ReportImp/AdikKleve/AdikMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AdikKleve/AdikMitarbeiterstundenkontoBerechnung.cs index 320ddfe71..f84f4b276 100644 --- a/ReportImp/AdikKleve/AdikMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AdikKleve/AdikMitarbeiterstundenkontoBerechnung.cs @@ -2,17 +2,18 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace AdikKleve { public class AdikMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -20,21 +21,21 @@ namespace AdikKleve return false; } - 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)) //{ @@ -50,13 +51,13 @@ namespace AdikKleve } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/AidshilfeDortmund/Stundenkonto/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AidshilfeDortmund/Stundenkonto/CustomMitarbeiterstundenkontoBerechnung.cs index b80dd1161..235febd34 100644 --- a/ReportImp/AidshilfeDortmund/Stundenkonto/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AidshilfeDortmund/Stundenkonto/CustomMitarbeiterstundenkontoBerechnung.cs @@ -6,17 +6,18 @@ using BeWo.Report.ReportObjects; using BeWo.Service.Plugins; using BS.Shared.DataContracts; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace AidshilfeDortmund.Stundenkonto { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -24,21 +25,21 @@ namespace AidshilfeDortmund.Stundenkonto return false; } - 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)) //{ @@ -54,13 +55,13 @@ namespace AidshilfeDortmund.Stundenkonto } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/AkggMid/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AkggMid/CustomMitarbeiterstundenkontoBerechnung.cs index 04b667345..342e9161b 100644 --- a/ReportImp/AkggMid/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AkggMid/CustomMitarbeiterstundenkontoBerechnung.cs @@ -7,6 +7,7 @@ using BeWo.Report.ReportObjects; using BeWo.Service.Plugins; using BS.Shared.DataContracts; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace AkggMid @@ -389,7 +390,7 @@ namespace AkggMid } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { DateTime stichTag = new DateTime(2023, 9, 1); diff --git a/ReportImp/AkggMid/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/AkggMid/Mitarbeiterarbeitszeitkonto.cs index cc2f2133c..80c18b6fd 100644 --- a/ReportImp/AkggMid/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/AkggMid/Mitarbeiterarbeitszeitkonto.cs @@ -1,10 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; - +using BeWo.Service.Dienstplanung; using BS.Shared.Core; using DevExpress.XtraReports.UI; using static BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO; @@ -99,7 +100,7 @@ namespace AkggMid { var dd = new MitarbeiterstundenkontoRO.DayDetail(); dd.Date = day.Date; - dd.ServiceRecords = new List(); + dd.ServiceRecords = new List(); dd.ServiceRecords.Add(sr); added = true; newDayList.Add(dd); @@ -141,12 +142,14 @@ namespace AkggMid { foreach (var sr in day.ServiceRecords) { - custom7 = AddText(custom7, sr.ServiceDescription.ServiceCategory.Name); + var srEntity = DAOFactory.GenericDAO.LoadByID(sr.ServiceRecordOid.Value); + + custom7 = AddText(custom7, sr.ServiceDescription.Category.Name); custom8 = AddText(custom8, sr.ServiceDescription.Name); - if (sr.Group != null && sr.GroupRoundedDuration.HasValue && sr.GroupPersonCount.HasValue && sr.GroupPersonCount.Value > 1) + if (srEntity.Group != null && sr.GroupRoundedDuration.HasValue && sr.GroupPersonCount.HasValue && sr.GroupPersonCount.Value > 1) { - foreach (var gsr in sr.Group.ServiceRecordList) + foreach (var gsr in srEntity.Group.ServiceRecordList) { custom6 = AddText(custom6, gsr.SupportConcept != null ? gsr.SupportConcept.Customer.Person.FirstNameLastName : ""); } @@ -154,7 +157,7 @@ namespace AkggMid } else { - custom6 = AddText(custom6, sr.SupportConcept != null ? sr.SupportConcept.Customer.Person.FirstNameLastName : "keine*r"); + custom6 = AddText(custom6, srEntity.SupportConcept != null ? srEntity.SupportConcept.Customer.Person.FirstNameLastName : "keine*r"); custom9 = AddText(custom9, string.Format("{0:0.00}", sr.RoundedDuration / 60)); } } diff --git a/ReportImp/AlphaEv/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AlphaEv/CustomMitarbeiterstundenkontoBerechnung.cs index 129d338fe..972570e3c 100644 --- a/ReportImp/AlphaEv/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AlphaEv/CustomMitarbeiterstundenkontoBerechnung.cs @@ -12,6 +12,7 @@ using BS.Shared; using BS.Shared.Core; using BS.Shared.Extensions; using DevExpress.Data.Helpers; +using BeWo.Service.Dienstplanung; namespace AlphaEv @@ -219,10 +220,10 @@ namespace AlphaEv return atd; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { //if (!IsKrankheitAbsenceServiceRecord(item) && !IsUrlaubAbsenceServiceRecord(item) && !IsFortbildungAbsenceServiceRecord(item) && !IsSonstigeAbsenceServiceRecord(item)) - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeiterfassung") + if (item.ServiceDescription.Category.Name == "Arbeitszeiterfassung") { return base.AddServiceRecordToDuration(item); } @@ -258,9 +259,9 @@ namespace AlphaEv return base.IsKrankheitAbsenceTime(absenceTime); } - private bool IsKrankheitAbsenceServiceRecord(ServiceRecord item) + private bool IsKrankheitAbsenceServiceRecord(StundenkontoServiceRecord item) { - var cat = item.ServiceDescription.ServiceCategory.Name.ToLower(); + var cat = item.ServiceDescription.Category.Name.ToLower(); if (cat.Contains("krank")) { @@ -270,9 +271,9 @@ namespace AlphaEv return false; } - private bool IsUrlaubAbsenceServiceRecord(ServiceRecord item) + private bool IsUrlaubAbsenceServiceRecord(StundenkontoServiceRecord item) { - var cat = item.ServiceDescription.ServiceCategory.Name.ToLower(); + var cat = item.ServiceDescription.Category.Name.ToLower(); if (cat.Contains("urlaub")) { @@ -282,9 +283,9 @@ namespace AlphaEv return false; } - private bool IsFortbildungAbsenceServiceRecord(ServiceRecord item) + private bool IsFortbildungAbsenceServiceRecord(StundenkontoServiceRecord item) { - var cat = item.ServiceDescription.ServiceCategory.Name.ToLower(); + var cat = item.ServiceDescription.Category.Name.ToLower(); if (cat.Contains("fortbildung")) { @@ -295,9 +296,9 @@ namespace AlphaEv } - private bool IsSonstigeAbsenceServiceRecord(ServiceRecord item) + private bool IsSonstigeAbsenceServiceRecord(StundenkontoServiceRecord item) { - var cat = item.ServiceDescription.ServiceCategory.Name.ToLower(); + var cat = item.ServiceDescription.Category.Name.ToLower(); if (cat.Contains("indirekte zeiten")) { @@ -312,14 +313,14 @@ namespace AlphaEv } return false; } - protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, + protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { AbsenceTimeHours ath = new AbsenceTimeHours(); foreach (var item in groupFilteredRecords) { - if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde) + if (item.Start >= berichtsAnfang && item.Start < berichtsEnde) { if (IsKrankheitAbsenceServiceRecord(item)) { @@ -350,7 +351,7 @@ namespace AlphaEv empDetail.Custom4 += (item.RoundedDuration / 60); //} - if (item.Start.Value < new DateTime(2022, 1, 1)) + if (item.Start < new DateTime(2022, 1, 1)) { ath.StundenSonstiges += item.RoundedDuration / 60; } @@ -362,9 +363,9 @@ namespace AlphaEv } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) @@ -381,15 +382,15 @@ namespace AlphaEv { 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; } duration *= (prozent / 100); - if (item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription.Category.IsBillable) { if (!IstHauptbetreuer(item, emp)) { @@ -403,7 +404,7 @@ namespace AlphaEv } } - private bool IstHauptbetreuer(ServiceRecord item, MitarbeiterstundenkontoRO.EmployeeDetail emp) + private bool IstHauptbetreuer(StundenkontoServiceRecord item, MitarbeiterstundenkontoRO.EmployeeDetail emp) { if (item.Customer != null) { @@ -425,7 +426,7 @@ namespace AlphaEv return false; } - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { var sum = base.BerechneStunden(empDetail, groupFilteredRecords, berichtsAnfang, berichtsEnde); diff --git a/ReportImp/ApiBerlin/ApiMitarbeiterstundenkontoBerechnung.cs b/ReportImp/ApiBerlin/ApiMitarbeiterstundenkontoBerechnung.cs index eb001b531..c3025a4f5 100644 --- a/ReportImp/ApiBerlin/ApiMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/ApiBerlin/ApiMitarbeiterstundenkontoBerechnung.cs @@ -5,6 +5,7 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BeWo.Service.Configuration; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace ApiBerlin @@ -335,7 +336,7 @@ namespace ApiBerlin return 0; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.ServiceDescription != null && (item.ServiceDescription.Name == "Fehlzeit" || item.ServiceDescription.Name == "Freihalteregelung" || item.ServiceDescription.Name == "Ausfall C19" || item.ServiceDescription.Name == "Pause")) @@ -345,9 +346,9 @@ namespace ApiBerlin return true; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) @@ -362,23 +363,23 @@ namespace ApiBerlin item.RoundedDuration = 0; } - if (item.ServiceDescription.ServiceCategory.Name.Contains("Vertretung")) + if (item.ServiceDescription.Category.Name.Contains("Vertretung")) { emp.Custom1 += duration/60; } - else if (item.ServiceDescription.ServiceCategory.Name.Contains("Bezugsbegleitung")) + else if (item.ServiceDescription.Category.Name.Contains("Bezugsbegleitung")) { emp.Custom3 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit Sonstiges") && !item.ServiceDescription.Name.Contains("Pause")) + else if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit Sonstiges") && !item.ServiceDescription.Name.Contains("Pause")) { emp.Custom4 += duration / 60; } } } - 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) { if (ShouldCreateDayDetailsForEachServiceRecord()) { @@ -395,9 +396,9 @@ namespace ApiBerlin 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) { - var dd = dayToDetail[sr.Start.Value.Day]; + var dd = dayToDetail[sr.Start.Day]; if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr) || sr.ServiceDescription.Name == "Pause") { @@ -406,7 +407,7 @@ namespace ApiBerlin dd.MinutesTotal += duration; if (dd.ServiceRecords == null) - dd.ServiceRecords = new List(); + dd.ServiceRecords = new List(); dd.ServiceRecords.Add(sr); CalculateSpecialHours(dd, sr, duration); @@ -432,7 +433,7 @@ namespace ApiBerlin 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; } @@ -441,7 +442,7 @@ namespace ApiBerlin if (duration > 0) { - DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration); + DateTime dtEnd = sr.Start.AddMinutes((double)duration); if (sr.Start > lastEnd) { gapCount++; @@ -467,7 +468,7 @@ namespace ApiBerlin if (sr.Start < currentSpan.StartDateTime) { - currentSpan.StartDateTime = sr.Start.Value; + currentSpan.StartDateTime = sr.Start; } if (dtEnd > currentSpan.EndDateTime) { diff --git a/ReportImp/ApiBerlin/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/ApiBerlin/Mitarbeiterarbeitszeitkonto.cs index b897f51a7..7605d497a 100644 --- a/ReportImp/ApiBerlin/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/ApiBerlin/Mitarbeiterarbeitszeitkonto.cs @@ -44,15 +44,15 @@ namespace ApiBerlin if (d.ServiceRecords != null && d.ServiceRecords.Count > 0) foreach (var sr in d.ServiceRecords) { - if (sr.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit Sonstiges") && sr.ServiceDescription.Name.Contains("Pause")) + if (sr.ServiceDescription.Category.Name.Contains("Arbeitszeit Sonstiges") && sr.ServiceDescription.Name.Contains("Pause")) { if (d.Custom8 != null && d.Custom8.Length != 0) d.Custom8 += ", "; d.Custom8 += String.Format("{0:HH:mm} - {1:HH:mm}", sr.Start, sr.End); } - else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit Sonstiges" && sr.ServiceDescription.Name.Contains("Test C19")) + else if (sr.ServiceDescription.Category.Name == "Arbeitszeit Sonstiges" && sr.ServiceDescription.Name.Contains("Test C19")) d.Custom9 = "x"; - else if (sr.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit Sonstiges") && sr.ServiceDescription.Name.Contains("Supervision")) + else if (sr.ServiceDescription.Category.Name.Contains("Arbeitszeit Sonstiges") && sr.ServiceDescription.Name.Contains("Supervision")) { if (ed.Employee.Schutzstufe != null && ed.Employee.Schutzstufe.Length != 0) ed.Employee.Schutzstufe += ", "; diff --git a/ReportImp/ApiBerlin/MitarbeiterstundenkontoBerechnungTagesansicht.cs b/ReportImp/ApiBerlin/MitarbeiterstundenkontoBerechnungTagesansicht.cs index 5cbe2f1c0..653793cb3 100644 --- a/ReportImp/ApiBerlin/MitarbeiterstundenkontoBerechnungTagesansicht.cs +++ b/ReportImp/ApiBerlin/MitarbeiterstundenkontoBerechnungTagesansicht.cs @@ -5,13 +5,14 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace ApiBerlin { public class ApiMitarbeiterstundenkontoBerechnungTagesansicht : ApiMitarbeiterstundenkontoBerechnung { - //public override bool AddServiceRecordToDuration(ServiceRecord item) + //public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) //{ // if (item.ServiceDescription != null && item.ServiceDescription.Name == "Pause") // { diff --git a/ReportImp/ArbeiterwohlfahrtWesel/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/ArbeiterwohlfahrtWesel/CustomMitarbeiterstundenkontoBerechnung.cs index 8d71ef188..85329c335 100644 --- a/ReportImp/ArbeiterwohlfahrtWesel/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/ArbeiterwohlfahrtWesel/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace ArbeiterwohlfahrtWesel @@ -25,12 +26,12 @@ namespace ArbeiterwohlfahrtWesel return dd; } - 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.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { return true; } @@ -39,21 +40,21 @@ namespace ArbeiterwohlfahrtWesel return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace ArbeiterwohlfahrtWesel } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/ArcheTecklenburg/Mitarbeiterstundenkonto.cs b/ReportImp/ArcheTecklenburg/Mitarbeiterstundenkonto.cs index b724b7c4d..a64b162e9 100644 --- a/ReportImp/ArcheTecklenburg/Mitarbeiterstundenkonto.cs +++ b/ReportImp/ArcheTecklenburg/Mitarbeiterstundenkonto.cs @@ -33,7 +33,7 @@ namespace ArcheTecklenburg { foreach (var sr in day.ServiceRecords) { - var d1 = sr.Start.Value; + var d1 = sr.Start; var duration = sr.GroupRoundedDuration != null ? Convert.ToDouble(sr.GroupRoundedDuration.Value) : sr.DurationMinutes; diff --git a/ReportImp/ArcheTecklenburg/MitarbeiterstundenkontoJahr.cs b/ReportImp/ArcheTecklenburg/MitarbeiterstundenkontoJahr.cs index fa7d2f24d..1036fc916 100644 --- a/ReportImp/ArcheTecklenburg/MitarbeiterstundenkontoJahr.cs +++ b/ReportImp/ArcheTecklenburg/MitarbeiterstundenkontoJahr.cs @@ -35,7 +35,7 @@ namespace ArcheTecklenburg { foreach (var sr in day.ServiceRecords) { - var d1 = sr.Start.Value; + var d1 = sr.Start; var duration = sr.GroupRoundedDuration != null ? Convert.ToDouble(sr.GroupRoundedDuration.Value) : sr.DurationMinutes; diff --git a/ReportImp/ArcheTecklenburg/Teamstundenkonto.cs b/ReportImp/ArcheTecklenburg/Teamstundenkonto.cs index cef2a9ea2..af0e5566f 100644 --- a/ReportImp/ArcheTecklenburg/Teamstundenkonto.cs +++ b/ReportImp/ArcheTecklenburg/Teamstundenkonto.cs @@ -52,7 +52,7 @@ namespace ArcheTecklenburg { foreach (var sr in day.ServiceRecords) { - var d1 = sr.Start.Value; + var d1 = sr.Start; var saturday = d1.GetNextDayOfWeek(DayOfWeek.Saturday); var unroundedEnd = d1.AddMinutes(sr.DurationMinutes); diff --git a/ReportImp/AsSozialeDienstleistungenEV/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AsSozialeDienstleistungenEV/CustomMitarbeiterstundenkontoBerechnung.cs index acb416fc3..6c8bf2bbd 100644 --- a/ReportImp/AsSozialeDienstleistungenEV/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AsSozialeDienstleistungenEV/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace AsSozialeDienstleistungenEV @@ -36,14 +37,14 @@ namespace AsSozialeDienstleistungenEV return dd; } - 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 != "Pause") { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -53,21 +54,21 @@ namespace AsSozialeDienstleistungenEV return false; } - 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)) //{ @@ -83,9 +84,9 @@ namespace AsSozialeDienstleistungenEV } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { if (item.ServiceDescription.Name != "Pause") @@ -97,7 +98,7 @@ namespace AsSozialeDienstleistungenEV //arbeitszeit -= duration; // Achtung muss auskommentiert sein - sonst doppelter Abzug } } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -115,7 +116,7 @@ namespace AsSozialeDienstleistungenEV return sum; } - 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) @@ -126,7 +127,7 @@ namespace AsSozialeDienstleistungenEV 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); @@ -135,12 +136,12 @@ namespace AsSozialeDienstleistungenEV dd.PauseInMinuten += (decimal)sr.DurationMinutes; } - else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + else if (sr.ServiceDescription.Category.Name == "Arbeitszeit") { dd.MinutesTotal += (decimal)sr.DurationMinutes; } else if (sr.ServiceDescription.Name != "Arbeitszeit" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += (decimal)sr.DurationMinutes; } @@ -159,7 +160,7 @@ namespace AsSozialeDienstleistungenEV return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -179,13 +180,13 @@ namespace AsSozialeDienstleistungenEV { return true; } - 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/AsbRheinErftDueren/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AsbRheinErftDueren/CustomMitarbeiterstundenkontoBerechnung.cs index 67e4351d3..93e5078dc 100644 --- a/ReportImp/AsbRheinErftDueren/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AsbRheinErftDueren/CustomMitarbeiterstundenkontoBerechnung.cs @@ -6,6 +6,7 @@ using BeWo.Report.ReportObjects; using BeWo.Service.DCEntityMapper; using BeWo.Service.Plugins; using BS.Shared.DataContracts; +using BeWo.Service.Dienstplanung; namespace AsbRheinErftDueren { @@ -117,7 +118,7 @@ namespace AsbRheinErftDueren return true; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.CostBearer2SupportConcept != null && item.CostBearer2SupportConcept.CostBearer.Organisation.Name != "Jugendamt Brühl") @@ -142,7 +143,7 @@ namespace AsbRheinErftDueren } } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { var edTotal = base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); diff --git a/ReportImp/AutismusLeben/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AutismusLeben/CustomMitarbeiterstundenkontoBerechnung.cs index 040d01c1b..8b542e9e0 100644 --- a/ReportImp/AutismusLeben/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AutismusLeben/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace AutismusLeben @@ -25,15 +26,15 @@ namespace AutismusLeben return dd; } - public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) { foreach (var item in groupFilteredRecords) { - if (item.ServiceDescription.ServiceCategory.Name != "Arbeitszeit") + if (item.ServiceDescription.Category.Name != "Arbeitszeit") { - if (!item.SystemEntryID.HasValue) + if (String.IsNullOrEmpty(item.Custom1)) { - item.SystemEntryID = BS.Shared.SystemEntryID.InvoiceNumber; // Hack um mir zu merken, welche ServiceRecords schon mit 1,2 multipliziert wurden. + item.Custom1 = "1,2"; // Hack um mir zu merken, welche ServiceRecords schon mit 1,2 multipliziert wurden. if (item.GroupRoundedDuration.HasValue) { @@ -48,9 +49,9 @@ namespace AutismusLeben } } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) @@ -70,7 +71,7 @@ namespace AutismusLeben } - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { var sum = base.BerechneStunden(empDetail, groupFilteredRecords, berichtsAnfang, berichtsEnde); diff --git a/ReportImp/BAPBielefelderAmbulantePflege/CustomerMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BAPBielefelderAmbulantePflege/CustomerMitarbeiterstundenkontoBerechnung.cs index 7747a611b..cf9adb4ea 100644 --- a/ReportImp/BAPBielefelderAmbulantePflege/CustomerMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BAPBielefelderAmbulantePflege/CustomerMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.BAPBielefelderAmbulantePflege @@ -25,11 +26,11 @@ namespace BeWo.BAPBielefelderAmbulantePflege return dd; } - 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.ServiceCategory.Name == "Arbeitszeit" && item.ServiceDescription.Name != "Pause") + if (item.ServiceDescription.Category.Name == "Arbeitszeit" && item.ServiceDescription.Name != "Pause") { return true; } @@ -37,11 +38,11 @@ namespace BeWo.BAPBielefelderAmbulantePflege return false; } - public override bool CorrectOverlappingTime(ServiceRecord record) + public override bool CorrectOverlappingTime(StundenkontoServiceRecord record) { - if (record.ServiceDescription != null && record.ServiceDescription.ServiceCategory != null) + if (record.ServiceDescription != null && record.ServiceDescription.Category != null) { - if (record.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" && record.ServiceDescription.Name != "Pause") + if (record.ServiceDescription.Category.Name == "Arbeitszeit" && record.ServiceDescription.Name != "Pause") { return true; } @@ -50,21 +51,21 @@ namespace BeWo.BAPBielefelderAmbulantePflege return false; } - 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)) //{ @@ -80,13 +81,13 @@ namespace BeWo.BAPBielefelderAmbulantePflege } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } - else if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" && + else if (item.ServiceDescription.Category.Name == "Arbeitszeit" && item.ServiceDescription.Name != "Pause") { arbeitszeit += duration; diff --git a/ReportImp/BUGeVReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BUGeVReports/CustomMitarbeiterstundenkontoBerechnung.cs index 16687e979..e5027b8ca 100644 --- a/ReportImp/BUGeVReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BUGeVReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BUGeVReports @@ -27,11 +28,11 @@ namespace BUGeVReports return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace BUGeVReports return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace BUGeVReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/BeWoAlsdorf/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoAlsdorf/CustomMitarbeiterstundenkontoBerechnung.cs index ce3ac7231..1369f6c7c 100644 --- a/ReportImp/BeWoAlsdorf/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoAlsdorf/CustomMitarbeiterstundenkontoBerechnung.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using BeWo.Service.Dienstplanung; namespace BeWoAlsdorf { @@ -23,21 +24,21 @@ namespace BeWoAlsdorf } // WorkTime-Häkchen erst ab 01.01.2026 - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) + 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(); - 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); @@ -53,7 +54,7 @@ namespace BeWoAlsdorf { 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; } @@ -65,8 +66,8 @@ namespace BeWoAlsdorf 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; @@ -78,9 +79,9 @@ namespace BeWoAlsdorf { 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) { @@ -123,9 +124,9 @@ namespace BeWoAlsdorf } } } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { - if (Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung && item.Start.HasValue && item.Start.Value.Year >= 2026) + if (Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung && item.Start.Year >= 2026) { return IstArbeitszeit(item); diff --git a/ReportImp/BeWoAmrath/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoAmrath/CustomMitarbeiterstundenkontoBerechnung.cs index 67b77a6f5..dbb6f1a86 100644 --- a/ReportImp/BeWoAmrath/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoAmrath/CustomMitarbeiterstundenkontoBerechnung.cs @@ -1,11 +1,13 @@ -using System; -using System.Collections; -using System.Collections.Generic; +using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; -using BS.Shared.Core; -using BeWo.Data.Access; +using BeWo.Service.Dienstplanung; using BeWo.Service.ServiceImplementations; +using BS.Shared.Core; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; namespace BeWo.BeWoAmrath { @@ -62,11 +64,11 @@ namespace BeWo.BeWoAmrath decimal stundenSollGesamt = 0; decimal tatsaechlicheSollStdGesamt = 0; - IList recordsAll = DAOFactory.SearchDAO.FindServiceRecords(emp.Oid, null); - recordsAll = AnalysisServiceImp.FilterActiveServiceRecords(recordsAll); + IList< StundenkontoServiceRecord> recordsAll = ro.AllServiceRecords.Where(s => s.EmployeeOid.HasValue && s.EmployeeOid == emp.Oid).ToList(); + - IList recordsThisMonth = new List(); - IList groupFilteredRecords = new List(); + IList recordsThisMonth = new List(); + IList groupFilteredRecords = new List(); Dictionary groupBookingDict = new Dictionary(); foreach (var item in recordsAll) { @@ -122,7 +124,7 @@ namespace BeWo.BeWoAmrath { if (!IsServiceRecordFehlzeit(item)) { - if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde) + if (item.Start >= berichtsAnfang && item.Start < berichtsEnde) { HandleServiceRecord(empDetail, item); if (AddServiceRecordToDuration(item)) @@ -141,7 +143,7 @@ namespace BeWo.BeWoAmrath if (UseServiceDescriptionPercentage()) { - decimal prozent = item.ServiceDescription.ServiceCategory.ProzentStundenkonto ?? item.ServiceDescription.ServiceCategory.ProzentAbrechnung; + decimal prozent = item.ServiceDescription.Category.ProzentStundenkonto ?? item.ServiceDescription.Category.Percentage; if (item.ServiceDescription.ProzentStundenkonto.HasValue) { prozent = item.ServiceDescription.ProzentStundenkonto.Value; @@ -160,9 +162,9 @@ namespace BeWo.BeWoAmrath { 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; } @@ -174,8 +176,8 @@ namespace BeWo.BeWoAmrath } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null && - item.ServiceDescription.ServiceCategory.IsBillable) + item.ServiceDescription.Category != null && + item.ServiceDescription.Category.IsBillable) { if (item.CostBearer2SupportConcept != null && item.CostBearer2SupportConcept.CostBearer.Organisation.Name == "LWL") @@ -369,7 +371,7 @@ namespace BeWo.BeWoAmrath } } - private void BerechneUeberstundenBis(Employee emp, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) + private void BerechneUeberstundenBis(Employee emp, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { ueberstunden = null; alteExtraUeberstunden = 0; @@ -379,7 +381,7 @@ namespace BeWo.BeWoAmrath if (c != null) { - Dictionary> srDict = CreateServiceRecordDictByDate(records); + Dictionary> srDict = CreateServiceRecordDictByDate(records); DateTime start = c.EntryDate.HasValue ? c.EntryDate.Value : new DateTime(2011, 1, 1); while (c != null && start < monat) @@ -414,14 +416,14 @@ namespace BeWo.BeWoAmrath if (contractEnd < DateTime.MaxValue && contractEnd.AddDays(1) < ende) ende = contractEnd.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)) { @@ -442,7 +444,7 @@ namespace BeWo.BeWoAmrath { if (UseServiceDescriptionPercentage()) { - decimal prozent = item.ServiceDescription.ServiceCategory.ProzentStundenkonto ?? item.ServiceDescription.ServiceCategory.ProzentAbrechnung; + decimal prozent = item.ServiceDescription.Category.ProzentStundenkonto ?? item.ServiceDescription.Category.Percentage; if (item.ServiceDescription.ProzentStundenkonto.HasValue) { prozent = item.ServiceDescription.ProzentStundenkonto.Value; @@ -461,9 +463,9 @@ namespace BeWo.BeWoAmrath { 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; } @@ -476,8 +478,8 @@ namespace BeWo.BeWoAmrath } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null && - item.ServiceDescription.ServiceCategory.IsBillable) + item.ServiceDescription.Category != null && + item.ServiceDescription.Category.IsBillable) { if (item.CostBearer2SupportConcept != null && item.CostBearer2SupportConcept.CostBearer.Organisation.Name == "LWL") @@ -635,7 +637,7 @@ namespace BeWo.BeWoAmrath return list; } - //public override bool AddServiceRecordToDuration(ServiceRecord item) + //public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) //{ // if (item.CostBearer2SupportConcept != null && item.CostBearer2SupportConcept.CostBearer.Organisation.Name == "LWL") // { @@ -644,11 +646,11 @@ namespace BeWo.BeWoAmrath // return true; //} - // 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) // { - // var p = item.ServiceDescription.ServiceCategory.Percentage; + // var p = item.ServiceDescription.Category.Percentage; // if (p != 100 && p > 0) // { diff --git a/ReportImp/BeWoAuxilio/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoAuxilio/CustomMitarbeiterstundenkontoBerechnung.cs index 15edb51c3..9047e01fe 100644 --- a/ReportImp/BeWoAuxilio/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoAuxilio/CustomMitarbeiterstundenkontoBerechnung.cs @@ -8,6 +8,7 @@ using BeWo.Data.Access; using BeWo.Service.DCEntityMapper; using BS.Shared; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace BeWo.BeWoAuxilio @@ -179,7 +180,7 @@ namespace BeWo.BeWoAuxilio return ueberstundenStd; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { //Minimale Änderungen zum Original, aber ich brauche den Pausenabzug und Fehltage für die Boni -> Änderungen markiert mit //Änderung MitarbeiterstundenkontoRO.EmployeeDetail edTotal = new MitarbeiterstundenkontoRO.EmployeeDetail(); @@ -191,7 +192,7 @@ namespace BeWo.BeWoAuxilio if (c != null) { - Dictionary> srDict = CreateServiceRecordDictByDate(records); + Dictionary> srDict = CreateServiceRecordDictByDate(records); DateTime start = c.EntryDate.HasValue ? c.EntryDate.Value : new DateTime(2011, 1, 1); while (c != null && start < monat) @@ -228,14 +229,14 @@ namespace BeWo.BeWoAuxilio 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)) { @@ -243,8 +244,8 @@ namespace BeWo.BeWoAuxilio 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; @@ -533,11 +534,11 @@ namespace BeWo.BeWoAuxilio return addHours; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -545,7 +546,7 @@ namespace BeWo.BeWoAuxilio return false; } - public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) { if (reportStart.Month == 3 || reportStart.Month == 6 || reportStart.Month == 9 || reportStart.Month == 12) //&& (start == reportStart.AddMonths(-2) || start == reportStart.AddMonths(-1))) @@ -563,11 +564,11 @@ namespace BeWo.BeWoAuxilio { duration = item.RoundedDuration; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.IsBillable) { FLS1 += duration / 60; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("besondere aufgaben")) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.Name.ToLower().Contains("besondere aufgaben")) { bes1 += duration / 60; } @@ -587,11 +588,11 @@ namespace BeWo.BeWoAuxilio { duration = item.RoundedDuration; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.IsBillable) { FLS2 += duration / 60; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("besondere aufgaben")) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.Name.ToLower().Contains("besondere aufgaben")) { bes2 += duration / 60; } @@ -604,7 +605,7 @@ namespace BeWo.BeWoAuxilio } } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { decimal duration = 0; @@ -616,11 +617,11 @@ namespace BeWo.BeWoAuxilio { duration = item.RoundedDuration; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.IsBillable) { emp.Custom1 += duration / 60; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("besondere aufgaben")) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.Name.ToLower().Contains("besondere aufgaben")) { emp.Custom5 += duration / 60; } diff --git a/ReportImp/BeWoAuxilioRitter/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoAuxilioRitter/CustomMitarbeiterstundenkontoBerechnung.cs index d5ceeeefa..c5ffe11fe 100644 --- a/ReportImp/BeWoAuxilioRitter/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoAuxilioRitter/CustomMitarbeiterstundenkontoBerechnung.cs @@ -8,6 +8,7 @@ using BeWo.Data.Access; using BeWo.Service.DCEntityMapper; using BS.Shared; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace BeWo.BeWoAuxilioRitter @@ -179,7 +180,7 @@ namespace BeWo.BeWoAuxilioRitter return ueberstundenStd; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { //Minimale Änderungen zum Original, aber ich brauche den Pausenabzug und Fehltage für die Boni -> Änderungen markiert mit //Änderung MitarbeiterstundenkontoRO.EmployeeDetail edTotal = new MitarbeiterstundenkontoRO.EmployeeDetail(); @@ -191,7 +192,7 @@ namespace BeWo.BeWoAuxilioRitter if (c != null) { - Dictionary> srDict = CreateServiceRecordDictByDate(records); + Dictionary> srDict = CreateServiceRecordDictByDate(records); DateTime start = c.EntryDate.HasValue ? c.EntryDate.Value : new DateTime(2011, 1, 1); while (c != null && start < monat) @@ -228,14 +229,14 @@ namespace BeWo.BeWoAuxilioRitter 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)) { @@ -243,8 +244,8 @@ namespace BeWo.BeWoAuxilioRitter 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; @@ -533,11 +534,11 @@ namespace BeWo.BeWoAuxilioRitter return addHours; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -545,7 +546,7 @@ namespace BeWo.BeWoAuxilioRitter return false; } - public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) { if (reportStart.Month == 3 || reportStart.Month == 6 || reportStart.Month == 9 || reportStart.Month == 12) //&& (start == reportStart.AddMonths(-2) || start == reportStart.AddMonths(-1))) @@ -563,11 +564,11 @@ namespace BeWo.BeWoAuxilioRitter { duration = item.RoundedDuration; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.IsBillable) { FLS1 += duration / 60; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("besondere aufgaben")) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.Name.ToLower().Contains("besondere aufgaben")) { bes1 += duration / 60; } @@ -587,11 +588,11 @@ namespace BeWo.BeWoAuxilioRitter { duration = item.RoundedDuration; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.IsBillable) { FLS2 += duration / 60; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("besondere aufgaben")) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.Name.ToLower().Contains("besondere aufgaben")) { bes2 += duration / 60; } @@ -604,7 +605,7 @@ namespace BeWo.BeWoAuxilioRitter } } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { decimal duration = 0; @@ -616,11 +617,11 @@ namespace BeWo.BeWoAuxilioRitter { duration = item.RoundedDuration; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.IsBillable) { emp.Custom1 += duration / 60; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("besondere aufgaben")) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.Name.ToLower().Contains("besondere aufgaben")) { emp.Custom5 += duration / 60; } diff --git a/ReportImp/BeWoDarmstadt/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoDarmstadt/CustomMitarbeiterstundenkontoBerechnung.cs index 81f3502c9..0ce8b14ee 100644 --- a/ReportImp/BeWoDarmstadt/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoDarmstadt/CustomMitarbeiterstundenkontoBerechnung.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using BeWo.Service.Dienstplanung; namespace BeWoDarmstadt { @@ -39,7 +40,7 @@ namespace BeWoDarmstadt return ueberstundenStd; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { var edTotal = base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); edOrig.Custom15 = -fls; @@ -120,20 +121,20 @@ namespace BeWoDarmstadt } } - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { var sum = new ServiceRecordSummary(); - sum.RecordsImBerichtszeitraum = new List(); + sum.RecordsImBerichtszeitraum = new List(); // Bei Vertragswechsel im Monat wurde nur ein Vertrag mit SRs beachtet, ist bei denen wichtig!!! if (empDetail.ServiceRecordsInSelectedTimeSpan == null) - 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); @@ -146,8 +147,8 @@ namespace BeWoDarmstadt //System.Diagnostics.Debug.WriteLine("{0:0.##}", duration); 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; diff --git a/ReportImp/BeWoDarmstadt/Zeitzuschlagsbeleg.cs b/ReportImp/BeWoDarmstadt/Zeitzuschlagsbeleg.cs index 6308fd315..d70e7b065 100644 --- a/ReportImp/BeWoDarmstadt/Zeitzuschlagsbeleg.cs +++ b/ReportImp/BeWoDarmstadt/Zeitzuschlagsbeleg.cs @@ -14,6 +14,7 @@ using BeWo.Service.DCEntityMapper; using BeWo.Service.Plugins; using DevExpress.Charts.Native; using System.Data; +using BeWo.Service.Dienstplanung; namespace BeWoDarmstadt { @@ -127,9 +128,9 @@ namespace BeWoDarmstadt var sortedServiceRecords = ed.ServiceRecordsInSelectedTimeSpan.OrderBy(sr => sr.Start).ToList(); foreach (var sr in sortedServiceRecords) { - if (sr.DistanceInMeter.HasValue) + if (sr.DistanceInMeter > 0) { - kmTotal += sr.DistanceInMeter.Value; + kmTotal += sr.DistanceInMeter; } AddValueToTableZuschlag(sr); AddValueToTableLeistungen(sr); @@ -269,9 +270,9 @@ namespace BeWoDarmstadt rowIdx++; } - private void AddValueToTableZuschlag(ServiceRecord sr) + private void AddValueToTableZuschlag(StundenkontoServiceRecord sr) { - DateTime datum = sr.Start.Value; + DateTime datum = sr.Start; var zs = BerechneZuschlag(sr); if (zs.MinutenHeiligabendSilvester14_21 > 0) @@ -312,16 +313,16 @@ namespace BeWoDarmstadt } } - private void AddValueToTableLeistungen(ServiceRecord sr) + private void AddValueToTableLeistungen(StundenkontoServiceRecord sr) { - DateTime datum = sr.Start.Value; + DateTime datum = sr.Start; var duration = GetDuration(sr); Zeitverteilung zv = new Zeitverteilung(); zv.minutenLeistung = CheckUhrzeiten(datum, 0, 24, (double)duration); - if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("eingliederungshilfe") || sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("jugendhilfe") - || sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("qualifizierte assistenz") - || sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("kompensatorische assistenz")) + if (sr.ServiceDescription.Category.Name.ToLower().Contains("eingliederungshilfe") || sr.ServiceDescription.Category.Name.ToLower().Contains("jugendhilfe") + || sr.ServiceDescription.Category.Name.ToLower().Contains("qualifizierte assistenz") + || sr.ServiceDescription.Category.Name.ToLower().Contains("kompensatorische assistenz")) { if (sr.ServiceDescription.Name.ToLower().StartsWith("indirekte")) AddValueToCell(zv.minutenLeistung, datum, tableFLS.Rows[2], indirekteBetr2Minuten); @@ -335,7 +336,7 @@ namespace BeWoDarmstadt else AddValueToCell(zv.minutenLeistung, datum, tableFLS.Rows[1], direkteBetr2Minuten); } - else if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("rahmenzeit")) + else if (sr.ServiceDescription.Category.Name.ToLower().Contains("rahmenzeit")) { if (sr.ServiceDescription.Name.ToLower().Contains("fortbildung")) AddValueToCell(zv.minutenLeistung, datum, tableRahmenzeit.Rows[1], fobiUrKr2Minuten); @@ -390,7 +391,7 @@ namespace BeWoDarmstadt cell.Text = abwesenheit; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -402,7 +403,7 @@ namespace BeWoDarmstadt { duration = sr.RoundedDuration; } - decimal p = sr.ServiceDescription.ServiceCategory.ProzentStundenkonto ?? 0; + decimal p = sr.ServiceDescription.Category.ProzentStundenkonto ?? 0; if (p != 100 && p > 0) { duration *= (p / 100); @@ -419,10 +420,10 @@ namespace BeWoDarmstadt return duration; } - public virtual Zeitverteilung BerechneZuschlag(ServiceRecord sr) + public virtual Zeitverteilung BerechneZuschlag(StundenkontoServiceRecord sr) { Zeitverteilung zv = new Zeitverteilung(); - DateTime datum = sr.Start.Value; + DateTime datum = sr.Start; var duration = GetDuration(sr); int nachtStart = 21; @@ -433,11 +434,11 @@ namespace BeWoDarmstadt zv.MinutenHeiligabendSilvester14_21 = CheckUhrzeiten(datum, 14, 21, (double) duration); zv.MinutenNachtFe21_6 = CheckUhrzeiten(datum, nachtStart, 6, (double)duration); - if (sr.Start.Value.DayOfWeek == DayOfWeek.Saturday) + if (sr.Start.DayOfWeek == DayOfWeek.Saturday) { zv.MinutenSamstag13_21 = CheckUhrzeiten(datum, 13, 21, (double) duration); } - else if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday) + else if (sr.Start.DayOfWeek == DayOfWeek.Sunday) { zv.MinutenSonntag6_21 = CheckUhrzeiten(datum, 6, 21, (double) duration); } @@ -458,12 +459,12 @@ namespace BeWoDarmstadt zv.MinutenNachtFe21_6 = CheckUhrzeiten(datum, nachtStart, 6, (double)duration); //} } - else if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday) + else if (sr.Start.DayOfWeek == DayOfWeek.Sunday) { zv.MinutenSonntag6_21 = CheckUhrzeiten(datum, 6, 21, (double) duration); zv.MinutenNachtSo21_6 = CheckUhrzeiten(datum, nachtStart, 6, (double)duration); } - else if (sr.Start.Value.DayOfWeek == DayOfWeek.Saturday) + else if (sr.Start.DayOfWeek == DayOfWeek.Saturday) { zv.MinutenSamstag13_21 = CheckUhrzeiten(datum, 13, 21, (double) duration); zv.MinutenNachtFe21_6 = CheckUhrzeiten(datum, nachtStart, 6, (double)duration); diff --git a/ReportImp/BeWoDellbrueck/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoDellbrueck/CustomMitarbeiterstundenkontoBerechnung.cs index a366108e2..31664dd31 100644 --- a/ReportImp/BeWoDellbrueck/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoDellbrueck/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWoDellbrueck @@ -25,11 +26,11 @@ namespace BeWoDellbrueck return dd; } - 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.ServiceCategory.Name == "Arbeit" || item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeit" || item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -37,21 +38,21 @@ namespace BeWoDellbrueck return false; } - 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)) //{ @@ -67,13 +68,13 @@ namespace BeWoDellbrueck } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeit" || item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeit" || item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/BeWoDirekt/BeWoDirektMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoDirekt/BeWoDirektMitarbeiterstundenkontoBerechnung.cs index 4f9cb9c4a..f5f1f889c 100644 --- a/ReportImp/BeWoDirekt/BeWoDirektMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoDirekt/BeWoDirektMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.BeWoDirekt @@ -43,11 +44,11 @@ namespace BeWo.BeWoDirekt return dd; } - 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.ServiceCategory.Name == "Arbeitszeiterfassung") + if (item.ServiceDescription.Category.Name == "Arbeitszeiterfassung") { return true; } @@ -55,21 +56,21 @@ namespace BeWo.BeWoDirekt return false; } - 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)) //{ @@ -85,13 +86,13 @@ namespace BeWo.BeWoDirekt } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeiterfassung") + if (item.ServiceDescription.Category.Name == "Arbeitszeiterfassung") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/BeWoHeinsberg/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoHeinsberg/CustomMitarbeiterstundenkontoBerechnung.cs index 21fd514e0..caab96bad 100644 --- a/ReportImp/BeWoHeinsberg/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoHeinsberg/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWoHeinsberg @@ -9,7 +10,7 @@ namespace BeWoHeinsberg public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { if (item.ServiceDescription != null) { @@ -23,7 +24,7 @@ namespace BeWoHeinsberg duration = item.RoundedDuration; } - var cat = item.ServiceDescription.ServiceCategory.Name.ToLower(); + var cat = item.ServiceDescription.Category.Name.ToLower(); if (cat.Contains("mittelbar")) { diff --git a/ReportImp/BeWoRichter/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoRichter/CustomMitarbeiterstundenkontoBerechnung.cs index 4ccbf88fa..c58a5f806 100644 --- a/ReportImp/BeWoRichter/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoRichter/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWoRichter @@ -25,12 +26,12 @@ namespace BeWoRichter return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace BeWoRichter return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace BeWoRichter } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/BeWoSchillingReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BeWoSchillingReports/CustomMitarbeiterstundenkontoBerechnung.cs index a2972b27d..b9d3b0ed9 100644 --- a/ReportImp/BeWoSchillingReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BeWoSchillingReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWoSchillingReports @@ -25,12 +26,12 @@ namespace BeWoSchillingReports return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace BeWoSchillingReports return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace BeWoSchillingReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/BehindertenhilfeMenden/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BehindertenhilfeMenden/CustomMitarbeiterstundenkontoBerechnung.cs index 0e20dcb1e..b770e19e8 100644 --- a/ReportImp/BehindertenhilfeMenden/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BehindertenhilfeMenden/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BehindertenhilfeMenden @@ -24,11 +25,11 @@ namespace BehindertenhilfeMenden return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -36,11 +37,11 @@ namespace BehindertenhilfeMenden return false; } - public override bool CorrectOverlappingTime(ServiceRecord record) + public override bool CorrectOverlappingTime(StundenkontoServiceRecord record) { - if (record.ServiceDescription != null && record.ServiceDescription.ServiceCategory != null) + if (record.ServiceDescription != null && record.ServiceDescription.Category != null) { - if (record.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (record.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -49,21 +50,21 @@ namespace BehindertenhilfeMenden return false; } - 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)) //{ @@ -79,13 +80,13 @@ namespace BehindertenhilfeMenden } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } - else if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + else if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } diff --git a/ReportImp/BetreuWoReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BetreuWoReports/CustomMitarbeiterstundenkontoBerechnung.cs index b4c897f8b..4c75765bb 100644 --- a/ReportImp/BetreuWoReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BetreuWoReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace BetreuWoReports @@ -73,7 +74,7 @@ namespace BetreuWoReports return true; } - 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) { IList dayDetailList = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll); diff --git a/ReportImp/BetreuWoReports/Mitarbeiterstundenkonto.cs b/ReportImp/BetreuWoReports/Mitarbeiterstundenkonto.cs index beb71ea66..15a97aff4 100644 --- a/ReportImp/BetreuWoReports/Mitarbeiterstundenkonto.cs +++ b/ReportImp/BetreuWoReports/Mitarbeiterstundenkonto.cs @@ -45,15 +45,15 @@ namespace BetreuWoReports double samstagGesamt = 0; foreach (var srs in dayDetail.ServiceRecords) { - if (srs.Start.Value.DayOfWeek == DayOfWeek.Saturday) + if (srs.Start.DayOfWeek == DayOfWeek.Saturday) { //Berechne die Stunden, die Samstag zwischen 13 und 21 Uhr gearbeitet wurde - DateTime ende = srs.Start.Value.AddMinutes((int)srs.RoundedDuration); + DateTime ende = srs.Start.AddMinutes((int)srs.RoundedDuration); if (srs.GroupOid.HasValue && srs.GroupRoundedDuration.HasValue) { - ende = srs.Start.Value.AddMinutes((int)srs.GroupRoundedDuration); + ende = srs.Start.AddMinutes((int)srs.GroupRoundedDuration); } - samstagGesamt += GetOverlappingMinutes(srs.Start.Value, ende, sr.Start.Value.Date.AddHours(13), sr.Start.Value.Date.AddHours(21)); + samstagGesamt += GetOverlappingMinutes(srs.Start, ende, sr.Start.Date.AddHours(13), sr.Start.Date.AddHours(21)); } } if (samstagGesamt > 0) diff --git a/ReportImp/BetreutesWohnenAmRheinReports/BWARMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BetreutesWohnenAmRheinReports/BWARMitarbeiterstundenkontoBerechnung.cs index 27b6c30e9..661760434 100644 --- a/ReportImp/BetreutesWohnenAmRheinReports/BWARMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BetreutesWohnenAmRheinReports/BWARMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.BetreutesWohnenAmRheinReports @@ -85,13 +86,13 @@ namespace BeWo.BetreutesWohnenAmRheinReports } - 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 != "Pause") { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -100,21 +101,21 @@ namespace BeWo.BetreutesWohnenAmRheinReports return false; } - 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)) //{ @@ -130,12 +131,12 @@ namespace BeWo.BetreutesWohnenAmRheinReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { - if (item.ServiceDescription.Name != "Pause" || item.Start.Value.Date >= new DateTime(2025, 02, 01)) + if (item.ServiceDescription.Name != "Pause" || item.Start.Date >= new DateTime(2025, 02, 01)) { arbeitszeit += duration; } @@ -144,7 +145,7 @@ namespace BeWo.BetreutesWohnenAmRheinReports //arbeitszeit -= duration; } } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -161,14 +162,14 @@ namespace BeWo.BetreutesWohnenAmRheinReports return sum; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { return base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); } - 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); @@ -181,21 +182,21 @@ namespace BeWo.BetreutesWohnenAmRheinReports 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); - if (sr.ServiceDescription.Name == "Pause" && sr.Start.Value.Date < new DateTime(2025, 02, 01)) + if (sr.ServiceDescription.Name == "Pause" && sr.Start.Date < new DateTime(2025, 02, 01)) { dd.PauseInMinuten += (decimal)sr.DurationMinutes; } - else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + else if (sr.ServiceDescription.Category.Name == "Arbeitszeit") { dd.MinutesTotal += (decimal)sr.DurationMinutes; } else if (sr.ServiceDescription.Name != "Arbeitszeit" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += (decimal)sr.DurationMinutes; } @@ -217,7 +218,7 @@ namespace BeWo.BetreutesWohnenAmRheinReports return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -242,20 +243,20 @@ namespace BeWo.BetreutesWohnenAmRheinReports - 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) { - if (sr.ServiceDescription.Name == "Pause" && sr.Start.Value.Date < new DateTime(2025, 02, 01)) + if (sr.ServiceDescription.Name == "Pause" && sr.Start.Date < new DateTime(2025, 02, 01)) { pausen.Add(sr); } diff --git a/ReportImp/BetreuungsserviceFuerAlltagUndWohnen/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BetreuungsserviceFuerAlltagUndWohnen/CustomMitarbeiterstundenkontoBerechnung.cs index 1511cc885..9e2202f4a 100644 --- a/ReportImp/BetreuungsserviceFuerAlltagUndWohnen/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BetreuungsserviceFuerAlltagUndWohnen/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BetreuungsserviceFuerAlltagUndWohnen @@ -34,13 +35,13 @@ namespace BetreuungsserviceFuerAlltagUndWohnen return dd; } - 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 != "Pause") { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -49,21 +50,21 @@ namespace BetreuungsserviceFuerAlltagUndWohnen return false; } - 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)) //{ @@ -79,16 +80,16 @@ namespace BetreuungsserviceFuerAlltagUndWohnen } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { if (item.ServiceDescription.Name != "Pause") { arbeitszeit += duration; }; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -106,7 +107,7 @@ namespace BetreuungsserviceFuerAlltagUndWohnen return sum; } - 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) @@ -117,7 +118,7 @@ namespace BetreuungsserviceFuerAlltagUndWohnen 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); @@ -126,12 +127,12 @@ namespace BetreuungsserviceFuerAlltagUndWohnen dd.PauseInMinuten += (decimal)sr.DurationMinutes; } - else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + else if (sr.ServiceDescription.Category.Name == "Arbeitszeit") { dd.MinutesTotal += (decimal)sr.DurationMinutes; } else if (sr.ServiceDescription.Name != "Arbeitszeit" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += (decimal)sr.DurationMinutes; } @@ -150,7 +151,7 @@ namespace BetreuungsserviceFuerAlltagUndWohnen return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -170,13 +171,13 @@ namespace BetreuungsserviceFuerAlltagUndWohnen { return true; } - 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/BetreuwoWesel/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BetreuwoWesel/CustomMitarbeiterstundenkontoBerechnung.cs index 5da232b08..d1a54fc28 100644 --- a/ReportImp/BetreuwoWesel/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BetreuwoWesel/CustomMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace BetreuWoWesel { @@ -64,12 +65,12 @@ namespace BetreuWoWesel return dd; } - public override void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration) + public override void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, StundenkontoServiceRecord sr, decimal duration) { base.CalculateSpecialHours(dd, sr, duration); - var d1 = sr.Start.Value; + var d1 = sr.Start; if (d1 >= new DateTime(2024, 07, 01)) { @@ -99,7 +100,7 @@ namespace BetreuWoWesel return true; } - 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) { IList dayDetailList = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll); diff --git a/ReportImp/BhsSolingen/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BhsSolingen/CustomMitarbeiterstundenkontoBerechnung.cs index 7486e4ba3..0dcec7d97 100644 --- a/ReportImp/BhsSolingen/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BhsSolingen/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BhsSolingen @@ -9,7 +10,7 @@ namespace BhsSolingen public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { if (item.ServiceDescription != null) { @@ -23,7 +24,7 @@ namespace BhsSolingen duration = item.RoundedDuration; } - if (item.ServiceDescription.ServiceCategory.Name.StartsWith("Assistenz")) + if (item.ServiceDescription.Category.Name.StartsWith("Assistenz")) { emp.Custom1 += duration / 60; } diff --git a/ReportImp/Biotop/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/Biotop/CustomMitarbeiterstundenkontoBerechnung.cs index c11ee6088..5379d0f07 100644 --- a/ReportImp/Biotop/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Biotop/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace Biotop @@ -28,21 +29,21 @@ namespace Biotop return dd; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { - if (item.Start.HasValue && item.Start.Value.Date < new DateTime(2024, 01, 01)) + if (item.Start.Date < new DateTime(2024, 01, 01)) return base.AddServiceRecordToDuration(item); - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")/* && !item.ServiceDescription.Name.ToLower().Contains("bürozeit")*/) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")/* && !item.ServiceDescription.Name.ToLower().Contains("bürozeit")*/) { return true; } } return false; } - //protected override decimal GetDuration(ServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed) + //protected override decimal GetDuration(StundenkontoServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed) //{ // var duration = base.GetDuration(sr, ed); @@ -52,21 +53,21 @@ namespace Biotop // return duration; //} - 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)) //{ @@ -82,9 +83,9 @@ namespace Biotop } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit") /*&& !item.ServiceDescription.Name.ToLower().Contains("bürozeit")*/ && item.Start.HasValue && item.Start.Value.Date >= new DateTime(2024, 01, 01)) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit") /*&& !item.ServiceDescription.Name.ToLower().Contains("bürozeit")*/ && item.Start.Date >= new DateTime(2024, 01, 01)) { if (item.ServiceDescription.Name.ToLower().Contains("bürozeit")) { @@ -94,11 +95,11 @@ namespace Biotop else arbeitszeit += duration; } - else if (item.Start.HasValue && item.Start.Value.Date < new DateTime(2024, 01, 01)) + else if (item.Start.Date < new DateTime(2024, 01, 01)) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/BloemelingUndTeckhaus/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BloemelingUndTeckhaus/CustomMitarbeiterstundenkontoBerechnung.cs index 7fc54ce9e..67eafb474 100644 --- a/ReportImp/BloemelingUndTeckhaus/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BloemelingUndTeckhaus/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BloemelingUndTeckhaus @@ -25,12 +26,12 @@ namespace BloemelingUndTeckhaus return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace BloemelingUndTeckhaus return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace BloemelingUndTeckhaus } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/BrueckeABW/BrueckeABWMitarbeiterstundenkontoBerechnung.cs b/ReportImp/BrueckeABW/BrueckeABWMitarbeiterstundenkontoBerechnung.cs index 5414ad011..62acd08bb 100644 --- a/ReportImp/BrueckeABW/BrueckeABWMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/BrueckeABW/BrueckeABWMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.BrueckeABW @@ -23,7 +24,7 @@ namespace BeWo.BrueckeABW return dd; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.ServiceDescription != null && !String.IsNullOrEmpty(item.ServiceDescription.Name) && item.ServiceDescription.Name.ToLower().IndexOf("overhead") >= 0) { @@ -31,7 +32,7 @@ namespace BeWo.BrueckeABW } - if (item.Start.HasValue && item.Start.Value >= new DateTime(2019, 4, 1) && String.IsNullOrWhiteSpace(item.Notice)) + if (item.Start >= new DateTime(2019, 4, 1) && String.IsNullOrWhiteSpace(item.Notice)) { return false; } diff --git a/ReportImp/CaritasGuenzburgNeuUlm/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/CaritasGuenzburgNeuUlm/CustomMitarbeiterstundenkontoBerechnung.cs index 23e280c71..95ea97b6a 100644 --- a/ReportImp/CaritasGuenzburgNeuUlm/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/CaritasGuenzburgNeuUlm/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace CaritasGuenzburgNeuUlm @@ -34,11 +35,11 @@ namespace CaritasGuenzburgNeuUlm return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -46,21 +47,21 @@ namespace CaritasGuenzburgNeuUlm return false; } - 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) { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) @@ -73,13 +74,13 @@ namespace CaritasGuenzburgNeuUlm } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/CaritasverbandKelheim/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/CaritasverbandKelheim/CustomMitarbeiterstundenkontoBerechnung.cs index dedbc22cf..aab4c4fa8 100644 --- a/ReportImp/CaritasverbandKelheim/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/CaritasverbandKelheim/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace CaritasverbandKelheim @@ -25,12 +26,12 @@ namespace CaritasverbandKelheim return dd; } - 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.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { return true; } @@ -39,21 +40,21 @@ namespace CaritasverbandKelheim return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace CaritasverbandKelheim } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/ChristinaFrommen/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/ChristinaFrommen/CustomMitarbeiterstundenkontoBerechnung.cs index ccfa6691f..fb13592dc 100644 --- a/ReportImp/ChristinaFrommen/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/ChristinaFrommen/CustomMitarbeiterstundenkontoBerechnung.cs @@ -5,6 +5,7 @@ using BeWo.Report.ReportObjects; using BeWo.Service.Configuration; using BS.Shared.Core; using BS.Shared.DataContracts; +using BeWo.Service.Dienstplanung; namespace ChristinaFrommen { @@ -42,20 +43,20 @@ namespace ChristinaFrommen return dd; } - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { var sum = new ServiceRecordSummary(); - sum.RecordsImBerichtszeitraum = new List(); + sum.RecordsImBerichtszeitraum = new List(); var settings = AppSettings.CreateSettings(); - 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); @@ -81,7 +82,7 @@ namespace ChristinaFrommen } else { - duration = (decimal)item.End.Value.Subtract(item.Start.Value).TotalMinutes; + duration = (decimal)item.End.Subtract(item.Start).TotalMinutes; } } @@ -93,8 +94,8 @@ namespace ChristinaFrommen if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null && - item.ServiceDescription.ServiceCategory.IsBillable) + item.ServiceDescription.Category != null && + item.ServiceDescription.Category.IsBillable) { sum.IstAbrechenbar += duration; sum.IstNichtAbrechenbar += durationNA; diff --git a/ReportImp/ChristinaFrommen/Mitarbeiterstundenkonto.cs b/ReportImp/ChristinaFrommen/Mitarbeiterstundenkonto.cs index acb8a82b6..68252a595 100644 --- a/ReportImp/ChristinaFrommen/Mitarbeiterstundenkonto.cs +++ b/ReportImp/ChristinaFrommen/Mitarbeiterstundenkonto.cs @@ -27,7 +27,7 @@ namespace ChristinaFrommen { //ed.Ueberstunden = ed.Ueberstunden + ed.UeberstundenAusbezahlt; - var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Value.Date >= pRO.ReportStartDate && s.Start.Value.Date <= pRO.ReportEndDate).ToList(); + var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Date >= pRO.ReportStartDate && s.Start.Date <= pRO.ReportEndDate).ToList(); // In Custom15 die Ausfallstunden aussummieren var ausfallstunden = 0.0m; decimal ausfall = 0; diff --git a/ReportImp/ChristinaFrommen/MitarbeiterstundenkontoJahr.cs b/ReportImp/ChristinaFrommen/MitarbeiterstundenkontoJahr.cs index 13b2ba7a4..7ae31248e 100644 --- a/ReportImp/ChristinaFrommen/MitarbeiterstundenkontoJahr.cs +++ b/ReportImp/ChristinaFrommen/MitarbeiterstundenkontoJahr.cs @@ -28,7 +28,7 @@ namespace ChristinaFrommen //eds.EmployeeDetail.Ueberstunden = eds.EmployeeDetail.Ueberstunden + eds.EmployeeDetail.UeberstundenAusbezahlt; var end = eds.Monat.AddMonths(1); - var srForEd = eds.EmployeeDetail.AllServiceRecords.Where(s => s.EmployeeOid == eds.EmployeeDetail.Employee.Oid && s.Start.Value.Date >= eds.Monat && s.Start.Value.Date < end).ToList(); + var srForEd = eds.EmployeeDetail.AllServiceRecords.Where(s => s.EmployeeOid == eds.EmployeeDetail.Employee.Oid && s.Start.Date >= eds.Monat && s.Start.Date < end).ToList(); // In Custom15 die Ausfallstunden aufsummieren var ausfallstunden = 0.0m; decimal ausfall = 0; diff --git a/ReportImp/ChristineHoelzmann/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/ChristineHoelzmann/CustomMitarbeiterstundenkontoBerechnung.cs index 851d13da9..cc5ff3589 100644 --- a/ReportImp/ChristineHoelzmann/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/ChristineHoelzmann/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace ChristineHoelzmann @@ -25,12 +26,12 @@ namespace ChristineHoelzmann return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace ChristineHoelzmann return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace ChristineHoelzmann } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/ChristopherusHaus/Service/CustomVacationService.cs b/ReportImp/ChristopherusHaus/Service/CustomVacationService.cs index ac92fe477..4c2ec3c77 100644 --- a/ReportImp/ChristopherusHaus/Service/CustomVacationService.cs +++ b/ReportImp/ChristopherusHaus/Service/CustomVacationService.cs @@ -1,4 +1,5 @@ -using BeWo.Service.Plugins; +using BeWo.Data.Entities; +using BeWo.Service.Plugins; using BS.Shared.DataContracts; using System; using System.Collections.Generic; @@ -14,7 +15,7 @@ namespace ChristopherusHaus.Service { return new DateTime(year, 1, 1, 0, 0, 0); } - public override List BerechneUrlaubskontoZurDarstellung(EmployeeDC emp, int year, DateTime? endeDerBerechnung = null) + public override List BerechneUrlaubskontoZurDarstellung(Employee emp, int year, DateTime? endeDerBerechnung = null) { var konto = base.BerechneUrlaubskontoZurDarstellung(emp, year); if (konto != null) diff --git a/ReportImp/ClaudeStundenkontoTest/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/ClaudeStundenkontoTest/CustomMitarbeiterstundenkontoBerechnung.cs index e0a8f5c79..889fdf22f 100644 --- a/ReportImp/ClaudeStundenkontoTest/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/ClaudeStundenkontoTest/CustomMitarbeiterstundenkontoBerechnung.cs @@ -16,6 +16,7 @@ using System.Threading.Tasks; using System.Windows.Forms; using BeWo.Report; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace ClaudeStundenkontoTest { @@ -151,7 +152,7 @@ namespace ClaudeStundenkontoTest } ServiceRecordSummary summaryTotal = new ServiceRecordSummary(); - summaryTotal.RecordsImBerichtszeitraum = new List(); + summaryTotal.RecordsImBerichtszeitraum = new List(); decimal pause1 = 0; decimal pause2 = 0; @@ -166,14 +167,14 @@ namespace ClaudeStundenkontoTest 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(); + groupFilteredRecords = new List(); Dictionary groupBookingDict = new Dictionary(); foreach (var item in recordsAll) { @@ -812,7 +813,7 @@ namespace ClaudeStundenkontoTest } - protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) + protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { return null; } @@ -1077,7 +1078,7 @@ namespace ClaudeStundenkontoTest { 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) @@ -1092,21 +1093,21 @@ namespace ClaudeStundenkontoTest empDetail.EmployeeSalaryByHours = salary; } - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) + 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(); - 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); @@ -1122,7 +1123,7 @@ namespace ClaudeStundenkontoTest { 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; } @@ -1134,8 +1135,8 @@ namespace ClaudeStundenkontoTest 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; @@ -1147,9 +1148,9 @@ namespace ClaudeStundenkontoTest { 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) { @@ -1185,17 +1186,17 @@ namespace ClaudeStundenkontoTest return false; } - public override decimal BerechneAutoPausen(IList recordsThisMonth) + public override decimal BerechneAutoPausen(IList recordsThisMonth) { return 0; } - public override decimal BerechnePauseMinuten(IList srList) + public override 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) { @@ -1215,20 +1216,20 @@ namespace ClaudeStundenkontoTest { 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)); } @@ -1284,14 +1285,14 @@ namespace ClaudeStundenkontoTest return newEmpList; } - public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) { //do nothing } - public override void CorrectOverlappingTimes(IList serviceRecords) + public override void CorrectOverlappingTimes(IList serviceRecords) { - List oldRecords = new List(); + List oldRecords = new List(); foreach (var newRecord in serviceRecords) { @@ -1299,7 +1300,7 @@ namespace ClaudeStundenkontoTest { continue; } - if (newRecord.Start.HasValue && newRecord.Start.Value.Second > 0) + if (newRecord.Start.Second > 0) { continue; } @@ -1313,8 +1314,8 @@ namespace ClaudeStundenkontoTest } 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) @@ -1325,12 +1326,12 @@ namespace ClaudeStundenkontoTest } 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)) @@ -1358,11 +1359,11 @@ namespace ClaudeStundenkontoTest 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 @@ -1379,11 +1380,11 @@ namespace ClaudeStundenkontoTest 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; } } @@ -1395,12 +1396,12 @@ namespace ClaudeStundenkontoTest } } - public override bool CorrectOverlappingTime(ServiceRecord newRecord) + public override bool CorrectOverlappingTime(StundenkontoServiceRecord newRecord) { return true; } - public override bool CorrectOverlappingTime(ServiceRecord record1, ServiceRecord record2) + public override bool CorrectOverlappingTime(StundenkontoServiceRecord record1, StundenkontoServiceRecord record2) { return true; } @@ -1471,7 +1472,7 @@ namespace ClaudeStundenkontoTest return null; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { //do nothing } @@ -1491,7 +1492,7 @@ namespace ClaudeStundenkontoTest return false; } - 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) { if (ShouldCreateDayDetailsForEachServiceRecord()) { @@ -1508,13 +1509,13 @@ namespace ClaudeStundenkontoTest 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) + if (sr.Start.Year == 2023 && sr.Start.Month == 10 && sr.Start.Day == 3) { int test = 0; } - var dd = dayToDetail[sr.Start.Value.Day]; + var dd = dayToDetail[sr.Start.Day]; if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr)) { @@ -1523,7 +1524,7 @@ namespace ClaudeStundenkontoTest 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); @@ -1549,14 +1550,14 @@ namespace ClaudeStundenkontoTest 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++; @@ -1582,7 +1583,7 @@ namespace ClaudeStundenkontoTest if (sr.Start < currentSpan.StartDateTime) { - currentSpan.StartDateTime = sr.Start.Value; + currentSpan.StartDateTime = sr.Start; } if (dtEnd > currentSpan.EndDateTime) { @@ -1643,21 +1644,21 @@ namespace ClaudeStundenkontoTest return dayToDetail.Values.OrderBy(dd => dd.Date).ToList(); } - public override IList CreateDayDetailsForEachServiceRecord(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + public override 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); @@ -1667,14 +1668,14 @@ namespace ClaudeStundenkontoTest 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; @@ -1690,7 +1691,7 @@ namespace ClaudeStundenkontoTest return details.OrderBy(dd => dd.Date).ToList(); } - protected override decimal GetDuration(ServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed) + protected override decimal GetDuration(StundenkontoServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed) { foreach (var at in ed.Employee.AbsenceTimes) @@ -1735,13 +1736,13 @@ namespace ClaudeStundenkontoTest } 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.ProzentAbrechnung; if (sr.ServiceDescription.ProzentStundenkonto.HasValue) { @@ -1756,9 +1757,9 @@ namespace ClaudeStundenkontoTest { 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; } @@ -1770,42 +1771,42 @@ namespace ClaudeStundenkontoTest } //Mit "SpecialHours" sind Sonderzeiten wie Nachtzeiten oder Arbeitszeiten sonn- und feiertags gemeint. Da diese gesondert abgerechnet werden können. - public override void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration) + public override 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) { @@ -2261,7 +2262,7 @@ namespace ClaudeStundenkontoTest } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung) { @@ -2272,11 +2273,11 @@ namespace ClaudeStundenkontoTest return true; } - public override bool IstArbeitszeit(ServiceRecord item) + public override 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; } @@ -2289,7 +2290,7 @@ namespace ClaudeStundenkontoTest return 1; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { MitarbeiterstundenkontoRO.EmployeeDetail edTotal = new MitarbeiterstundenkontoRO.EmployeeDetail(); @@ -2305,7 +2306,7 @@ namespace ClaudeStundenkontoTest 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) @@ -2347,14 +2348,14 @@ namespace ClaudeStundenkontoTest 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)) { @@ -2365,8 +2366,8 @@ namespace ClaudeStundenkontoTest 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; @@ -2785,35 +2786,32 @@ namespace ClaudeStundenkontoTest } - public override Dictionary> CreateServiceRecordDictByDate(IList records) + public override 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 override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) { decimal addHours = 0; @@ -3004,13 +3002,13 @@ namespace ClaudeStundenkontoTest return contractNextToStartDate; } - public override decimal? GetFehlzeiten(IList records, DateTime monat) + public override decimal? GetFehlzeiten(IList records, DateTime monat) { return GetFehlzeiten(records, monat, monat.AddMonths(1)); } - public override decimal? GetFehlzeiten(IList records, DateTime start, DateTime ende) + public override decimal? GetFehlzeiten(IList records, DateTime start, DateTime ende) { decimal? stunden = null; decimal minuten = 0; @@ -3020,7 +3018,7 @@ namespace ClaudeStundenkontoTest { if (IsServiceRecordFehlzeit(item)) { - if (item.Start.Value >= start && item.Start.Value < ende) + if (item.Start >= start && item.Start < ende) { if (item.GroupRoundedDuration.HasValue) { @@ -3034,7 +3032,7 @@ namespace ClaudeStundenkontoTest } else { - minuten += (decimal)item.End.Value.Subtract(item.Start.Value).TotalMinutes; + minuten += (decimal)item.End.Subtract(item.Start).TotalMinutes; } } } @@ -3206,9 +3204,9 @@ namespace ClaudeStundenkontoTest return VacationService.GetOsterSonntag(year); } - public override bool IsServiceRecordFehlzeit(ServiceRecord sr) + public override 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; } diff --git a/ReportImp/Club74/Club74MitarbeiterstundenkontoBerechnung.cs b/ReportImp/Club74/Club74MitarbeiterstundenkontoBerechnung.cs index 22741900d..8f8c37923 100644 --- a/ReportImp/Club74/Club74MitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Club74/Club74MitarbeiterstundenkontoBerechnung.cs @@ -4,30 +4,31 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.Club74 { public class Club74MitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.Start >= new DateTime(2026, 05, 01)) return base.AddServiceRecordToDuration(item); else if (item.Start >= new DateTime(2020, 10, 1)) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower() == "arbeitszeit") + if (item.ServiceDescription.Category.Name.ToLower() == "arbeitszeit") { return true; } - else if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("mittelbar")) + else if (item.ServiceDescription.Category.Name.ToLower().Contains("mittelbar")) { return true; } - else if (item.ServiceDescription.ServiceCategory.Name.ToLower().StartsWith("direkt")) + else if (item.ServiceDescription.Category.Name.ToLower().StartsWith("direkt")) { return true; } @@ -36,9 +37,9 @@ namespace BeWo.Club74 } else { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower() == "arbeitszeit") + if (item.ServiceDescription.Category.Name.ToLower() == "arbeitszeit") { return true; } @@ -49,13 +50,13 @@ namespace BeWo.Club74 return base.AddServiceRecordToDuration(item); } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { if (item.Start >= new DateTime(2026, 05, 01)) base.HandleServiceRecord(emp, item); else { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) @@ -67,15 +68,15 @@ namespace BeWo.Club74 duration = item.RoundedDuration; } - if (item.ServiceDescription.ServiceCategory.Name.ToLower() == "arbeitszeit") + if (item.ServiceDescription.Category.Name.ToLower() == "arbeitszeit") { emp.Custom3 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("mittelbar")) + else if (item.ServiceDescription.Category.Name.ToLower().Contains("mittelbar")) { emp.Custom2 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.ToLower().StartsWith("direkt")) + else if (item.ServiceDescription.Category.Name.ToLower().StartsWith("direkt")) { emp.Custom1 += duration / 60; } diff --git a/ReportImp/Club74DB2/Club74MitarbeiterstundenkontoBerechnung.cs b/ReportImp/Club74DB2/Club74MitarbeiterstundenkontoBerechnung.cs index 09f31885c..8e981c59b 100644 --- a/ReportImp/Club74DB2/Club74MitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Club74DB2/Club74MitarbeiterstundenkontoBerechnung.cs @@ -4,27 +4,28 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.Club74 { public class Club74MitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.Start >= new DateTime(2020, 10, 1)) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower() == "arbeitszeit") + if (item.ServiceDescription.Category.Name.ToLower() == "arbeitszeit") { return true; } - else if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("mittelbar")) + else if (item.ServiceDescription.Category.Name.ToLower().Contains("mittelbar")) { return true; } - else if (item.ServiceDescription.ServiceCategory.Name.ToLower().StartsWith("direkt")) + else if (item.ServiceDescription.Category.Name.ToLower().StartsWith("direkt")) { return true; } @@ -33,9 +34,9 @@ namespace BeWo.Club74 } else { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower() == "arbeitszeit") + if (item.ServiceDescription.Category.Name.ToLower() == "arbeitszeit") { return true; } @@ -46,9 +47,9 @@ namespace BeWo.Club74 return base.AddServiceRecordToDuration(item); } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) @@ -60,15 +61,15 @@ namespace BeWo.Club74 duration = item.RoundedDuration; } - if (item.ServiceDescription.ServiceCategory.Name.ToLower() == "arbeitszeit") + if (item.ServiceDescription.Category.Name.ToLower() == "arbeitszeit") { emp.Custom3 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("mittelbar")) + else if (item.ServiceDescription.Category.Name.ToLower().Contains("mittelbar")) { emp.Custom2 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.ToLower().StartsWith("direkt")) + else if (item.ServiceDescription.Category.Name.ToLower().StartsWith("direkt")) { emp.Custom1 += duration / 60; } diff --git a/ReportImp/DerKarrenSbd/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/DerKarrenSbd/CustomMitarbeiterstundenkontoBerechnung.cs index e81a1b3d2..b6c4f1f7d 100644 --- a/ReportImp/DerKarrenSbd/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/DerKarrenSbd/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace DerKarrenSbd @@ -23,11 +24,11 @@ namespace DerKarrenSbd || absenceTime.AbsenceReason.Description.ToLower().IndexOf("krank") >= 0 || absenceTime.AbsenceReason.Description.ToLower() == "au" || absenceTime.AbsenceReason.Description.ToLower() == "quarantäne"); } - //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.ServiceCategory.Name == "Arbeitszeit") + // if (item.ServiceDescription.Category.Name == "Arbeitszeit") // { // return true; // } @@ -35,14 +36,14 @@ namespace DerKarrenSbd // return false; //} - //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) @@ -65,13 +66,13 @@ namespace DerKarrenSbd // } // if (item.ServiceDescription != null && - // item.ServiceDescription.ServiceCategory != null) + // item.ServiceDescription.Category != null) // { - // if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + // if (item.ServiceDescription.Category.Name == "Arbeitszeit") // { // arbeitszeit += duration; // } - // else if (item.ServiceDescription.ServiceCategory.IsBillable) + // else if (item.ServiceDescription.Category.IsBillable) // { // flsGesamt += duration; // } diff --git a/ReportImp/DerKarrenSbd/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs b/ReportImp/DerKarrenSbd/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs index 6932ba45a..e7e347911 100644 --- a/ReportImp/DerKarrenSbd/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs +++ b/ReportImp/DerKarrenSbd/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs @@ -5,13 +5,14 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace DerKarrenSbd { public class CustomMitarbeiterstundenkontoBerechnungTagesansicht : CustomMitarbeiterstundenkontoBerechnung { - //public override bool AddServiceRecordToDuration(ServiceRecord item) + //public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) //{ // if (item.ServiceDescription != null && item.ServiceDescription.Name == "Pause") // { diff --git a/ReportImp/DiakonieKKKleve/DiakonieKKKleveMitarbeiterstundenkontoBerechnung.cs b/ReportImp/DiakonieKKKleve/DiakonieKKKleveMitarbeiterstundenkontoBerechnung.cs index 91519a521..8f9a03151 100644 --- a/ReportImp/DiakonieKKKleve/DiakonieKKKleveMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/DiakonieKKKleve/DiakonieKKKleveMitarbeiterstundenkontoBerechnung.cs @@ -7,6 +7,7 @@ using BeWo.Report.ReportObjects; using BS.Shared; using BS.Shared.Core; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace DiakonieKKKleve @@ -18,7 +19,7 @@ namespace DiakonieKKKleve return true; } - 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 details = CreateDayDetails2(berichtStart, berichtEnde, ed, recordsAll); @@ -143,7 +144,7 @@ namespace DiakonieKKKleve return false; } - public IList CreateDayDetails2(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + public IList CreateDayDetails2(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) { IList dayDetailList = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll); @@ -164,7 +165,7 @@ namespace DiakonieKKKleve decimal azTotal = 0; 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) { decimal duration = 0; if (sr.GroupRoundedDuration.HasValue) @@ -181,7 +182,7 @@ namespace DiakonieKKKleve } else { - if (sr.ServiceDescription.ServiceCategory.IsBillable) + if (sr.ServiceDescription.Category.IsBillable) { flmTotal += duration; } @@ -406,7 +407,7 @@ namespace DiakonieKKKleve return false; } - //public IList CreateDayDetails2(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + //public IList CreateDayDetails2(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) //{ // IList dayDetailList = new List(); @@ -432,7 +433,7 @@ namespace DiakonieKKKleve // dd.MinutesTotal += duration; // if (dd.ServiceRecords == null) - // dd.ServiceRecords = new List(); + // dd.ServiceRecords = new List(); // dd.ServiceRecords.Add(sr); // CalculateSpecialHours(dd, sr, duration); @@ -450,7 +451,7 @@ namespace DiakonieKKKleve // else // { - // if (sr.ServiceDescription.ServiceCategory.IsBillable) + // if (sr.ServiceDescription.Category.IsBillable) // { // flmTotal += duration; // } @@ -616,15 +617,15 @@ namespace DiakonieKKKleve return new MitarbeiterstundenkontoRO.DayDetail { Date = date.Date, NightStart = 21, NightEnd = 6 }; } - public override void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration) + public override void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, StundenkontoServiceRecord sr, decimal duration) { - if (!sr.Start.HasValue || dd.NightStart == null || dd.NightEnd == null) + if (dd.NightStart == null || dd.NightEnd == null) { base.CalculateSpecialHours(dd, sr, duration); return; } - var d1 = sr.Start.Value; + var d1 = sr.Start; var baseDate = new DateTime(d1.Year, d1.Month, d1.Day); @@ -676,11 +677,11 @@ namespace DiakonieKKKleve return Convert.ToDecimal(result) / 60m; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } diff --git a/ReportImp/DieDueneReports/DieDueneMitarbeiterstundenkontoBerechnung.cs b/ReportImp/DieDueneReports/DieDueneMitarbeiterstundenkontoBerechnung.cs index 77013d508..f851f1fe4 100644 --- a/ReportImp/DieDueneReports/DieDueneMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/DieDueneReports/DieDueneMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.DieDueneReports @@ -51,7 +52,7 @@ namespace BeWo.DieDueneReports //} public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, - IList recordsAll) + IList recordsAll) { var test = base.GetAdditionalHours(days, berichtStart, berichtEnde, ed, recordsAll); @@ -65,11 +66,11 @@ namespace BeWo.DieDueneReports return test; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -78,21 +79,21 @@ namespace BeWo.DieDueneReports return false; } - 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)) //{ @@ -108,13 +109,13 @@ namespace BeWo.DieDueneReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/DrobDrogenhilfe/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/DrobDrogenhilfe/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs index 406e777c6..6b1f2d4f2 100644 --- a/ReportImp/DrobDrogenhilfe/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/DrobDrogenhilfe/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs @@ -5,6 +5,7 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace DrobDrogenhilfe.Reporting @@ -25,15 +26,15 @@ namespace DrobDrogenhilfe.Reporting // return base.GetFeiertagsFaktor(start); //} - private bool IstPausenRecord(ServiceRecord sr) + private bool IstPausenRecord(StundenkontoServiceRecord sr) { return sr.ServiceDescription != null - && sr.ServiceDescription.ServiceCategory != null - && sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeiterfassung" + && sr.ServiceDescription.Category != null + && sr.ServiceDescription.Category.Name == "Arbeitszeiterfassung" && sr.ServiceDescription.Name == "Pause"; } - 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 days = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll); @@ -66,7 +67,7 @@ namespace DrobDrogenhilfe.Reporting dd.SollStunden = 0; } - public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) { decimal baseHours = base.GetAdditionalHours(days, berichtStart, berichtEnde, ed, recordsAll); diff --git a/ReportImp/DrobDrogenhilfe/Reporting/Reports/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/DrobDrogenhilfe/Reporting/Reports/Mitarbeiterarbeitszeitkonto.cs index e99c5e5d1..19c7492fc 100644 --- a/ReportImp/DrobDrogenhilfe/Reporting/Reports/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/DrobDrogenhilfe/Reporting/Reports/Mitarbeiterarbeitszeitkonto.cs @@ -56,7 +56,7 @@ namespace DrobDrogenhilfe if (day.ServiceRecords.Count > 0) { day.Custom1 = string.Format("{0:HH:mm} Uhr", day.ServiceRecords.First().Start); - day.Custom2 = string.Format("{0:HH:mm} Uhr", day.ServiceRecords.Last(s => s.End.HasValue).End); + day.Custom2 = string.Format("{0:HH:mm} Uhr", day.ServiceRecords.Last().End); } } diff --git a/ReportImp/FabEv/FabEvMitarbeiterstundenkontoBerechnung.cs b/ReportImp/FabEv/FabEvMitarbeiterstundenkontoBerechnung.cs index 1151fa418..b187e9ac6 100644 --- a/ReportImp/FabEv/FabEvMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/FabEv/FabEvMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace FabEv @@ -226,7 +227,7 @@ namespace FabEv return 0; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.ServiceDescription != null && (item.ServiceDescription.Name == "Fehlzeit" || item.ServiceDescription.Name == "Freihalteregelung" || item.ServiceDescription.Name == "Ausfall C19") || item.ServiceDescription.Name == "Refugium") @@ -236,11 +237,11 @@ namespace FabEv return true; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Vertretung")) + if (item.ServiceDescription.Category.Name.Contains("Vertretung")) { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) diff --git a/ReportImp/FabEvBerlin/FabEvMitarbeiterstundenkontoBerechnung.cs b/ReportImp/FabEvBerlin/FabEvMitarbeiterstundenkontoBerechnung.cs index 580b252fb..064c7f6f4 100644 --- a/ReportImp/FabEvBerlin/FabEvMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/FabEvBerlin/FabEvMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace FabEvBerlin @@ -226,7 +227,7 @@ namespace FabEvBerlin return 0; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.ServiceDescription != null && (item.ServiceDescription.Name == "Fehlzeit" || item.ServiceDescription.Name == "Freihalteregelung" || item.ServiceDescription.Name == "Ausfall C19")) { @@ -235,11 +236,11 @@ namespace FabEvBerlin return true; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Vertretung")) + if (item.ServiceDescription.Category.Name.Contains("Vertretung")) { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) diff --git a/ReportImp/FlexibleJugendarbeitFrankfurtEV/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/FlexibleJugendarbeitFrankfurtEV/CustomMitarbeiterstundenkontoBerechnung.cs index 067ecccd0..6584da38c 100644 --- a/ReportImp/FlexibleJugendarbeitFrankfurtEV/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/FlexibleJugendarbeitFrankfurtEV/CustomMitarbeiterstundenkontoBerechnung.cs @@ -5,14 +5,15 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace FlexibleJugendarbeitFrankfurtEV { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) { - //groupFilteredRecords = groupFilteredRecords.Where(r => r.ServiceDescription != null && r.ServiceDescription.ServiceCategory.Name != null && !r.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")).ToList(); + //groupFilteredRecords = groupFilteredRecords.Where(r => r.ServiceDescription != null && r.ServiceDescription.Category.Name != null && !r.ServiceDescription.Category.Name.Contains("Arbeitszeit")).ToList(); CorrectOverlappingTimes(groupFilteredRecords.OrderBy(s => s.Start).ToList()); } } diff --git a/ReportImp/FreundeskreisSuchthilfe/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/FreundeskreisSuchthilfe/CustomMitarbeiterstundenkontoBerechnung.cs index cfb398497..3dc0bc7f2 100644 --- a/ReportImp/FreundeskreisSuchthilfe/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/FreundeskreisSuchthilfe/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace FreundeskreisSuchthilfe.Alt @@ -38,13 +39,13 @@ namespace FreundeskreisSuchthilfe.Alt return dd; } - 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 != "Pause") { - if (item.ServiceDescription.ServiceCategory.Name == "Dienstzeiten") + if (item.ServiceDescription.Category.Name == "Dienstzeiten") { return true; } @@ -53,21 +54,21 @@ namespace FreundeskreisSuchthilfe.Alt return false; } - 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)) //{ @@ -83,9 +84,9 @@ namespace FreundeskreisSuchthilfe.Alt } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Dienstzeiten") + if (item.ServiceDescription.Category.Name == "Dienstzeiten") { if (item.ServiceDescription.Name != "Pause") @@ -97,7 +98,7 @@ namespace FreundeskreisSuchthilfe.Alt //arbeitszeit -= duration; } } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -115,7 +116,7 @@ namespace FreundeskreisSuchthilfe.Alt return sum; } - 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) @@ -126,7 +127,7 @@ namespace FreundeskreisSuchthilfe.Alt 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); @@ -135,12 +136,12 @@ namespace FreundeskreisSuchthilfe.Alt dd.PauseInMinuten += (decimal)sr.DurationMinutes; } - else if (sr.ServiceDescription.ServiceCategory.Name == "Dienstzeiten") + else if (sr.ServiceDescription.Category.Name == "Dienstzeiten") { dd.MinutesTotal += (decimal)sr.DurationMinutes; } else if (sr.ServiceDescription.Name != "Dienstzeiten" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += (decimal)sr.DurationMinutes; } @@ -159,7 +160,7 @@ namespace FreundeskreisSuchthilfe.Alt return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -179,13 +180,13 @@ namespace FreundeskreisSuchthilfe.Alt { return true; } - public override decimal BerechnePauseMinuten(IList srListAlle) + public override decimal BerechnePauseMinuten(IList srListAlle) { - var srList = srListAlle.Where(s => s.ServiceDescription.ServiceCategory.Name == "Dienstzeiten"); + var srList = srListAlle.Where(s => s.ServiceDescription.Category.Name == "Dienstzeiten"); 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/GerdasPflegedienst/GerdasMitarbeiterstundenkontoBerechnung.cs b/ReportImp/GerdasPflegedienst/GerdasMitarbeiterstundenkontoBerechnung.cs index 771dedf34..cfcf8cba4 100644 --- a/ReportImp/GerdasPflegedienst/GerdasMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/GerdasPflegedienst/GerdasMitarbeiterstundenkontoBerechnung.cs @@ -5,13 +5,14 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace GerdasPflegedienst { public class GerdasMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.ServiceDescription != null && item.ServiceDescription.Name == "Pause") { @@ -39,7 +40,7 @@ namespace GerdasPflegedienst return dd; } - 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) { Dictionary dayToDetail = new Dictionary(); @@ -52,9 +53,9 @@ namespace GerdasPflegedienst 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) { - var dd = dayToDetail[sr.Start.Value.Day]; + var dd = dayToDetail[sr.Start.Day]; if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr)) { @@ -70,7 +71,7 @@ namespace GerdasPflegedienst dd.MinutesTotal += duration; if (dd.ServiceRecords == null) - dd.ServiceRecords = new List(); + dd.ServiceRecords = new List(); dd.ServiceRecords.Add(sr); CalculateSpecialHours(dd, sr, duration); @@ -109,7 +110,7 @@ namespace GerdasPflegedienst duration = sr.RoundedDuration; } - DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration); + DateTime dtEnd = sr.Start.AddMinutes((double)duration); if (sr.Start > lastEnd) { gapCount++; @@ -171,7 +172,7 @@ namespace GerdasPflegedienst return dayToDetail.Values.OrderBy(dd => dd.Date).ToList(); } - public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) { return 0; } diff --git a/ReportImp/GrundsteinEV/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/GrundsteinEV/CustomMitarbeiterstundenkontoBerechnung.cs index 218f114f6..a8a61c131 100644 --- a/ReportImp/GrundsteinEV/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/GrundsteinEV/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace GrundsteinEV @@ -25,11 +26,11 @@ namespace GrundsteinEV return dd; } - 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.ServiceCategory.Name == "Arbeitszeiterfassung") + if (item.ServiceDescription.Category.Name == "Arbeitszeiterfassung") { if (item.ServiceDescription.Name == "Arbeitszeit") return true; @@ -38,21 +39,21 @@ namespace GrundsteinEV return false; } - 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)) //{ @@ -68,14 +69,14 @@ namespace GrundsteinEV } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeiterfassung") + if (item.ServiceDescription.Category.Name == "Arbeitszeiterfassung") { if (item.ServiceDescription.Name == "Arbeitszeit") arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/HausDuelken/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/HausDuelken/CustomMitarbeiterstundenkontoBerechnung.cs index b1b5235e2..b9f4ec38d 100644 --- a/ReportImp/HausDuelken/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/HausDuelken/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace HausDuelken @@ -43,11 +44,11 @@ namespace HausDuelken return dd; } - 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.ServiceCategory.Name == "Arbeit" || item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeit" || item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -55,21 +56,21 @@ namespace HausDuelken return false; } - 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) { HandleServiceRecord(empDetail, item); //if (AddServiceRecordToDuration(item)) @@ -86,13 +87,13 @@ namespace HausDuelken } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeit" || item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeit" || item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable || (item.ServiceDescription.ServiceCategory.Abbreviation != null && item.ServiceDescription.ServiceCategory.Abbreviation.ToLower() == "lt24")) + else if (item.ServiceDescription.Category.IsBillable || (item.ServiceDescription.Category.Abbreviation != null && item.ServiceDescription.Category.Abbreviation.ToLower() == "lt24")) { flsGesamt += duration; } @@ -109,11 +110,11 @@ namespace HausDuelken return sum; } - public override bool CorrectOverlappingTime(ServiceRecord newRecord) + public override bool CorrectOverlappingTime(StundenkontoServiceRecord newRecord) { - if (newRecord.ServiceDescription != null && newRecord.ServiceDescription.ServiceCategory != null && newRecord.ServiceDescription.ServiceCategory.Abbreviation != null) + if (newRecord.ServiceDescription != null && newRecord.ServiceDescription.Category != null && newRecord.ServiceDescription.Category.Abbreviation != null) { - if (newRecord.ServiceDescription.ServiceCategory.Abbreviation.ToLower() == "lt24") + if (newRecord.ServiceDescription.Category.Abbreviation.ToLower() == "lt24") { return true; } @@ -122,17 +123,17 @@ namespace HausDuelken return false; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { decimal totalDuration = 0; decimal duration = 0; - String cat = item.ServiceDescription.ServiceCategory.Name.ToLower(); + String cat = item.ServiceDescription.Category.Name.ToLower(); String kurz = ""; - if (item.ServiceDescription.ServiceCategory.Abbreviation != null) + if (item.ServiceDescription.Category.Abbreviation != null) { - kurz = item.ServiceDescription.ServiceCategory.Abbreviation.ToLower(); + kurz = item.ServiceDescription.Category.Abbreviation.ToLower(); } if (item.GroupRoundedDuration.HasValue) @@ -145,11 +146,11 @@ namespace HausDuelken } totalDuration += duration; - if (item.ServiceDescription.ServiceCategory.IsBillable && (kurz == "dl")) + if (item.ServiceDescription.Category.IsBillable && (kurz == "dl")) { emp.Custom1 += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable && (kurz == "ass")) + else if (item.ServiceDescription.Category.IsBillable && (kurz == "ass")) { emp.Custom2 += duration; } diff --git a/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenJahr.cs b/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenJahr.cs index 31e7a1b88..457bc9d7d 100644 --- a/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenJahr.cs +++ b/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenJahr.cs @@ -13,6 +13,7 @@ using BS.Shared.Core; using DevExpress.XtraPrinting; using DevExpress.XtraReports.Native; using BeWo.Data.Security; +using BeWo.Service.Dienstplanung; namespace HphBersenbrueckAtz { @@ -207,7 +208,7 @@ namespace HphBersenbrueckAtz var empDetail = new MitarbeiterstundenkontoRO.EmployeeDetail(); empDetail.Employee = emp; - empDetail.AllServiceRecords = new List(); //verhindert das Laden aller Servicerecords in der Stundenkonto Berechnung + empDetail.AllServiceRecords = new List(); //verhindert das Laden aller Servicerecords in der Stundenkonto Berechnung ro.EmployeeDetailList.Add(empDetail); mb.CreateReport(ro); diff --git a/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenSollIst.cs b/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenSollIst.cs index 5f38aec02..7667be9b7 100644 --- a/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenSollIst.cs +++ b/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenSollIst.cs @@ -14,6 +14,7 @@ using DevExpress.XtraPrinting; using DevExpress.XtraReports.Native; using DevExpress.XtraCharts; using BeWo.Data.Security; +using BeWo.Service.Dienstplanung; namespace HphBersenbrueckAtz { @@ -135,7 +136,7 @@ namespace HphBersenbrueckAtz var empDetail = new MitarbeiterstundenkontoRO.EmployeeDetail(); empDetail.Employee = emp; - empDetail.AllServiceRecords = new List(); //verhindert das Laden aller Servicerecords in der Stundenkonto Berechnung + empDetail.AllServiceRecords = new List(); //verhindert das Laden aller Servicerecords in der Stundenkonto Berechnung ro.EmployeeDetailList.Add(empDetail); mb.CreateReport(ro); diff --git a/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenSollIstGesamt.cs b/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenSollIstGesamt.cs index 62db958dd..844a88b28 100644 --- a/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenSollIstGesamt.cs +++ b/ReportImp/HphBersenbrueckAtz/ListeTherapieeinheitenSollIstGesamt.cs @@ -14,6 +14,7 @@ using DevExpress.XtraPrinting; using DevExpress.XtraReports.Native; using DevExpress.XtraCharts; using BeWo.Data.Security; +using BeWo.Service.Dienstplanung; namespace HphBersenbrueckAtz { @@ -159,7 +160,7 @@ namespace HphBersenbrueckAtz var ro = MitarbeiterstundenkontoRO.Create(null, null, new DateTime(abfrageMonat.Year, i + 1, 1), new DateTime(abfrageMonat.Year, i + 1, 1).AddMonths(1), null); foreach (var ed in ro.EmployeeDetailList) { - ed.AllServiceRecords = new List(); //verhindert das Laden aller Servicerecords in der Stundenkonto Berechnung + ed.AllServiceRecords = new List(); //verhindert das Laden aller Servicerecords in der Stundenkonto Berechnung } mb.CreateReport(ro); diff --git a/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs index 88997a391..ddd4ea5fa 100644 --- a/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/HwHilfswerkInklusionUndTeilhabe/CustomMitarbeiterstundenkontoBerechnung.cs @@ -9,6 +9,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using BeWo.Service.Dienstplanung; namespace HwHilfswerkInklusionUndTeilhabe { @@ -237,7 +238,7 @@ namespace HwHilfswerkInklusionUndTeilhabe // die Endzeit der zusammenhängenden Zeiträume (über GetDuration). Diese Reduktion soll // NUR für die Darstellung NICHT greifen - die Dauer für MinutesTotal bleibt wie gehabt // reduziert (das übernimmt unverändert die Basisklasse). - 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 days = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll); @@ -254,15 +255,10 @@ namespace HwHilfswerkInklusionUndTeilhabe foreach (var sr in dd.ServiceRecords) { - if (!sr.Start.HasValue) - { - continue; - } - // Nur ServiceRecords betrachten, die zu diesem (durch die Basis bereits // gebildeten) Zeitraum gehören. Die Basis gruppiert anhand der reduzierten // Endzeit, daher liegt der Start dieser Records in [Start; reduziertes Ende]. - if (sr.Start.Value < span.StartDateTime || sr.Start.Value > span.EndDateTime) + if (sr.Start < span.StartDateTime || sr.Start > span.EndDateTime) { continue; } @@ -274,7 +270,7 @@ namespace HwHilfswerkInklusionUndTeilhabe continue; } - DateTime srOriginalEnd = sr.Start.Value.AddMinutes((double)GetUnreduzierteDauer(sr)); + DateTime srOriginalEnd = sr.Start.AddMinutes((double)GetUnreduzierteDauer(sr)); if (srOriginalEnd > originalEnd) { originalEnd = srOriginalEnd; @@ -291,7 +287,7 @@ namespace HwHilfswerkInklusionUndTeilhabe // Originale (nicht durch ProzentStundenkonto reduzierte) Dauer eines ServiceRecords. // Verwendet dieselbe Grunddauer-Ermittlung wie GetDuration in der Basisklasse, lässt // aber die prozentuale Reduktion weg. - private decimal GetUnreduzierteDauer(ServiceRecord sr) + private decimal GetUnreduzierteDauer(StundenkontoServiceRecord sr) { if (sr.GroupRoundedDuration.HasValue) { @@ -303,7 +299,7 @@ namespace HwHilfswerkInklusionUndTeilhabe return sr.RoundedDuration; } - return (decimal)sr.End.Value.Subtract(sr.Start.Value).TotalMinutes; + return (decimal)sr.End.Subtract(sr.Start).TotalMinutes; } } } diff --git a/ReportImp/IlkaLinkAmbulanteHilfen/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/IlkaLinkAmbulanteHilfen/CustomMitarbeiterstundenkontoBerechnung.cs index a2d269b31..03e5a94af 100644 --- a/ReportImp/IlkaLinkAmbulanteHilfen/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/IlkaLinkAmbulanteHilfen/CustomMitarbeiterstundenkontoBerechnung.cs @@ -7,17 +7,19 @@ using BeWo.Service.DCEntityMapper; using BS.Shared; using BS.Shared.DataContracts; using BS.Shared.Services; +using BeWo.Service.Dienstplanung; +using BeWo.Data.Access; namespace IlkaLinkAmbulanteHilfen { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { var calc = new Calculations(); base.HandleServiceRecord(emp, item); - - var dc = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(item); + var entity = DAOFactory.GenericDAO.LoadByID(item.ServiceRecordOid.Value); + var dc = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(entity); var bd = calc.GetBillingData(dc); emp.Custom1 += bd.AmountTotal ?? 0; diff --git a/ReportImp/Inkomm/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/Inkomm/CustomMitarbeiterstundenkontoBerechnung.cs index ead2c7db0..b37d29737 100644 --- a/ReportImp/Inkomm/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Inkomm/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace Inkomm @@ -36,11 +37,11 @@ namespace Inkomm } } - 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.ServiceCategory.Name.Contains("Fachleistung")) + if (item.ServiceDescription.Category.Name.Contains("Fachleistung")) { return true; } @@ -48,9 +49,9 @@ namespace Inkomm return false; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) @@ -62,7 +63,7 @@ namespace Inkomm duration = item.RoundedDuration; } - if (item.ServiceDescription.ServiceCategory.Name.Contains("Fachleistung")) + if (item.ServiceDescription.Category.Name.Contains("Fachleistung")) { emp.Custom1 += duration / 60; } @@ -111,14 +112,14 @@ namespace Inkomm return ueberstundenStd; } - //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 sonstiges = 0; // var sum = new ServiceRecordSummary(); - // sum.RecordsImBerichtszeitraum = new List(); + // sum.RecordsImBerichtszeitraum = new List(); // //base.CorrectOverlappingTimes(groupFilteredRecords); // foreach (var item in groupFilteredRecords) @@ -141,9 +142,9 @@ namespace Inkomm // } // if (item.ServiceDescription != null && - // item.ServiceDescription.ServiceCategory != null) + // item.ServiceDescription.Category != null) // { - // if (item.ServiceDescription.ServiceCategory.Name.Contains("Fachleistung")) + // if (item.ServiceDescription.Category.Name.Contains("Fachleistung")) // { // flsGesamt += duration; // } diff --git a/ReportImp/InputFamilienhilfe/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/InputFamilienhilfe/CustomMitarbeiterstundenkontoBerechnung.cs index e5a8f9e3a..dcee96557 100644 --- a/ReportImp/InputFamilienhilfe/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/InputFamilienhilfe/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace InputFamilienhilfe @@ -37,11 +38,11 @@ namespace InputFamilienhilfe return base.GetFeiertagsFaktor(start); } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -49,21 +50,21 @@ namespace InputFamilienhilfe return false; } - 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)) //{ @@ -79,13 +80,13 @@ namespace InputFamilienhilfe } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/InputFamilienhilfe/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs b/ReportImp/InputFamilienhilfe/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs index 090134834..5320e8369 100644 --- a/ReportImp/InputFamilienhilfe/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs +++ b/ReportImp/InputFamilienhilfe/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs @@ -5,13 +5,14 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace InputFamilienhilfe { public class CustomMitarbeiterstundenkontoBerechnungTagesansicht : CustomMitarbeiterstundenkontoBerechnung { - //public override bool AddServiceRecordToDuration(ServiceRecord item) + //public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) //{ // if (item.ServiceDescription != null && item.ServiceDescription.Name == "Pause") // { diff --git a/ReportImp/IntegraHeinsbergReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/IntegraHeinsbergReports/CustomMitarbeiterstundenkontoBerechnung.cs index bfa6f89c0..fd14623b7 100644 --- a/ReportImp/IntegraHeinsbergReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/IntegraHeinsbergReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,17 +2,18 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.IntegraHeinsbergReports { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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.ServiceCategory.Name.Contains("Arbeitszeit")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit")) { return true; } @@ -20,21 +21,21 @@ namespace BeWo.IntegraHeinsbergReports return false; } - 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)) //{ @@ -49,17 +50,17 @@ namespace BeWo.IntegraHeinsbergReports duration = item.RoundedDuration; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit")) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { - var prozent = item.ServiceDescription.ServiceCategory.ProzentAbrechnung; + var prozent = item.ServiceDescription.Category.Percentage; if (item.ServiceDescription.ProzentAbrechnung.HasValue) { prozent = item.ServiceDescription.ProzentAbrechnung.Value; diff --git a/ReportImp/IntegraHeinsbergReports/IntegraHeinsbergReports.csproj b/ReportImp/IntegraHeinsbergReports/IntegraHeinsbergReports.csproj index 394de3f82..0ccba1f37 100644 --- a/ReportImp/IntegraHeinsbergReports/IntegraHeinsbergReports.csproj +++ b/ReportImp/IntegraHeinsbergReports/IntegraHeinsbergReports.csproj @@ -184,6 +184,10 @@ {40D8B312-EA64-49E3-A31A-5E57ED4D5654} Report + + {094331c3-ecee-4c89-bbfd-4c9ded89f0ef} + Service + {2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4} Shared diff --git a/ReportImp/KetteReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/KetteReports/CustomMitarbeiterstundenkontoBerechnung.cs index 42f54bc29..b887bd63a 100644 --- a/ReportImp/KetteReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/KetteReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace KetteReports @@ -26,11 +27,11 @@ namespace KetteReports } } } - // 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.ServiceCategory.Name == "Arbeitszeit") + // if (item.ServiceDescription.Category.Name == "Arbeitszeit") // { // return true; // } @@ -38,14 +39,14 @@ namespace KetteReports // return false; // } - // 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) @@ -68,13 +69,13 @@ namespace KetteReports // } // if (item.ServiceDescription != null && - // item.ServiceDescription.ServiceCategory != null) + // item.ServiceDescription.Category != null) // { - // if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + // if (item.ServiceDescription.Category.Name == "Arbeitszeit") // { // arbeitszeit += duration; // } - // else if (item.ServiceDescription.ServiceCategory.IsBillable) + // else if (item.ServiceDescription.Category.IsBillable) // { // flsGesamt += duration; // } diff --git a/ReportImp/KetteReports/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs b/ReportImp/KetteReports/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs index 51f9a1667..c2b0bb596 100644 --- a/ReportImp/KetteReports/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs +++ b/ReportImp/KetteReports/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs @@ -5,6 +5,7 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace KetteReports @@ -21,13 +22,13 @@ namespace KetteReports return list; } - 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 != "Pause") { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -36,21 +37,21 @@ namespace KetteReports return false; } - 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)) //{ @@ -66,9 +67,9 @@ namespace KetteReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { if (item.ServiceDescription.Name != "Pause") @@ -80,7 +81,7 @@ namespace KetteReports //arbeitszeit -= duration; } } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -97,14 +98,14 @@ namespace KetteReports return sum; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { return base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); } - 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); @@ -117,7 +118,7 @@ namespace KetteReports 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); @@ -126,12 +127,12 @@ namespace KetteReports dd.PauseInMinuten += (decimal)sr.DurationMinutes; } - else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + else if (sr.ServiceDescription.Category.Name == "Arbeitszeit") { dd.MinutesTotal += (decimal)sr.DurationMinutes; } else if (sr.ServiceDescription.Name != "Arbeitszeit" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += (decimal)sr.DurationMinutes; } @@ -153,7 +154,7 @@ namespace KetteReports return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -194,16 +195,16 @@ namespace KetteReports return dd; } - 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/KirschbaumManz/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/KirschbaumManz/CustomMitarbeiterstundenkontoBerechnung.cs index dfbf5438f..995ac00b5 100644 --- a/ReportImp/KirschbaumManz/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/KirschbaumManz/CustomMitarbeiterstundenkontoBerechnung.cs @@ -5,14 +5,15 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace KirschbaumManz { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) { - groupFilteredRecords = groupFilteredRecords.Where(r => r.ServiceDescription != null && r.ServiceDescription.ServiceCategory.Name != null && !r.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")).ToList(); + groupFilteredRecords = groupFilteredRecords.Where(r => r.ServiceDescription != null && r.ServiceDescription.Category.Name != null && !r.ServiceDescription.Category.Name.Contains("Arbeitszeit")).ToList(); CorrectOverlappingTimes(groupFilteredRecords.OrderBy(s => s.Start).ToList()); } @@ -44,13 +45,13 @@ namespace KirschbaumManz } } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { - if (item.Start.HasValue && item.Start.Value.Date >= new DateTime(2023, 11, 01)) + if (item.Start.Date >= new DateTime(2023, 11, 01)) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit")) { return true; } @@ -63,7 +64,7 @@ namespace KirschbaumManz } } - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { if (berichtsAnfang.Date >= new DateTime(2023, 11, 01)) @@ -72,14 +73,14 @@ namespace KirschbaumManz 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)) //{ @@ -95,13 +96,13 @@ namespace KirschbaumManz } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit")) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/KoelnerBeWoSelbstbestimmtLeben/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/KoelnerBeWoSelbstbestimmtLeben/CustomMitarbeiterstundenkontoBerechnung.cs index d9defcb85..060c65a81 100644 --- a/ReportImp/KoelnerBeWoSelbstbestimmtLeben/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/KoelnerBeWoSelbstbestimmtLeben/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,17 +3,18 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace KoelnerBeWoSelbstbestimmtLeben { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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 != "Pause" && item.ServiceDescription.ServiceCategory.Name != "Pause") + if (item.ServiceDescription.Name != "Pause" && item.ServiceDescription.Category.Name != "Pause") { return true; } @@ -21,21 +22,21 @@ namespace KoelnerBeWoSelbstbestimmtLeben return false; } - 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)) //{ @@ -51,12 +52,12 @@ namespace KoelnerBeWoSelbstbestimmtLeben } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.Name != "Pause" && item.ServiceDescription.ServiceCategory.Name != "Pause") + if (item.ServiceDescription.Name != "Pause" && item.ServiceDescription.Category.Name != "Pause") { arbeitszeit += duration; - if (item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -73,13 +74,13 @@ namespace KoelnerBeWoSelbstbestimmtLeben return sum; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { return base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); } - 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) @@ -90,11 +91,11 @@ namespace KoelnerBeWoSelbstbestimmtLeben 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); - if (sr.ServiceDescription.Name == "Pause" || sr.ServiceDescription.ServiceCategory.Name == "Pause") + if (sr.ServiceDescription.Name == "Pause" || sr.ServiceDescription.Category.Name == "Pause") { dd.PauseInMinuten += (decimal)sr.DurationMinutes; } @@ -102,7 +103,7 @@ namespace KoelnerBeWoSelbstbestimmtLeben dd.MinutesTotal += duration; if (sr.ServiceDescription.Name != "Pause" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += duration; } @@ -121,7 +122,7 @@ namespace KoelnerBeWoSelbstbestimmtLeben return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -157,17 +158,17 @@ namespace KoelnerBeWoSelbstbestimmtLeben return dd; } - public override decimal BerechnePauseMinuten(IList srList) + public override decimal BerechnePauseMinuten(IList srList) { - //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) { - if (sr.ServiceDescription.Name == "Pause" || sr.ServiceDescription.ServiceCategory.Name == "Pause") + if (sr.ServiceDescription.Name == "Pause" || sr.ServiceDescription.Category.Name == "Pause") { pausen.Add(sr); } diff --git a/ReportImp/KompassBeWoWesel/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/KompassBeWoWesel/CustomMitarbeiterstundenkontoBerechnung.cs index 32e52e25d..b2c57d6d8 100644 --- a/ReportImp/KompassBeWoWesel/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/KompassBeWoWesel/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace KompassBeWoWesel @@ -10,11 +11,11 @@ namespace KompassBeWoWesel public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -22,21 +23,21 @@ namespace KompassBeWoWesel return false; } - 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)) //{ @@ -52,13 +53,13 @@ namespace KompassBeWoWesel } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/KompassBeWoWesel/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs b/ReportImp/KompassBeWoWesel/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs index 9d30f058a..d84284927 100644 --- a/ReportImp/KompassBeWoWesel/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs +++ b/ReportImp/KompassBeWoWesel/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs @@ -5,19 +5,20 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace KompassBeWoWesel { public class CustomMitarbeiterstundenkontoBerechnungTagesansicht : MitarbeiterstundenkontoBerechnung { - 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 != "Pause") { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -26,21 +27,21 @@ namespace KompassBeWoWesel return false; } - 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)) //{ @@ -56,9 +57,9 @@ namespace KompassBeWoWesel } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { if (item.ServiceDescription.Name != "Pause") @@ -70,7 +71,7 @@ namespace KompassBeWoWesel //arbeitszeit -= duration; } } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -87,14 +88,14 @@ namespace KompassBeWoWesel return sum; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { return base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); } - //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); @@ -116,12 +117,12 @@ namespace KompassBeWoWesel // dd.PauseInMinuten += (decimal)sr.DurationMinutes; // } - // else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + // else if (sr.ServiceDescription.Category.Name == "Arbeitszeit") // { // dd.MinutesTotal += (decimal)sr.DurationMinutes; // } // else if (sr.ServiceDescription.Name != "Arbeitszeit" && - // sr.ServiceDescription.ServiceCategory.IsBillable) + // sr.ServiceDescription.Category.IsBillable) // { // dd.SpecialHours += (decimal)sr.DurationMinutes; // } @@ -143,7 +144,7 @@ namespace KompassBeWoWesel // return list; //} - //private decimal GetDuration(ServiceRecord sr) + //private decimal GetDuration(StundenkontoServiceRecord sr) //{ // decimal duration = 0; diff --git a/ReportImp/KontaktUndKrisenhilfeReports/Reporting/CustomReportCreator.cs b/ReportImp/KontaktUndKrisenhilfeReports/Reporting/CustomReportCreator.cs index d5e648818..91c1bd58a 100644 --- a/ReportImp/KontaktUndKrisenhilfeReports/Reporting/CustomReportCreator.cs +++ b/ReportImp/KontaktUndKrisenhilfeReports/Reporting/CustomReportCreator.cs @@ -141,7 +141,16 @@ namespace KontaktUndKrisenhilfeReports.Reporting long org = 1; long? team = null; var druck = new JahresReport(); - druck.SetReportDataSource(JahresReportRO.Create(dt, end, org, team, null)); + + var config = new AnnualReportConfigDC + { + StartDate = dt, + EndDate = end, + CostbearerOid = org, + TeamOid = team + }; + + druck.SetReportDataSource(JahresReportRO.Create(config)); return druck; //var report = FindReportImp(); diff --git a/ReportImp/KuhringBetreuung/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/KuhringBetreuung/CustomMitarbeiterstundenkontoBerechnung.cs index 6c16ed67f..78b48629d 100644 --- a/ReportImp/KuhringBetreuung/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/KuhringBetreuung/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace KuhringBetreuung @@ -41,11 +42,11 @@ namespace KuhringBetreuung return list; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -53,21 +54,21 @@ namespace KuhringBetreuung return false; } - 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)) //{ @@ -83,13 +84,13 @@ namespace KuhringBetreuung } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/LebenshilfeCoburg/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/LebenshilfeCoburg/CustomMitarbeiterstundenkontoBerechnung.cs index c958fde8c..4bc100ba8 100644 --- a/ReportImp/LebenshilfeCoburg/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/LebenshilfeCoburg/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace LebenshilfeCoburg @@ -25,13 +26,13 @@ namespace LebenshilfeCoburg return dd; } - 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.ServiceCategory.Name.ToLower().Contains("arbeitszeit") || item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("ind. begl. hk") || - item.ServiceDescription.ServiceCategory.Name.ToLower() == "organisation neues wohnen" && item.ServiceDescription.Name.ToLower() == "organisation neues wohnen") + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit") || item.ServiceDescription.Category.Name.ToLower().Contains("ind. begl. hk") || + item.ServiceDescription.Category.Name.ToLower() == "organisation neues wohnen" && item.ServiceDescription.Name.ToLower() == "organisation neues wohnen") { return true; } @@ -40,21 +41,21 @@ namespace LebenshilfeCoburg return false; } - 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)) //{ @@ -70,15 +71,15 @@ namespace LebenshilfeCoburg } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit") || - item.ServiceDescription.ServiceCategory.Name.ToLower() == "organisation neues wohnen" && + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit") || + item.ServiceDescription.Category.Name.ToLower() == "organisation neues wohnen" && item.ServiceDescription.Name.ToLower() == "organisation neues wohnen") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/LebenshilfeEssenReports/LHEssenMitarbeiterstundenkontoBerechnung.cs b/ReportImp/LebenshilfeEssenReports/LHEssenMitarbeiterstundenkontoBerechnung.cs index 09eac45fa..3531a0db2 100644 --- a/ReportImp/LebenshilfeEssenReports/LHEssenMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/LebenshilfeEssenReports/LHEssenMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.LebenshilfeEssenReports @@ -50,21 +51,21 @@ namespace BeWo.LebenshilfeEssenReports return true; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.ServiceDescription.Name.ToLower().Contains("krankheit") || item.ServiceDescription.Name.ToLower().Contains("urlaub")) { return false; } - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("krisenintervention") || - item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("besondere auffälligkeiten")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("krisenintervention") || + item.ServiceDescription.Category.Name.ToLower().Contains("besondere auffälligkeiten")) { return false; } return base.AddServiceRecordToDuration(item); } - public override void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration) + public override void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, StundenkontoServiceRecord sr, decimal duration) { @@ -75,12 +76,12 @@ namespace BeWo.LebenshilfeEssenReports //{ // startUhrzeit = sr.Start; //} - DateTime dtEnd = sr.Start.Value.AddMinutes((double) duration); + DateTime dtEnd = sr.Start.AddMinutes((double) duration); - DateTime startFeiertag = sr.Start.Value.Date.AddHours(14); - DateTime mitterNacht = sr.Start.Value.Date.AddDays(1); + DateTime startFeiertag = sr.Start.Date.AddHours(14); + DateTime mitterNacht = sr.Start.Date.AddDays(1); - var minuten = GetOverlappingMinutes(sr.Start.Value, dtEnd, startFeiertag, mitterNacht); + var minuten = GetOverlappingMinutes(sr.Start, dtEnd, startFeiertag, mitterNacht); if (minuten > 0) { @@ -97,9 +98,9 @@ namespace BeWo.LebenshilfeEssenReports // } //} - if (sr.Start.Value.Second == 0 && dd.NightEnd.HasValue && dd.NightStart.HasValue) + if (sr.Start.Second == 0 && dd.NightEnd.HasValue && dd.NightStart.HasValue) { - var minuten2 = CheckNachtzeiten(sr.Start.Value, dd.NightStart.Value, dd.NightEnd.Value, + var minuten2 = CheckNachtzeiten(sr.Start, dd.NightStart.Value, dd.NightEnd.Value, (double) duration); if (minuten2 > 0) @@ -196,7 +197,7 @@ namespace BeWo.LebenshilfeEssenReports } } - public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) { decimal ah = 0; @@ -212,14 +213,14 @@ namespace BeWo.LebenshilfeEssenReports 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) { var addKrank = false; var addUrlaub = false; //var dayDetail = FindDayDetail(sr, days); - var day = sr.Start.Value; + var day = sr.Start; var dayDetail = days.FirstOrDefault(dd => dd.Date.Day == day.Day); var faktor = GetFeiertagsFaktor(day); @@ -370,7 +371,7 @@ namespace BeWo.LebenshilfeEssenReports return base.GetFeiertagsFaktor(start); } - 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 ddList = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll); diff --git a/ReportImp/LebenshilfeKoblenz/CustomerMitarbeiterstundenkontoBerechnung.cs b/ReportImp/LebenshilfeKoblenz/CustomerMitarbeiterstundenkontoBerechnung.cs index 0dfcfe8b7..119dd55df 100644 --- a/ReportImp/LebenshilfeKoblenz/CustomerMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/LebenshilfeKoblenz/CustomerMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace LebenshilfeKoblenz @@ -20,7 +21,7 @@ namespace LebenshilfeKoblenz return dd; } - // 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) // { // Dictionary dayToDetail = new Dictionary(); @@ -44,7 +45,7 @@ namespace LebenshilfeKoblenz // dd.MinutesTotal += duration; // if (dd.ServiceRecords == null) - // dd.ServiceRecords = new List(); + // dd.ServiceRecords = new List(); // dd.ServiceRecords.Add(sr); // CalculateSpecialHours(dd, sr, duration); @@ -159,7 +160,7 @@ namespace LebenshilfeKoblenz // return dayToDetail.Values.OrderBy(dd => dd.Date).ToList(); // } - //private decimal GetDurationCustom(ServiceRecord sr) + //private decimal GetDurationCustom(StundenkontoServiceRecord sr) //{ // decimal duration = 0; @@ -180,11 +181,11 @@ namespace LebenshilfeKoblenz return true; } - 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.ServiceCategory.Name == "Arbeitszeiterfassung") + if (item.ServiceDescription.Category.Name == "Arbeitszeiterfassung") { return true; } @@ -199,21 +200,21 @@ namespace LebenshilfeKoblenz return false; } - 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)) //{ @@ -229,13 +230,13 @@ namespace LebenshilfeKoblenz } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.IsBillable) + if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } - else if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeiterfassung") + else if (item.ServiceDescription.Category.Name == "Arbeitszeiterfassung") { arbeitszeit += duration; } diff --git a/ReportImp/LebenshilfeStade/MitarbeiterstundenkontoBerechnung.cs b/ReportImp/LebenshilfeStade/MitarbeiterstundenkontoBerechnung.cs index ac521d6cf..8ab06623c 100644 --- a/ReportImp/LebenshilfeStade/MitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/LebenshilfeStade/MitarbeiterstundenkontoBerechnung.cs @@ -9,6 +9,7 @@ using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; using static BeWo.Report.ReportObjects.MitarbeiterauslastungRO; namespace LebenshilfeStade @@ -19,666 +20,35 @@ namespace LebenshilfeStade private const int ANZ_WOCHENTAGE = 5; private Contract currentContract = null; - public override void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro) + //private decimal GetFaktorStunden(Contract c, decimal geleisteteStunden, DateTime monat) + //{ + // // Erst ab 2024 soll ein Faktor auf die Gesamtstunden draufgerechnet werden, der den Wochenstunden / Wochen-FLS aus dem Vertrag entspricht + // if (monat.Year < 2024 || c == null) + // return 0; + + // decimal faktor = 1.25m; + // if (c.WeeklyFLS.HasValue && c.WeeklyFLS.Value != 0 && c.WeeklyTotalHours.HasValue && c.WeeklyTotalHours.Value != 0) + // faktor = c.WeeklyTotalHours.Value / c.WeeklyFLS.Value; + // var faktorStunden = geleisteteStunden * faktor - geleisteteStunden; + + // return faktorStunden; + //} + + public override decimal AddiereBenutzerdefiniertenWertAufIstStunden(Contract c, decimal istStunden, DateTime monat) { - #region Standardkram - foreach (var empDetail in ro.EmployeeDetailList) - { - - DateTime monatsAnfang = ro.ReportStartDate; - DateTime monatsEnde = monatsAnfang.AddMonths(1); - DateTime berichtsAnfang = monatsAnfang; - DateTime berichtsEnde = monatsEnde; - - Employee emp = empDetail.Employee; - - decimal bu = 0; - - var c = GetContractForDate(emp, ro.ReportStartDate, ro.ReportEndDate); - - if (c != null) - { - if (c.EntryDate.HasValue && c.EntryDate > monatsAnfang) - { - berichtsAnfang = c.EntryDate.Value; - } - if (c.ContractEndDate.HasValue && c.ContractEndDate < monatsEnde) - { - berichtsEnde = c.ContractEndDate.Value.Date.AddDays(1); - } - empDetail.HasContract = true; - } - - ServiceRecordSummary summaryTotal = new ServiceRecordSummary(); - summaryTotal.RecordsImBerichtszeitraum = new List(); - - decimal pause1 = 0; - decimal pause2 = 0; - decimal weeklyTotalHours = 0; - decimal flsSollGesamt = 0; - decimal? fehlZeitenGesamt = null; - decimal? tageUrlaubGesamt = null; - decimal? tageKrankheitGesamt = null; - decimal? abwesenheitTageGesamt = null; - decimal workdaysTotal = 0; - decimal stundenSollGesamt = 0; - decimal tatSollStdGesamt = 0; - decimal azDurchFeiertage = 0; - - IList groupFilteredRecords = empDetail.AllServiceRecords; - - if (groupFilteredRecords == null) - { - IList recordsAll = DAOFactory.SearchDAO.FindServiceRecords(emp.Oid, null); - recordsAll = AnalysisServiceImp.FilterActiveServiceRecords(recordsAll); - - // - groupFilteredRecords = new List(); - Dictionary groupBookingDict = new Dictionary(); - foreach (var item in recordsAll) - { - - if (!item.GroupOid.HasValue || !groupBookingDict.ContainsKey(item.GroupOid.Value)) - { - groupFilteredRecords.Add(item); - if (item.GroupOid.HasValue) - { - groupBookingDict.Add(item.GroupOid.Value, true); - } - } - } - - empDetail.AllServiceRecords = groupFilteredRecords; - } - while (berichtsAnfang < berichtsEnde) - { - StarteBerechnung(berichtsAnfang, berichtsEnde, empDetail); - - empDetail.ArbeitstageImBerichtszeitraum = GetArbeitstageImBereich(berichtsAnfang, berichtsEnde, emp); - empDetail.ArbeitstageProWoche = ANZ_WOCHENTAGE; - - - workdaysTotal += empDetail.ArbeitstageImBerichtszeitraum; - weeklyTotalHours = 0; - - if (c != null) - { - if (c.WeeklyTotalHours.HasValue) - { - weeklyTotalHours = c.WeeklyTotalHours.Value; - bu = c.WeeklyTotalHours.Value / this.maxWochenstunden; - } - if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0) - { - empDetail.ArbeitstageProWoche = c.WeeklyDays.Value; - } - - empDetail.WeeklyFLS = c.WeeklyFLS; - empDetail.HourlyRate = c.HourlyRate; - empDetail.EmploymentType = c.EmploymentType; - - - } - empDetail.SollProTag = (weeklyTotalHours / empDetail.ArbeitstageProWoche); - empDetail.SollProWoche = BerechneSollProWoche(c, empDetail); - if (empDetail.SollProTag == 0 && empDetail.SollProWoche > 0 && empDetail.ArbeitstageProWoche > 0) - { - empDetail.SollProTag = empDetail.SollProWoche / empDetail.ArbeitstageProWoche; - - } - HandleServiceRecords(empDetail, groupFilteredRecords, c); - - if (CheckIst) - { - - var summary = BerechneStunden(empDetail, groupFilteredRecords, berichtsAnfang, berichtsEnde); - summaryTotal.IstAbrechenbar += summary.IstAbrechenbar; - summaryTotal.IstNichtAbrechenbar += summary.IstNichtAbrechenbar; - summaryTotal.RecordsImBerichtszeitraum.AddRange(summary.RecordsImBerichtszeitraum); - - if (SollPauseBerechnen()) - { - pause1 += BerechnePauseMinuten(summary.RecordsImBerichtszeitraum); - pause2 += BerechneAutoPausen(summary.RecordsImBerichtszeitraum); - - } - } - - - decimal? stundenSollProMonat = null; - decimal? stundenSollImVertragsUndBerichtzeitraum = null; - if (empDetail.HasContract) - { - stundenSollImVertragsUndBerichtzeitraum = GetSollNachArbeitszeiten(empDetail.Employee, berichtsAnfang, berichtsEnde); - } - - if (!stundenSollImVertragsUndBerichtzeitraum.HasValue) - { - stundenSollProMonat = BerechneSollProMonat(emp, berichtsAnfang, berichtsEnde); - stundenSollImVertragsUndBerichtzeitraum = stundenSollProMonat; - } - - if (!stundenSollImVertragsUndBerichtzeitraum.HasValue) - { - if (!stundenSollImVertragsUndBerichtzeitraum.HasValue) - { - if (empDetail.ArbeitstageProWoche <= 5) - { - stundenSollImVertragsUndBerichtzeitraum = - empDetail.ArbeitstageImBerichtszeitraum * (weeklyTotalHours / 5); - } - else - { - stundenSollImVertragsUndBerichtzeitraum = - empDetail.ArbeitstageImBerichtszeitraum * (weeklyTotalHours / empDetail.ArbeitstageProWoche); - } - } - } - - - stundenSollGesamt += stundenSollImVertragsUndBerichtzeitraum ?? 0; - - - empDetail.StundenSollMax = stundenSollGesamt; - - - var tatSollStdImVertragsUndBerichtzeitraum = stundenSollImVertragsUndBerichtzeitraum ?? 0; - - - decimal? fehlZeiten = GetFehlzeiten(groupFilteredRecords, berichtsAnfang, berichtsEnde); - if (fehlZeiten.HasValue) - { - if (!fehlZeitenGesamt.HasValue) - fehlZeitenGesamt = 0; - fehlZeitenGesamt += fehlZeiten; - - tatSollStdImVertragsUndBerichtzeitraum -= fehlZeiten.Value; - } - - AktuellBearbeitetesEmployeeDetail = empDetail; - var ath = GetAbsenceTimeDaysWithWorkWeeks(emp, berichtsAnfang, berichtsEnde, empDetail.ArbeitstageProWoche); - empDetail.AbsenceTimeDays = ath; - - if (ath.TageUrlaub.HasValue) - { - if (!tageUrlaubGesamt.HasValue) - tageUrlaubGesamt = 0; - tageUrlaubGesamt += ath.TageUrlaub; - } - if (ath.TageKrankheit.HasValue) - { - if (!tageKrankheitGesamt.HasValue) - tageKrankheitGesamt = 0; - tageKrankheitGesamt += ath.TageKrankheit; - } - - - if (ath.TageGesamt.HasValue) - { - if (!abwesenheitTageGesamt.HasValue) - abwesenheitTageGesamt = 0; - abwesenheitTageGesamt += ath.TageGesamt; - - var minusStunden = BerechneStundenDurchAbwesenheiten(ath, berichtsAnfang, berichtsEnde, c, empDetail); - tatSollStdImVertragsUndBerichtzeitraum -= minusStunden; - if (tatSollStdImVertragsUndBerichtzeitraum < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein()) - { - - tatSollStdImVertragsUndBerichtzeitraum = 0; - - } - - } - - - var ath2 = GetAbwesenheitenDurchServiceRecords(empDetail, c, groupFilteredRecords, berichtsAnfang, berichtsEnde); - - if (ath2 != null) - { - - var stunden = ath2.StundenKrankheit + ath2.StundenUrlaub + ath2.StundenSonstiges; - - tatSollStdImVertragsUndBerichtzeitraum -= stunden; - - if (tatSollStdImVertragsUndBerichtzeitraum < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein()) - { - tatSollStdImVertragsUndBerichtzeitraum = 0; - } - - if (empDetail.SollProTag > 0) - { - if (!abwesenheitTageGesamt.HasValue) - abwesenheitTageGesamt = 0; - abwesenheitTageGesamt += stunden / empDetail.SollProTag; - - if (ath2.StundenKrankheit > 0) - { - if (!tageKrankheitGesamt.HasValue) - { - tageKrankheitGesamt = 0; - } - tageKrankheitGesamt += ath2.StundenKrankheit / empDetail.SollProTag; - } - - if (ath2.StundenUrlaub > 0) - { - if (!tageUrlaubGesamt.HasValue) - { - tageUrlaubGesamt = 0; - } - tageUrlaubGesamt += ath2.StundenUrlaub / empDetail.SollProTag; - } - } - - - } - - tatSollStdGesamt += tatSollStdImVertragsUndBerichtzeitraum; - - - flsSollGesamt += BerechneFlsSoll(emp, c, berichtsAnfang, berichtsEnde, tatSollStdImVertragsUndBerichtzeitraum, stundenSollProMonat); - - if (ath.StundenAlsIst > 0) - { - tatSollStdGesamt += ath.StundenAlsIst; - summaryTotal.IstNichtAbrechenbar += ath.StundenAlsIst * 60; - } - - azDurchFeiertage += BerechneGesamtArbeitszeitDurchFeiertage(empDetail, berichtsAnfang, berichtsEnde); - - - berichtsAnfang = berichtsEnde; - berichtsEnde = monatsEnde; - c = GetNextValidContractForDate(berichtsAnfang, emp); - - if (c != null) - { - if (c.EntryDate.HasValue && c.EntryDate >= berichtsAnfang) - berichtsAnfang = c.EntryDate.Value; - if (c.ContractEndDate.HasValue && c.ContractEndDate < monatsEnde) - { - berichtsEnde = c.ContractEndDate.Value.Date.AddDays(1); - } - } - } - - if (AddRateFactorToIst() != 1) - { - summaryTotal.IstAbrechenbar *= AddRateFactorToIst(); - } - summaryTotal.IstAbrechenbar /= 60m; - summaryTotal.IstNichtAbrechenbar /= 60m; - - empDetail.WorkDaysThisMonth = workdaysTotal; - //decimal stundenSollMax = arbeitstage * (maxWochenstunden / xxx) * bu; - - - - empDetail.Fehlzeiten = fehlZeitenGesamt; - empDetail.TageUrlaub = tageUrlaubGesamt; - empDetail.TageKrankheit = tageKrankheitGesamt; - empDetail.UrlaubUndKrankheit = abwesenheitTageGesamt; - - empDetail.StundenSollOhneUrlaubKrankheit = tatSollStdGesamt; - - empDetail.FlsSoll = flsSollGesamt; - - #endregion - empDetail.MittelbarIst = summaryTotal.IstNichtAbrechenbar; - empDetail.Bu = bu; - empDetail.FlsIst = summaryTotal.IstAbrechenbar; - empDetail.FlsDiff = summaryTotal.IstAbrechenbar - empDetail.FlsSoll; - empDetail.StundenMittelbarIst = summaryTotal.IstNichtAbrechenbar; - empDetail.StundenGesamtIst = summaryTotal.IstAbrechenbar + summaryTotal.IstNichtAbrechenbar; // Stunden auf Gesamt-IST drauf - - // Hier muss ein Faktor auf die Gesamt- und Überstunden drauf. (Aus Vertrag Wochenstunden / Wochen-FLS) - var faktorStunden = GetFaktorStunden(c, empDetail.FlsIst, ro.ReportStartDate); - empDetail.StundenGesamtIst += faktorStunden; - - #region Standardkram - - empDetail.StundenGesamtIst -= pause1 / 60; - empDetail.StundenGesamtIst -= pause2 / 60; - - empDetail.StundenGesamtIst += azDurchFeiertage; - - if (empDetail.FlsSoll != 0) - empDetail.RelationIstSoll = (empDetail.FlsIst / empDetail.FlsSoll) * 100m; - - - decimal? ueberstunden = empDetail.StundenGesamtIst - empDetail.StundenSollOhneUrlaubKrankheit; - decimal? ueberstundenVormonat; - - - decimal alteExtraUeberstunden = 0; - 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(); - - decimal? ueberstundenVormonatFuerDienstplanung; - decimal? alteExtraUeberstundenDienstplanung; - empDetail.DienstplanIst += BerechneDienstplanIst(empDetail, alleDiensteintraege, alleDienstvertretungen, ro.ReportStartDate, - out ueberstundenVormonatFuerDienstplanung, out alteExtraUeberstundenDienstplanung); // ABCDEF - - var dienstplanIstAlsStunden = empDetail.DienstplanIst / 60; - - decimal extraStunden = 0; - - BerechneExtraUeberstunden(emp, monatsAnfang, monatsEnde, out extraStunden); // OverTimes - - if (ShouldCreateDayDetails()) - { - - empDetail.Days = CreateDayDetails(monatsAnfang, monatsEnde, empDetail, summaryTotal.RecordsImBerichtszeitraum); - var ah = GetAdditionalHours(empDetail.Days, monatsAnfang, monatsEnde, empDetail, summaryTotal.RecordsImBerichtszeitraum); - ueberstunden += ah; - empDetail.StundenGesamtIst += ah; - } - - if (empDetail.StundenGesamtIst != 0) - empDetail.RelationFlsZuMittelbar = (summaryTotal.IstAbrechenbar / empDetail.StundenGesamtIst) * 100; - - empDetail.Ueberstunden = ueberstunden; - empDetail.UeberstundenVormonat = ueberstundenVormonat; - if (!empDetail.UeberstundenGesamt.HasValue) - empDetail.UeberstundenGesamt = ((ueberstundenVormonat ?? 0) + (ueberstunden ?? 0)) + extraStunden; - else - empDetail.UeberstundenGesamt += ((ueberstundenVormonat ?? 0) + (ueberstunden ?? 0)) + extraStunden; - empDetail.UeberstundenAusbezahlt = extraStunden; - - //Urlaubskonto (todo) - empDetail.UrlaubGesamtImAktuellenJahr = - GetAbsenceTimeDaysWithWorkWeeks(emp, new DateTime(monatsAnfang.Year, 1, 1), monatsEnde, empDetail.ArbeitstageProWoche).TageUrlaub; - - CalculateEmployeeSalary(empDetail, berichtsAnfang, berichtsEnde); - } - - #endregion - - ro.EmployeeDetailList = FilterEmployeeList(ro.EmployeeDetailList); - } - - - - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) - { - #region Standardkram - MitarbeiterstundenkontoRO.EmployeeDetail edTotal = new MitarbeiterstundenkontoRO.EmployeeDetail(); - - ueberstunden = null; - alteExtraUeberstunden = 0; - - var emp = edOrig.Employee; - - Contract c = emp.FirstContract; - - if (c != null) - { - - Dictionary> srDict = CreateServiceRecordDictByDate(records); - - DateTime start = c.EntryDate.HasValue ? c.EntryDate.Value : new DateTime(2011, 1, 1); - while (c != null && start < monat) - { - DateTime contractEnd = c.ContractEndDate.HasValue ? c.ContractEndDate.Value : DateTime.MaxValue; - if (contractEnd < DateTime.MaxValue) - { - contractEnd = contractEnd.Date.AddDays(1).AddTicks(-1); - } - decimal bu = 0; - decimal weeklyTotalHours = this.maxWochenstunden; - int anzWochentage = ANZ_WOCHENTAGE; - - - if (c.WeeklyTotalHours.HasValue) - { - weeklyTotalHours = c.WeeklyTotalHours.Value; - bu = c.WeeklyTotalHours.Value / maxWochenstunden; - } - - - //while (start < monat && start <= contractEnd) - while (start < monat && start < contractEnd) - { - if (start >= new DateTime(2024, 8, 1)) - { - int test = 0; - } - - decimal flsIst = 0; - decimal mittelbarIst = 0; - decimal minutenMonat = 0; - DateTime ende = new DateTime(start.Year, start.Month, 1).AddMonths(1); - if (contractEnd < DateTime.MaxValue && contractEnd.Date.AddDays(1) < ende) - ende = contractEnd.Date.AddDays(1); - - 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 (AddServiceRecordToDuration(item)) - { - - decimal duration = GetDuration(item, edOrig); - - - minutenMonat += duration; - - if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null && - item.ServiceDescription.ServiceCategory.IsBillable) - flsIst += duration; - else - mittelbarIst += duration; - - } - recordsThisMonth.Add(item); - } - } - } - - - - decimal arbeitstage = GetArbeitstageImBereich(start, ende, emp); - var arbeitstageProWoche = anzWochentage; - if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0) - { - arbeitstageProWoche = c.WeeklyDays.Value; - } - - //if (anzWochentage != 5) - //{ - // arbeitstage *= anzWochentage / 5m; - //} - var soll = GetSollNachArbeitszeiten(emp, start, ende); - - if (!soll.HasValue) - { - var stundenSollProMonat = BerechneSollProMonat(emp, start, ende); - soll = stundenSollProMonat; - } - - if (!soll.HasValue) - { - - if (!soll.HasValue) - { - decimal maxSollMonat = arbeitstage * (maxWochenstunden / arbeitstageProWoche); - if (arbeitstageProWoche <= 5) - { - maxSollMonat = arbeitstage * (maxWochenstunden / 5); - } - - soll = maxSollMonat * bu; - } - } - - decimal sollMitarbeiter = soll ?? 0; - - MitarbeiterstundenkontoRO.EmployeeDetail ed = new MitarbeiterstundenkontoRO.EmployeeDetail(); - ed.SollProTag = weeklyTotalHours / arbeitstageProWoche; - ed.ArbeitstageProWoche = arbeitstageProWoche; - ed.ArbeitstageImBerichtszeitraum = arbeitstage; - ed.SollProWoche = BerechneSollProWoche(c, ed); - - ed.Employee = emp; - - AktuellBearbeitetesEmployeeDetail = ed; - var ath = GetAbsenceTimeDaysWithWorkWeeks(emp, start, ende, arbeitstageProWoche); - ed.AbsenceTimeDays = ath; - - decimal? fehlzeit = GetFehlzeiten(records, start, ende); - - if (fehlzeit.HasValue) - { - sollMitarbeiter -= fehlzeit.Value; - - } - - ed.StundenSollMax = sollMitarbeiter; - - - if (ath.TageGesamt.HasValue) - { - var minusStunden = BerechneStundenDurchAbwesenheiten(ath, start, ende, c, ed); - sollMitarbeiter -= minusStunden; - if (sollMitarbeiter < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein()) - { - sollMitarbeiter = 0; - } - - } - - var ath2 = GetAbwesenheitenDurchServiceRecords(ed, c, records, start, ende); - - if (ath2 != null) - { - - var stunden = ath2.StundenKrankheit + ath2.StundenUrlaub + ath2.StundenSonstiges; - - sollMitarbeiter -= stunden; - - if (sollMitarbeiter < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein()) - { - sollMitarbeiter = 0; - } - - - } -#endregion - - var azDurchFeiertage = BerechneGesamtArbeitszeitDurchFeiertage(ed, start, ende); - sollMitarbeiter -= azDurchFeiertage; - - decimal stundenMonat = minutenMonat / 60m; - stundenMonat = ((flsIst * AddRateFactorToIst()) + mittelbarIst) / 60m; - - var faktorStunden = GetFaktorStunden(c, flsIst / 60, start); - - if (monat != new DateTime(2023, 12, 31)) - { } - else - { } - - if (!ueberstunden.HasValue) - ueberstunden = 0; - ueberstunden += stundenMonat + faktorStunden - sollMitarbeiter; - - #region Standardkram - if (SollPauseBerechnen()) - { - var pause1 = BerechnePauseMinuten(recordsThisMonth); - var pause2 = BerechneAutoPausen(recordsThisMonth); - - ueberstunden -= pause1 / 60; - ueberstunden -= pause2 / 60; - } - - decimal extraUeberstunden = 0; - - BerechneExtraUeberstunden(emp, start, ende, out extraUeberstunden); - ueberstunden += extraUeberstunden; - - alteExtraUeberstunden += extraUeberstunden; - - if (ShouldCreateDayDetails()) - { - var days = CreateDayDetails(start, ende, ed, records); - var ah = GetAdditionalHours(days, start, ende, ed, records); - ueberstunden += ah; - } - - - ed.StundenSollOhneUrlaubKrankheit = sollMitarbeiter; - ed.FlsIst = flsIst / 60; - ed.MittelbarIst = mittelbarIst / 60; - ed.StundenGesamtIst = stundenMonat; - ed.Ueberstunden = ueberstunden; - ed.UeberstundenVormonat = edTotal.Ueberstunden; - - ueberstunden = BerechneUeberstunden(ed, ueberstunden, c, start, ende); - - edTotal.StundenSollOhneUrlaubKrankheit += sollMitarbeiter; - edTotal.StundenSollMax += soll ?? 0; - edTotal.FlsIst += flsIst / 60; - edTotal.MittelbarIst += mittelbarIst / 60; - edTotal.StundenGesamtIst += stundenMonat; - edTotal.Ueberstunden = ueberstunden; - - start = ende; - } - - //if (start > contractEnd) - if (start >= contractEnd) - { - var ctemp = GetNextValidContractForDate(start, emp); - if (ctemp != null && ctemp.Oid != c.Oid) - { - c = ctemp; - } - else - { - c = null; - } - - if (c != null && c.EntryDate.HasValue && c.EntryDate >= start) - start = c.EntryDate.Value; - else - { - start = start.AddMonths(1); - c = GetNextValidContractForDate(start, emp); - if (c != null && c.EntryDate.HasValue && c.EntryDate >= start) - start = c.EntryDate.Value; - } - } - } - - } - #endregion - return edTotal; - } - private decimal GetFaktorStunden(Contract c, decimal geleisteteStunden, DateTime monat) - { - // Erst ab 2024 soll ein Faktor auf die Gesamtstunden draufgerechnet werden, der den Wochenstunden / Wochen-FLS aus dem Vertrag entspricht - if (monat.Year < 2024 || c == null) + // Erst ab 2024 soll ein Faktor auf die Gesamtstunden draufgerechnet werden, der den Wochenstunden / Wochen-FLS aus dem Vertrag entspricht + if (monat.Year < 2024 || c == null) return 0; decimal faktor = 1.25m; if (c.WeeklyFLS.HasValue && c.WeeklyFLS.Value != 0 && c.WeeklyTotalHours.HasValue && c.WeeklyTotalHours.Value != 0) faktor = c.WeeklyTotalHours.Value / c.WeeklyFLS.Value; - var faktorStunden = geleisteteStunden * faktor - geleisteteStunden; + var faktorStunden = istStunden * faktor - istStunden; - return faktorStunden; + return faktorStunden; } - public override bool ShouldCreateDayDetails() + public override bool ShouldCreateDayDetails() { return true; } diff --git a/ReportImp/LebenshilfeStadeMID/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/LebenshilfeStadeMID/CustomMitarbeiterstundenkontoBerechnung.cs index 48062bfe3..174d0aecc 100644 --- a/ReportImp/LebenshilfeStadeMID/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/LebenshilfeStadeMID/CustomMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace LebenshilfeStadeMID { @@ -157,7 +158,7 @@ namespace LebenshilfeStadeMID } } - 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) diff --git a/ReportImp/LebenshilfeWuerzburgReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/LebenshilfeWuerzburgReports/CustomMitarbeiterstundenkontoBerechnung.cs index 59fc60709..8e79f2762 100644 --- a/ReportImp/LebenshilfeWuerzburgReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/LebenshilfeWuerzburgReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -6,6 +6,7 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BeWo.Service.ServiceImplementations; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace BeWo.LebenshilfeWuerzburgReports @@ -32,11 +33,10 @@ namespace BeWo.LebenshilfeWuerzburgReports decimal ausfallZeit = 0; decimal gesamtZeit = 0; - IList recordsAll = DAOFactory.SearchDAO.FindServiceRecords(emp.Oid, null); - recordsAll = AnalysisServiceImp.FilterActiveServiceRecords(recordsAll); - - IList recordsThisMonth = new List(); - IList groupFilteredRecords = new List(); + var recordsAll = ro.AllServiceRecords.Where(s => s.EmployeeOid.HasValue && s.EmployeeOid == emp.Oid).ToList(); + + IList recordsThisMonth = new List(); + IList groupFilteredRecords = new List(); Dictionary groupBookingDict = new Dictionary(); foreach (var item in recordsAll) { @@ -54,7 +54,7 @@ namespace BeWo.LebenshilfeWuerzburgReports foreach (var item in groupFilteredRecords) { - if (item.Start.Value >= monatsAnfang && item.Start.Value < monatsEnde) + if (item.Start >= monatsAnfang && item.Start < monatsEnde) { decimal duration = 0; @@ -74,21 +74,21 @@ namespace BeWo.LebenshilfeWuerzburgReports //ServiceDescription //88 Ausfallzeit ServiceCategoryOid = 7 - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { if (item.ServiceDescription.Name == "Ausfallzeit") { ausfallZeit += duration; } - else if (item.ServiceDescription.ServiceCategory.Name == "Direkte Leistung") + else if (item.ServiceDescription.Category.Name == "Direkte Leistung") { direkteZeit += duration; } - else if (item.ServiceDescription.ServiceCategory.Name == "Indirekte Leistung") + else if (item.ServiceDescription.Category.Name == "Indirekte Leistung") { indirekteZeit += duration; } - else if (item.ServiceDescription.ServiceCategory.Name == "Allgemein") + else if (item.ServiceDescription.Category.Name == "Allgemein") { allgemeineZeit += duration; } diff --git a/ReportImp/LeiendeckerReports/LeiendeckerMitarbeiterstundenkontoBerechnung.cs b/ReportImp/LeiendeckerReports/LeiendeckerMitarbeiterstundenkontoBerechnung.cs index 7ee2e7619..dc70b7f4b 100644 --- a/ReportImp/LeiendeckerReports/LeiendeckerMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/LeiendeckerReports/LeiendeckerMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace BeWo.LeiendeckerReports @@ -92,19 +93,19 @@ namespace BeWo.LeiendeckerReports return ath; } - public override bool IsServiceRecordFehlzeit(ServiceRecord sr) + public override bool IsServiceRecordFehlzeit(StundenkontoServiceRecord sr) { return false; } - public override bool AddServiceRecordToDuration(ServiceRecord sr) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord sr) { if (sr.ServiceDescription != null && !String.IsNullOrEmpty(sr.ServiceDescription.Name) && sr.ServiceDescription.Name.ToLower().IndexOf("pause") >= 0) return false; return base.AddServiceRecordToDuration(sr); } - public override decimal? GetFehlzeiten(IList records, DateTime monat) + public override decimal? GetFehlzeiten(IList records, DateTime monat) { return 0; } diff --git a/ReportImp/Lori/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/Lori/CustomMitarbeiterstundenkontoBerechnung.cs index 86deafb7e..ddd2b48ca 100644 --- a/ReportImp/Lori/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Lori/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace Lori @@ -16,11 +17,11 @@ namespace Lori return list; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -28,21 +29,21 @@ namespace Lori return false; } - 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)) //{ @@ -58,13 +59,13 @@ namespace Lori } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/MalteserJohanniterJohanneshaus/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/MalteserJohanniterJohanneshaus/CustomMitarbeiterstundenkontoBerechnung.cs index 65950e1e1..b01de9939 100644 --- a/ReportImp/MalteserJohanniterJohanneshaus/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/MalteserJohanniterJohanneshaus/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace MalteserJohanniterJohanneshaus @@ -14,7 +15,7 @@ namespace MalteserJohanniterJohanneshaus return true; } - 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) @@ -23,10 +24,10 @@ namespace MalteserJohanniterJohanneshaus 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) { if (sr.ServiceDescription.Name != "Arbeitszeit" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { if (sr.GroupRoundedDuration.HasValue) { @@ -39,9 +40,9 @@ namespace MalteserJohanniterJohanneshaus { 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; } dd.SpecialHours += (decimal)sr.DurationMinutes * (prozent / 100); } diff --git a/ReportImp/Mittelpunkt/ArbeitstageMehrAls8h.designer.cs b/ReportImp/Mittelpunkt/ArbeitstageMehrAls8h.designer.cs index 5f3b4a798..0007fc19d 100644 --- a/ReportImp/Mittelpunkt/ArbeitstageMehrAls8h.designer.cs +++ b/ReportImp/Mittelpunkt/ArbeitstageMehrAls8h.designer.cs @@ -63,10 +63,10 @@ namespace Mittelpunkt this.lblAnzahl = new DevExpress.XtraReports.UI.XRLabel(); this.fieldRelationGesamt = new DevExpress.XtraReports.UI.CalculatedField(); this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand(); - this.lblAdresse = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel(); this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox(); this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel(); + this.lblAdresse = new DevExpress.XtraReports.UI.XRLabel(); this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand(); this.xrPageInfo3 = new DevExpress.XtraReports.UI.XRPageInfo(); this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel(); @@ -205,11 +205,11 @@ namespace Mittelpunkt // // xrLabel8 // + this.xrLabel8.CanGrow = false; this.xrLabel8.Font = new DevExpress.Drawing.DXFont("Times New Roman", 8F); this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(0F, 88.93325F); - this.xrLabel8.Multiline = true; this.xrLabel8.Name = "xrLabel8"; - this.xrLabel8.SizeF = new System.Drawing.SizeF(254.9996F, 23.00005F); + this.xrLabel8.SizeF = new System.Drawing.SizeF(255F, 14F); this.xrLabel8.StyleName = "Title"; this.xrLabel8.StylePriority.UseFont = false; this.xrLabel8.Text = "(Mittelpunkt Verwaltung)"; @@ -338,7 +338,8 @@ namespace Mittelpunkt this.xrLabel8, this.xrLabel1, this.lblAnzahl}); - this.GroupFooter2.HeightF = 111.9333F; + this.GroupFooter2.HeightF = 102.9333F; + this.GroupFooter2.KeepTogether = true; this.GroupFooter2.Name = "GroupFooter2"; // // lblAnzahl @@ -371,16 +372,6 @@ namespace Mittelpunkt this.ReportHeader.HeightF = 145.1042F; this.ReportHeader.Name = "ReportHeader"; // - // lblAdresse - // - this.lblAdresse.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11F); - this.lblAdresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); - this.lblAdresse.Multiline = true; - this.lblAdresse.Name = "lblAdresse"; - this.lblAdresse.SizeF = new System.Drawing.SizeF(394.3745F, 55.20831F); - this.lblAdresse.StyleName = "Title"; - this.lblAdresse.StylePriority.UseFont = false; - // // xrLabel6 // this.xrLabel6.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11F, DevExpress.Drawing.DXFontStyle.Bold); @@ -411,6 +402,16 @@ namespace Mittelpunkt this.xrLabel3.StylePriority.UseFont = false; this.xrLabel3.Text = "Bescheinigung für das Finanzamt"; // + // lblAdresse + // + this.lblAdresse.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11F); + this.lblAdresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); + this.lblAdresse.Multiline = true; + this.lblAdresse.Name = "lblAdresse"; + this.lblAdresse.SizeF = new System.Drawing.SizeF(394.3745F, 55.20831F); + this.lblAdresse.StyleName = "Title"; + this.lblAdresse.StylePriority.UseFont = false; + // // GroupHeader1 // this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { diff --git a/ReportImp/Mittelpunkt/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/Mittelpunkt/CustomMitarbeiterstundenkontoBerechnung.cs index 065be833c..fb6fe76b7 100644 --- a/ReportImp/Mittelpunkt/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Mittelpunkt/CustomMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace Mittelpunkt { @@ -29,7 +30,7 @@ namespace Mittelpunkt return base.GetFeiertagsFaktor(start); } - 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) { if (ShouldCreateDayDetailsForEachServiceRecord()) { @@ -46,13 +47,13 @@ namespace Mittelpunkt 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) + if (sr.Start.Year == 2023 && sr.Start.Month == 10 && sr.Start.Day == 3) { int test = 0; } - var dd = dayToDetail[sr.Start.Value.Day]; + var dd = dayToDetail[sr.Start.Day]; if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr)) { @@ -61,7 +62,7 @@ namespace Mittelpunkt 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); @@ -106,14 +107,14 @@ namespace Mittelpunkt 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++; @@ -139,7 +140,7 @@ namespace Mittelpunkt if (sr.Start < currentSpan.StartDateTime) { - currentSpan.StartDateTime = sr.Start.Value; + currentSpan.StartDateTime = sr.Start; } if (dtEnd > currentSpan.EndDateTime) { @@ -197,7 +198,7 @@ namespace Mittelpunkt return dayToDetail.Values.OrderBy(dd => dd.Date).ToList(); } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (IsUrlaubAbsenceServiceRecord(item) || IsKrankAbsenceServiceRecord(item)) return false; @@ -213,7 +214,7 @@ namespace Mittelpunkt else return base.IstAnrechenbareAbsenceTime(item); } - protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) + protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { var abwesenheitenImZeitraum = groupFilteredRecords.Where(sr => sr.Start >= berichtsAnfang && sr.End <= berichtsEnde && (IsKrankAbsenceServiceRecord(sr) || IsUrlaubAbsenceServiceRecord(sr))).ToList(); if (abwesenheitenImZeitraum.Count > 0) @@ -228,7 +229,7 @@ namespace Mittelpunkt } return null; } - public bool IsUrlaubAbsenceServiceRecord(ServiceRecord item) + public bool IsUrlaubAbsenceServiceRecord(StundenkontoServiceRecord item) { if (item.ServiceDescription != null && item.ServiceDescription.Name.Trim().ToLower() == "urlaub (x)") return true; @@ -236,7 +237,7 @@ namespace Mittelpunkt return false; } - public bool IsKrankAbsenceServiceRecord(ServiceRecord item) + public bool IsKrankAbsenceServiceRecord(StundenkontoServiceRecord item) { if (item.ServiceDescription != null && item.ServiceDescription.Name.Trim().ToLower() == "krank (x)") return true; diff --git a/ReportImp/Mittelpunkt/CustomReportCreator.cs b/ReportImp/Mittelpunkt/CustomReportCreator.cs index c87e662e1..962931939 100644 --- a/ReportImp/Mittelpunkt/CustomReportCreator.cs +++ b/ReportImp/Mittelpunkt/CustomReportCreator.cs @@ -306,29 +306,33 @@ namespace Mittelpunkt if (employeeOid != null) { - bericht = CreateAndAddArbeitstageMehrAls8hBericht((long)employeeOid, startDate, endDate, bericht); + bericht = CreateAndAddArbeitstageMehrAls8hBericht((long)employeeOid, null, startDate, endDate); } else if (teamOid != null) { Team team = DAOFactory.GenericDAO.GetByID((long)teamOid); if (team != null) { - foreach (var employee in team.MemberList) - { - bericht = CreateAndAddArbeitstageMehrAls8hBericht((long)employee.Oid, startDate, endDate, bericht); - } - } + bericht = CreateAndAddArbeitstageMehrAls8hBericht(null, team.Oid, startDate, endDate); + + //foreach (var employee in team.MemberList.OrderBy(e => e.Person.LastNameFirstName)) + //{ + // bericht = CreateAndAddArbeitstageMehrAls8hBericht((long)employee.Oid, startDate, endDate, bericht); + //} + } } else { - // kein Mitarbeiter oder Team ausgewaehlt, Bericht wird fuer alle Mitarbeiter erstellt - var allEmployees = DAOFactory.GenericDAO.GetAllActiveAndArchived(); + bericht = CreateAndAddArbeitstageMehrAls8hBericht(null, null, startDate, endDate); - foreach (var employee in allEmployees) - { - bericht = CreateAndAddArbeitstageMehrAls8hBericht((long)employee.Oid, startDate, endDate, bericht); - } - } + // kein Mitarbeiter oder Team ausgewaehlt, Bericht wird fuer alle Mitarbeiter erstellt + //var allEmployees = DAOFactory.GenericDAO.GetAllActiveAndArchived(); + + //foreach (var employee in allEmployees.OrderBy(e => e.Person.LastNameFirstName)) + //{ + // bericht = CreateAndAddArbeitstageMehrAls8hBericht((long)employee.Oid, startDate, endDate, bericht); + //} + } if (bericht != null) { @@ -339,30 +343,43 @@ namespace Mittelpunkt return new XtraReport(); } - private XtraReport CreateAndAddArbeitstageMehrAls8hBericht(long employeeOid, DateTime startDate, DateTime endDate, XtraReport bericht) + private XtraReport CreateAndAddArbeitstageMehrAls8hBericht(long? employeeOid, long? teamOid, DateTime startDate, DateTime endDate) { - XtraReport result = bericht; - - MitarbeiterstundenkontoMonateRO ro = new MitarbeiterstundenkontoMonateRO(employeeOid, null, startDate, endDate, null); + XtraReport result = null; + List teamOids = null; + if (teamOid.HasValue) + { + teamOids = new List { teamOid.Value }; + } + MitarbeiterstundenkontoMonateRO ro = new MitarbeiterstundenkontoMonateRO(employeeOid, teamOids, startDate, endDate, null); var msbm = new CustomMitarbeiterstundenkontoBerechnungMonate(); msbm.CreateReport(ro); if (ro.EmployeeInfoList != null && ro.EmployeeInfoList.Count > 0) { - var arbeitstageMehrAls8h = FindeArbeitstageMehrAls8h(ro.EmployeeInfoList[0]); - if (arbeitstageMehrAls8h.Count > 0 && ro.EmployeeInfoList[0].EmployeeDetails.Count > 0) + foreach (var employeeInfo in ro.EmployeeInfoList) { - ro.EmployeeInfoList[0].EmployeeDetails[0].EmployeeDetail.Days = arbeitstageMehrAls8h; + var einzelRo = new MitarbeiterstundenkontoMonateRO(employeeOid, teamOids, startDate, endDate, null); + einzelRo.ReportStartDate = ro.ReportStartDate; + einzelRo.ReportEndDate = ro.ReportEndDate; + einzelRo.EmployeeInfoList.Add(employeeInfo); - ArbeitstageMehrAls8h employeeBericht = new ArbeitstageMehrAls8h(); - employeeBericht.SetReportDataSource(ro); - employeeBericht.CreateDocument(); + var arbeitstageMehrAls8h = FindeArbeitstageMehrAls8h(employeeInfo); + if (arbeitstageMehrAls8h.Count > 0 && ro.EmployeeInfoList[0].EmployeeDetails.Count > 0) + { + einzelRo.EmployeeInfoList[0].EmployeeDetails[0].EmployeeDetail.Days = arbeitstageMehrAls8h; - if (bericht == null) - result = employeeBericht; - else - result.Pages.AddRange(employeeBericht.Pages); - } + var employeeBericht = new ArbeitstageMehrAls8h(); + employeeBericht.SetReportDataSource(einzelRo); + employeeBericht.CreateDocument(); + + if (result == null) + result = employeeBericht; + else + result.Pages.AddRange(employeeBericht.Pages); + } + } + } return result; diff --git a/ReportImp/Mittelpunkt/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/Mittelpunkt/Mitarbeiterarbeitszeitkonto.cs index ce04bee19..b36c0ee08 100644 --- a/ReportImp/Mittelpunkt/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/Mittelpunkt/Mitarbeiterarbeitszeitkonto.cs @@ -66,7 +66,7 @@ namespace Mittelpunkt { foreach (var sr in day.ServiceRecords) { - var d1 = sr.Start.Value; + var d1 = sr.Start; var duration = sr.GroupRoundedDuration != null ? Convert.ToDouble(sr.GroupRoundedDuration.Value) : sr.DurationMinutes; diff --git a/ReportImp/Mittelpunkt/MitarbeiterarbeitszeitkontoSeite2.cs b/ReportImp/Mittelpunkt/MitarbeiterarbeitszeitkontoSeite2.cs index 2343f0694..0e9084f1c 100644 --- a/ReportImp/Mittelpunkt/MitarbeiterarbeitszeitkontoSeite2.cs +++ b/ReportImp/Mittelpunkt/MitarbeiterarbeitszeitkontoSeite2.cs @@ -44,7 +44,7 @@ namespace Mittelpunkt if (day.ServiceRecords != null && day.ServiceRecords.Count > 0) { day.Custom2 = string.Join("; ", day.ServiceRecords - .Where(s => s.ServiceDescription.ServiceCategory.Name.Trim().EndsWith("AZ")) + .Where(s => s.ServiceDescription.Category.Name.Trim().EndsWith("AZ")) .Select(s => s.Notice)); } if (day.AbsenceTimes != null && day.AbsenceTimes.Count > 0) diff --git a/ReportImp/Mittelpunkt/Mitarbeiterstundenkonto.cs b/ReportImp/Mittelpunkt/Mitarbeiterstundenkonto.cs index 6b83905dc..8919b56f5 100644 --- a/ReportImp/Mittelpunkt/Mitarbeiterstundenkonto.cs +++ b/ReportImp/Mittelpunkt/Mitarbeiterstundenkonto.cs @@ -33,7 +33,7 @@ namespace Mittelpunkt { foreach (var sr in day.ServiceRecords) { - var d1 = sr.Start.Value; + var d1 = sr.Start; var duration = sr.GroupRoundedDuration != null ? Convert.ToDouble(sr.GroupRoundedDuration.Value) : sr.DurationMinutes; diff --git a/ReportImp/Mittelpunkt/MitarbeiterstundenkontoJahr.cs b/ReportImp/Mittelpunkt/MitarbeiterstundenkontoJahr.cs index df2153928..c7eb89dfc 100644 --- a/ReportImp/Mittelpunkt/MitarbeiterstundenkontoJahr.cs +++ b/ReportImp/Mittelpunkt/MitarbeiterstundenkontoJahr.cs @@ -35,7 +35,7 @@ namespace Mittelpunkt { foreach (var sr in day.ServiceRecords) { - var d1 = sr.Start.Value; + var d1 = sr.Start; var duration = sr.GroupRoundedDuration != null ? Convert.ToDouble(sr.GroupRoundedDuration.Value) : sr.DurationMinutes; diff --git a/ReportImp/Mittelpunkt/Teamstundenkonto.cs b/ReportImp/Mittelpunkt/Teamstundenkonto.cs index 47da61a00..6f81e7c6e 100644 --- a/ReportImp/Mittelpunkt/Teamstundenkonto.cs +++ b/ReportImp/Mittelpunkt/Teamstundenkonto.cs @@ -52,7 +52,7 @@ namespace Mittelpunkt { foreach (var sr in day.ServiceRecords) { - var d1 = sr.Start.Value; + var d1 = sr.Start; var saturday = d1.GetNextDayOfWeek(DayOfWeek.Saturday); var unroundedEnd = d1.AddMinutes(sr.DurationMinutes); diff --git a/ReportImp/Mittelpunkt/ZuschlaegeArbeit.cs b/ReportImp/Mittelpunkt/ZuschlaegeArbeit.cs index 938d3dfbd..4c329e398 100644 --- a/ReportImp/Mittelpunkt/ZuschlaegeArbeit.cs +++ b/ReportImp/Mittelpunkt/ZuschlaegeArbeit.cs @@ -72,11 +72,11 @@ namespace Mittelpunkt foreach (var day in empDetail.Days) { - var alleRecordsAnDiesemTag = empDetail.AllServiceRecords.Where(s => s.Start.Value.Date == day.Date.Date).ToList(); + var alleRecordsAnDiesemTag = empDetail.AllServiceRecords.Where(s => s.Start.Date == day.Date.Date).ToList(); foreach (var sr in alleRecordsAnDiesemTag) //day.ServiceRecords) { - var d1 = sr.Start.Value; + var d1 = sr.Start; var duration = sr.GroupRoundedDuration != null ? Convert.ToDouble(sr.GroupRoundedDuration.Value) : sr.DurationMinutes; var unroundedEnd = d1.AddMinutes(duration); @@ -91,27 +91,27 @@ namespace Mittelpunkt if (isLMHD && sr.ServiceDescription != null && sr.ServiceDescription.Name.Trim().ToLower().Equals("krank (x)")) { // Custom18+19 Sonntag SV-pflichtig - DateTime sonntag = sr.Start.Value.Date; + DateTime sonntag = sr.Start.Date; if (day.IstSonntag) empDetail.Custom18 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, sonntag, sonntag.AddDays(1)) / 60, 2, MidpointRounding.AwayFromZero); - else if (sr.End.Value.DayOfWeek == DayOfWeek.Sunday) + else if (sr.End.DayOfWeek == DayOfWeek.Sunday) { - sonntag = sr.End.Value.Date; + sonntag = sr.End.Date; empDetail.Custom18 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, sonntag, sonntag.AddDays(1)) / 60, 2, MidpointRounding.AwayFromZero); } // Custom20+21 Feiertag SV-pflichtig if (day.IstFeiertag) { - DateTime feiertag = sr.Start.Value.Date; + DateTime feiertag = sr.Start.Date; empDetail.Custom20 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, feiertag, feiertag.AddDays(1)) / 60, 2, MidpointRounding.AwayFromZero); } // Custom22+23 Nachtarbeit SV-pflichtig if (day.NightEnd.HasValue && day.NightStart.HasValue) { - DateTime nachtStart = sr.Start.Value.AddHours(day.NightStart.Value); - DateTime nachtEnde = sr.Start.Value.AddDays(1).AddHours(day.NightEnd.Value); + DateTime nachtStart = sr.Start.AddHours(day.NightStart.Value); + DateTime nachtEnde = sr.Start.AddDays(1).AddHours(day.NightEnd.Value); empDetail.Custom22 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, nachtStart, nachtEnde) / 60, 2, MidpointRounding.AwayFromZero); } } @@ -328,11 +328,11 @@ namespace Mittelpunkt foreach (var day in empDetail.Days) { - var alleRecordsAnDiesemTag = empDetail.AllServiceRecords.Where(s => s.Start.Value.Date == day.Date.Date).ToList(); + var alleRecordsAnDiesemTag = empDetail.AllServiceRecords.Where(s => s.Start.Date == day.Date.Date).ToList(); foreach (var sr in alleRecordsAnDiesemTag) { - var d1 = sr.Start.Value; + var d1 = sr.Start; var duration = sr.GroupRoundedDuration != null ? Convert.ToDouble(sr.GroupRoundedDuration.Value) : sr.DurationMinutes; var unroundedEnd = d1.AddMinutes(duration); @@ -343,20 +343,20 @@ namespace Mittelpunkt if (sr.ServiceDescription != null && sr.ServiceDescription.Name.Trim().ToLower().Equals("krank (x)")) { - DateTime sonntag = sr.Start.Value.Date; - if (sr.Start.Value.DayOfWeek != DayOfWeek.Sunday && sr.End.Value.DayOfWeek == DayOfWeek.Sunday) - sonntag = sr.End.Value.Date; + DateTime sonntag = sr.Start.Date; + if (sr.Start.DayOfWeek != DayOfWeek.Sunday && sr.End.DayOfWeek == DayOfWeek.Sunday) + sonntag = sr.End.Date; empDetail.Custom18 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, sonntag, sonntag.AddDays(1)) / 60, 2, MidpointRounding.AwayFromZero); - DateTime feiertag = sr.Start.Value.Date; + DateTime feiertag = sr.Start.Date; if (!day.IstFeiertag) - feiertag = sr.End.Value.Date; + feiertag = sr.End.Date; empDetail.Custom20 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, feiertag, feiertag.AddDays(1)) / 60, 2, MidpointRounding.AwayFromZero); if (day.NightEnd.HasValue && day.NightStart.HasValue) { - DateTime nachtStart = sr.Start.Value.AddHours(day.NightStart.Value); - DateTime nachtEnde = sr.Start.Value.AddDays(1).AddHours(day.NightEnd.Value); + DateTime nachtStart = sr.Start.AddHours(day.NightStart.Value); + DateTime nachtEnde = sr.Start.AddDays(1).AddHours(day.NightEnd.Value); empDetail.Custom22 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, nachtStart, nachtEnde) / 60, 2, MidpointRounding.AwayFromZero); } } diff --git a/ReportImp/Mittendrin/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/Mittendrin/CustomMitarbeiterstundenkontoBerechnung.cs index d3a58970b..53c05907b 100644 --- a/ReportImp/Mittendrin/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Mittendrin/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,17 +2,18 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace Mittendrin { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -20,21 +21,21 @@ namespace Mittendrin return false; } - 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)) //{ @@ -50,13 +51,13 @@ namespace Mittendrin } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/Mittendrin/Mittendrin.csproj b/ReportImp/Mittendrin/Mittendrin.csproj index 1d7fbc66f..0aa9c3c7a 100644 --- a/ReportImp/Mittendrin/Mittendrin.csproj +++ b/ReportImp/Mittendrin/Mittendrin.csproj @@ -126,6 +126,10 @@ {40D8B312-EA64-49E3-A31A-5E57ED4D5654} Report + + {094331c3-ecee-4c89-bbfd-4c9ded89f0ef} + Service + {2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4} Shared diff --git a/ReportImp/MobileEV/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/MobileEV/CustomMitarbeiterstundenkontoBerechnung.cs index 88e52a3c9..3a8612d9d 100644 --- a/ReportImp/MobileEV/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/MobileEV/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace MobileEV @@ -26,14 +27,14 @@ namespace MobileEV return dd; } - 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.ToLower().Contains("pause")) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { return true; } @@ -43,21 +44,21 @@ namespace MobileEV return false; } - 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)) //{ @@ -73,9 +74,9 @@ namespace MobileEV } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { if (!item.ServiceDescription.Name.ToLower().Contains("pause")) @@ -87,7 +88,7 @@ namespace MobileEV //arbeitszeit -= duration; // Achtung muss auskommentiert sein - sonst doppelter Abzug } } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -105,7 +106,7 @@ namespace MobileEV return sum; } - 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) @@ -116,7 +117,7 @@ namespace MobileEV 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); @@ -125,12 +126,12 @@ namespace MobileEV dd.PauseInMinuten += (decimal)sr.DurationMinutes; } - else if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + else if (sr.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { dd.MinutesTotal += (decimal)sr.DurationMinutes; } else if (sr.ServiceDescription.Name.ToLower().Contains("arbeitszeit") && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += (decimal)sr.DurationMinutes; } @@ -149,7 +150,7 @@ namespace MobileEV return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -169,13 +170,13 @@ namespace MobileEV { return true; } - public override decimal BerechnePauseMinuten(IList srListAlle) + public override decimal BerechnePauseMinuten(IList srListAlle) { - var srList = srListAlle.Where(s => s.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")); + var srList = srListAlle.Where(s => s.ServiceDescription.Category.Name.ToLower().Contains("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/Monvita/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/Monvita/CustomMitarbeiterstundenkontoBerechnung.cs index 3e2ec0db4..e98edebe1 100644 --- a/ReportImp/Monvita/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Monvita/CustomMitarbeiterstundenkontoBerechnung.cs @@ -5,27 +5,28 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using BeWo.Service.Dienstplanung; namespace Monvita { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { #region Standard 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); @@ -42,7 +43,7 @@ namespace Monvita { 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; } @@ -54,8 +55,8 @@ namespace Monvita 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; @@ -67,9 +68,9 @@ namespace Monvita { 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) { @@ -112,9 +113,9 @@ namespace Monvita } } } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { - if (item.Start.HasValue && item.Start.Value >= new DateTime(2026, 03, 01) && Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung) + if (item.Start >= new DateTime(2026, 03, 01) && Settings.ShowWorktime && Settings.EnableArbeitszeiterfassung) { return IstArbeitszeit(item); diff --git a/ReportImp/PZDDuesseldorf/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/PZDDuesseldorf/CustomMitarbeiterstundenkontoBerechnung.cs index 42f331d50..8c51d094b 100644 --- a/ReportImp/PZDDuesseldorf/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/PZDDuesseldorf/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace PZDDuesseldorf @@ -25,12 +26,12 @@ namespace PZDDuesseldorf return dd; } - 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.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { return true; } @@ -39,21 +40,21 @@ namespace PZDDuesseldorf return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace PZDDuesseldorf } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -94,14 +95,14 @@ namespace PZDDuesseldorf return sum; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { decimal totalDuration = 0; decimal duration = 0; - String cat = item.ServiceDescription.ServiceCategory.Name.ToLower(); - String kurz = item.ServiceDescription.ServiceCategory.Abbreviation.ToLower(); + String cat = item.ServiceDescription.Category.Name.ToLower(); + String kurz = item.ServiceDescription.Category.Abbreviation.ToLower(); if (item.GroupRoundedDuration.HasValue) { @@ -113,15 +114,15 @@ namespace PZDDuesseldorf } totalDuration += duration; - if (item.ServiceDescription.ServiceCategory.IsBillable && (cat.StartsWith("fachleistung") || kurz == "fl")) + if (item.ServiceDescription.Category.IsBillable && (cat.StartsWith("fachleistung") || kurz == "fl")) { emp.Custom1 += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable && (cat.StartsWith("assistenz") || kurz == "as")) + else if (item.ServiceDescription.Category.IsBillable && (cat.StartsWith("assistenz") || kurz == "as")) { emp.Custom2 += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable && (cat.StartsWith("arbeitszeit") || kurz == "az")) + else if (item.ServiceDescription.Category.IsBillable && (cat.StartsWith("arbeitszeit") || kurz == "az")) { emp.Custom3 += duration; } diff --git a/ReportImp/PassgenauUG/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs b/ReportImp/PassgenauUG/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs index 5e853dcdd..66feec903 100644 --- a/ReportImp/PassgenauUG/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs +++ b/ReportImp/PassgenauUG/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs @@ -6,6 +6,7 @@ using BeWo.Report.ReportObjects; using BeWo.Service.Plugins; using BS.Shared.Core; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace PassgenauUG @@ -18,7 +19,7 @@ namespace PassgenauUG return true; } - 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) diff --git a/ReportImp/PerspektivenEV/Service/CustomVacationService.cs b/ReportImp/PerspektivenEV/Service/CustomVacationService.cs index afdf46724..eef9478a8 100644 --- a/ReportImp/PerspektivenEV/Service/CustomVacationService.cs +++ b/ReportImp/PerspektivenEV/Service/CustomVacationService.cs @@ -79,7 +79,7 @@ namespace PerspektivenEV.Service } int? workdays = 0; - List arbeitszeiten = new List(); + List arbeitszeiten = new List(); Dictionary contractsAndWeeklyDays = new Dictionary(); // Jahresurlaubanspruch berechnen (noch kein Resturlaub Vorjahr in dieser Schleife, nur Jahresanspruch + Sonderfall Vertragsstart oder -ende mitten im Jahr) @@ -91,7 +91,7 @@ namespace PerspektivenEV.Service var end = contract.ContractEndDate?.Year ?? year; if (emp.Arbeitszeiten != null && emp.Arbeitszeiten.Count > 0) - arbeitszeiten = MapperFactory.ArbeitszeitDC_Arbeitszeit.MapToNewDCs(emp.Arbeitszeiten); + arbeitszeiten = emp.Arbeitszeiten.ToList(); if (year >= start && year <= end) workdays = contract.WeeklyDays; diff --git a/ReportImp/PflegedienstWessel/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs b/ReportImp/PflegedienstWessel/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs index 58084004f..2e2f98bc1 100644 --- a/ReportImp/PflegedienstWessel/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs +++ b/ReportImp/PflegedienstWessel/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs @@ -5,13 +5,14 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace PflegedienstWessel { public class CustomMitarbeiterstundenkontoBerechnungTagesansicht : CustomMitarbeiterstundenkontoBerechnung { - //public override bool AddServiceRecordToDuration(ServiceRecord item) + //public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) //{ // if (item.ServiceDescription != null && item.ServiceDescription.Name == "Pause") // { diff --git a/ReportImp/PflegedienstWessel/MitarbeiterstundenkontoBerechnung.cs b/ReportImp/PflegedienstWessel/MitarbeiterstundenkontoBerechnung.cs index 69c8830de..ecf2b9869 100644 --- a/ReportImp/PflegedienstWessel/MitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/PflegedienstWessel/MitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace PflegedienstWessel @@ -11,18 +12,18 @@ namespace PflegedienstWessel public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && !String.IsNullOrEmpty(item.ServiceDescription.ServiceCategory.Name) && - item.ServiceDescription.ServiceCategory.Name == "Pause") + if (item.ServiceDescription != null && !String.IsNullOrEmpty(item.ServiceDescription.Category.Name) && + item.ServiceDescription.Category.Name == "Pause") { return false; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - var p = item.ServiceDescription.ServiceCategory.ProzentAbrechnung; + var p = item.ServiceDescription.Category.Percentage; if (item.ServiceDescription.ProzentAbrechnung.HasValue) { p = item.ServiceDescription.ProzentAbrechnung.Value; @@ -52,7 +53,7 @@ namespace PflegedienstWessel return list; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { if (item.ServiceDescription != null) { @@ -66,23 +67,23 @@ namespace PflegedienstWessel duration = item.RoundedDuration; } - if (item.ServiceDescription.ServiceCategory.Name.StartsWith("Fachleistung")) + if (item.ServiceDescription.Category.Name.StartsWith("Fachleistung")) { emp.Custom1 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.StartsWith("Assistenz")) + else if (item.ServiceDescription.Category.Name.StartsWith("Assistenz")) { emp.Custom2 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.StartsWith("HD Tag")) + else if (item.ServiceDescription.Category.Name.StartsWith("HD Tag")) { emp.Custom3 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.StartsWith("Pflege")) + else if (item.ServiceDescription.Category.Name.StartsWith("Pflege")) { emp.Custom4 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.StartsWith("Overhead")) + else if (item.ServiceDescription.Category.Name.StartsWith("Overhead")) { emp.Custom5 += duration / 60; } diff --git a/ReportImp/PortaEV/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/PortaEV/CustomMitarbeiterstundenkontoBerechnung.cs index 972bbd59c..97bf70e7c 100644 --- a/ReportImp/PortaEV/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/PortaEV/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace PortaEV @@ -25,11 +26,11 @@ namespace PortaEV return dd; } - 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.ServiceCategory.Name.Contains("Arbeitszeit")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit")) { return true; } @@ -37,21 +38,21 @@ namespace PortaEV return false; } - 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)) //{ @@ -67,13 +68,13 @@ namespace PortaEV } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit")) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/PraxisPusteblume/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/PraxisPusteblume/CustomMitarbeiterstundenkontoBerechnung.cs index d2266ebcb..59b60f0bd 100644 --- a/ReportImp/PraxisPusteblume/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/PraxisPusteblume/CustomMitarbeiterstundenkontoBerechnung.cs @@ -8,6 +8,7 @@ using BeWo.Service.DCEntityMapper; using BS.Shared; using BS.Shared.Core; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace PraxisPusteblume @@ -40,7 +41,7 @@ namespace PraxisPusteblume } public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, - IList recordsAll) + IList recordsAll) { var test = base.GetAdditionalHours(days, berichtStart, berichtEnde, ed, recordsAll); @@ -54,7 +55,7 @@ namespace PraxisPusteblume return test; } - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { if (berichtsAnfang < new DateTime(2019, 12, 1)) @@ -66,14 +67,14 @@ namespace PraxisPusteblume 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)) //{ @@ -89,13 +90,13 @@ namespace PraxisPusteblume } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -112,9 +113,9 @@ namespace PraxisPusteblume return sum; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.IsBillable && item.Start.Value < new DateTime(2019, 10, 1)) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.IsBillable && item.Start < new DateTime(2019, 10, 1)) { if (item.CostBearer2SupportConcept != null) { @@ -122,7 +123,7 @@ namespace PraxisPusteblume var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(cb.CostRatePeriods); - var rateFactor = crlist.GetCostRatePeriodForDate(CostRatePeriodType.RateFactor, item.Start.Value); + var rateFactor = crlist.GetCostRatePeriodForDate(CostRatePeriodType.RateFactor, item.Start); if (rateFactor != null && rateFactor.CostRateValue.HasValue) { @@ -143,9 +144,9 @@ namespace PraxisPusteblume } } - else if (item.Start.Value >= new DateTime(2019, 12, 1)) + else if (item.Start >= new DateTime(2019, 12, 1)) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } diff --git a/ReportImp/ProfEggersStiftung/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/ProfEggersStiftung/CustomMitarbeiterstundenkontoBerechnung.cs index e07e29da4..6a3f1ecbc 100644 --- a/ReportImp/ProfEggersStiftung/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/ProfEggersStiftung/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace ProfEggersStiftung @@ -25,12 +26,12 @@ namespace ProfEggersStiftung return dd; } - 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.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { return true; } @@ -39,21 +40,21 @@ namespace ProfEggersStiftung return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace ProfEggersStiftung } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/PsychosozialerTraegervereinReports/Mitarbeiterstundenzettel.cs b/ReportImp/PsychosozialerTraegervereinReports/Mitarbeiterstundenzettel.cs index 33ee19333..2232002ff 100644 --- a/ReportImp/PsychosozialerTraegervereinReports/Mitarbeiterstundenzettel.cs +++ b/ReportImp/PsychosozialerTraegervereinReports/Mitarbeiterstundenzettel.cs @@ -5,6 +5,7 @@ using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; using BS.Shared.Core; @@ -164,9 +165,9 @@ namespace BeWo.PsychosozialerTraegervereinReports { foreach (var sr in ed.ServiceRecordsInSelectedTimeSpan) { - if (sr.Start.Value.Date == dayDetail.Date.Date) + if (sr.Start.Date == dayDetail.Date.Date) { - if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (sr.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { if (sr.ServiceDescription.Name.ToLower().Contains("krank") || sr.ServiceDescription.Name.ToLower().Contains("urlaub")) @@ -213,14 +214,14 @@ namespace BeWo.PsychosozialerTraegervereinReports this.bindingSource1.DataSource = pRO; } - private decimal GetFls(IList alleRecords, MitarbeiterstundenkontoRO.DayDetail dayDetail) + private decimal GetFls(IList alleRecords, MitarbeiterstundenkontoRO.DayDetail dayDetail) { decimal fls = 0; foreach (var sr in alleRecords) { - if (sr.Start.Value.Date == dayDetail.Date.Date) + if (sr.Start.Date == dayDetail.Date.Date) { - if (sr.ServiceDescription.ServiceCategory.IsBillable) + if (sr.ServiceDescription.Category.IsBillable) { if (sr.GroupRoundedDuration.HasValue) { diff --git a/ReportImp/PsychosozialerTraegervereinReports/PstMitarbeiterstundenkontoBerechnungStundenzettel.cs b/ReportImp/PsychosozialerTraegervereinReports/PstMitarbeiterstundenkontoBerechnungStundenzettel.cs index 5abfa93ba..3b1fc02c9 100644 --- a/ReportImp/PsychosozialerTraegervereinReports/PstMitarbeiterstundenkontoBerechnungStundenzettel.cs +++ b/ReportImp/PsychosozialerTraegervereinReports/PstMitarbeiterstundenkontoBerechnungStundenzettel.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.PsychosozialerTraegervereinReports @@ -30,9 +31,9 @@ namespace BeWo.PsychosozialerTraegervereinReports return true; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { if (!item.ServiceDescription.Name.ToLower().Contains("krank") && !item.ServiceDescription.Name.ToLower().Contains("urlaub")) return true; @@ -40,21 +41,21 @@ namespace BeWo.PsychosozialerTraegervereinReports return false; } - 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(); - empDetail.ServiceRecordsInSelectedTimeSpan = new List(); + sum.RecordsImBerichtszeitraum = 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) { //if (AddServiceRecordToDuration(item)) //{ @@ -71,9 +72,9 @@ namespace BeWo.PsychosozialerTraegervereinReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (!item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (!item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { flsGesamt += duration; } @@ -116,20 +117,20 @@ namespace BeWo.PsychosozialerTraegervereinReports return base.GetSollArbeitszeitProArbeitstag(contract, ed); } - public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) { var ah = base.GetAdditionalHours(days, berichtStart, berichtEnde, ed, recordsAll); 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) { var addKrank = false; var addUrlaub = false; //var dayDetail = FindDayDetail(sr, days); - var day = sr.Start.Value; + var day = sr.Start; var dayDetail = days.FirstOrDefault(dd => dd.Date.Day == day.Day); var faktor = GetFeiertagsFaktor(day); diff --git a/ReportImp/RatPlusTat/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/RatPlusTat/CustomMitarbeiterstundenkontoBerechnung.cs index 6a7d13cdc..bf91c5401 100644 --- a/ReportImp/RatPlusTat/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/RatPlusTat/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace RatPlusTat @@ -25,11 +26,11 @@ namespace RatPlusTat return dd; } - 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.ServiceCategory.Name.Contains("Arbeitszeit") && !item.ServiceDescription.Name.Contains("Pause")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit") && !item.ServiceDescription.Name.Contains("Pause")) { return true; } @@ -37,21 +38,21 @@ namespace RatPlusTat return false; } - 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)) //{ @@ -67,13 +68,13 @@ namespace RatPlusTat } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit") && !item.ServiceDescription.Name.Contains("Pause")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit") && !item.ServiceDescription.Name.Contains("Pause")) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/RomanRogerPuth/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/RomanRogerPuth/CustomMitarbeiterstundenkontoBerechnung.cs index 81a1878af..1df64aa35 100644 --- a/ReportImp/RomanRogerPuth/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/RomanRogerPuth/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace RomanRogerPuth @@ -36,14 +37,14 @@ namespace RomanRogerPuth return dd; } - 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 != "Pause") { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -53,21 +54,21 @@ namespace RomanRogerPuth return false; } - 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)) //{ @@ -83,9 +84,9 @@ namespace RomanRogerPuth } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { if (item.ServiceDescription.Name != "Pause") @@ -97,7 +98,7 @@ namespace RomanRogerPuth //arbeitszeit -= duration; // Achtung muss auskommentiert sein - sonst doppelter Abzug } } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -115,7 +116,7 @@ namespace RomanRogerPuth return sum; } - 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) @@ -126,7 +127,7 @@ namespace RomanRogerPuth 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); @@ -135,12 +136,12 @@ namespace RomanRogerPuth dd.PauseInMinuten += (decimal)sr.DurationMinutes; } - else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + else if (sr.ServiceDescription.Category.Name == "Arbeitszeit") { dd.MinutesTotal += (decimal)sr.DurationMinutes; } else if (sr.ServiceDescription.Name != "Arbeitszeit" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += (decimal)sr.DurationMinutes; } @@ -159,7 +160,7 @@ namespace RomanRogerPuth return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -179,13 +180,13 @@ namespace RomanRogerPuth { return true; } - 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/RosegGmbH/ApiMitarbeiterstundenkontoBerechnung.cs b/ReportImp/RosegGmbH/ApiMitarbeiterstundenkontoBerechnung.cs index 9078da95c..cd1ddb9b2 100644 --- a/ReportImp/RosegGmbH/ApiMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/RosegGmbH/ApiMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace RosegGmbH @@ -226,7 +227,7 @@ namespace RosegGmbH return 0; } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.ServiceDescription != null && (item.ServiceDescription.Name == "Fehlzeit" || item.ServiceDescription.Name == "Freihalteregelung" || item.ServiceDescription.Name == "Ausfall C19")) { @@ -235,11 +236,11 @@ namespace RosegGmbH return true; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Vertretung")) + if (item.ServiceDescription.Category.Name.Contains("Vertretung")) { decimal duration = 0; if (item.GroupRoundedDuration.HasValue) diff --git a/ReportImp/SHKService/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SHKService/CustomMitarbeiterstundenkontoBerechnung.cs index 8c5988596..f88cdb200 100644 --- a/ReportImp/SHKService/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SHKService/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SHKService @@ -33,13 +34,13 @@ namespace SHKService AktuellBearbeitetesEmployeeDetail = empDetail; } - 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 != "Pause") { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -48,7 +49,7 @@ namespace SHKService return false; } - public override void CorrectOverlappingTimes(IList serviceRecords) + public override void CorrectOverlappingTimes(IList serviceRecords) { base.CorrectOverlappingTimes(serviceRecords); } @@ -164,37 +165,37 @@ namespace SHKService return stdGesamt; } - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { - //base.CorrectOverlappingTimes(groupFilteredRecords.Where(s => s.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" && s.ServiceDescription.Name != "Pause").ToList()); + //base.CorrectOverlappingTimes(groupFilteredRecords.Where(s => s.ServiceDescription.Category.Name == "Arbeitszeit" && s.ServiceDescription.Name != "Pause").ToList()); 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)) //{ var duration = GetDuration(item, empDetail); if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" && item.ServiceDescription.Name != "Pause") + if (item.ServiceDescription.Category.Name == "Arbeitszeit" && item.ServiceDescription.Name != "Pause") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -211,14 +212,14 @@ namespace SHKService return sum; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { return base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); } - 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) @@ -229,7 +230,7 @@ namespace SHKService 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); @@ -238,14 +239,14 @@ namespace SHKService dd.PauseInMinuten += duration; } - else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + else if (sr.ServiceDescription.Category.Name == "Arbeitszeit") { dd.MinutesTotal += duration; } else if (sr.ServiceDescription.Name != "Arbeitszeit" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += duration; } @@ -289,11 +290,11 @@ namespace SHKService } - 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 == "Arbeitszeit" && sr.ServiceDescription.Name == "Zeitabzug") + if (sr.ServiceDescription.Category.Name == "Arbeitszeit" && sr.ServiceDescription.Name == "Zeitabzug") { d *= -1; } @@ -344,13 +345,13 @@ namespace SHKService return dd; } - 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/SKFLeverkusen/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SKFLeverkusen/CustomMitarbeiterstundenkontoBerechnung.cs index fba7d0cf4..c8f18362c 100644 --- a/ReportImp/SKFLeverkusen/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SKFLeverkusen/CustomMitarbeiterstundenkontoBerechnung.cs @@ -5,12 +5,13 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using BeWo.Service.Dienstplanung; namespace SKFLeverkusen { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) { base.CorrectOverlappingTimes(groupFilteredRecords); } diff --git a/ReportImp/SKMAachen/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SKMAachen/CustomMitarbeiterstundenkontoBerechnung.cs index f630c407e..4eab41441 100644 --- a/ReportImp/SKMAachen/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SKMAachen/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SKMAachen @@ -39,13 +40,13 @@ namespace SKMAachen return dd; } - 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.Start.HasValue && item.Start.Value.Date < new DateTime(2023, 10, 17)) + if (item.Start.Date < new DateTime(2023, 10, 17)) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -54,7 +55,7 @@ namespace SKMAachen { if (!item.ServiceDescription.Name.Contains("Pause")) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit")) { return true; } @@ -66,21 +67,21 @@ namespace SKMAachen return false; } - 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)) //{ @@ -96,11 +97,11 @@ namespace SKMAachen } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")) + if (item.ServiceDescription.Category.Name.Contains("Arbeitszeit")) { - if (item.Start.HasValue && item.Start.Value.Date < new DateTime(2023, 10, 17)) + if (item.Start.Date < new DateTime(2023, 10, 17)) arbeitszeit += duration; else { @@ -110,7 +111,7 @@ namespace SKMAachen // arbeitszeit -= duration; } } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -128,7 +129,7 @@ namespace SKMAachen return sum; } - 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) @@ -139,30 +140,30 @@ namespace SKMAachen 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); - if (sr.Start.HasValue && sr.Start.Value.Date > new DateTime(2023, 10, 16)) + if (sr.Start.Date > new DateTime(2023, 10, 16)) { if (sr.ServiceDescription.Name.Contains("Pause")) { dd.PauseInMinuten += (decimal)sr.DurationMinutes; } - else if (sr.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")) + else if (sr.ServiceDescription.Category.Name.Contains("Arbeitszeit")) { dd.MinutesTotal += (decimal)sr.DurationMinutes; } } else { - if (sr.ServiceDescription.ServiceCategory.Name.Contains("Arbeitszeit")) + if (sr.ServiceDescription.Category.Name.Contains("Arbeitszeit")) dd.MinutesTotal += (decimal)sr.DurationMinutes; } if (sr.ServiceDescription.Name != "Arbeitszeit" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += (decimal)sr.DurationMinutes; } @@ -181,7 +182,7 @@ namespace SKMAachen return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -196,17 +197,17 @@ namespace SKMAachen return duration; } - 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) { - if (sr.Start.HasValue && sr.Start.Value.Date > new DateTime(2023, 10, 16)) + if (sr.Start.Date > new DateTime(2023, 10, 16)) { if (sr.ServiceDescription.Name == "Pause") { diff --git a/ReportImp/SKMKrefeld/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/SKMKrefeld/Mitarbeiterarbeitszeitkonto.cs index 08a0d8629..b4698b72e 100644 --- a/ReportImp/SKMKrefeld/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/SKMKrefeld/Mitarbeiterarbeitszeitkonto.cs @@ -48,7 +48,7 @@ namespace SkmKrefeld if (day.ServiceRecords != null && day.ServiceRecords.Count > 0) { fls = Convert.ToDecimal(day.ServiceRecords - .Where(s => s.ServiceDescription != null && s.ServiceDescription.ServiceCategory != null && s.ServiceDescription.ServiceCategory.IsBillable) + .Where(s => s.ServiceDescription != null && s.ServiceDescription.Category != null && s.ServiceDescription.Category.IsBillable) .Sum(sr => sr.DurationMinutes) / 60); } if (day.AbsenceTimes != null) diff --git a/ReportImp/SKMKrefeld/Mitarbeiterstundenkonto.cs b/ReportImp/SKMKrefeld/Mitarbeiterstundenkonto.cs index 41e456556..0c9546c83 100644 --- a/ReportImp/SKMKrefeld/Mitarbeiterstundenkonto.cs +++ b/ReportImp/SKMKrefeld/Mitarbeiterstundenkonto.cs @@ -55,7 +55,7 @@ namespace SkmKrefeld //ed.Ueberstunden = ed.Ueberstunden + ed.UeberstundenAusbezahlt; - var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Value.Date >= pRO.ReportStartDate && s.Start.Value.Date <= pRO.ReportEndDate).ToList(); + var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Date >= pRO.ReportStartDate && s.Start.Date <= pRO.ReportEndDate).ToList(); // In Custom15 die Ausfallstunden aussummieren var ausfallstunden = 0.0m; decimal ausfall = 0; diff --git a/ReportImp/SKMKrefeld/MitarbeiterstundenkontoJahr.cs b/ReportImp/SKMKrefeld/MitarbeiterstundenkontoJahr.cs index 26687cb98..12fde9875 100644 --- a/ReportImp/SKMKrefeld/MitarbeiterstundenkontoJahr.cs +++ b/ReportImp/SKMKrefeld/MitarbeiterstundenkontoJahr.cs @@ -28,7 +28,7 @@ namespace SkmKrefeld //eds.EmployeeDetail.Ueberstunden = eds.EmployeeDetail.Ueberstunden + eds.EmployeeDetail.UeberstundenAusbezahlt; var end = eds.Monat.AddMonths(1); - var srForEd = eds.EmployeeDetail.AllServiceRecords.Where(s => s.EmployeeOid == eds.EmployeeDetail.Employee.Oid && s.Start.Value.Date >= eds.Monat && s.Start.Value.Date < end).ToList(); + var srForEd = eds.EmployeeDetail.AllServiceRecords.Where(s => s.EmployeeOid == eds.EmployeeDetail.Employee.Oid && s.Start.Date >= eds.Monat && s.Start.Date < end).ToList(); // In Custom15 die Ausfallstunden aufsummieren var ausfallstunden = 0.0m; decimal ausfall = 0; diff --git a/ReportImp/SKMKrefeld/Teamstundenkonto.cs b/ReportImp/SKMKrefeld/Teamstundenkonto.cs index effbf20c4..fa87e5731 100644 --- a/ReportImp/SKMKrefeld/Teamstundenkonto.cs +++ b/ReportImp/SKMKrefeld/Teamstundenkonto.cs @@ -53,7 +53,7 @@ namespace SkmKrefeld //ed.Ueberstunden = ed.Ueberstunden + ed.UeberstundenAusbezahlt; - var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Value.Date >= pRO.ReportStartDate && s.Start.Value.Date <= pRO.ReportEndDate).ToList(); + var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Date >= pRO.ReportStartDate && s.Start.Date <= pRO.ReportEndDate).ToList(); // In Custom15 die Ausfallstunden aussummieren var ausfallstunden = 0.0m; decimal ausfall = 0; diff --git a/ReportImp/SeWo/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs b/ReportImp/SeWo/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs index 7fddabe9b..b5a0e22f0 100644 --- a/ReportImp/SeWo/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs +++ b/ReportImp/SeWo/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs @@ -5,13 +5,14 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace BeWo.SeWo { public class CustomMitarbeiterstundenkontoBerechnungTagesansicht : SeWoMitarbeiterstundenkontoBerechnung { - //public override bool AddServiceRecordToDuration(ServiceRecord item) + //public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) //{ // if (item.ServiceDescription != null && item.ServiceDescription.Name == "Pause") // { diff --git a/ReportImp/SeWo/MitarbeiterstundenkontoBerechnung.cs b/ReportImp/SeWo/MitarbeiterstundenkontoBerechnung.cs index bdc1cb26d..4f751a7e6 100644 --- a/ReportImp/SeWo/MitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SeWo/MitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace BeWo.SeWo @@ -18,9 +19,9 @@ namespace BeWo.SeWo //private MitarbeiterstundenkontoRO.EmployeeDetail currentEmployee = null; - public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) { - StundenBerechnungHelper.CorrectOverlappingTimes(groupFilteredRecords.Where(s => s.ServiceDescription.ServiceCategory.Name != "SeWo Ruf" && s.ServiceDescription.ServiceCategory.Name != "SeWo Notdienst").OrderBy(s => s.Start).ToList()); + StundenBerechnungHelper.CorrectOverlappingTimes(groupFilteredRecords.Where(s => s.ServiceDescription.Category.Name != "SeWo Ruf" && s.ServiceDescription.Category.Name != "SeWo Notdienst").OrderBy(s => s.Start).ToList()); } public override void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro) @@ -67,7 +68,7 @@ namespace BeWo.SeWo return base.BerechneUeberstunden(ed, ueberstundenStd, c, start, ende); } - //public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + //public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) // { // if (currentEmployee == null || emp.Employee.Oid != currentEmployee.Employee.Oid) // { @@ -76,7 +77,7 @@ namespace BeWo.SeWo // } // } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (IsKrankheitAbsenceServiceRecord(item) || IsUrlaubAbsenceServiceRecord(item)) { @@ -84,26 +85,26 @@ namespace BeWo.SeWo } if (item.ServiceDescription != null && !String.IsNullOrEmpty(item.ServiceDescription.Name) && - item.ServiceDescription.Name == "Pause" && item.ServiceDescription.ServiceCategory.Name != "Schlafbereitschaft") + item.ServiceDescription.Name == "Pause" && item.ServiceDescription.Category.Name != "Schlafbereitschaft") { return false; } if (IgnoreSeWoRufUndNotdienst) { - if (item.ServiceDescription.ServiceCategory.Name == "SeWo Ruf") + if (item.ServiceDescription.Category.Name == "SeWo Ruf") { return false; } - if (item.ServiceDescription.ServiceCategory.Name == "SeWo Notdienst") + if (item.ServiceDescription.Category.Name == "SeWo Notdienst") { return false; } } - //if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + //if (item.ServiceDescription != null && item.ServiceDescription.Category != null) //{ - // var p = item.ServiceDescription.ServiceCategory.ProzentAbrechnung; + // var p = item.ServiceDescription.Category.ProzentAbrechnung; // if (p != 100 && p > 0) // { @@ -115,7 +116,7 @@ namespace BeWo.SeWo return true; } - private bool IsKrankheitAbsenceServiceRecord(ServiceRecord item) + private bool IsKrankheitAbsenceServiceRecord(StundenkontoServiceRecord item) { if (item.ServiceDescription.Name.ToLower().Contains("krankheit")) { @@ -128,7 +129,7 @@ namespace BeWo.SeWo return false; } - private bool IsUrlaubAbsenceServiceRecord(ServiceRecord item) + private bool IsUrlaubAbsenceServiceRecord(StundenkontoServiceRecord item) { if (item.ServiceDescription.Name.ToLower().Contains("urlaub")) { @@ -138,14 +139,14 @@ namespace BeWo.SeWo return false; } - protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, + protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { AbsenceTimeHours ath = new AbsenceTimeHours(); foreach (var item in groupFilteredRecords) { - if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde) + if (item.Start >= berichtsAnfang && item.Start < berichtsEnde) { if (IsKrankheitAbsenceServiceRecord(item)) { @@ -170,30 +171,30 @@ namespace BeWo.SeWo return true; } - public override decimal BerechneAutoPausen(IList recordsThisMonth) + public override decimal BerechneAutoPausen(IList recordsThisMonth) { return 0; } - public override bool IsServiceRecordFehlzeit(ServiceRecord sr) + public override bool IsServiceRecordFehlzeit(StundenkontoServiceRecord sr) { return false; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { if (item.ServiceDescription != null) { - if (!String.IsNullOrEmpty(item.ServiceDescription.Name) && item.ServiceDescription.Name.Contains("Pause") && item.ServiceDescription.ServiceCategory.Name != "Schlafbereitschaft") + if (!String.IsNullOrEmpty(item.ServiceDescription.Name) && item.ServiceDescription.Name.Contains("Pause") && item.ServiceDescription.Category.Name != "Schlafbereitschaft") { return; } - if (item.ServiceDescription.ServiceCategory.Name == "SeWo Ruf") + if (item.ServiceDescription.Category.Name == "SeWo Ruf") { return; } - if (item.ServiceDescription.ServiceCategory.Name == "SeWo Notdienst") + if (item.ServiceDescription.Category.Name == "SeWo Notdienst") { return; } @@ -208,9 +209,9 @@ namespace BeWo.SeWo duration = item.RoundedDuration; } - if (item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription.Category != null) { - var p = item.ServiceDescription.ServiceCategory.ProzentStundenkonto ?? item.ServiceDescription.ServiceCategory.ProzentAbrechnung; + var p = item.ServiceDescription.Category.ProzentStundenkonto ?? item.ServiceDescription.Category.Percentage; if (item.ServiceDescription.ProzentStundenkonto.HasValue) { @@ -224,15 +225,15 @@ namespace BeWo.SeWo - if (item.ServiceDescription.ServiceCategory.Name.Contains("Fachleistung")) + if (item.ServiceDescription.Category.Name.Contains("Fachleistung")) { emp.Custom1 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name == "Assistenzleistung") + else if (item.ServiceDescription.Category.Name == "Assistenzleistung") { emp.Custom2 += duration / 60; } - else if (item.ServiceDescription.ServiceCategory.Name.Contains("Overhead")) + else if (item.ServiceDescription.Category.Name.Contains("Overhead")) { emp.Custom3 += duration / 60; } diff --git a/ReportImp/SeWo/StundenBerechnungHelper.cs b/ReportImp/SeWo/StundenBerechnungHelper.cs index 057cdee0f..82ad527b4 100644 --- a/ReportImp/SeWo/StundenBerechnungHelper.cs +++ b/ReportImp/SeWo/StundenBerechnungHelper.cs @@ -6,6 +6,7 @@ using System.Text; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; using BS.Shared.Core; namespace BeWo.SeWo @@ -90,7 +91,107 @@ namespace BeWo.SeWo return pausenZeit; } - internal static void CorrectOverlappingTimes(IList serviceRecords) + internal static void CorrectOverlappingTimes(IList serviceRecords) + { + var oldRecords = new List(); + + foreach (var newRecord in serviceRecords) + { + if (newRecord.Start.Second > 0) + { + continue; + } + if (newRecord.ServiceDescription.Name == "Pause") + { + continue; + } + bool isGroup = false; + var minuten = newRecord.RoundedDuration; + if (newRecord.GroupRoundedDuration.HasValue) + { + minuten = newRecord.GroupRoundedDuration.Value; + isGroup = true; + } + var newSpan = new DateTimeSpan + { + StartDateTime = newRecord.Start, + EndDateTime = newRecord.Start.AddMinutes((double)minuten) + }; + + foreach (var oldRecord in oldRecords) + { + var oldSpan = new DateTimeSpan + { + StartDateTime = oldRecord.Start, + EndDateTime = oldRecord.Start.AddMinutes((double) oldRecord.RoundedDuration) + }; + if (oldRecord.GroupRoundedDuration.HasValue) + { + oldSpan.EndDateTime = oldRecord.Start.AddMinutes((double) oldRecord.GroupRoundedDuration); + } + + if (oldSpan.Overlaps(newSpan)) + { + DateTime start = newSpan.StartDateTime; + if (oldSpan.StartDateTime > start) + start = oldSpan.StartDateTime; + + DateTime end = newSpan.EndDateTime; + + if (oldSpan.EndDateTime < end) + end = oldSpan.EndDateTime; + + + if (newSpan.StartDateTime >= oldSpan.StartDateTime) + { + newSpan.StartDateTime = oldSpan.EndDateTime; + if (newSpan.StartDateTime > newSpan.EndDateTime) + { + newSpan.StartDateTime = newSpan.EndDateTime; + } + newRecord.Start = newSpan.StartDateTime; + newRecord.End = newSpan.EndDateTime; + + if (!isGroup) + { + newRecord.RoundedDuration = + (decimal) newRecord.End.Subtract(newRecord.Start).TotalMinutes; + } + else + { + newRecord.GroupRoundedDuration = (decimal)newRecord.End.Subtract(newRecord.Start).TotalMinutes; + } + } + else + { + oldSpan.StartDateTime = newSpan.EndDateTime; + if (oldSpan.StartDateTime > oldSpan.EndDateTime) + { + oldSpan.StartDateTime = oldSpan.EndDateTime; + } + oldRecord.Start= oldSpan.StartDateTime; + oldRecord.End = oldSpan.EndDateTime; + + + if (!isGroup) + { + oldRecord.RoundedDuration = (decimal)oldRecord.End.Subtract(oldRecord.Start).TotalMinutes; + } + else + { + oldRecord.GroupRoundedDuration = (decimal)oldRecord.End.Subtract(oldRecord.Start).TotalMinutes; + } + + } + + } + } + oldRecords.Add(newRecord); + + } + } + + internal static void CorrectOverlappingTimes2(IList serviceRecords) { List oldRecords = new List(); @@ -122,13 +223,13 @@ namespace BeWo.SeWo var oldSpan = new DateTimeSpan { StartDateTime = oldRecord.Start.Value, - EndDateTime = oldRecord.Start.Value.AddMinutes((double) oldRecord.RoundedDuration) + EndDateTime = oldRecord.Start.Value.AddMinutes((double)oldRecord.RoundedDuration) }; if (oldRecord.GroupRoundedDuration.HasValue) { - oldSpan.EndDateTime = oldRecord.Start.Value.AddMinutes((double) oldRecord.GroupRoundedDuration); + oldSpan.EndDateTime = oldRecord.Start.Value.AddMinutes((double)oldRecord.GroupRoundedDuration); } - + if (oldSpan.Overlaps(newSpan)) { DateTime start = newSpan.StartDateTime; @@ -139,7 +240,7 @@ namespace BeWo.SeWo if (oldSpan.EndDateTime < end) end = oldSpan.EndDateTime; - + if (newSpan.StartDateTime >= oldSpan.StartDateTime) { @@ -154,7 +255,7 @@ namespace BeWo.SeWo if (!isGroup) { newRecord.RoundedDuration = - (decimal) newRecord.End.Value.Subtract(newRecord.Start.Value).TotalMinutes; + (decimal)newRecord.End.Value.Subtract(newRecord.Start.Value).TotalMinutes; } else { @@ -168,7 +269,7 @@ namespace BeWo.SeWo { oldSpan.StartDateTime = oldSpan.EndDateTime; } - oldRecord.Start= oldSpan.StartDateTime; + oldRecord.Start = oldSpan.StartDateTime; oldRecord.End = oldSpan.EndDateTime; @@ -180,7 +281,7 @@ namespace BeWo.SeWo { oldRecord.GroupRoundedDuration = (decimal)oldRecord.End.Value.Subtract(oldRecord.Start.Value).TotalMinutes; } - + } } @@ -189,8 +290,6 @@ namespace BeWo.SeWo } } - - private static void CorrectOverlappingTimesForServiceRecords(List serviceRecords, List oldRecords) { foreach (var newRecord in serviceRecords) diff --git a/ReportImp/SeWo/Zeitzuschlagsbeleg.cs b/ReportImp/SeWo/Zeitzuschlagsbeleg.cs index 36a000825..5eed3d10d 100644 --- a/ReportImp/SeWo/Zeitzuschlagsbeleg.cs +++ b/ReportImp/SeWo/Zeitzuschlagsbeleg.cs @@ -13,6 +13,7 @@ using BeWo.Report; using BeWo.Service.DCEntityMapper; using BeWo.Service.Plugins; using DevExpress.Charts.Native; +using BeWo.Service.Dienstplanung; namespace BeWo.SeWo { @@ -79,16 +80,16 @@ namespace BeWo.SeWo { foreach (var sr in ed.ServiceRecordsInSelectedTimeSpan) { - if (sr.DistanceInMeter.HasValue) + if (sr.DistanceInMeter > 0) { - kmTotal += sr.DistanceInMeter.Value; + kmTotal += sr.DistanceInMeter; } - if (sr.ServiceDescription.ServiceCategory.Name == "SeWo Ruf") + if (sr.ServiceDescription.Category.Name == "SeWo Ruf") { rufTotal += GetDuration(sr); } - else if (sr.ServiceDescription.ServiceCategory.Name == "SeWo Notdienst") + else if (sr.ServiceDescription.Category.Name == "SeWo Notdienst") { notdienstTotal += GetDuration(sr); } @@ -180,9 +181,9 @@ namespace BeWo.SeWo } } - private void AddValueToTable(ServiceRecord sr) + private void AddValueToTable(StundenkontoServiceRecord sr) { - DateTime datum = sr.Start.Value; + DateTime datum = sr.Start; if (datum.Second == 0) { @@ -231,18 +232,18 @@ namespace BeWo.SeWo } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; - if (sr.ServiceDescription.Name != "Pause" && !sr.ServiceDescription.ServiceCategory.Name.Contains("Rufbereitschaft")) + if (sr.ServiceDescription.Name != "Pause" && !sr.ServiceDescription.Category.Name.Contains("Rufbereitschaft")) { - if (sr.ServiceDescription.ServiceCategory.Name == "Verwaltung" || sr.ServiceDescription.ServiceCategory.Name == "Organisation") + if (sr.ServiceDescription.Category.Name == "Verwaltung" || sr.ServiceDescription.Category.Name == "Organisation") { return 0; } - if (sr.ServiceDescription.ServiceCategory.Name.Contains("Overhead")) + if (sr.ServiceDescription.Category.Name.Contains("Overhead")) { if (sr.ServiceDescription.Name != "Übergabe" && sr.ServiceDescription.Name != "Fahrtzeit") { @@ -264,9 +265,9 @@ namespace BeWo.SeWo } - if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null) + if (sr.ServiceDescription != null && sr.ServiceDescription.Category != null) { - var p = sr.ServiceDescription.ServiceCategory.ProzentStundenkonto ?? sr.ServiceDescription.ServiceCategory.ProzentAbrechnung; + var p = sr.ServiceDescription.Category.ProzentStundenkonto ?? sr.ServiceDescription.Category.Percentage; if (sr.ServiceDescription.ProzentStundenkonto.HasValue) { p = sr.ServiceDescription.ProzentStundenkonto.Value; @@ -313,7 +314,7 @@ namespace BeWo.SeWo return duration; } - private bool IsKrankheitAbsenceServiceRecord(ServiceRecord item) + private bool IsKrankheitAbsenceServiceRecord(StundenkontoServiceRecord item) { if (item.ServiceDescription.Name.ToLower().Contains("krankheit")) { @@ -326,7 +327,7 @@ namespace BeWo.SeWo return false; } - private bool IsUrlaubAbsenceServiceRecord(ServiceRecord item) + private bool IsUrlaubAbsenceServiceRecord(StundenkontoServiceRecord item) { if (item.ServiceDescription.Name.ToLower().Contains("urlaub")) { @@ -337,11 +338,11 @@ namespace BeWo.SeWo } - public virtual Zeitverteilung2 BerechneZuschlag(ServiceRecord sr) + public virtual Zeitverteilung2 BerechneZuschlag(StundenkontoServiceRecord sr) { Zeitverteilung2 zv = new Zeitverteilung2(); - DateTime datum = sr.Start.Value; + DateTime datum = sr.Start; var duration = GetDuration(sr); int nachtStart = 22; @@ -352,11 +353,11 @@ namespace BeWo.SeWo { zv.MinutenHeiligabendSilvester18_22 = CheckUhrzeiten(datum, 18, 22, (double) duration); - if (sr.Start.Value.DayOfWeek == DayOfWeek.Saturday) + if (sr.Start.DayOfWeek == DayOfWeek.Saturday) { zv.MinutenSamstag13_22 = CheckUhrzeiten(datum, 13, 18, (double) duration); } - else if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday) + else if (sr.Start.DayOfWeek == DayOfWeek.Sunday) { zv.MinutenSonntag6_22 = CheckUhrzeiten(datum, 6, 18, (double) duration); } @@ -367,19 +368,19 @@ namespace BeWo.SeWo { zv.MinutenFeiertag6_22 = CheckUhrzeiten(datum, 6, 22, (double) duration); } - else if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday) + else if (sr.Start.DayOfWeek == DayOfWeek.Sunday) { zv.MinutenSonntag6_22 = CheckUhrzeiten(datum, 6, 22, (double) duration); } - else if (sr.Start.Value.DayOfWeek == DayOfWeek.Saturday) + else if (sr.Start.DayOfWeek == DayOfWeek.Saturday) { zv.MinutenSamstag13_22 = CheckUhrzeiten(datum, 13, 22, (double) duration); } - if (sr.ServiceDescription.ServiceCategory.Name == "Schlafbereitschaft") + if (sr.ServiceDescription.Category.Name == "Schlafbereitschaft") { zv.MinutenNachtSchlaf22_6 = CheckUhrzeiten(datum, nachtStart, 6, (double)duration); } - else if (sr.ServiceDescription.ServiceCategory.Name == "Nachtwache") + else if (sr.ServiceDescription.Category.Name == "Nachtwache") { zv.MinutenNachtwache22_6 = CheckUhrzeiten(datum, nachtStart, 6, (double)duration); } diff --git a/ReportImp/SeWo/ZeitzuschlagsbelegAlt.cs b/ReportImp/SeWo/ZeitzuschlagsbelegAlt.cs index 62aa36fd5..d1e41a297 100644 --- a/ReportImp/SeWo/ZeitzuschlagsbelegAlt.cs +++ b/ReportImp/SeWo/ZeitzuschlagsbelegAlt.cs @@ -13,6 +13,7 @@ using BeWo.Report; using BeWo.Service.DCEntityMapper; using BeWo.Service.Plugins; using DevExpress.Charts.Native; +using BeWo.Service.Dienstplanung; namespace BeWo.SeWo { @@ -60,16 +61,16 @@ namespace BeWo.SeWo { foreach (var sr in ed.ServiceRecordsInSelectedTimeSpan) { - if (sr.DistanceInMeter.HasValue) + if (sr.DistanceInMeter > 0) { - kmTotal += sr.DistanceInMeter.Value; + kmTotal += sr.DistanceInMeter; } - if (sr.ServiceDescription.ServiceCategory.Name == "SeWo Ruf") + if (sr.ServiceDescription.Category.Name == "SeWo Ruf") { rufTotal += GetDuration(sr); } - else if (sr.ServiceDescription.ServiceCategory.Name == "SeWo Notdienst") + else if (sr.ServiceDescription.Category.Name == "SeWo Notdienst") { notdienstTotal += GetDuration(sr); } @@ -160,9 +161,9 @@ namespace BeWo.SeWo } } - private void AddValueToTable(ServiceRecord sr) + private void AddValueToTable(StundenkontoServiceRecord sr) { - DateTime datum = sr.Start.Value; + DateTime datum = sr.Start; if (datum.Second == 0) { @@ -208,18 +209,18 @@ namespace BeWo.SeWo } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; - if (sr.ServiceDescription.Name != "Pause" && !sr.ServiceDescription.ServiceCategory.Name.Contains("Rufbereitschaft")) + if (sr.ServiceDescription.Name != "Pause" && !sr.ServiceDescription.Category.Name.Contains("Rufbereitschaft")) { - if (sr.ServiceDescription.ServiceCategory.Name == "Verwaltung" || sr.ServiceDescription.ServiceCategory.Name == "Organisation") + if (sr.ServiceDescription.Category.Name == "Verwaltung" || sr.ServiceDescription.Category.Name == "Organisation") { return 0; } - if (sr.ServiceDescription.ServiceCategory.Name.Contains("Overhead")) + if (sr.ServiceDescription.Category.Name.Contains("Overhead")) { if (sr.ServiceDescription.Name != "Übergabe" && sr.ServiceDescription.Name != "Fahrtzeit") { @@ -241,9 +242,9 @@ namespace BeWo.SeWo } - if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null) + if (sr.ServiceDescription != null && sr.ServiceDescription.Category != null) { - var p = sr.ServiceDescription.ServiceCategory.ProzentStundenkonto ?? sr.ServiceDescription.ServiceCategory.ProzentAbrechnung; + var p = sr.ServiceDescription.Category.ProzentStundenkonto ?? sr.ServiceDescription.Category.Percentage; if (sr.ServiceDescription.ProzentStundenkonto.HasValue) { p = sr.ServiceDescription.ProzentStundenkonto.Value; @@ -290,7 +291,7 @@ namespace BeWo.SeWo return duration; } - private bool IsKrankheitAbsenceServiceRecord(ServiceRecord item) + private bool IsKrankheitAbsenceServiceRecord(StundenkontoServiceRecord item) { if (item.ServiceDescription.Name.ToLower().Contains("krankheit")) { @@ -303,7 +304,7 @@ namespace BeWo.SeWo return false; } - private bool IsUrlaubAbsenceServiceRecord(ServiceRecord item) + private bool IsUrlaubAbsenceServiceRecord(StundenkontoServiceRecord item) { if (item.ServiceDescription.Name.ToLower().Contains("urlaub")) { @@ -314,11 +315,11 @@ namespace BeWo.SeWo } - public virtual Zeitverteilung BerechneZuschlag(ServiceRecord sr) + public virtual Zeitverteilung BerechneZuschlag(StundenkontoServiceRecord sr) { Zeitverteilung zv = new Zeitverteilung(); - DateTime datum = sr.Start.Value; + DateTime datum = sr.Start; var duration = GetDuration(sr); int nachtStart = 22; @@ -329,11 +330,11 @@ namespace BeWo.SeWo { zv.MinutenHeiligabendSilvester18_23 = CheckUhrzeiten(datum, 18, 23, (double) duration); - if (sr.Start.Value.DayOfWeek == DayOfWeek.Saturday) + if (sr.Start.DayOfWeek == DayOfWeek.Saturday) { zv.MinutenSamstag13_22 = CheckUhrzeiten(datum, 13, 18, (double) duration); } - else if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday) + else if (sr.Start.DayOfWeek == DayOfWeek.Sunday) { zv.MinutenSonntag6_22 = CheckUhrzeiten(datum, 6, 18, (double) duration); } @@ -344,11 +345,11 @@ namespace BeWo.SeWo { zv.MinutenFeiertag6_22 = CheckUhrzeiten(datum, 6, 22, (double) duration); } - else if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday) + else if (sr.Start.DayOfWeek == DayOfWeek.Sunday) { zv.MinutenSonntag6_22 = CheckUhrzeiten(datum, 6, 22, (double) duration); } - else if (sr.Start.Value.DayOfWeek == DayOfWeek.Saturday) + else if (sr.Start.DayOfWeek == DayOfWeek.Saturday) { zv.MinutenSamstag13_22 = CheckUhrzeiten(datum, 13, 22, (double) duration); } diff --git a/ReportImp/SicherlebenMichaelVoß/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SicherlebenMichaelVoß/CustomMitarbeiterstundenkontoBerechnung.cs index 4d286311e..553691a0b 100644 --- a/ReportImp/SicherlebenMichaelVoß/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SicherlebenMichaelVoß/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SicherlebenMichaelVoß @@ -25,12 +26,12 @@ namespace SicherlebenMichaelVoß return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace SicherlebenMichaelVoß return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace SicherlebenMichaelVoß } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/SkfmSozialdienstKatholischerFrauenMaenner/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SkfmSozialdienstKatholischerFrauenMaenner/CustomMitarbeiterstundenkontoBerechnung.cs index 41a4ccabd..8ec09bcdd 100644 --- a/ReportImp/SkfmSozialdienstKatholischerFrauenMaenner/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SkfmSozialdienstKatholischerFrauenMaenner/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SKFM @@ -24,11 +25,11 @@ namespace SKFM return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -36,21 +37,21 @@ namespace SKFM return false; } - 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)) //{ @@ -66,13 +67,13 @@ namespace SKFM } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/SozialbueroBorggreve/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SozialbueroBorggreve/CustomMitarbeiterstundenkontoBerechnung.cs index 3632a19bd..de50bdcb6 100644 --- a/ReportImp/SozialbueroBorggreve/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SozialbueroBorggreve/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,17 +2,18 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SozialBueroBorggreve { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -20,21 +21,21 @@ namespace SozialBueroBorggreve return false; } - 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)) //{ @@ -50,13 +51,13 @@ namespace SozialBueroBorggreve } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/SozialeDiensteNiederrhein/MitarbeiterstundenkontoBerechnung.cs b/ReportImp/SozialeDiensteNiederrhein/MitarbeiterstundenkontoBerechnung.cs index 1671223dd..4588aa977 100644 --- a/ReportImp/SozialeDiensteNiederrhein/MitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SozialeDiensteNiederrhein/MitarbeiterstundenkontoBerechnung.cs @@ -7,6 +7,7 @@ using BeWo.Report.ReportObjects; using BeWo.Service.ServiceImplementations; using BS.Shared.Core; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace BeWo.SozialeDiensteNiederrhein { @@ -14,13 +15,13 @@ namespace BeWo.SozialeDiensteNiederrhein { private decimal maxWochenstunden = 40; private const int ANZ_WOCHENTAGE = 5; - //public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + //public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) //{ - // if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + // if (item.ServiceDescription != null && item.ServiceDescription.Category != null) // { - // String cat = item.ServiceDescription.ServiceCategory.Name.ToLower(); + // String cat = item.ServiceDescription.Category.Name.ToLower(); - // if (cat != "fls" && item.ServiceDescription.ServiceCategory.IsBillable) + // if (cat != "fls" && item.ServiceDescription.Category.IsBillable) // { // decimal duration = 0; // if (item.GroupRoundedDuration.HasValue) @@ -38,7 +39,7 @@ namespace BeWo.SozialeDiensteNiederrhein // } //} - 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; @@ -46,12 +47,12 @@ namespace BeWo.SozialeDiensteNiederrhein decimal andereAbrechenbareStundenGesamt = 0; var sum = new ServiceRecordSummary(); - sum.RecordsImBerichtszeitraum = new List(); + sum.RecordsImBerichtszeitraum = 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) { if (AddServiceRecordToDuration(item)) { @@ -67,13 +68,13 @@ namespace BeWo.SozialeDiensteNiederrhein } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "FLS" || item.ServiceDescription.ServiceCategory.Name == "Fehlkontakt") + if (item.ServiceDescription.Category.Name == "FLS" || item.ServiceDescription.Category.Name == "Fehlkontakt") { flsGesamt += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { andereAbrechenbareStundenGesamt += duration; } @@ -141,7 +142,7 @@ namespace BeWo.SozialeDiensteNiederrhein } ServiceRecordSummary summaryTotal = new ServiceRecordSummary(); - summaryTotal.RecordsImBerichtszeitraum = new List(); + summaryTotal.RecordsImBerichtszeitraum = new List(); decimal pause1 = 0; decimal pause2 = 0; @@ -155,15 +156,13 @@ namespace BeWo.SozialeDiensteNiederrhein decimal stundenSollGesamt = 0; decimal tatSollStdGesamt = 0; - IList groupFilteredRecords = empDetail.AllServiceRecords; + IList groupFilteredRecords = empDetail.AllServiceRecords; if (groupFilteredRecords == null) { - IList recordsAll = DAOFactory.SearchDAO.FindServiceRecords(emp.Oid, null); - recordsAll = AnalysisServiceImp.FilterActiveServiceRecords(recordsAll); - + var recordsAll = ro.AllServiceRecords.Where(s => s.EmployeeOid.HasValue && s.EmployeeOid == emp.Oid).ToList(); // - groupFilteredRecords = new List(); + groupFilteredRecords = new List(); Dictionary groupBookingDict = new Dictionary(); foreach (var item in recordsAll) { @@ -425,15 +424,15 @@ namespace BeWo.SozialeDiensteNiederrhein BerechneUeberstundenBis(empDetail, groupFilteredRecords, ro.ReportStartDate, out ueberstundenVormonat, out alteExtraUeberstunden); // ABCDEF statt alle SR alle Diensteinträge abarbeiten - 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; diff --git a/ReportImp/SozialeDienstleistungenBeckerReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SozialeDienstleistungenBeckerReports/CustomMitarbeiterstundenkontoBerechnung.cs index 648c00e4d..5025ea59e 100644 --- a/ReportImp/SozialeDienstleistungenBeckerReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SozialeDienstleistungenBeckerReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SozialeDienstleistungenBeckerReports @@ -19,7 +20,7 @@ namespace SozialeDienstleistungenBeckerReports } } - //public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) + //public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract) //{ // var neueRecords = groupFilteredRecords.Where(s => s.Start >= new DateTime(2021, 1, 1)); @@ -32,7 +33,7 @@ namespace SozialeDienstleistungenBeckerReports // } //} - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { if (item.Start< new DateTime(2021, 1, 1)) { @@ -84,7 +85,7 @@ namespace SozialeDienstleistungenBeckerReports } } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { DateTime stichTag = new DateTime(2021, 1, 1); diff --git a/ReportImp/SozialeDienstleistungenBeckerReports/Mitarbeiterstundenkonto.cs b/ReportImp/SozialeDienstleistungenBeckerReports/Mitarbeiterstundenkonto.cs index b9e252791..0779bc40d 100644 --- a/ReportImp/SozialeDienstleistungenBeckerReports/Mitarbeiterstundenkonto.cs +++ b/ReportImp/SozialeDienstleistungenBeckerReports/Mitarbeiterstundenkonto.cs @@ -25,7 +25,7 @@ namespace SozialeDienstleistungenBeckerReports { ed.Ueberstunden = ed.Ueberstunden + ed.UeberstundenAusbezahlt; - var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Value.Date >= pRO.ReportStartDate && s.Start.Value.Date <= pRO.ReportEndDate).ToList(); + var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Date >= pRO.ReportStartDate && s.Start.Date <= pRO.ReportEndDate).ToList(); // In Custom15 die Ausfallstunden aussummieren var ausfallstunden = 0.0m; if (srForEd != null) diff --git a/ReportImp/SozialeDienstleistungenBeckerReports/Teamstundenkonto.cs b/ReportImp/SozialeDienstleistungenBeckerReports/Teamstundenkonto.cs index 0990a4a3e..1aa745d00 100644 --- a/ReportImp/SozialeDienstleistungenBeckerReports/Teamstundenkonto.cs +++ b/ReportImp/SozialeDienstleistungenBeckerReports/Teamstundenkonto.cs @@ -4,6 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; using BS.Shared.Core; using BS.Shared.DataContracts; @@ -24,7 +25,7 @@ namespace SozialeDienstleistungenBeckerReports var msb = new MitarbeiterstundenkontoBerechnung(); msb.CreateReport(pRO); - Dictionary gesamteAusfallstunden = new Dictionary(); + Dictionary gesamteAusfallstunden = new Dictionary(); foreach (var td in pRO.TeamDetailList) { decimal summeAusfallstundenProTeam = 0.0m; @@ -32,7 +33,7 @@ namespace SozialeDienstleistungenBeckerReports foreach (var ed in td.EmployeeDetailList) { ed.Ueberstunden = ed.Ueberstunden + ed.UeberstundenAusbezahlt; - var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Value.Date >= pRO.ReportStartDate && s.Start.Value.Date <= pRO.ReportEndDate).ToList(); + var srForEd = ed.AllServiceRecords.Where(s => s.EmployeeOid == ed.Employee.Oid && s.Start.Date >= pRO.ReportStartDate && s.Start.Date <= pRO.ReportEndDate).ToList(); // In Custom15 die Ausfallstunden aussummieren var ausfallstunden = 0.0m; if (srForEd != null) @@ -44,8 +45,8 @@ namespace SozialeDienstleistungenBeckerReports ausfallstunden += Convert.ToDecimal(sr.DurationMinutes / 60); summeAusfallstundenProTeam += Convert.ToDecimal(sr.DurationMinutes / 60); - if (!gesamteAusfallstunden.ContainsKey(sr.Oid)) - gesamteAusfallstunden.Add(sr.Oid, sr); + if (!gesamteAusfallstunden.ContainsKey(sr.ServiceRecordOid)) + gesamteAusfallstunden.Add(sr.ServiceRecordOid, sr); } } ed.Custom15 = ausfallstunden; diff --git a/ReportImp/SozialpaedagogischePraxis/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SozialpaedagogischePraxis/CustomMitarbeiterstundenkontoBerechnung.cs index fbf36f093..024620a40 100644 --- a/ReportImp/SozialpaedagogischePraxis/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SozialpaedagogischePraxis/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SozialpaedagogischePraxis @@ -25,11 +26,11 @@ namespace SozialpaedagogischePraxis return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -37,21 +38,21 @@ namespace SozialpaedagogischePraxis return false; } - 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)) //{ @@ -67,13 +68,13 @@ namespace SozialpaedagogischePraxis } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/SpitalstiftungKonstanz/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SpitalstiftungKonstanz/CustomMitarbeiterstundenkontoBerechnung.cs index 44a71e1e7..796304018 100644 --- a/ReportImp/SpitalstiftungKonstanz/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SpitalstiftungKonstanz/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SpitalstiftungKonstanz @@ -25,12 +26,12 @@ namespace SpitalstiftungKonstanz return dd; } - 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.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { return true; } @@ -39,21 +40,21 @@ namespace SpitalstiftungKonstanz return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace SpitalstiftungKonstanz } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name.ToLower().Contains("arbeitszeit")) + if (item.ServiceDescription.Category.Name.ToLower().Contains("arbeitszeit")) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/SuchtkrankenhilfeOstfriesland/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SuchtkrankenhilfeOstfriesland/CustomMitarbeiterstundenkontoBerechnung.cs index 8e21e11c3..7ee860794 100644 --- a/ReportImp/SuchtkrankenhilfeOstfriesland/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SuchtkrankenhilfeOstfriesland/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SuchtkrankenhilfeOstfriesland @@ -25,12 +26,12 @@ namespace SuchtkrankenhilfeOstfriesland return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace SuchtkrankenhilfeOstfriesland return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace SuchtkrankenhilfeOstfriesland } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/SynpraxReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/SynpraxReports/CustomMitarbeiterstundenkontoBerechnung.cs index 8f781291f..776819ddd 100644 --- a/ReportImp/SynpraxReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/SynpraxReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace SynpraxReports @@ -10,11 +11,11 @@ namespace SynpraxReports public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -22,21 +23,21 @@ namespace SynpraxReports return false; } - 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)) //{ @@ -52,13 +53,13 @@ namespace SynpraxReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/SynpraxReports/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs b/ReportImp/SynpraxReports/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs index e0ce4b9cc..d00a4c31e 100644 --- a/ReportImp/SynpraxReports/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs +++ b/ReportImp/SynpraxReports/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs @@ -5,19 +5,20 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; using BS.Shared.Extensions; +using BeWo.Service.Dienstplanung; namespace SynpraxReports { public class CustomMitarbeiterstundenkontoBerechnungTagesansicht : MitarbeiterstundenkontoBerechnung { - 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 != "Pause") { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -26,21 +27,21 @@ namespace SynpraxReports return false; } - 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)) //{ @@ -56,9 +57,9 @@ namespace SynpraxReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { if (item.ServiceDescription.Name != "Pause") @@ -70,7 +71,7 @@ namespace SynpraxReports //arbeitszeit -= duration; } } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -87,14 +88,14 @@ namespace SynpraxReports return sum; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { return base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); } - 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); @@ -107,9 +108,9 @@ namespace SynpraxReports 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) { - if (sr.Start.Value.Date.Year == 2023 && sr.Start.Value.Date.Month == 11 && sr.Start.Value.Date.Day == 27) + if (sr.Start.Date.Year == 2023 && sr.Start.Date.Month == 11 && sr.Start.Date.Day == 27) { int test = 0; } @@ -120,12 +121,12 @@ namespace SynpraxReports dd.PauseInMinuten += (decimal)sr.DurationMinutes; } - else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + else if (sr.ServiceDescription.Category.Name == "Arbeitszeit") { dd.MinutesTotal += (decimal)sr.DurationMinutes; } else if (sr.ServiceDescription.Name != "Arbeitszeit" && - sr.ServiceDescription.ServiceCategory.IsBillable) + sr.ServiceDescription.Category.IsBillable) { dd.SpecialHours += (decimal)sr.DurationMinutes; } @@ -147,7 +148,7 @@ namespace SynpraxReports return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -183,10 +184,10 @@ namespace SynpraxReports return dd; } - public override decimal BerechnePauseMinuten(IList srList) + public override decimal BerechnePauseMinuten(IList srList) { - var list = srList.Where(s => s.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" || s.Start < new DateTime(2021, 8, 1)); + var list = srList.Where(s => s.ServiceDescription.Category.Name == "Arbeitszeit" || s.Start < new DateTime(2021, 8, 1)); return base.BerechnePauseMinuten(list.ToList()); } diff --git a/ReportImp/TranskulturellesBBBasaran/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/TranskulturellesBBBasaran/CustomMitarbeiterstundenkontoBerechnung.cs index 6bf39cacf..7cd9d7c36 100644 --- a/ReportImp/TranskulturellesBBBasaran/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/TranskulturellesBBBasaran/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace TranskulturellesBBBasaran @@ -25,12 +26,12 @@ namespace TranskulturellesBBBasaran return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace TranskulturellesBBBasaran return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace TranskulturellesBBBasaran } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/TranskulturellesBBBasaran/TranskulturellesBBBasaran.csproj b/ReportImp/TranskulturellesBBBasaran/TranskulturellesBBBasaran.csproj index b6edd8080..c0bb74c96 100644 --- a/ReportImp/TranskulturellesBBBasaran/TranskulturellesBBBasaran.csproj +++ b/ReportImp/TranskulturellesBBBasaran/TranskulturellesBBBasaran.csproj @@ -127,6 +127,10 @@ {40D8B312-EA64-49E3-A31A-5E57ED4D5654} Report + + {094331c3-ecee-4c89-bbfd-4c9ded89f0ef} + Service + {2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4} Shared diff --git a/ReportImp/TrialogReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/TrialogReports/CustomMitarbeiterstundenkontoBerechnung.cs index f16bd9416..c34a82b21 100644 --- a/ReportImp/TrialogReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/TrialogReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,15 +3,16 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.TrialogReports { public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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 != "Pause") { @@ -21,21 +22,21 @@ namespace BeWo.TrialogReports return false; } - 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)) //{ @@ -51,9 +52,9 @@ namespace BeWo.TrialogReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (!item.ServiceDescription.ServiceCategory.IsBillable) + if (!item.ServiceDescription.Category.IsBillable) { if (item.ServiceDescription.Name != "Pause") @@ -61,7 +62,7 @@ namespace BeWo.TrialogReports //else //arbeitszeit -= duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -78,13 +79,13 @@ namespace BeWo.TrialogReports return sum; } - public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden) { return base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); } - 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) @@ -95,7 +96,7 @@ namespace BeWo.TrialogReports 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); @@ -123,7 +124,7 @@ namespace BeWo.TrialogReports return list; } - private decimal GetDuration(ServiceRecord sr) + private decimal GetDuration(StundenkontoServiceRecord sr) { decimal duration = 0; @@ -159,13 +160,13 @@ namespace BeWo.TrialogReports return dd; } - public override decimal BerechnePauseMinuten(IList srListAlle) + public override decimal BerechnePauseMinuten(IList srListAlle) { - var srList = srListAlle.Where(s => s.ServiceDescription.ServiceCategory.Name.ToLower().Contains("indirekt")); + var srList = srListAlle.Where(s => s.ServiceDescription.Category.Name.ToLower().Contains("indirekt")); 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/UebergangshilfeUnnaEV/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/UebergangshilfeUnnaEV/CustomMitarbeiterstundenkontoBerechnung.cs index c6328fcdd..b2889ad26 100644 --- a/ReportImp/UebergangshilfeUnnaEV/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/UebergangshilfeUnnaEV/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace UebergangshilfeUnnaEV @@ -25,11 +26,11 @@ namespace UebergangshilfeUnnaEV return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -37,21 +38,21 @@ namespace UebergangshilfeUnnaEV return false; } - 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)) //{ @@ -67,13 +68,13 @@ namespace UebergangshilfeUnnaEV } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/VaroSozialagentur/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/VaroSozialagentur/CustomMitarbeiterstundenkontoBerechnung.cs index c6390d611..aea556c71 100644 --- a/ReportImp/VaroSozialagentur/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/VaroSozialagentur/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace VaroSozialagentur @@ -25,11 +26,11 @@ namespace VaroSozialagentur return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -37,21 +38,21 @@ namespace VaroSozialagentur return false; } - 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)) //{ @@ -67,13 +68,13 @@ namespace VaroSozialagentur } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/VereinDuerenerChristenReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/VereinDuerenerChristenReports/CustomMitarbeiterstundenkontoBerechnung.cs index 445fcd06f..430c158c4 100644 --- a/ReportImp/VereinDuerenerChristenReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/VereinDuerenerChristenReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace BeWo.VereinDuerenerChristenReports @@ -24,7 +25,7 @@ namespace BeWo.VereinDuerenerChristenReports return dd; } - public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) + public override decimal GetAdditionalHours(IList days, DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll) { if (berichtStart < new DateTime(2017, 4, 1)) { @@ -35,7 +36,7 @@ namespace BeWo.VereinDuerenerChristenReports return hours; } - public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item) + public override void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, StundenkontoServiceRecord item) { if (item.ServiceDescription != null) { @@ -84,7 +85,7 @@ namespace BeWo.VereinDuerenerChristenReports } } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { if (item.ServiceDescription != null && item.ServiceDescription.Name == "ohne Terminabsage ausgefallene FLS") { diff --git a/ReportImp/VereinDuerenerChristenReports/VereinDuerenerChristenReports.csproj b/ReportImp/VereinDuerenerChristenReports/VereinDuerenerChristenReports.csproj index 0eaa4ad1a..06f1b7e65 100644 --- a/ReportImp/VereinDuerenerChristenReports/VereinDuerenerChristenReports.csproj +++ b/ReportImp/VereinDuerenerChristenReports/VereinDuerenerChristenReports.csproj @@ -144,6 +144,10 @@ {40D8B312-EA64-49E3-A31A-5E57ED4D5654} Report + + {094331c3-ecee-4c89-bbfd-4c9ded89f0ef} + Service + {2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4} Shared diff --git a/ReportImp/VivatgGmbHReports/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/VivatgGmbHReports/CustomMitarbeiterstundenkontoBerechnung.cs index 3a749f634..5699f2497 100644 --- a/ReportImp/VivatgGmbHReports/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/VivatgGmbHReports/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace VivatgGmbHReports @@ -25,12 +26,12 @@ namespace VivatgGmbHReports return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace VivatgGmbHReports return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace VivatgGmbHReports } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/VkmAachenSbd/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/VkmAachenSbd/CustomMitarbeiterstundenkontoBerechnung.cs index 81d665ae5..9dff69930 100644 --- a/ReportImp/VkmAachenSbd/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/VkmAachenSbd/CustomMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BeWo.Service.Plugins; using VkmAachenSbd.Service; +using BeWo.Service.Dienstplanung; namespace VkmAachenSbd @@ -24,7 +25,7 @@ namespace VkmAachenSbd - protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { var s = base.BerechneStunden(empDetail, groupFilteredRecords, berichtsAnfang, berichtsEnde); @@ -44,7 +45,7 @@ namespace VkmAachenSbd } } - //public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, + //public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, // out decimal alteExtraUeberstunden) //{ // var ed = base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden); diff --git a/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs b/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs index c9bb2a242..1fea6f985 100644 --- a/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs @@ -4,6 +4,7 @@ using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BeWo.Service.Dienstplanung; namespace VkmHamm { @@ -34,7 +35,7 @@ namespace VkmHamm return dd; } - 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) { Dictionary dayToDetail = new Dictionary(); @@ -46,11 +47,11 @@ namespace VkmHamm 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) { - var dd = dayToDetail[sr.Start.Value.Day]; + var dd = dayToDetail[sr.Start.Day]; - if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (sr.ServiceDescription != null && sr.ServiceDescription.Category.Name == "Arbeitszeit") { decimal duration = GetDuration(sr, ed); if (IsUrlaubAbsenceServiceRecord(sr)) @@ -156,7 +157,7 @@ namespace VkmHamm } if (dd.ServiceRecords == null) - dd.ServiceRecords = new List(); + dd.ServiceRecords = new List(); dd.ServiceRecords.Add(sr); CalculateSpecialHours(dd, sr, duration); @@ -182,14 +183,14 @@ namespace VkmHamm 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++; @@ -215,7 +216,7 @@ namespace VkmHamm if (sr.Start < currentSpan.StartDateTime) { - currentSpan.StartDateTime = sr.Start.Value; + currentSpan.StartDateTime = sr.Start; } if (dtEnd > currentSpan.EndDateTime) { @@ -272,11 +273,11 @@ namespace VkmHamm return dayToDetail.Values.OrderBy(dd => dd.Date).ToList(); } - public override bool AddServiceRecordToDuration(ServiceRecord item) + public override bool AddServiceRecordToDuration(StundenkontoServiceRecord item) { - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null && !IsKrankAbsenceServiceRecord(item) && !IsUrlaubAbsenceServiceRecord(item) && !IsOtherAbsenceServiceRecord(item)) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null && !IsKrankAbsenceServiceRecord(item) && !IsUrlaubAbsenceServiceRecord(item) && !IsOtherAbsenceServiceRecord(item)) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -284,19 +285,19 @@ namespace VkmHamm return false; } - 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 (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde) + if (item.Start >= berichtsAnfang && item.Start < berichtsEnde) { //if (AddServiceRecordToDuration(item)) //{ @@ -311,13 +312,13 @@ namespace VkmHamm duration = item.RoundedDuration; } - if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) + if (item.ServiceDescription != null && item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" && !IsUrlaubAbsenceServiceRecord(item) && !IsKrankAbsenceServiceRecord(item) && !IsOtherAbsenceServiceRecord(item)) + if (item.ServiceDescription.Category.Name == "Arbeitszeit" && !IsUrlaubAbsenceServiceRecord(item) && !IsKrankAbsenceServiceRecord(item) && !IsOtherAbsenceServiceRecord(item)) { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } @@ -415,31 +416,31 @@ namespace VkmHamm return ueberstundenStd; } - private bool IsUrlaubAbsenceServiceRecord(ServiceRecord item) + private bool IsUrlaubAbsenceServiceRecord(StundenkontoServiceRecord item) { - if (!item.CustomerOid.HasValue && item.Start.HasValue && item.Start.Value >= new DateTime(2024, 04, 1) && item.Notice != null && item.Notice.Length > 0 && item.Notice.Trim().ToLower() == "urlaub") + if (!item.CustomerOid.HasValue && item.Start >= new DateTime(2024, 04, 1) && item.Notice != null && item.Notice.Length > 0 && item.Notice.Trim().ToLower() == "urlaub") return true; return false; } - private bool IsKrankAbsenceServiceRecord(ServiceRecord item) + private bool IsKrankAbsenceServiceRecord(StundenkontoServiceRecord item) { - if (!item.CustomerOid.HasValue && item.Start.HasValue && item.Start.Value >= new DateTime(2024, 04, 1) && item.Notice != null && item.Notice.Length > 0 && item.Notice.Trim().ToLower() == "krank") + if (!item.CustomerOid.HasValue && item.Start >= new DateTime(2024, 04, 1) && item.Notice != null && item.Notice.Length > 0 && item.Notice.Trim().ToLower() == "krank") return true; return false; } - private bool IsOtherAbsenceServiceRecord(ServiceRecord item) + private bool IsOtherAbsenceServiceRecord(StundenkontoServiceRecord item) { - if (!item.CustomerOid.HasValue && item.Start.HasValue && item.Start.Value >= new DateTime(2025, 01, 01) && item.Notice != null && item.Notice.Length > 0 && + if (!item.CustomerOid.HasValue && item.Start >= new DateTime(2025, 01, 01) && item.Notice != null && item.Notice.Length > 0 && (/*item.Notice.Trim().ToLower() == "ü-frei" || item.Notice.Trim().ToLower() == "fortbildung" ||*/ item.Notice.Trim().ToLower().Contains("reha"))) return true; return false; } - private bool IsUeberstundenFrei(ServiceRecord item) + private bool IsUeberstundenFrei(StundenkontoServiceRecord item) { if (item != null && !item.CustomerOid.HasValue && item.Notice != null && item.Notice.Trim().ToLower() == "ü-frei") return true; @@ -447,14 +448,14 @@ namespace VkmHamm return false; } - public virtual bool IsServiceRecordFehlzeit(ServiceRecord sr) + public virtual bool IsServiceRecordFehlzeit(StundenkontoServiceRecord sr) { - if (sr.Start.HasValue && sr.Start.Value >= new DateTime(2024, 04, 1) && sr.Notice != null && sr.Notice.Length > 0 && (sr.Notice.Trim().ToLower() == "ü-frei")) + if (sr.Start >= new DateTime(2024, 04, 1) && sr.Notice != null && sr.Notice.Length > 0 && (sr.Notice.Trim().ToLower() == "ü-frei")) return true; return false; } - protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) + protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { var abwesenheitenImZeitraum = groupFilteredRecords.Where(sr => sr.Start >= berichtsAnfang && sr.End <= berichtsEnde && (IsKrankAbsenceServiceRecord(sr) || IsUrlaubAbsenceServiceRecord(sr) || IsOtherAbsenceServiceRecord(sr))).ToList(); if (abwesenheitenImZeitraum.Count > 0) diff --git a/ReportImp/VkmHamm/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/VkmHamm/Mitarbeiterarbeitszeitkonto.cs index 4dea1616d..8282d2d10 100644 --- a/ReportImp/VkmHamm/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/VkmHamm/Mitarbeiterarbeitszeitkonto.cs @@ -61,9 +61,9 @@ namespace VkmHamm d.Custom1 += ", "; } d.Custom1 += sr.Notice; - if (sr.DistanceInMeter != null && sr.DistanceInMeter > 0) + if (sr.DistanceInMeter > 0) { - summeKm += sr.DistanceInMeter.Value; + summeKm += sr.DistanceInMeter; if (d.Custom2 == null) d.Custom2 = "0"; diff --git a/ReportImp/VkmHamm/Reports/VkmHammReportCreator.cs b/ReportImp/VkmHamm/Reports/VkmHammReportCreator.cs index d73409364..df64046f0 100644 --- a/ReportImp/VkmHamm/Reports/VkmHammReportCreator.cs +++ b/ReportImp/VkmHamm/Reports/VkmHammReportCreator.cs @@ -169,20 +169,21 @@ namespace VkmHamm 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 }; + 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); } // Anpassung - Ordnen nach Personalnummer statt Name Dictionary personalnummer2employee = new Dictionary(); List empsOhnePersonalnummer = new List(); - var employees = service.GetAbsenceOverview(filter).OrderBy(e => e.PersonnelNumber).ToList(); + var employees = es.GetAbsenceOverview(filter).OrderBy(e => e.PersonnelNumber).ToList(); // Alle Mitarbeiter mit ihrer Personalnummer in ein Dictionary packen, da diese ein string ist und sonst ohne // Umwandlung in einen int nicht sortiert werden kann @@ -212,12 +213,13 @@ namespace VkmHamm employees.AddRange(personalnummer2employee.Values.ToList()); employees.AddRange(empsOhnePersonalnummer); + var allEntities = DAOFactory.GenericDAO.LoadByIDs(employees.Select(e => e.EmployeeOid.Value)); // Resturlaub mit anzeigen foreach (var emp in employees) { var vs = PluginLoader.FindClass(); // Darstellungsvariante, da das normale Urlaubskonto nur den Resturlaubsstand vom Ende des Jahres anzeigt. - var konto = vs.BerechneUrlaubskontoZurDarstellung(emp, dt.Year, dt.AddMonths(1).AddTicks(-1)); + var konto = vs.BerechneUrlaubskontoZurDarstellung(allEntities.First(e => e.Oid == emp.EmployeeOid), dt.Year, dt.AddMonths(1).AddTicks(-1)); if (konto != null && konto.Count > 0) { var alleVertraglichenBudgets = konto diff --git a/ReportImp/VkmHamm2/CustomerMitarbeiterstundenkontoBerechnung.cs b/ReportImp/VkmHamm2/CustomerMitarbeiterstundenkontoBerechnung.cs index 27cdd8bfd..d1ec86573 100644 --- a/ReportImp/VkmHamm2/CustomerMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/VkmHamm2/CustomerMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace VkmHamm @@ -9,11 +10,11 @@ namespace VkmHamm public class CustomerMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung { - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } diff --git a/ReportImp/VkmRietberg/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/VkmRietberg/CustomMitarbeiterstundenkontoBerechnung.cs index 937bdd70f..5cc8f4ed2 100644 --- a/ReportImp/VkmRietberg/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/VkmRietberg/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace VkmRietberg @@ -25,12 +26,12 @@ namespace VkmRietberg return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -39,21 +40,21 @@ namespace VkmRietberg return false; } - 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)) //{ @@ -69,13 +70,13 @@ namespace VkmRietberg } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/Wegfinder/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/Wegfinder/CustomMitarbeiterstundenkontoBerechnung.cs index e350ee8c1..a81dc238c 100644 --- a/ReportImp/Wegfinder/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/Wegfinder/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Metadata.W3cXsd2001; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace Wegfinder @@ -25,11 +26,11 @@ namespace Wegfinder return dd; } - 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.ServiceCategory.Name == "Arbeit") + if (item.ServiceDescription.Category.Name == "Arbeit") { return true; } @@ -37,21 +38,21 @@ namespace Wegfinder return false; } - 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)) //{ @@ -67,13 +68,13 @@ namespace Wegfinder } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeit") + if (item.ServiceDescription.Category.Name == "Arbeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/WendepunktVelbert/Service/CustomVacationService.cs b/ReportImp/WendepunktVelbert/Service/CustomVacationService.cs index 203fc5839..c6b62010a 100644 --- a/ReportImp/WendepunktVelbert/Service/CustomVacationService.cs +++ b/ReportImp/WendepunktVelbert/Service/CustomVacationService.cs @@ -12,7 +12,7 @@ namespace WendepunktVelbert.Service { public class CustomVacationService : VacationService { - public override List CreateSonderurlaubItems(EmployeeDC emp, ContractDC contract, Dictionary sonderurlaubDict, List darstellungDCs) + public override List CreateSonderurlaubItems(Employee emp, Contract contract, Dictionary sonderurlaubDict, List darstellungDCs) { var sonderurlaubsItems = base.CreateSonderurlaubItems(emp, contract, sonderurlaubDict, darstellungDCs); @@ -21,7 +21,7 @@ namespace WendepunktVelbert.Service sonderurlaubsItems.Add(new UrlaubskontoDarstellungDC() { AnzahlTage = string.Format("{0:0.00}", 2), // 2 Regenerationstage - Herkunft = string.Format("EmpOid:{0} ContractOid:{1}", emp.EmployeeOid, contract.ContractOid), + Herkunft = string.Format("EmpOid:{0} ContractOid:{1}", emp.Oid, contract.Oid), Tooltip = "Regenerationstage", IsDeletable = false, DatumZurSortierung = null, diff --git a/ReportImp/ZuhauseWohnenIrisThimm/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/ZuhauseWohnenIrisThimm/CustomMitarbeiterstundenkontoBerechnung.cs index 0da4b2539..cc885b2f4 100644 --- a/ReportImp/ZuhauseWohnenIrisThimm/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/ZuhauseWohnenIrisThimm/CustomMitarbeiterstundenkontoBerechnung.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace ZuhauseWohnenIrisThimm @@ -26,11 +27,11 @@ namespace ZuhauseWohnenIrisThimm return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -38,21 +39,21 @@ namespace ZuhauseWohnenIrisThimm return false; } - 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)) //{ @@ -68,13 +69,13 @@ namespace ZuhauseWohnenIrisThimm } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/ReportImp/ahaEV/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/ahaEV/CustomMitarbeiterstundenkontoBerechnung.cs index a99b62cc2..af019366a 100644 --- a/ReportImp/ahaEV/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/ahaEV/CustomMitarbeiterstundenkontoBerechnung.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; +using BeWo.Service.Dienstplanung; namespace ahaEV @@ -45,11 +46,11 @@ namespace ahaEV return dd; } - 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.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { return true; } @@ -57,21 +58,21 @@ namespace ahaEV return false; } - 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)) //{ @@ -87,13 +88,13 @@ namespace ahaEV } if (item.ServiceDescription != null && - item.ServiceDescription.ServiceCategory != null) + item.ServiceDescription.Category != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.Category.Name == "Arbeitszeit") { arbeitszeit += duration; } - else if (item.ServiceDescription.ServiceCategory.IsBillable) + else if (item.ServiceDescription.Category.IsBillable) { flsGesamt += duration; } diff --git a/Service/Dienstplanung/StundenkontoServiceRecord.cs b/Service/Dienstplanung/StundenkontoServiceRecord.cs index d50f8e02e..2a29013be 100644 --- a/Service/Dienstplanung/StundenkontoServiceRecord.cs +++ b/Service/Dienstplanung/StundenkontoServiceRecord.cs @@ -14,6 +14,10 @@ namespace BeWo.Service.Dienstplanung { public class StundenkontoServiceRecord { + private CostBearer2SupportConcept _CostBearer2SupportConcept; + private Customer _Customer; + private Employee _Employee; + public long? ServiceRecordOid { get; set; } public DateTime Start { get; set; } public DateTime End { get; set; } @@ -28,5 +32,65 @@ namespace BeWo.Service.Dienstplanung public long? CostBearer2SupportConceptOid { get; set; } public long? CustomerOid { get; set; } public long? EmployeeOid { get; set; } + public String Notice { get; set; } + public String Notice2 { get; set; } + public String Notice3 { get; set; } + public String InsUser { get; set; } + public DateTime? InsTs { get; set; } + public int? Relevance { get; set; } + public String Custom1 { get; set; } + + //Ungerundete Minuten + public virtual double DurationMinutes + { + get + { + if (GroupOid.HasValue) + { + return (double)RoundedDuration; + } + else + { + return (End - Start).TotalMinutes; + } + } + } + + public CostBearer2SupportConcept CostBearer2SupportConcept + { + get + { + if (_CostBearer2SupportConcept == null && CostBearer2SupportConceptOid.HasValue) + { + _CostBearer2SupportConcept = DAOFactory.GenericDAO.LoadByID(CostBearer2SupportConceptOid.Value); + } + return _CostBearer2SupportConcept; + } + } + + public Customer Customer + { + get + { + if (_Customer == null && CustomerOid.HasValue) + { + _Customer = DAOFactory.GenericDAO.LoadByID(CustomerOid.Value); + } + return _Customer; + } + } + + public Employee Employee + { + get + { + if (_Employee == null && EmployeeOid.HasValue) + { + _Employee = DAOFactory.GenericDAO.LoadByID(EmployeeOid.Value); + } + return _Employee; + } + } + } } \ No newline at end of file diff --git a/Service/Plugins/PluginLoader.cs b/Service/Plugins/PluginLoader.cs index 18f4175c4..7ab850ad5 100644 --- a/Service/Plugins/PluginLoader.cs +++ b/Service/Plugins/PluginLoader.cs @@ -53,7 +53,7 @@ namespace BeWo.Service.Plugins //t = "7375324044"; // Diakonie KK Kleve //t = "1441747891"; // BeWo Mobil Köln //t = "5120047701"; // Trialog - //t = "3629696651"; // Soziale Dienste Niederrhein (SDN) + t = "3629696651"; // Soziale Dienste Niederrhein (SDN) //t = "9893557471"; // Caritas Frankfurt //t = "2918696314"; // Caritas Frankfurt 2 //t = "6923790936"; // Integra e.V. @@ -70,7 +70,7 @@ namespace BeWo.Service.Plugins //t = "5351926758"; // Viva a Vida //t = "2215396183"; // Diakonie Remscheid Lennep //t = "5157599087"; // SHG Schwerte - t = "4526293996"; // Fortis + //t = "4526293996"; // Fortis //t = "3647969417"; // Caritas Bottrop //t = "3057313346"; // SSB Mainz //t = "6246287823"; // BeWo Alsdorf @@ -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 @@ -443,6 +443,7 @@ namespace BeWo.Service.Plugins //t = "4341679073"; // Caritasverband für den Landkreis Aichach-Friedberg e.V. //t = "1996525562"; // HW Hilfswerk Inklusion und Teilhabe //t = "2348634192"; // Ravensburger Jugendhilfeverein e.V. + //t = "5692795989"; // ABW Ilse Fretz return t; #else diff --git a/Service/Plugins/VacationService.cs b/Service/Plugins/VacationService.cs index 56563fc57..590305b11 100644 --- a/Service/Plugins/VacationService.cs +++ b/Service/Plugins/VacationService.cs @@ -1080,8 +1080,6 @@ namespace BeWo.Service.Plugins if (emp.AbsenceTimes != null && emp.AbsenceTimes.Count > 0) absences = GetAllVacationAbsences(MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(emp.AbsenceTimes), year, false); - var empService = PluginLoader.FindClass(); - // Startzeitpunkt für Berechnung berechnen var firstContractYear = emp.Contracts?.Min(x => x.EntryDate)?.Year ?? int.MaxValue; // Den Vetrag raussuchen, der am frühesten beginnt var firstAbsenceTimeYear = absences.Min(x => x.Start)?.Year ?? int.MaxValue; // Jahr der ersten Abwesenheit @@ -1213,7 +1211,7 @@ namespace BeWo.Service.Plugins 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]; @@ -1319,7 +1317,7 @@ namespace BeWo.Service.Plugins 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; @@ -1414,9 +1412,9 @@ namespace BeWo.Service.Plugins return istWochenende; } - public bool CheckIstInArbeitszeiten(List arbeitszeiten, DateTime day) + public bool CheckIstInArbeitszeiten(List arbeitszeiten, DateTime day) { - if (arbeitszeiten == null || arbeitszeiten.Count == 0 || (arbeitszeiten != null && !arbeitszeiten.Any(a => a.Eintraege.Count > 0))) + if (arbeitszeiten == null || arbeitszeiten.Count == 0 || (arbeitszeiten != null && !arbeitszeiten.Any(a => a.ArbeitszeitEintraege.Count > 0))) return true; bool istInArbeitszeiten = false; @@ -1425,11 +1423,11 @@ namespace BeWo.Service.Plugins if (az.GueltigVon.HasValue && day >= az.GueltigVon.Value && az.GueltigBis.HasValue && day <= az.GueltigBis || az.GueltigVon.HasValue && day >= az.GueltigVon.Value && !az.GueltigBis.HasValue) { - if (az.Eintraege.Any(e => e.DayOfWeek == day.DayOfWeek)) + if (az.ArbeitszeitEintraege.Any(e => BS.Shared.Core.DateTimeUtils.ConvertAppointmentDayOfWeekToDayOfWeek(e.Tag) == day.DayOfWeek)) istInArbeitszeiten = true; } } - if (istInArbeitszeiten && !arbeitszeiten.Any(a => a.Eintraege.Count > 0)) + if (istInArbeitszeiten && !arbeitszeiten.Any(a => a.ArbeitszeitEintraege.Count > 0)) istInArbeitszeiten = true; return istInArbeitszeiten; diff --git a/Service/ServiceContracts/IEmployeeService.cs b/Service/ServiceContracts/IEmployeeService.cs index 9a35448b0..a92b24990 100644 --- a/Service/ServiceContracts/IEmployeeService.cs +++ b/Service/ServiceContracts/IEmployeeService.cs @@ -455,9 +455,9 @@ namespace BeWo.Service.ServiceContracts [OperationContract] decimal CalculateUrlaubstage(DateTime entryDate, DateTime? endDate, int anzahlArbeitstage, int restlicheTageImJahr, decimal? urlaubstageProJahr); - [FaultContract(typeof(BeWoFault))] - [OperationContract] - List GetGeschenkteUrlaubstageForEmployee(long empOid); + //[FaultContract(typeof(BeWoFault))] + //[OperationContract] + //List GetGeschenkteUrlaubstageForEmployee(long empOid); [FaultContract(typeof(BeWoFault))] [OperationContract] diff --git a/Service/ServiceImplementations/EmployeeServiceImp.cs b/Service/ServiceImplementations/EmployeeServiceImp.cs index f0302bf4d..2f65a59ae 100644 --- a/Service/ServiceImplementations/EmployeeServiceImp.cs +++ b/Service/ServiceImplementations/EmployeeServiceImp.cs @@ -2003,23 +2003,23 @@ namespace BeWo.Service.ServiceImplementations } - public List GetGeschenkteUrlaubstageForEmployee(long empOid) - { - try - { - List tage = new List(); + //public List GetGeschenkteUrlaubstageForEmployee(long empOid) + //{ + // try + // { + // List tage = new List(); - var tageEntities = DAOFactory.SearchDAO.FindGeschenkteUrlaubstageByEmpOid(empOid); - if (tageEntities != null) - tage.AddRange(MapperFactory.GeschenkterUrlaubstagDC_GeschenkterUrlaubstag.MapToNewDCs(tageEntities)); + // var tageEntities = DAOFactory.SearchDAO.FindGeschenkteUrlaubstageByEmpOid(empOid); + // if (tageEntities != null) + // tage.AddRange(MapperFactory.GeschenkterUrlaubstagDC_GeschenkterUrlaubstag.MapToNewDCs(tageEntities)); - return tage; - } - catch (Exception ex) - { - throw Utils.CreateBeWoFaultException(ex); - } - } + // return tage; + // } + // catch (Exception ex) + // { + // throw Utils.CreateBeWoFaultException(ex); + // } + //} public List GetGeschenkteUrlaubstageForYear(int year) { try @@ -2072,62 +2072,62 @@ namespace BeWo.Service.ServiceImplementations throw Utils.CreateBeWoFaultException(ex); } } - public virtual Dictionary GetSonderurlaubForEmployee(long empOid, int berechnungsjahr) - { - //Wird im Client nicht benutzt, daher in den VacationService ausgelagert - throw new NotSupportedException(); - //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); + // public virtual Dictionary GetSonderurlaubForEmployee(long empOid, int berechnungsjahr) + // { + ////Wird im Client nicht benutzt, daher in den VacationService ausgelagert + //throw new NotSupportedException(); + // //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); + // // // 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.IsNotNullOrEmpty()) - // { - // 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 + // // // Jetzt prüfen: gibt es davon etwas im Jahr? + // // if (overlapStart <= overlapEnd && overlapStart <= yearEnd && overlapEnd >= yearStart) + // // { + // // if (emp.GradDerBehinderung.IsNotNullOrEmpty()) + // // { + // // 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); - // } - // } - // } - // } + // // // 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); + // // } + // // } + // // } + // // } - // return sonderurlaub; + // // return sonderurlaub; - //} - //catch (Exception ex) - //{ - // throw Utils.CreateBeWoFaultException(ex); - //} + // //} + // //catch (Exception ex) + // //{ + // // throw Utils.CreateBeWoFaultException(ex); + // //} - //return sonderurlaub; - } + // //return sonderurlaub; + // } public List InsertAbwesenheitsInformationPrint(List abwesenheitsInformationPrints) { try diff --git a/Service/Urlaubsplanung/UrlaubsplanungsManager.cs b/Service/Urlaubsplanung/UrlaubsplanungsManager.cs index 1bc719e20..d36757764 100644 --- a/Service/Urlaubsplanung/UrlaubsplanungsManager.cs +++ b/Service/Urlaubsplanung/UrlaubsplanungsManager.cs @@ -87,6 +87,7 @@ namespace BeWo.Service.Urlaubsplanung dc.EmployeeOid = emp.Oid; dc.PersonOid = emp.Person.Oid; dc.Type = BS.Shared.PersonType.Employee; + dc.PersonnelNumber = emp.PersonnelNumber; var dict = VacationService.BerechneUrlaubskonto(emp, filter.Year); dc.AbsenceTimes = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(emp.AbsenceTimes);