MH x Claude: Optimierung der Dienstsuche zur Pausenberechnung
This commit is contained in:
@@ -40,6 +40,7 @@ namespace BeWo.View.Detail.Report
|
||||
|
||||
private Dictionary<long, List<AbsenceTimeDC>> _AbsenceTimesDict;
|
||||
private Dictionary<long, List<OvertimeDC>> _OverTimesDict;
|
||||
private Dictionary<long, DienstInfoDC> _DienstProOidDict; // Claude: schneller Pausen-Lookup statt Listen-Suche pro Eintrag
|
||||
|
||||
private CompactWohnheimDC _AuswahlWohnheim;
|
||||
private DienstZeileDC _AuswahlDienstZeileDC;
|
||||
@@ -1815,12 +1816,12 @@ namespace BeWo.View.Detail.Report
|
||||
if (eintraegeEinerWoche != null)
|
||||
{
|
||||
foreach (var eintrag in eintraegeEinerWoche)
|
||||
stundenWoche.Add(DienstInfoDC.DauerAbzueglichPause(eintrag.DauerInStunden, eintrag.DienstOid, _DienstplanerRootObj.AlleDienste)); // Claude: Pause abziehen
|
||||
stundenWoche.Add(DienstInfoDC.DauerAbzueglichPause(eintrag.DauerInStunden, eintrag.DienstOid, _DienstProOidDict)); // Claude: Pause abziehen
|
||||
}
|
||||
if (vertretungenEinerWoche != null)
|
||||
{
|
||||
foreach (var vertretung in vertretungenEinerWoche)
|
||||
stundenWoche.Add(DienstInfoDC.DauerAbzueglichPause(vertretung.DauerInStunden, vertretung.DienstOid, _DienstplanerRootObj.AlleDienste)); // Claude: Pause abziehen
|
||||
stundenWoche.Add(DienstInfoDC.DauerAbzueglichPause(vertretung.DauerInStunden, vertretung.DienstOid, _DienstProOidDict)); // Claude: Pause abziehen
|
||||
}
|
||||
if (ueberstundenEinerWoche != null)
|
||||
{
|
||||
@@ -2130,7 +2131,7 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
if (tage.Contains(e.Datum))
|
||||
{
|
||||
res.Add(DienstInfoDC.DauerAbzueglichPause(e.DauerInStunden, e.DienstOid, _DienstplanerRootObj.AlleDienste) * -1); // Abzug von Wochen-Ist // Claude: gleicher Pausenabzug wie beim Aufaddieren
|
||||
res.Add(DienstInfoDC.DauerAbzueglichPause(e.DauerInStunden, e.DienstOid, _DienstProOidDict) * -1); // Abzug von Wochen-Ist // Claude: gleicher Pausenabzug wie beim Aufaddieren
|
||||
//_DienstplanerRootObj.MonatsZusammenfassung // Abzug von Monats-Ist
|
||||
// .First(z => z.Employee.EmployeeOid == e.EmployeeOid).Ist -= Convert.ToDecimal(e.DauerInStunden);
|
||||
}
|
||||
@@ -2142,7 +2143,7 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
if (tage.Contains(v.Datum))
|
||||
{
|
||||
res.Add(DienstInfoDC.DauerAbzueglichPause(v.DauerInStunden, v.DienstOid, _DienstplanerRootObj.AlleDienste) * -1); // Abzug von Wochen-Ist // Claude: gleicher Pausenabzug wie beim Aufaddieren
|
||||
res.Add(DienstInfoDC.DauerAbzueglichPause(v.DauerInStunden, v.DienstOid, _DienstProOidDict) * -1); // Abzug von Wochen-Ist // Claude: gleicher Pausenabzug wie beim Aufaddieren
|
||||
//_DienstplanerRootObj.MonatsZusammenfassung // Abzug von Monats-Ist
|
||||
// .First(z => z.Employee.EmployeeOid == v.EmployeeOid).Ist -= Convert.ToDecimal(v.DauerInStunden);
|
||||
}
|
||||
@@ -2247,6 +2248,9 @@ namespace BeWo.View.Detail.Report
|
||||
}
|
||||
_OverTimesDict = overtimeTemp;
|
||||
|
||||
// Claude: Lookup-Dictionary für den Pausenabzug einmalig aufbauen
|
||||
_DienstProOidDict = DienstInfoDC.BuildDienstProOidDictionary(_DienstplanerRootObj.AlleDienste);
|
||||
|
||||
_GridControl.ItemsSource = _DienstplanerRootObj.DienstZeilenListe;
|
||||
}
|
||||
|
||||
@@ -2583,8 +2587,8 @@ namespace BeWo.View.Detail.Report
|
||||
private List<DienstplanerMonthlySummaryDC> CheckEintragAnAbwesenheitstagen(DienstEintragDC eintrag, DienstvertretungDC vertretung, EmployeeDC employee, bool plus)
|
||||
{
|
||||
// Claude: Pause des Dienstes von der Dauer abziehen, damit Ist/Saldo beim Eintragen/Löschen genauso berechnet werden wie beim Neuladen (BerechneSollSaldoUndIst)
|
||||
decimal dauerEintrag = eintrag != null ? Convert.ToDecimal(DienstInfoDC.DauerAbzueglichPause(eintrag.DauerInStunden, eintrag.DienstOid, _DienstplanerRootObj.AlleDienste)) : 0m;
|
||||
decimal dauerVertretung = vertretung != null ? Convert.ToDecimal(DienstInfoDC.DauerAbzueglichPause(vertretung.DauerInStunden, vertretung.DienstOid, _DienstplanerRootObj.AlleDienste)) : 0m;
|
||||
decimal dauerEintrag = eintrag != null ? Convert.ToDecimal(DienstInfoDC.DauerAbzueglichPause(eintrag.DauerInStunden, eintrag.DienstOid, _DienstProOidDict)) : 0m;
|
||||
decimal dauerVertretung = vertretung != null ? Convert.ToDecimal(DienstInfoDC.DauerAbzueglichPause(vertretung.DauerInStunden, vertretung.DienstOid, _DienstProOidDict)) : 0m;
|
||||
|
||||
if (!_DienstplanerRootObj.EnableDiensteAnFeiertagen)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user