Bugfix Berechnung vom Soll bei Sonderfällen in Soll/Ist Auswertung

This commit is contained in:
2026-06-18 10:56:45 +02:00
parent 576b29ea08
commit db9dc64830
3 changed files with 87 additions and 18 deletions

View File

@@ -38,7 +38,7 @@ namespace BeWo.Report.DefaultReports
{
foreach (var woche in grp.WochenSummen)
{
String key = GetWochenKey(woche);
String key = woche.WochenString;
if (!summeIstNachWochenString.ContainsKey(key))
{
@@ -55,10 +55,7 @@ namespace BeWo.Report.DefaultReports
this.bindingSource1.DataSource = pRO;
}
private String GetWochenKey(FLSSollIstReportRO.FLSSollIstWochenSummen woche)
{
return String.Format("{3}: KW {0}, {1:dd.MM.yy} - {2:dd.MM.yy}", woche.KalenderWoche, woche.WocheStart, woche.WocheEnde, woche.ObjectOid);
}
private void CreateTableCells(List<FLSSollIstReportRO.FLSSollIstWochenSummen> wochen)
{
xrTableHeader.BeginInit();
@@ -201,7 +198,7 @@ namespace BeWo.Report.DefaultReports
{
if (tag.Contains("Gesamt"))
{
var key = GetWochenKey(ws);
var key = ws.WochenString;
if (tag.Contains("Ist"))
{

View File

@@ -114,6 +114,14 @@ namespace BeWo.Report.ReportObjects
}
public List<ServiceRecordFLSOverviewDC> ServiceRecords { get; internal set; } = new List<ServiceRecordFLSOverviewDC>();
public String WochenString
{
get
{
return String.Format("{3}: KW {0}, {1:dd.MM.yy} - {2:dd.MM.yy}", KalenderWoche, WocheStart, WocheEnde, ObjectOid);
}
}
}
public static FLSSollIstReportRO Create(List<FLSAnalysisRootDC> dcList, FLSAnalysisConfigDC config)
@@ -197,15 +205,50 @@ namespace BeWo.Report.ReportObjects
{
if (!ws.SollStunden.HasValue)
{
ws.SollStunden = root.SollFLSPerWeek;
//ws.SollStunden = root.SollFLSPerWeek;
}
}
grpRo.IstGesamt = grpRo.IstGesamt / 60;
rootRo.IstGesamt += grpRo.IstGesamt;
rootRo.SollGesamt = grpRo.WochenSummen.Sum(w => w.SollStunden) ?? 0;
rootRo.Groups.Add(grpRo);
}
var woche2Soll = new Dictionary<string, decimal>();
foreach (var grp in rootRo.Groups)
{
foreach (var ws in grp.WochenSummen)
{
if (ws.SollStunden.HasValue)
{
if (!woche2Soll.ContainsKey(ws.WochenString))
{
woche2Soll.Add(ws.WochenString, 0);
}
woche2Soll[ws.WochenString] = ws.SollStunden.Value;
}
}
foreach (var ws in grp.WochenSummen)
{
if (!ws.SollStunden.HasValue)
{
if (woche2Soll.ContainsKey(ws.WochenString))
{
ws.SollStunden = woche2Soll[ws.WochenString];
}
else
{
ws.SollStunden = root.SollFLSPerWeek;
}
}
}
rootRo.SollGesamt = grp.WochenSummen.Sum(w => w.SollStunden) ?? 0;
}
rootRo.DifferenzSollIstGesamt = rootRo.IstGesamt - rootRo.SollGesamt;
if (rootRo.Groups.Count > 0)