diff --git a/BeWo/View/Detail/Report/DienstplanerView.xaml.cs b/BeWo/View/Detail/Report/DienstplanerView.xaml.cs index 9ac37d23d..31bfe9454 100644 --- a/BeWo/View/Detail/Report/DienstplanerView.xaml.cs +++ b/BeWo/View/Detail/Report/DienstplanerView.xaml.cs @@ -636,7 +636,8 @@ namespace BeWo.View.Detail.Report InsertEintragOderVertretung(mehrereDienste_textbox_startzeit.Text, mehrereDienste_textbox_endzeit.Text, dauerInStunden, mitarbeiter, datum, dienst, 0, null); } - + + popUp_mehrereDienste.IsOpen = false; } private void InsertEintragOderVertretung(string start, string ende, double dauerInStunden, EmployeeDC mitarbeiter, DateTime datum, DienstInfoDC dienst, int zeile, string notice) @@ -774,7 +775,7 @@ namespace BeWo.View.Detail.Report { _DienstplanerRootObj.AlleDienstvertretungen.Add(newVertretung); - if (EintragAnGanzemAbwesenheitstag(null, vertretung)) + if (!EintragAnGanzemAbwesenheitstag(null, newVertretung)) { foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung) { diff --git a/Service/Dienstplanung/DienstplanungsManager.cs b/Service/Dienstplanung/DienstplanungsManager.cs index 1e712b7ed..5158e4fa7 100644 --- a/Service/Dienstplanung/DienstplanungsManager.cs +++ b/Service/Dienstplanung/DienstplanungsManager.cs @@ -519,6 +519,13 @@ namespace BeWo.Service.Dienstplanung foreach (var abs in urlaubKrankheitMonat) { + // Wenn die Abwesenheit über den Monat hinausgeht, Ende auf Ende des Monats setzen + if (abs.End != null) + { + if (abs.End.Value.Month != date.Month) + abs.End = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Year)); + } + var dauerAbwesenheit = vs.BerechneAnzahlUrlaubstage(null, abs, date.Year); if (abs.Reason.Description.ToLower().Contains("urlaub")) dc.TageUrlaub += dauerAbwesenheit * item.SollProTag;