MH: VKM bezahlte MA-Auslastung

This commit is contained in:
2025-11-25 11:06:01 +01:00
parent 382409cc3d
commit 0ec4bd8940
2 changed files with 81 additions and 54 deletions

View File

@@ -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<string, decimal> customer2gesamtstunden = new Dictionary<string, decimal>();
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;
}

View File

@@ -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;
}
}