From 062f33bc14e9e33520605147c33a48cc76b1a7d4 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Tue, 24 Mar 2026 13:47:49 +0100 Subject: [PATCH] CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungs - Freigabe durch spezielle Buchung, Unterschrift von QB 158016 --- ...KilometerauswertungsListReport.Designer.cs | 31 ++++ .../EmployeeKilometerauswertungsListReport.cs | 21 +++ .../EmployeeKilometerauswertungsReport.cs | 22 +++ ...oyeeKilometerauswertungsReport.designer.cs | 159 ++++++++++-------- .../Service/ServiceRecordValidator.cs | 16 ++ 5 files changed, 183 insertions(+), 66 deletions(-) diff --git a/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsListReport.Designer.cs b/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsListReport.Designer.cs index 41cda246c..9235757f4 100644 --- a/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsListReport.Designer.cs +++ b/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsListReport.Designer.cs @@ -65,6 +65,7 @@ namespace CaritasverbandDuerenJuelichEV this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell(); this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand(); + this.xrPictureBox2 = new DevExpress.XtraReports.UI.XRPictureBox(); this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel(); @@ -82,6 +83,7 @@ namespace CaritasverbandDuerenJuelichEV this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand(); this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand(); this.objectDataSource1 = new DevExpress.DataAccess.ObjectBinding.ObjectDataSource(this.components); + this.xrLabel17 = new DevExpress.XtraReports.UI.XRLabel(); ((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.objectDataSource1)).BeginInit(); @@ -481,6 +483,8 @@ namespace CaritasverbandDuerenJuelichEV // GroupFooter1 // this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrLabel17, + this.xrPictureBox2, this.xrLabel15, this.xrLabel14, this.xrLabel12, @@ -494,6 +498,15 @@ namespace CaritasverbandDuerenJuelichEV this.GroupFooter1.PageBreak = DevExpress.XtraReports.UI.PageBreak.AfterBand; this.GroupFooter1.RepeatEveryPage = true; // + // xrPictureBox2 + // + this.xrPictureBox2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("ImageSource", null, "Employees2Entries.EmployeeSignature")}); + this.xrPictureBox2.LocationFloat = new DevExpress.Utils.PointFloat(329.4027F, 50F); + this.xrPictureBox2.Name = "xrPictureBox2"; + this.xrPictureBox2.SizeF = new System.Drawing.SizeF(168.9861F, 50.04177F); + this.xrPictureBox2.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage; + // // xrLabel15 // this.xrLabel15.Borders = DevExpress.XtraPrinting.BorderSide.Bottom; @@ -685,6 +698,22 @@ namespace CaritasverbandDuerenJuelichEV this.objectDataSource1.DataSource = typeof(BeWo.Report.ReportObjects.EmployeeKilometerauswertungsListRO); this.objectDataSource1.Name = "objectDataSource1"; // + // xrLabel17 + // + this.xrLabel17.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "Employees2Entries.EmployeeSignatureDate")}); + this.xrLabel17.Font = new DevExpress.Drawing.DXFont("arial", 10F); + this.xrLabel17.LocationFloat = new DevExpress.Utils.PointFloat(249.1944F, 66.62508F); + this.xrLabel17.Multiline = true; + this.xrLabel17.Name = "xrLabel17"; + this.xrLabel17.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96F); + this.xrLabel17.SizeF = new System.Drawing.SizeF(80.20834F, 33.41669F); + this.xrLabel17.StylePriority.UseFont = false; + this.xrLabel17.StylePriority.UseTextAlignment = false; + this.xrLabel17.Text = "xrLabel17"; + this.xrLabel17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft; + this.xrLabel17.TextFormatString = "{0:dd.MM.yyyy}"; + // // EmployeeKilometerauswertungsListReport // this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { @@ -769,5 +798,7 @@ namespace CaritasverbandDuerenJuelichEV private DevExpress.XtraReports.UI.XRLabel xrLabel10; private DevExpress.XtraReports.UI.XRLabel xrLabel7; private DevExpress.XtraReports.UI.XRLabel xrLabel13; + private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox2; + private DevExpress.XtraReports.UI.XRLabel xrLabel17; } } diff --git a/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsListReport.cs b/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsListReport.cs index 74e9be705..5b8f7bd8f 100644 --- a/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsListReport.cs +++ b/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsListReport.cs @@ -3,6 +3,7 @@ using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; using BeWo.Service.DCEntityMapper; +using BS.Shared.Core; using System; using System.Collections.Generic; using System.Linq; @@ -18,6 +19,7 @@ namespace CaritasverbandDuerenJuelichEV public void SetReportDataSource(EmployeeKilometerauswertungsListRO pRO) { + var records = DAOFactory.SearchDAO.GetServiceRecordForTimeSpan(pRO.StartDate, pRO.EndDate.AddDays(1).AddSeconds(-1)); foreach (var e2e in pRO.Employees2Entries) { var emp = DAOFactory.GenericDAO.LoadByID(e2e.Employee.EmployeeOid); @@ -78,6 +80,25 @@ namespace CaritasverbandDuerenJuelichEV e2e.Entries = dayEntries; e2e.TotalDistanceInMeters = totalkm; e2e.TotalKilometerPauschale = Math.Round(totalkm * e2e.TotalKmPauschalePreis, 2, MidpointRounding.AwayFromZero); + + // ab März 2026, geben die Mitarbeiter am Ende des Monats über Rüstzeit - Monatsabschluss den Monat frei und die Unterschrift wird automatisch eingefügt: + var empRecords = records.Where(r => r.EmployeeOid == emp.Oid).ToList(); + if (empRecords.Any(r => r.ServiceDescription.Name == "Monatsabschluss")) + { + var timeSpan = new DateTimeSpan(); + timeSpan.StartDateTime = pRO.StartDate; + timeSpan.EndDateTime = pRO.EndDate.AddDays(1).AddSeconds(-1); + var signatures = DAOFactory.SearchDAO.GetConfirmationReceiptSignaturesByEmployeeInTimeSpan(emp.Oid.Value, timeSpan); + if (signatures != null) + { + var eSignature = signatures.LastOrDefault(); + if (!(eSignature?.SignatureImage is null)) + { + e2e.EmployeeSignature = ImageUtils.ConvertBase64StringToBitmap(eSignature.SignatureImage); + e2e.EmployeeSignatureDate = eSignature.InsTs; + } + } + } } objectDataSource1.DataSource = pRO; } diff --git a/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsReport.cs b/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsReport.cs index 58793a7b3..8167f6066 100644 --- a/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsReport.cs +++ b/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsReport.cs @@ -3,8 +3,10 @@ using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; using BeWo.Service.DCEntityMapper; +using BS.Shared.Core; using System; using System.Collections.Generic; +using System.IO; using System.Linq; namespace CaritasverbandDuerenJuelichEV @@ -76,6 +78,26 @@ namespace CaritasverbandDuerenJuelichEV pRO.Entries = dayEntries; pRO.TotalDistanceInMeters = totalkm; pRO.TotalKilometerPauschale = Math.Round(totalkm * pRO.TotalKmPauschalePreis, 2, MidpointRounding.AwayFromZero); + + // ab März 2026, geben die Mitarbeiter am Ende des Monats über Rüstzeit - Monatsabschluss den Monat frei und die Unterschrift wird automatisch eingefügt: + var records = DAOFactory.SearchDAO.GetServiceRecordForTimeSpan(pRO.StartDate, pRO.EndDate.AddDays(1).AddSeconds(-1)).Where(r => r.EmployeeOid == pRO.Employee.EmployeeOid).ToList(); + if (records.Any(r => r.ServiceDescription.Name == "Monatsabschluss")) + { + var timeSpan = new DateTimeSpan(); + timeSpan.StartDateTime = pRO.StartDate; + timeSpan.EndDateTime = pRO.EndDate.AddDays(1).AddSeconds(-1); + var signatures = DAOFactory.SearchDAO.GetConfirmationReceiptSignaturesByEmployeeInTimeSpan(emp.Oid.Value, timeSpan); + if (signatures != null) + { + var eSignature = signatures.LastOrDefault(); + if (!(eSignature?.SignatureImage is null)) + { + xrPictureBox2.Image = ImageUtils.ConvertBase64StringToBitmap(eSignature?.SignatureImage); + lblDate.Text = String.Format("{0:dd.MM.yyyy}", eSignature.InsTs); + } + } + } + objectDataSource1.DataSource = pRO; } } diff --git a/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsReport.designer.cs b/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsReport.designer.cs index f96e70e16..a7b4607d8 100644 --- a/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsReport.designer.cs +++ b/ReportImp/CaritasverbandDuerenJuelichEV/EmployeeKilometerauswertungsReport.designer.cs @@ -53,6 +53,12 @@ namespace CaritasverbandDuerenJuelichEV this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel(); this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand(); + this.xrTable1 = new DevExpress.XtraReports.UI.XRTable(); + this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell(); this.objectDataSource1 = new DevExpress.DataAccess.ObjectBinding.ObjectDataSource(this.components); this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand(); this.Title = new DevExpress.XtraReports.UI.XRControlStyle(); @@ -78,15 +84,11 @@ namespace CaritasverbandDuerenJuelichEV this.xrCheckBox2 = new DevExpress.XtraReports.UI.XRCheckBox(); this.lblKennzeichen = new DevExpress.XtraReports.UI.XRLabel(); this.lblDoppelkm = new DevExpress.XtraReports.UI.XRLabel(); - this.xrTable1 = new DevExpress.XtraReports.UI.XRTable(); - this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow(); - this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell(); + this.lblDate = new DevExpress.XtraReports.UI.XRLabel(); + this.xrPictureBox2 = new DevExpress.XtraReports.UI.XRPictureBox(); ((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.objectDataSource1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.objectDataSource1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this)).BeginInit(); // // Detail @@ -226,6 +228,8 @@ namespace CaritasverbandDuerenJuelichEV // GroupFooter1 // this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.lblDate, + this.xrPictureBox2, this.xrLabel15, this.xrLabel14, this.xrLabel12, @@ -357,6 +361,68 @@ namespace CaritasverbandDuerenJuelichEV this.GroupHeader2.Name = "GroupHeader2"; this.GroupHeader2.RepeatEveryPage = true; // + // xrTable1 + // + this.xrTable1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTable1.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold); + this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); + this.xrTable1.Name = "xrTable1"; + this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { + this.xrTableRow1}); + this.xrTable1.SizeF = new System.Drawing.SizeF(677.0002F, 49.66666F); + this.xrTable1.StylePriority.UseBorders = false; + this.xrTable1.StylePriority.UseFont = false; + this.xrTable1.StylePriority.UsePadding = false; + // + // xrTableRow1 + // + this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell1, + this.xrTableCell2, + this.xrTableCell11, + this.xrTableCell12}); + this.xrTableRow1.Name = "xrTableRow1"; + this.xrTableRow1.Weight = 1D; + // + // xrTableCell1 + // + this.xrTableCell1.CanGrow = false; + this.xrTableCell1.Name = "xrTableCell1"; + this.xrTableCell1.StylePriority.UseTextAlignment = false; + this.xrTableCell1.Text = "Datum"; + this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.xrTableCell1.Weight = 0.55121411577217783D; + // + // xrTableCell2 + // + this.xrTableCell2.Multiline = true; + this.xrTableCell2.Name = "xrTableCell2"; + this.xrTableCell2.StylePriority.UseTextAlignment = false; + this.xrTableCell2.Text = "Route"; + this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.xrTableCell2.Weight = 3.1438578698415873D; + // + // xrTableCell11 + // + this.xrTableCell11.CanGrow = false; + this.xrTableCell11.Multiline = true; + this.xrTableCell11.Name = "xrTableCell11"; + this.xrTableCell11.StylePriority.UseTextAlignment = false; + this.xrTableCell11.Text = "Kilometer\r\ngefahren"; + this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.xrTableCell11.Weight = 0.48293968769118206D; + // + // xrTableCell12 + // + this.xrTableCell12.Multiline = true; + this.xrTableCell12.Name = "xrTableCell12"; + this.xrTableCell12.StylePriority.UseTextAlignment = false; + this.xrTableCell12.Text = "Kilometer\r\ndienstlich"; + this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.xrTableCell12.Weight = 0.48185133670195773D; + // // objectDataSource1 // this.objectDataSource1.DataSource = typeof(BeWo.Report.ReportObjects.EmployeeKilometerauswertungsRO); @@ -636,67 +702,26 @@ namespace CaritasverbandDuerenJuelichEV this.lblDoppelkm.Text = "Doppelkilometer: "; this.lblDoppelkm.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; // - // xrTable1 + // lblDate // - this.xrTable1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) - | DevExpress.XtraPrinting.BorderSide.Right) - | DevExpress.XtraPrinting.BorderSide.Bottom))); - this.xrTable1.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold); - this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); - this.xrTable1.Name = "xrTable1"; - this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { - this.xrTableRow1}); - this.xrTable1.SizeF = new System.Drawing.SizeF(677.0002F, 49.66666F); - this.xrTable1.StylePriority.UseBorders = false; - this.xrTable1.StylePriority.UseFont = false; - this.xrTable1.StylePriority.UsePadding = false; + this.lblDate.Font = new DevExpress.Drawing.DXFont("arial", 10F); + this.lblDate.LocationFloat = new DevExpress.Utils.PointFloat(249.1944F, 69.33333F); + this.lblDate.Multiline = true; + this.lblDate.Name = "lblDate"; + this.lblDate.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.lblDate.SizeF = new System.Drawing.SizeF(80.20834F, 33.41669F); + this.lblDate.StylePriority.UseFont = false; + this.lblDate.StylePriority.UseTextAlignment = false; + this.lblDate.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft; // - // xrTableRow1 + // xrPictureBox2 // - this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { - this.xrTableCell1, - this.xrTableCell2, - this.xrTableCell11, - this.xrTableCell12}); - this.xrTableRow1.Name = "xrTableRow1"; - this.xrTableRow1.Weight = 1D; - // - // xrTableCell1 - // - this.xrTableCell1.CanGrow = false; - this.xrTableCell1.Name = "xrTableCell1"; - this.xrTableCell1.StylePriority.UseTextAlignment = false; - this.xrTableCell1.Text = "Datum"; - this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; - this.xrTableCell1.Weight = 0.55121411577217783D; - // - // xrTableCell2 - // - this.xrTableCell2.Multiline = true; - this.xrTableCell2.Name = "xrTableCell2"; - this.xrTableCell2.StylePriority.UseTextAlignment = false; - this.xrTableCell2.Text = "Route"; - this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; - this.xrTableCell2.Weight = 3.1438578698415873D; - // - // xrTableCell11 - // - this.xrTableCell11.CanGrow = false; - this.xrTableCell11.Multiline = true; - this.xrTableCell11.Name = "xrTableCell11"; - this.xrTableCell11.StylePriority.UseTextAlignment = false; - this.xrTableCell11.Text = "Kilometer\r\ngefahren"; - this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; - this.xrTableCell11.Weight = 0.48293968769118206D; - // - // xrTableCell12 - // - this.xrTableCell12.Multiline = true; - this.xrTableCell12.Name = "xrTableCell12"; - this.xrTableCell12.StylePriority.UseTextAlignment = false; - this.xrTableCell12.Text = "Kilometer\r\ndienstlich"; - this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; - this.xrTableCell12.Weight = 0.48185133670195773D; + this.xrPictureBox2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("ImageSource", null, "Employees2Entries.EmployeeSignature")}); + this.xrPictureBox2.LocationFloat = new DevExpress.Utils.PointFloat(329.4027F, 52.70824F); + this.xrPictureBox2.Name = "xrPictureBox2"; + this.xrPictureBox2.SizeF = new System.Drawing.SizeF(168.9861F, 50.04177F); + this.xrPictureBox2.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage; // // EmployeeKilometerauswertungsReport // @@ -726,8 +751,8 @@ namespace CaritasverbandDuerenJuelichEV xrWatermark1.Id = "Watermark1"; this.Watermarks.Add(xrWatermark1); ((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.objectDataSource1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.objectDataSource1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this)).EndInit(); } @@ -786,5 +811,7 @@ namespace CaritasverbandDuerenJuelichEV private DevExpress.XtraReports.UI.XRTableCell xrTableCell2; private DevExpress.XtraReports.UI.XRTableCell xrTableCell11; private DevExpress.XtraReports.UI.XRTableCell xrTableCell12; + private DevExpress.XtraReports.UI.XRLabel lblDate; + private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox2; } } diff --git a/ReportImp/CaritasverbandDuerenJuelichEV/Service/ServiceRecordValidator.cs b/ReportImp/CaritasverbandDuerenJuelichEV/Service/ServiceRecordValidator.cs index 438ed720c..18971105a 100644 --- a/ReportImp/CaritasverbandDuerenJuelichEV/Service/ServiceRecordValidator.cs +++ b/ReportImp/CaritasverbandDuerenJuelichEV/Service/ServiceRecordValidator.cs @@ -14,5 +14,21 @@ namespace CaritasverbandDuerenJuelichEV.Service { return false; } + + public override List ValidateServiceRecord(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics, int maxDaysEditServiceRecordsAllowed, IList employeeOids, IList cb2scOids) + { + // Am Ende des Monats erklärt der MA, dass er den Monat abgeschlossen hat, dass soll wirklich seine letzte Buchung sein + var list = base.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids); + if (newServiceRecord.ServiceDescription.Name == "Monatsabschluss") + { + list.Add(new ServiceRecordValidationResultDC + { + ResultType = ServiceRecordValidationResult.Custom, + Message = String.Format("Sind alle Daten vollständig und korrekt erfasst (Fachleistungsstunden inkl. Kurzkontakte, Rüstzeiten, gefahrene Strecken, Leistungsnachweise, etc.)?"), + Allow = true + }); + } + return list; + } } } \ No newline at end of file