diff --git a/ReportImp/VkmHamm/Mitarbeiterauslastung.cs b/ReportImp/VkmHamm/Mitarbeiterauslastung.cs index 361cc2d08..7451e0563 100644 --- a/ReportImp/VkmHamm/Mitarbeiterauslastung.cs +++ b/ReportImp/VkmHamm/Mitarbeiterauslastung.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using BeWo.Report; using BeWo.Report.ReportObjects; using BS.Shared.Core; @@ -26,6 +27,11 @@ namespace VkmHamm // Dann für jede Bewilligung gucken, wie viele Tage in dem ausgewerteten Monat bewilligt sind und Tage * bew. Tagesstunden ausrechnen foreach (var ed in pRO.EmployeeDetailList) { + Dictionary customer2gesamtstunden = new Dictionary(); + + var tageInMonat = DateTime.DaysInMonth(pRO.ReportStartDate.Year, pRO.ReportStartDate.Month); + ed.FLSTotalMonthlyHoursByContract = tageInMonat * (ed.FLSTotalHoursByContract / 7); + foreach (var scDetail in ed.SupportConceptDetailList) { decimal stundenTagessoll = 0; @@ -44,24 +50,42 @@ namespace VkmHamm /// Tagessoll berechnen (Monatsbewilligung) else if (scDetail.SupportConceptApprovalPeriod.ApprovedBEInterval == BS.Shared.SupportConceptApprovalInterval.Monthly) { - var tageInMonat = DateTime.DaysInMonth(pRO.ReportStartDate.Year, pRO.ReportStartDate.Month); stundenTagessoll = scDetail.ApprovedHoursPerMonth / tageInMonat; } - + /// Bewilligte Tage im Monat berechnen - // Wenn Bewilligung über Auswertungszeitraum hinaus + int bewilligteTage = tageInMonat; + var bewStart = scDetail.SupportConceptApprovalPeriod.StartDate.HasValue ? scDetail.SupportConceptApprovalPeriod.StartDate.Value : pRO.ReportStartDate; + var bewEnde = scDetail.SupportConceptApprovalPeriod.EndDate.HasValue ? scDetail.SupportConceptApprovalPeriod.EndDate.Value : pRO.ReportEndDate; + // Wenn Bewilligung über Auswertungszeitraum hinaus nichts machen, weil der volle Monat bewilligt ist // Wenn Bewilligung in Monat beginnt/endet + if (bewStart > pRO.ReportStartDate && bewStart <= pRO.ReportEndDate) + { + bewilligteTage -= (bewStart - pRO.ReportStartDate).Days; + } + if (bewEnde < pRO.ReportEndDate && bewEnde >= pRO.ReportStartDate) + { + bewilligteTage -= (pRO.ReportEndDate.AddDays(-1) - bewEnde).Days; + } + /// Stunden für Monat berechnen + scDetail.ApprovedHoursPerMonthTotal = bewilligteTage * stundenTagessoll; + + /// Für 2. Tabelle zum Dictionary hinzufügen + if (!customer2gesamtstunden.ContainsKey(scDetail.CustomerFullName)) + customer2gesamtstunden.Add(scDetail.CustomerFullName, 0); + customer2gesamtstunden[scDetail.CustomerFullName] += scDetail.ApprovedHoursPerMonthTotal; - /// Monatsstunden berechnen } - } + } // Unter die Tabelle eine zweite machen, wo Name Klient*in mit den Gesamtstunden Monat drin steht, da in der oberen Tabelle ja bei // mehreren Bewilligungen mehrere Einträge pro Klient*in sind. + + this.bindingSource1.DataSource = pRO; } diff --git a/ReportImp/VkmHamm/Mitarbeiterauslastung.designer.cs b/ReportImp/VkmHamm/Mitarbeiterauslastung.designer.cs index 42bb6e6c0..5e0c35401 100644 --- a/ReportImp/VkmHamm/Mitarbeiterauslastung.designer.cs +++ b/ReportImp/VkmHamm/Mitarbeiterauslastung.designer.cs @@ -30,20 +30,21 @@ namespace VkmHamm private void InitializeComponent() { this.components = new System.ComponentModel.Container(); + DevExpress.XtraReports.UI.XRSummary xrSummary1 = new DevExpress.XtraReports.UI.XRSummary(); DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark(); this.Detail = new DevExpress.XtraReports.UI.DetailBand(); this.Detail1 = new DevExpress.XtraReports.UI.DetailBand(); this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel(); + this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand(); + this.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand(); + this.Detail2 = new DevExpress.XtraReports.UI.DetailBand(); this.xrTableDetail = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRowDetail = new DevExpress.XtraReports.UI.XRTableRow(); this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell(); - this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand(); - this.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand(); - this.Detail2 = new DevExpress.XtraReports.UI.DetailBand(); this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand(); this.xrTableHeader = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRowHeader = new DevExpress.XtraReports.UI.XRTableRow(); @@ -58,7 +59,6 @@ namespace VkmHamm this.xrTableCell38 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell(); this.cellSollGesamt = new DevExpress.XtraReports.UI.XRTableCell(); - this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components); this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand(); this.lblMonat = new DevExpress.XtraReports.UI.XRLabel(); this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand(); @@ -73,6 +73,7 @@ namespace VkmHamm this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand(); this.fieldTotalSC = new DevExpress.XtraReports.UI.CalculatedField(); this.fieldTotalEmp = new DevExpress.XtraReports.UI.CalculatedField(); + this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components); ((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit(); @@ -110,7 +111,7 @@ namespace VkmHamm this.xrLabel2.StyleName = "Title"; this.xrLabel2.StylePriority.UseFont = false; this.xrLabel2.Text = "Wochenstunden: [WeeklyTotalHoursByContract!0.00], FLS/Woche: [FLSTotalHoursByCont" + - "ract!0.00]"; + "ract!0.00]. FLS/Monat: [FLSTotalMonthlyHoursByContract!0.00]"; // // xrLabel1 // @@ -125,6 +126,34 @@ namespace VkmHamm this.xrLabel1.StylePriority.UseFont = false; this.xrLabel1.Text = "xrLabel1"; // + // DetailReport + // + this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { + this.Detail1, + this.DetailReport1}); + this.DetailReport.DataMember = "EmployeeDetailList"; + this.DetailReport.DataSource = this.bindingSource1; + this.DetailReport.Level = 0; + this.DetailReport.Name = "DetailReport"; + // + // DetailReport1 + // + this.DetailReport1.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { + this.Detail2, + this.GroupHeader2, + this.GroupFooter1}); + this.DetailReport1.DataMember = "EmployeeDetailList.SupportConceptDetailList"; + this.DetailReport1.DataSource = this.bindingSource1; + this.DetailReport1.Level = 0; + this.DetailReport1.Name = "DetailReport1"; + // + // Detail2 + // + this.Detail2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrTableDetail}); + this.Detail2.HeightF = 25F; + this.Detail2.Name = "Detail2"; + // // xrTableDetail // this.xrTableDetail.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) @@ -185,39 +214,11 @@ namespace VkmHamm // xrTableCell28 // this.xrTableCell28.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.ApprovedHoursPerWeek", "{0:0.00}")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.ApprovedHoursPerMonthTotal", "{0:0.00}")}); this.xrTableCell28.Name = "xrTableCell28"; this.xrTableCell28.Text = "xrTableCell28"; this.xrTableCell28.Weight = 0.21225409617909008D; // - // DetailReport - // - this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { - this.Detail1, - this.DetailReport1}); - this.DetailReport.DataMember = "EmployeeDetailList"; - this.DetailReport.DataSource = this.bindingSource1; - this.DetailReport.Level = 0; - this.DetailReport.Name = "DetailReport"; - // - // DetailReport1 - // - this.DetailReport1.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { - this.Detail2, - this.GroupHeader2, - this.GroupFooter1}); - this.DetailReport1.DataMember = "EmployeeDetailList.SupportConceptDetailList"; - this.DetailReport1.DataSource = this.bindingSource1; - this.DetailReport1.Level = 0; - this.DetailReport1.Name = "DetailReport1"; - // - // Detail2 - // - this.Detail2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { - this.xrTableDetail}); - this.Detail2.HeightF = 25F; - this.Detail2.Name = "Detail2"; - // // GroupHeader2 // this.GroupHeader2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { @@ -280,14 +281,14 @@ namespace VkmHamm // this.xrTableCell9.Multiline = true; this.xrTableCell9.Name = "xrTableCell9"; - this.xrTableCell9.Text = "Bewilligt/Woche"; + this.xrTableCell9.Text = "Bewilligt/Monat"; this.xrTableCell9.Weight = 0.21225409703710532D; // // GroupFooter1 // this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { this.xrTable1}); - this.GroupFooter1.HeightF = 61.04164F; + this.GroupFooter1.HeightF = 43.33331F; this.GroupFooter1.Level = 1; this.GroupFooter1.Name = "GroupFooter1"; // @@ -341,15 +342,13 @@ namespace VkmHamm // cellSollGesamt // this.cellSollGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.ApprovedHoursPerWeek", "{0:0.00}")}); + new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.ApprovedHoursPerMonthTotal")}); this.cellSollGesamt.Name = "cellSollGesamt"; - this.cellSollGesamt.Text = "cellSollGesamt"; + xrSummary1.FormatString = "{0:0.00}"; + xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group; + this.cellSollGesamt.Summary = xrSummary1; this.cellSollGesamt.Weight = 0.19992044692740521D; // - // bindingSource1 - // - this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterauslastungRO); - // // ReportHeader // this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { @@ -470,6 +469,10 @@ namespace VkmHamm this.fieldTotalEmp.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal; this.fieldTotalEmp.Name = "fieldTotalEmp"; // + // bindingSource1 + // + this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterauslastungRO); + // // Mitarbeiterauslastung // this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { @@ -484,7 +487,7 @@ namespace VkmHamm this.fieldTotalSC, this.fieldTotalEmp}); this.DataSource = this.bindingSource1; - this.Margins = new DevExpress.Drawing.DXMargins(100F, 30F, 50F, 30F); + this.Margins = new DevExpress.Drawing.DXMargins(98F, 30F, 50F, 30F); this.PageHeight = 1169; this.PageWidth = 827; this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4; @@ -522,16 +525,11 @@ namespace VkmHamm private DevExpress.XtraReports.UI.XRTable xrTableHeader; private DevExpress.XtraReports.UI.XRTableRow xrTableRowHeader; private DevExpress.XtraReports.UI.XRTableCell xrTableCell5; - private DevExpress.XtraReports.UI.XRTable xrTableDetail; - private DevExpress.XtraReports.UI.XRTableRow xrTableRowDetail; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell3; private DevExpress.XtraReports.UI.CalculatedField fieldFLS; private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1; private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1; private DevExpress.XtraReports.UI.XRTableCell xrTableCell4; private DevExpress.XtraReports.UI.XRTableCell xrTableCell9; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell19; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell28; private DevExpress.XtraReports.UI.XRTable xrTable1; private DevExpress.XtraReports.UI.XRTableRow xrTableRow1; private DevExpress.XtraReports.UI.XRTableCell xrTableCell35; @@ -546,7 +544,12 @@ namespace VkmHamm private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1; private DevExpress.XtraReports.UI.XRLabel xrLabel2; private DevExpress.XtraReports.UI.XRTableCell xrTableCell1; - private DevExpress.XtraReports.UI.XRTableCell xrTableCell2; private DevExpress.XtraReports.UI.XRTableCell xrTableCell6; + private DevExpress.XtraReports.UI.XRTable xrTableDetail; + private DevExpress.XtraReports.UI.XRTableRow xrTableRowDetail; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell3; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell19; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell2; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell28; } }