Bugfix Berechnung vom Soll bei Sonderfällen in Soll/Ist Auswertung
This commit is contained in:
@@ -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"))
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using BeWo.Data;
|
||||
using BeWo.Data;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.Configuration;
|
||||
@@ -13,6 +9,11 @@ using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
using BS.Shared.Services;
|
||||
using DevExpress.XtraPrinting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Utils = BS.Shared.Core.Utils;
|
||||
|
||||
namespace BeWo.Service.Plugins
|
||||
@@ -215,7 +216,7 @@ namespace BeWo.Service.Plugins
|
||||
|
||||
if (config.FetchApprovedFLS)
|
||||
{
|
||||
CalculateApprovedFLSForCustomer(rootDC, groupDC, scDC, config.StartDate ?? DateTime.MinValue, config.EndDate ?? DateTime.MaxValue);
|
||||
CalculateApprovedFLSForCustomer(rootDC, groupDC, scDC, config.StartDate ?? DateTime.MinValue, config.EndDate ?? DateTime.MaxValue, sr.Start.Value, config);
|
||||
}
|
||||
|
||||
groupDC.SupportConcepts.Add(scDC);
|
||||
@@ -224,7 +225,22 @@ namespace BeWo.Service.Plugins
|
||||
if (config.FetchApprovedFLS)
|
||||
{
|
||||
var calc = PluginLoader.FindClass<Calculations>(scDC.CostbearerID) ?? Calculations.GetInstance(scDC.CostbearerID);
|
||||
srDC.SollFLSPerWeek = calc.GetApprovedHoursPerWeek(scDC.SupportConcept2CostBearer, sr.Start.Value) ?? 0;
|
||||
|
||||
if (config.ServiceDescriptionOids != null && config.ServiceDescriptionOids.Count > 0 && scDC.SupportConcept2CostBearer.ApprovalPeriodList != null && scDC.SupportConcept2CostBearer.ApprovalPeriodList.Count > 1)
|
||||
{
|
||||
var desc = DAOFactory.GenericDAO.LoadByID<ServiceDescription>(config.ServiceDescriptionOids[0]);
|
||||
var scap = scDC.SupportConcept2CostBearer.ApprovalPeriodList.FirstOrDefault(a => a.ServiceCategory != null && a.ServiceCategory.ServiceCategoryOid == desc.ServiceCategory.Oid && sr.Start.Value.InBetween(a.Span, true));
|
||||
if (scap != null)
|
||||
{
|
||||
srDC.SollFLSPerWeek = calc.GetApprovedHoursPerWeek(scap, scDC.SupportConcept2CostBearer.CostBearer.CostRatePeriods) ?? 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
srDC.SollFLSPerWeek = calc.GetApprovedHoursPerWeek(scDC.SupportConcept2CostBearer, sr.Start.Value) ?? 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
scDC.ServiceRecords.Add(srDC);
|
||||
@@ -235,11 +251,24 @@ namespace BeWo.Service.Plugins
|
||||
return rootDC;
|
||||
}
|
||||
|
||||
private void CalculateApprovedFLSForCustomer(FLSAnalysisRootDC rootDC, FLSAnalysisGroupDC groupDC, SupportConceptFLSOverviewDC scDC, DateTime startdate, DateTime enddate)
|
||||
private void CalculateApprovedFLSForCustomer(FLSAnalysisRootDC rootDC, FLSAnalysisGroupDC groupDC, SupportConceptFLSOverviewDC scDC, DateTime startdatePeriod, DateTime enddatePeriod, DateTime datum, FLSAnalysisConfigDC config)
|
||||
{
|
||||
var calc = PluginLoader.FindClass<Calculations>(scDC.CostbearerID) ?? Calculations.GetInstance(scDC.CostbearerID);
|
||||
rootDC.SollFLSPerWeek = calc.GetApprovedHoursPerWeek(scDC.SupportConcept2CostBearer, startdate) ?? 0m;
|
||||
rootDC.SollFLSTotal = calc.GetApprovedHoursForPeriod(scDC.SupportConcept2CostBearer, startdate, enddate);
|
||||
if (config.ServiceDescriptionOids != null && config.ServiceDescriptionOids.Count > 0 && scDC.SupportConcept2CostBearer.ApprovalPeriodList != null && scDC.SupportConcept2CostBearer.ApprovalPeriodList.Count > 1)
|
||||
{
|
||||
var desc = DAOFactory.GenericDAO.LoadByID<ServiceDescription>(config.ServiceDescriptionOids[0]);
|
||||
var scap = scDC.SupportConcept2CostBearer.ApprovalPeriodList.FirstOrDefault(a => a.ServiceCategory != null && a.ServiceCategory.ServiceCategoryOid == desc.ServiceCategory.Oid && datum.InBetween(a.Span, true));
|
||||
if (scap != null)
|
||||
{
|
||||
rootDC.SollFLSPerWeek = calc.GetApprovedHoursPerWeek(scap, scDC.SupportConcept2CostBearer.CostBearer.CostRatePeriods) ?? 0;
|
||||
rootDC.SollFLSTotal = calc.GetApprovedHoursForPeriod(scDC.SupportConcept2CostBearer, scap, scDC.SupportConcept2CostBearer.CostBearer.CostRatePeriods, startdatePeriod, enddatePeriod, true) ?? 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
rootDC.SollFLSPerWeek = calc.GetApprovedHoursPerWeek(scDC.SupportConcept2CostBearer, datum) ?? 0m;
|
||||
rootDC.SollFLSTotal = calc.GetApprovedHoursForPeriod(scDC.SupportConcept2CostBearer, startdatePeriod, enddatePeriod);
|
||||
}
|
||||
|
||||
public virtual bool AllowCustomerAnalysis(Customer customer, FLSAnalysisConfigDC config, IList<IServiceRecord> serviceRecords)
|
||||
|
||||
Reference in New Issue
Block a user