diff --git a/BeWo/View/Detail/DienstView.xaml b/BeWo/View/Detail/DienstView.xaml
index 18890fe06..e9b77d2e8 100644
--- a/BeWo/View/Detail/DienstView.xaml
+++ b/BeWo/View/Detail/DienstView.xaml
@@ -81,24 +81,30 @@
+
-
+
-
+ EditValue="{validation:ValidationBinding Path=NewVM.Start, UpdateSourceTrigger=PropertyChanged}" />
+
-
-
+
+
+
+
+
-
+
@@ -123,6 +129,11 @@
+
+
+
+
+
diff --git a/BeWo/View/Detail/DienstView.xaml.cs b/BeWo/View/Detail/DienstView.xaml.cs
index 36a6dca21..6702b9f55 100644
--- a/BeWo/View/Detail/DienstView.xaml.cs
+++ b/BeWo/View/Detail/DienstView.xaml.cs
@@ -88,6 +88,21 @@ namespace BeWo.View.Detail
{
if (ViewModel.NewVM.StartDT.Year != 2000)
ViewModel.NewVM.StartDT = new DateTime(2000, 1, 1, ViewModel.NewVM.StartDT.Hour, ViewModel.NewVM.StartDT.Minute, ViewModel.NewVM.StartDT.Second);
+
+ if (ViewModel.NewVM.EndeDT.Year != 2000)
+ ViewModel.NewVM.EndeDT = new DateTime(2000, 1, 1, ViewModel.NewVM.EndeDT.Hour, ViewModel.NewVM.EndeDT.Minute, ViewModel.NewVM.EndeDT.Second);
+
+ if (!_CheckDauer.IsChecked.Value)
+ ViewModel.NewVM.Dauer = ViewModel.NewVM.StartDT < ViewModel.NewVM.EndeDT ? (ViewModel.NewVM.EndeDT - ViewModel.NewVM.StartDT)
+ .TotalHours : (ViewModel.NewVM.EndeDT.AddDays(1) - ViewModel.NewVM.StartDT).TotalHours;
+ else if (_CheckDauer.IsChecked.Value)
+ {
+ ViewModel.NewVM.StartDT = new DateTime(2000, 1, 1, 0, 0, 0);
+ ViewModel.NewVM.Start = "00:00";
+ ViewModel.NewVM.EndeDT = new DateTime(2000, 1, 1, 0, 0, 0);
+ ViewModel.NewVM.Ende = "00:00";
+ }
+
var wh = _WohnheimeCombobox.SelectedItem as CompactWohnheimDC;
if (wh == null)
@@ -226,5 +241,27 @@ namespace BeWo.View.Detail
return vm;
}
+
+ private void CheckEdit_Checked(object sender, RoutedEventArgs e)
+ {
+ _lblStart.Visibility = Visibility.Collapsed;
+ _TxtStart.Visibility = Visibility.Collapsed;
+ _lblEnde.Visibility = Visibility.Collapsed;
+ _TxtEnde.Visibility = Visibility.Collapsed;
+
+ _lblDauer.Visibility = Visibility.Visible;
+ _TxtDauer.Visibility = Visibility.Visible;
+ }
+
+ private void CheckEdit_Unchecked(object sender, RoutedEventArgs e)
+ {
+ _lblStart.Visibility = Visibility.Visible;
+ _TxtStart.Visibility = Visibility.Visible;
+ _lblEnde.Visibility = Visibility.Visible;
+ _TxtEnde.Visibility = Visibility.Visible;
+
+ _lblDauer.Visibility = Visibility.Collapsed;
+ _TxtDauer.Visibility = Visibility.Collapsed;
+ }
}
}
diff --git a/BeWo/View/Detail/Report/DienstplanerView.xaml b/BeWo/View/Detail/Report/DienstplanerView.xaml
index ad9c14ef8..937cd0b92 100644
--- a/BeWo/View/Detail/Report/DienstplanerView.xaml
+++ b/BeWo/View/Detail/Report/DienstplanerView.xaml
@@ -233,6 +233,7 @@
+
@@ -260,15 +261,18 @@
-
+
-
+
-
-
-
+
+
+
+
+
-
+
diff --git a/BeWo/View/Detail/Report/DienstplanerView.xaml.cs b/BeWo/View/Detail/Report/DienstplanerView.xaml.cs
index b9d6a67ca..69da11be3 100644
--- a/BeWo/View/Detail/Report/DienstplanerView.xaml.cs
+++ b/BeWo/View/Detail/Report/DienstplanerView.xaml.cs
@@ -705,7 +705,7 @@ namespace BeWo.View.Detail.Report
Notice = notice,
Endzeit = ende,
Startzeit = start,
- DauerInStunden = dauerInStunden
+ DauerInStunden = (ende == "00:00" && start == "00:00") ? Convert.ToDouble(textbox_dauer.EditValue, new NumberFormatInfo() { NumberDecimalSeparator = "." }) : dauerInStunden
};
ServiceFacade.DoOperationsServiceSync(x => x.InsertNewDienstEintrag(newEintrag));
if (datum.Month == _AuswahlMonat.Month)
@@ -777,7 +777,7 @@ namespace BeWo.View.Detail.Report
Notice = notice,
Startzeit = start,
Endzeit = ende,
- DauerInStunden = dauerInStunden// - Convert.ToDouble(dienst.Pause) / 60
+ DauerInStunden = (ende == "00:00" && start == "00:00") ? Convert.ToDouble(textbox_dauer.EditValue, new NumberFormatInfo() { NumberDecimalSeparator = "." }) : dauerInStunden
};
ServiceFacade.DoOperationsServiceSync(x => x.InsertNewDienstvertretung(newVertretung));
if (datum.Month == _AuswahlMonat.Month)
@@ -899,7 +899,7 @@ namespace BeWo.View.Detail.Report
#region Möglichkeit, Dienste an Feier-, Krankheits- und Urlaubstagen einzutragen, erlauben oder verbieten
//Dienste an Feiertagen setzen können deaktivieren
- if (_DienstplanerRootObj.EnableDiensteAnFeiertagen)
+ if (!_DienstplanerRootObj.EnableDiensteAnFeiertagen)
{
var date = new DateTime(_AuswahlMonat.Year, _AuswahlMonat.Month, _AuswahlTag);
foreach (var tag in _DienstplanerRootObj.Feiertage)
@@ -908,23 +908,6 @@ namespace BeWo.View.Detail.Report
return;
}
}
-
- //Dienste an Abwesenheitstagen setzen können deaktivieren
- //foreach (var at in _DienstplanerRootObj.AbsenceTimes)
- //{
- // if (at.EmployeeOid == _AuswahlDienstZeileDC.Employee.EmployeeOid && at.AbsenceSpan.ContainsDate(date))
- // {
- // if (at.End.HasValue)
- // {
- // if (at.Start.Value.Date == at.End.Value.Date && at.Start.Value.TimeOfDay == at.End.Value.TimeOfDay)
- // return;
- // if (at.Start.Value.Date != at.End.Value.Date)
- // return;
- // }
- // else
- // return;
- // }
- //}
#endregion
popUp_RightClick.IsOpen = true;
@@ -958,6 +941,12 @@ namespace BeWo.View.Detail.Report
textbox_startzeit.Foreground = foregroundColor;
if (TimeSpan.Parse(eintrag.Endzeit) != info.Ende.TimeOfDay)
textbox_endzeit.Foreground = foregroundColor;
+
+ if (info.Start.TimeOfDay.ToString() == "00:00:00" && info.Ende.TimeOfDay.ToString() == "00:00:00")
+ textbox_dauer.IsEnabled = true;
+ else
+ textbox_dauer.IsEnabled = false;
+
break;
}
}
@@ -1073,13 +1062,39 @@ namespace BeWo.View.Detail.Report
var endzeit = selectedDienst.Ende.TimeOfDay.ToString().Split(':');
textbox_startzeit.Text = startzeit[0] + ":" + startzeit[1];
textbox_endzeit.Text = endzeit[0] + ":" + endzeit[1];
+ textbox_dauer.Text = string.Format("{0:0.00}", selectedDienst.Dauer);
+
+ if (selectedDienst.Start.TimeOfDay.ToString() == "00:00:00" && selectedDienst.Ende.TimeOfDay.ToString() == "00:00:00")
+ textbox_dauer.IsEnabled = true;
+ else
+ textbox_dauer.IsEnabled = false;
}
else
{
textbox_startzeit.Text = "";
textbox_endzeit.Text = "";
+ textbox_dauer.Text = "0.00";
+ }
+ }
+ private void textbox_startzeit_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
+ {
+ if (textbox_startzeit.Text != "00:00" || textbox_endzeit.Text != "00:00")
+ {
+ var start = textbox_startzeit.Text.Split(':');
+ var ende = textbox_endzeit.Text.Split(':');
+
+ if (start.Length < 2 || ende.Length < 2)
+ return;
+
+ var startdate = new DateTime(2000, 1, 1, Convert.ToInt32(start[0]), Convert.ToInt32(start[1]), 0);
+ var enddate = new DateTime(2000, 1, 1, Convert.ToInt32(ende[0]), Convert.ToInt32(ende[1]), 0);
+
+ var dauer = startdate < enddate ? (enddate - startdate).TotalHours : (enddate.AddDays(1) - startdate).TotalHours;
}
-
+ }
+ private void textbox_endzeit_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
+ {
+
}
// Methode zum Speichern von Diensten
@@ -1507,7 +1522,9 @@ namespace BeWo.View.Detail.Report
bool markierungBenoetigt = false;
if (eintrag != null)
{
- var origDienst = _DienstplanerRootObj.AlleDienste.First(d => d.Oid == eintrag.DienstOid);
+ var origDienst = _DienstplanerRootObj.AlleDienste.FirstOrDefault(d => d.Oid == eintrag.DienstOid);
+ if (origDienst == null)
+ return false;
var origStart = origDienst.Start.ToString().Split(' ');
var origEnde = origDienst.Ende.ToString().Split(' ');
if (origStart[1] != eintrag.Startzeit + ":00" || origEnde[1] != eintrag.Endzeit + ":00" || !eintrag.Notice.IsNullOrEmpty())
@@ -1515,7 +1532,9 @@ namespace BeWo.View.Detail.Report
}
else if (vertretung != null)
{
- var origDienst = _DienstplanerRootObj.AlleDienste.First(d => d.Oid == vertretung.DienstOid || !vertretung.Notice.IsNullOrEmpty());
+ var origDienst = _DienstplanerRootObj.AlleDienste.FirstOrDefault(d => d.Oid == vertretung.DienstOid || !vertretung.Notice.IsNullOrEmpty());
+ if (origDienst == null)
+ return false;
var origStart = origDienst.Start.ToString().Split(' ');
var origEnde = origDienst.Ende.ToString().Split(' ');
if (origStart[1] != vertretung.Startzeit + ":00" || origEnde[1] != vertretung.Endzeit + ":00")
@@ -2209,9 +2228,6 @@ namespace BeWo.View.Detail.Report
return res;
}
-
-
-
#endregion
///
diff --git a/BeWo/ViewModel/DienstInfoVM.cs b/BeWo/ViewModel/DienstInfoVM.cs
index d69a111cd..34072771f 100644
--- a/BeWo/ViewModel/DienstInfoVM.cs
+++ b/BeWo/ViewModel/DienstInfoVM.cs
@@ -22,11 +22,13 @@ namespace BeWo.ViewModel
private string _FarbeString;
private DateTime _StartDT;
private DateTime _EndeDT;
+ private double _Dauer;
private int _Pause;
private WohnheimDC _Wohnheim;
public DienstInfoVM(DienstInfoDC dienstDC) : base(dienstDC, dienstDC.Oid == null)
{
+ Dauer = dienstDC.Dauer;
}
@@ -177,6 +179,20 @@ namespace BeWo.ViewModel
}
}
+ public double Dauer
+ {
+ get { return _Dauer; }
+ set
+ {
+ if (AreDifferent(_Dauer, value))
+ {
+ _Dauer = value;
+ StoreDirtyInformation(AreDifferent(DataContract.Dauer, value), nameof(_Dauer));
+ FirePropertyChanged(nameof(_Dauer));
+ }
+ }
+ }
+
public int Pause
{
get { return _Pause; }
@@ -215,6 +231,7 @@ namespace BeWo.ViewModel
_EndeDT = bDataContract.Ende;
_Pause = bDataContract.Pause;
_Wohnheim = bDataContract.Wohnheim;
+ _Dauer = bDataContract.Dauer;
if (!string.IsNullOrEmpty(bDataContract.Farbe))
{
@@ -234,6 +251,7 @@ namespace BeWo.ViewModel
bDataContract.Start = _StartDT;
bDataContract.Ende = _EndeDT;
bDataContract.Wohnheim = _Wohnheim;
+ bDataContract.Dauer = _Dauer;
return bDataContract;
}
diff --git a/Data/Access/SearchDAO.cs b/Data/Access/SearchDAO.cs
index 719055fe5..5b92a8908 100644
--- a/Data/Access/SearchDAO.cs
+++ b/Data/Access/SearchDAO.cs
@@ -4609,7 +4609,7 @@ namespace BeWo.Data.Access
var criteria = CreateCriteriaIsActive()
.Add(Restrictions.Or(Restrictions.Eq("Wohnheim", whOid), Restrictions.IsNull("Wohnheim")));
- return criteria.List();
+ return criteria.List(); // Hier fliegt man raus
}
public long? GetActiveMedVerListOidForCustomer(long customerOid)
diff --git a/Data/Entities/DienstInfo.cs b/Data/Entities/DienstInfo.cs
index 45c4140c4..9a52201d2 100644
--- a/Data/Entities/DienstInfo.cs
+++ b/Data/Entities/DienstInfo.cs
@@ -17,6 +17,7 @@ namespace BeWo.Data.Entities
private DateTime _Ende;
private int _Pause;
private long? _Wohnheim;
+ private double _Dauer;
public DienstInfo()
{
@@ -125,6 +126,20 @@ namespace BeWo.Data.Entities
_Wohnheim = value;
}
}
+ }
+ public virtual double Dauer
+ {
+ get
+ {
+ return _Dauer;
+ }
+ set
+ {
+ if (AreDifferent(_Dauer, value))
+ {
+ _Dauer = value;
+ }
+ }
}
}
}
diff --git a/Data/Mappings/DienstInfo.hbm.xml b/Data/Mappings/DienstInfo.hbm.xml
index c57011831..d4c58a234 100644
--- a/Data/Mappings/DienstInfo.hbm.xml
+++ b/Data/Mappings/DienstInfo.hbm.xml
@@ -22,5 +22,6 @@
+
\ No newline at end of file
diff --git a/Model/Changes_2021_12_22_DienstInfo.txt b/Model/Changes_2021_12_22_DienstInfo.txt
new file mode 100644
index 000000000..f29148506
--- /dev/null
+++ b/Model/Changes_2021_12_22_DienstInfo.txt
@@ -0,0 +1,2 @@
+ALTER TABLE `bewodemo`.`dienstinfo`
+ADD COLUMN `Dauer` DOUBLE NULL DEFAULT NULL AFTER `Wohnheim`;
diff --git a/Report/DefaultReportCreator.cs b/Report/DefaultReportCreator.cs
index ace59fd9f..fdaa5c73d 100644
--- a/Report/DefaultReportCreator.cs
+++ b/Report/DefaultReportCreator.cs
@@ -1028,7 +1028,9 @@ namespace BeWo.Report
employeeOids.Add(vertretung.EmployeeOid);
}
- var employee = MapperFactory.EmployeeDC_Employee.MapToNewDCs(DAOFactory.GenericDAO.GetActiveByIDs(employeeOids));
+ List employee = new List();
+ foreach (var oid in employeeOids)
+ employee.Add(MapperFactory.EmployeeDC_Employee.MapToNewDC(DAOFactory.GenericDAO.GetByID(oid)));
//report.SetReportDataSource(RosterRO.Create(service.GetDienstEintraege(wOid, dt.Year, dt.Month), service.GetAllDienste(), service2.GetAllActiveWohnheimeCompact().First(x => x.WohnheimOid == wOid), dt.Year, dt.Month));
report.SetReportDataSource(RosterRO.CreateNew(dienstEintraege, vertretungen, employee,
@@ -1059,13 +1061,15 @@ namespace BeWo.Report
employeeOids.Add(vertretung.EmployeeOid);
}
- var employee = MapperFactory.EmployeeDC_Employee.MapToNewDCs(DAOFactory.GenericDAO.GetActiveByIDs(employeeOids));
+ List employee = new List();
+ foreach (var oid in employeeOids)
+ employee.Add(MapperFactory.EmployeeDC_Employee.MapToNewDC(DAOFactory.GenericDAO.GetByID(oid)));
List absences = employeeService.GetMultipleEmployeeAbsenceTimesForMonth(dt.Year, dt.Month, employeeOids);
List feiertageDCs = opertionsService.ErstelleDefaultFeiertage(dt.Year).Where(f => f.Datum.Month == dt.Month).ToList();
Dictionary stundenBeiAbwesenheit = new Dictionary();
- foreach (var emp in employee)
+ foreach (var emp in employee) // Irgendwo hier drin Fehler
{
ContractDC currentContract = null;
foreach (var c in emp.Contracts)
@@ -1088,7 +1092,11 @@ namespace BeWo.Report
}
}
if (currentContract != null)
+ {
+ if (currentContract.WeeklyTotalHours == null || currentContract.WeeklyDays == null)
+ continue;
stundenBeiAbwesenheit.Add(emp.EmployeeOid, currentContract.WeeklyTotalHours.Value / currentContract.WeeklyDays);
+ }
}
report.SetReportDataSource(RosterIstRO.Create(dienstEintraege, vertretungen, employee, opertionsService.GetAllDienste(wOid),
diff --git a/Report/DefaultReports/RosterIstReport.designer.cs b/Report/DefaultReports/RosterIstReport.designer.cs
index c73e0437c..70db7eb3d 100644
--- a/Report/DefaultReports/RosterIstReport.designer.cs
+++ b/Report/DefaultReports/RosterIstReport.designer.cs
@@ -52,6 +52,7 @@ namespace BeWo.Report.DefaultReports
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell20 = 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();
@@ -64,6 +65,7 @@ namespace BeWo.Report.DefaultReports
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
this.Title = new DevExpress.XtraReports.UI.XRControlStyle();
this.FieldCaption = new DevExpress.XtraReports.UI.XRControlStyle();
this.PageInfo = new DevExpress.XtraReports.UI.XRControlStyle();
@@ -82,8 +84,6 @@ namespace BeWo.Report.DefaultReports
this.fieldIstArbeitszeit = new DevExpress.XtraReports.UI.CalculatedField();
this.fieldUeberstundenGesamt = new DevExpress.XtraReports.UI.CalculatedField();
this.PageFooter = new DevExpress.XtraReports.UI.PageFooterBand();
- this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell();
- this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
this.RosterIstRO = new DevExpress.DataAccess.ObjectBinding.ObjectDataSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
@@ -334,6 +334,16 @@ namespace BeWo.Report.DefaultReports
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell14.Weight = 0.059230186613465526D;
//
+ // xrTableCell20
+ //
+ this.xrTableCell20.Name = "xrTableCell20";
+ this.xrTableCell20.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
+ this.xrTableCell20.StylePriority.UsePadding = false;
+ this.xrTableCell20.StylePriority.UseTextAlignment = false;
+ this.xrTableCell20.Text = "Bemerkung";
+ this.xrTableCell20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
+ this.xrTableCell20.Weight = 0.1356371757796013D;
+ //
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -421,6 +431,8 @@ namespace BeWo.Report.DefaultReports
//
// xrTableCell12
//
+ this.xrTableCell12.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "PageObjects.EintraegeProMitarbeiter.Startzeit")});
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell12.StylePriority.UsePadding = false;
@@ -431,6 +443,8 @@ namespace BeWo.Report.DefaultReports
//
// xrTableCell18
//
+ this.xrTableCell18.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "PageObjects.EintraegeProMitarbeiter.Endzeit")});
this.xrTableCell18.Name = "xrTableCell18";
this.xrTableCell18.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell18.StylePriority.UsePadding = false;
@@ -475,6 +489,17 @@ namespace BeWo.Report.DefaultReports
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell13.Weight = 0.0676285623346416D;
//
+ // xrTableCell21
+ //
+ this.xrTableCell21.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "PageObjects.EintraegeProMitarbeiter.Notice")});
+ this.xrTableCell21.Name = "xrTableCell21";
+ this.xrTableCell21.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
+ this.xrTableCell21.StylePriority.UsePadding = false;
+ this.xrTableCell21.StylePriority.UseTextAlignment = false;
+ this.xrTableCell21.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
+ this.xrTableCell21.Weight = 0.1548692640734802D;
+ //
// Title
//
this.Title.BackColor = System.Drawing.Color.White;
@@ -609,27 +634,6 @@ namespace BeWo.Report.DefaultReports
this.PageFooter.HeightF = 100F;
this.PageFooter.Name = "PageFooter";
//
- // xrTableCell20
- //
- this.xrTableCell20.Name = "xrTableCell20";
- this.xrTableCell20.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
- this.xrTableCell20.StylePriority.UsePadding = false;
- this.xrTableCell20.StylePriority.UseTextAlignment = false;
- this.xrTableCell20.Text = "Bemerkung";
- this.xrTableCell20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
- this.xrTableCell20.Weight = 0.1356371757796013D;
- //
- // xrTableCell21
- //
- this.xrTableCell21.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
- new DevExpress.XtraReports.UI.XRBinding("Text", null, "PageObjects.EintraegeProMitarbeiter.Notice")});
- this.xrTableCell21.Name = "xrTableCell21";
- this.xrTableCell21.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
- this.xrTableCell21.StylePriority.UsePadding = false;
- this.xrTableCell21.StylePriority.UseTextAlignment = false;
- this.xrTableCell21.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
- this.xrTableCell21.Weight = 0.1548692640734802D;
- //
// RosterIstRO
//
this.RosterIstRO.DataSource = typeof(BeWo.Report.ReportObjects.RosterIstRO);
diff --git a/Report/ReportObjects/RosterIstRO.cs b/Report/ReportObjects/RosterIstRO.cs
index 6fd6455b1..17042bf7e 100644
--- a/Report/ReportObjects/RosterIstRO.cs
+++ b/Report/ReportObjects/RosterIstRO.cs
@@ -21,15 +21,28 @@ namespace BeWo.Report.ReportObjects
ro.PageObjects = new List();
// (Vorerst) leere Einträge erstellen
- List eintraege = new List();
+ List>> alleEintraege = new List>>();
int pos = 0;
+
foreach (var emp in employee)
- {
+ { // Es müsste nicht für jeden Tag was erstellt werden, sondern für jeden Mitarbeiter müsste die Anzahl der Schichten pro Tag
+ // ermittelt werden und anhand dessen die Zeilenmenge erstellt werden
+ Dictionary> eintraegeDict = new Dictionary>();
+
for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++)
{
+ var datum = new DateTime(year, month, i);
+ bool mitarbeiterDesWohnheims = false;
+ if (compactWohnheimDC.EmployeeOids.Contains(emp.EmployeeOid.Value))
+ mitarbeiterDesWohnheims = true;
+ else
+ mitarbeiterDesWohnheims = false;
+
+ var diensteFuerTag = mitarbeiterDesWohnheims ? dienstEintragDCs.Where(e => e.EmployeeOid == emp.EmployeeOid && e.Datum == datum).ToList() : null;
+ var vertretungenFuerTag = !mitarbeiterDesWohnheims ? dienstvertretungDCs.Where(e => e.EmployeeOid == emp.EmployeeOid && e.Datum == datum).ToList() : null;
+
string kr = null;
string ur = null;
- var datum = new DateTime(year, month, i);
if (absences.Any(a => datum >= a.Start && datum <= a.End && a.EmployeeOid == emp.EmployeeOid && a.Reason.Description.ToLower().Contains("urlaub")))
{
ur = string.Format("{0:0.00}", stundenBeiAbwesenheit[emp.EmployeeOid]);
@@ -38,79 +51,174 @@ namespace BeWo.Report.ReportObjects
{
kr = string.Format("{0:0.00}", stundenBeiAbwesenheit[emp.EmployeeOid]);
}
-
- eintraege.Add(new Listeneintrag()
+
+
+ if (mitarbeiterDesWohnheims)
{
- Position = pos,
- Datum = datum,
- EmployeeOid = (long)emp.EmployeeOid,
- DauerInStunden = null,
- Dienst = null,
- Endzeit = null,
- Startzeit = null,
- Notice = feiertage.Any(f => f.Datum == datum) ? feiertage.First(f => f.Datum == datum).Name : null,
- Krankheit = kr,
- Urlaub = ur,
- });
-
- pos++;
- }
- }
-
-
- foreach (var item in dienstEintragDCs)
- {
- string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(item, null, absences, stundenBeiAbwesenheit);
-
- var temp = eintraege.First(e => e.Datum == item.Datum && e.EmployeeOid == item.EmployeeOid && e.Dienst == null);
- if (temp != null)
- {
- eintraege[temp.Position] = new Listeneintrag()
- {
- Datum = item.Datum,
- DauerInStunden = string.Format("{0:0.00}", item.DauerInStunden),
- Dienst = dienstInfoDCs.First(i => i.Oid == item.DienstOid),
- EmployeeOid = item.EmployeeOid,
- Endzeit = item.Endzeit,
- Notice = item.Notice,
- Startzeit = item.Startzeit,
- Urlaub = urlaubKrankheit[0],
- Krankheit = urlaubKrankheit[1]
- };
- }
- }
- foreach (var item in dienstvertretungDCs)
- {
- string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(null, item, absences, stundenBeiAbwesenheit);
-
- var temp = eintraege.First(e => e.Datum == item.Datum && e.EmployeeOid == item.EmployeeOid && e.Dienst == null);
- if (temp != null)
- {
- eintraege[temp.Position] = new Listeneintrag()
+ List listeneintraege = new List();
+ foreach (var item in diensteFuerTag)
+ {
+ string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(item, null, absences, stundenBeiAbwesenheit);
+ listeneintraege.Add(new Listeneintrag()
+ {
+ Position = pos,
+ Datum = datum,
+ EmployeeOid = (long)emp.EmployeeOid,
+ DauerInStunden = string.Format("{0:0.00}", item.DauerInStunden),
+ Dienst = dienstInfoDCs.First(di => di.Oid == item.DienstOid),
+ Endzeit = item.Endzeit,
+ Startzeit = item.Startzeit,
+ Notice = feiertage.Any(f => f.Datum == datum) ? feiertage.First(f => f.Datum == datum).Name : item.Notice,
+ Krankheit = urlaubKrankheit[0],
+ Urlaub = urlaubKrankheit[1]
+ });
+ pos++;
+ }
+ eintraegeDict.Add(i, listeneintraege);
+ }
+ else
{
- Datum = item.Datum,
- DauerInStunden = string.Format("{0:0.00}", item.DauerInStunden),
- Dienst = dienstInfoDCs.First(i => i.Oid == item.DienstOid),
- EmployeeOid = item.EmployeeOid,
- Endzeit = item.Endzeit,
- Notice = item.Notice,
- Startzeit = item.Startzeit,
- Urlaub = urlaubKrankheit[0],
- Krankheit = urlaubKrankheit[1]
- };
+ List listeneintraege = new List();
+ foreach (var item in vertretungenFuerTag)
+ {
+ string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(null, item, absences, stundenBeiAbwesenheit);
+ listeneintraege.Add(new Listeneintrag()
+ {
+ Position = pos,
+ Datum = datum,
+ EmployeeOid = (long)emp.EmployeeOid,
+ DauerInStunden = string.Format("{0:0.00}", item.DauerInStunden),
+ Dienst = dienstInfoDCs.First(di => di.Oid == item.DienstOid),
+ Endzeit = item.Endzeit,
+ Startzeit = item.Startzeit,
+ Notice = feiertage.Any(f => f.Datum == datum) ? feiertage.First(f => f.Datum == datum).Name : item.Notice,
+ Krankheit = urlaubKrankheit[0],
+ Urlaub = urlaubKrankheit[1]
+ });
+ pos++;
+ }
+ eintraegeDict.Add(i, listeneintraege);
+ }
+
}
-
+ #region outdated
+ // for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++)
+ // {
+ // string kr = null;
+ // string ur = null;
+ // var datum = new DateTime(year, month, i);
+ // if (absences.Any(a => datum >= a.Start && datum <= a.End && a.EmployeeOid == emp.EmployeeOid && a.Reason.Description.ToLower().Contains("urlaub")))
+ // {
+ // ur = string.Format("{0:0.00}", stundenBeiAbwesenheit[emp.EmployeeOid]);
+ // }
+ // else if (absences.Any(a => datum >= a.Start && datum <= a.End && a.EmployeeOid == emp.EmployeeOid && a.Reason.Description.ToLower().Contains("krank")))
+ // {
+ // kr = string.Format("{0:0.00}", stundenBeiAbwesenheit[emp.EmployeeOid]);
+ // }
+
+ // eintraege.Add(new Listeneintrag()
+ // {
+ // Position = pos,
+ // Datum = datum,
+ // EmployeeOid = (long)emp.EmployeeOid,
+ // DauerInStunden = null,
+ // Dienst = null,
+ // Endzeit = null,
+ // Startzeit = null,
+ // Notice = feiertage.Any(f => f.Datum == datum) ? feiertage.First(f => f.Datum == datum).Name : null,
+ // Krankheit = kr,
+ // Urlaub = ur,
+ // });
+
+ // pos++;
+ // }
+ //}
+
+
+ //foreach (var item in dienstEintragDCs)
+ //{
+ // string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(item, null, absences, stundenBeiAbwesenheit);
+
+ // var temp = eintraege.FirstOrDefault(e => e.Datum == item.Datum && e.EmployeeOid == item.EmployeeOid && e.Dienst == null);
+ // var temp2 = eintraege.Where(e => e.Datum == item.Datum && e.EmployeeOid == item.EmployeeOid).ToList();
+ // if (temp != null)
+ // {
+ // eintraege[temp.Position] = new Listeneintrag()
+ // {
+ // Datum = item.Datum,
+ // DauerInStunden = string.Format("{0:0.00}", item.DauerInStunden),
+ // Dienst = dienstInfoDCs.First(i => i.Oid == item.DienstOid),
+ // EmployeeOid = item.EmployeeOid,
+ // Endzeit = item.Endzeit,
+ // Notice = item.Notice,
+ // Startzeit = item.Startzeit,
+ // Urlaub = urlaubKrankheit[0],
+ // Krankheit = urlaubKrankheit[1]
+ // };
+ // }
+ //}
+ //foreach (var item in dienstvertretungDCs)
+ //{
+ // string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(null, item, absences, stundenBeiAbwesenheit);
+
+ // var temp = eintraege.FirstOrDefault(e => e.Datum == item.Datum && e.EmployeeOid == item.EmployeeOid && e.Dienst == null);
+ // if (temp != null)
+ // {
+ // eintraege[temp.Position] = new Listeneintrag()
+ // {
+ // Datum = item.Datum,
+ // DauerInStunden = string.Format("{0:0.00}", item.DauerInStunden),
+ // Dienst = dienstInfoDCs.First(i => i.Oid == item.DienstOid),
+ // EmployeeOid = item.EmployeeOid,
+ // Endzeit = item.Endzeit,
+ // Notice = item.Notice,
+ // Startzeit = item.Startzeit,
+ // Urlaub = urlaubKrankheit[0],
+ // Krankheit = urlaubKrankheit[1]
+ // };
+ // }
+ #endregion
+ alleEintraege.Add(eintraegeDict);
+
}
+ int counter = 0;
+ int position = 0;
foreach (EmployeeDC emp in employee)
{
+ List liste = new List();
+ var temp = alleEintraege[counter];
+ foreach (var item in temp)
+ {
+ if (item.Value.Count == 0)
+ {
+ var date = new DateTime(year, month, item.Key, 0, 0, 0);
+ item.Value.Add(new Listeneintrag()
+ {
+ Datum = date,
+ DauerInStunden = null,
+ Dienst = null,
+ EmployeeOid = emp.EmployeeOid.Value,
+ Endzeit = null,
+ Krankheit = null,
+ Notice = feiertage.Any(f => f.Datum == date) ? feiertage.First(f => f.Datum == date).Name : null,
+ Startzeit = null,
+ Urlaub = null
+ });
+ }
+ //else
+ foreach (var v in item.Value)
+ liste.Add(v);
+ }
+
ro.PageObjects.Add(new PageObject()
{
Jahr = year,
Monat = new DateTime(year, month, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("de")),
Mitarbeiter = emp,
- EintraegeProMitarbeiter = eintraege.Where(e => e.EmployeeOid == emp.EmployeeOid).OrderBy(e => e.Datum).ToList()
+ EintraegeProMitarbeiter = liste
});
+ counter++;
}
return ro;
@@ -170,6 +278,5 @@ namespace BeWo.Report.ReportObjects
public string Monat { get; set; }
public int Jahr { get; set; }
public List EintraegeProMitarbeiter { get; set; }
-
}
}
diff --git a/Report/ReportObjects/RosterRO.cs b/Report/ReportObjects/RosterRO.cs
index 3fa0a57c7..bc6a70ecd 100644
--- a/Report/ReportObjects/RosterRO.cs
+++ b/Report/ReportObjects/RosterRO.cs
@@ -286,9 +286,12 @@ namespace BeWo.Report.ReportObjects
foreach (var zeile in vertretungenNachZeilen)
{
if (zeile.Count > 0)
- currentEmployee = employee.First(e => e.EmployeeOid == zeile[0].EmployeeOid);
+ currentEmployee = employee.FirstOrDefault(e => e.EmployeeOid == zeile[0].EmployeeOid);
}
+ if (currentEmployee == null)
+ continue;
+
double monthlyHours = 0;
for (int i = 0; i < vertretungenNachZeilen.Length; i++)
{
diff --git a/ReportImp/WahlEv/RosterReport.cs b/ReportImp/WahlEv/RosterReport.cs
index 0738482a8..58f15f6af 100644
--- a/ReportImp/WahlEv/RosterReport.cs
+++ b/ReportImp/WahlEv/RosterReport.cs
@@ -288,7 +288,7 @@ namespace WahlEv
}
if (LastCellWasWo)
{
- cell.Row.Cells[index].BackColor = Color.LightGray;
+ cell.Row.Cells[index].BackColor = Color.Gray;
LastCellWasWo = false;
}
else if (Feiertage != null)
@@ -363,6 +363,9 @@ namespace WahlEv
private System.Windows.Media.Color TransformStringToColor(string colorString)
{
+ if (colorString == null)
+ colorString = "#FFFFFF";
+
int argb = Int32.Parse(colorString.Replace("#", ""), NumberStyles.HexNumber);
var clr = Color.FromArgb(argb);
diff --git a/Service/DCEntityMapper/DienstInfoDC_DienstInfo.cs b/Service/DCEntityMapper/DienstInfoDC_DienstInfo.cs
index cde1214ef..c5c255dbe 100644
--- a/Service/DCEntityMapper/DienstInfoDC_DienstInfo.cs
+++ b/Service/DCEntityMapper/DienstInfoDC_DienstInfo.cs
@@ -26,6 +26,7 @@ namespace BeWo.Service.DCEntityMapper
bDataContract.Wohnheim = MapperFactory.WohnheimDC_Wohnheim.MapToNewDC(DAOFactory.GenericDAO.GetByID(bEntity.Wohnheim.Value));
else
bDataContract.Wohnheim = null;
+ bDataContract.Dauer = bEntity.Dauer;
return bDataContract;
}
@@ -46,8 +47,9 @@ namespace BeWo.Service.DCEntityMapper
bEntity.Wohnheim = bDataContract.Wohnheim.WohnheimOid.Value;
else
bEntity.Wohnheim = null;
+ bEntity.Dauer = bDataContract.Dauer;
- return bEntity;
+ return bEntity;
}
protected override bool AreDCAndEntityEqual(DienstInfoDC bDC, DienstInfo bEntity)
diff --git a/Service/Dienstplanung/DienstplanungsManager.cs b/Service/Dienstplanung/DienstplanungsManager.cs
index ee8ec2a40..f37ade4f4 100644
--- a/Service/Dienstplanung/DienstplanungsManager.cs
+++ b/Service/Dienstplanung/DienstplanungsManager.cs
@@ -152,7 +152,7 @@ namespace BeWo.Service.Dienstplanung
var dcs = MapperFactory.DienstInfoDC_DienstInfo.MapToNewDCs(list);
- return dcs;//.OrderBy(d => d.Wohnheim).ThenBy(d => d.DienstName).ToList();
+ return dcs;
}
public static void InsertNewDienst(List dienst)
{
@@ -162,6 +162,18 @@ namespace BeWo.Service.Dienstplanung
public static void DeactivateDienst(Dictionary pOid2Version)
{
ServiceLogic.SetActivationType(pOid2Version, ActivationTypeId.Deleted);
+
+ // Alle Diensteinträge und Vertretungen mit diesem Dienst suchen
+ var diensteintraege = DAOFactory.GenericDAO.GetAllActive();
+ var dienstvertretungen = DAOFactory.GenericDAO.GetAllActive();
+
+ foreach (var e in diensteintraege)
+ if (pOid2Version.ContainsKey(e.DienstOid))
+ DAOFactory.GenericDAO.Delete(e);
+
+ foreach (var v in dienstvertretungen)
+ if (pOid2Version.ContainsKey(v.DienstOid))
+ DAOFactory.GenericDAO.Delete(v);
}
public static void UpdateDienst(List dienste)
{
diff --git a/Service/Plugins/PluginLoader.cs b/Service/Plugins/PluginLoader.cs
index 2e6d7c240..657955890 100644
--- a/Service/Plugins/PluginLoader.cs
+++ b/Service/Plugins/PluginLoader.cs
@@ -209,7 +209,7 @@ namespace BeWo.Service.Plugins
//t = "7185105541"; // Nous GmbH
//t = "5022131330"; // Tabula Rasa
//t = "4189934785"; // Landshuter Netzwerke
- t = "4290816992"; // BeWo Imflow
+ //t = "4290816992"; // BeWo Imflow
//t = "7584236951"; // Aachener Betreuungsbüro Kirschbaum und Manz GbR
//t = "3678599942"; // VKM Rietberg
//t = "4069072369"; // BeWo Dreilich&Pastor (Pastor)
diff --git a/Shared/DataContracts/DienstInfoDC.cs b/Shared/DataContracts/DienstInfoDC.cs
index 6ff584390..6f8641ebb 100644
--- a/Shared/DataContracts/DienstInfoDC.cs
+++ b/Shared/DataContracts/DienstInfoDC.cs
@@ -39,6 +39,9 @@ namespace BS.Shared.DataContracts
[DataMember]
public WohnheimDC Wohnheim{ get; set; }
+ [DataMember]
+ public double Dauer { get; set; }
+
[DataMember]
public DienstInfoDC UmschließenderDienst { get; set; }
@@ -66,7 +69,8 @@ namespace BS.Shared.DataContracts
public bool IsPlatzhalter => Oid == -1;
- public double DurationHours => Start < Ende ? (Ende - Start).TotalHours : (Ende.AddDays(1) - Start).TotalHours;
+ //public double DurationHours => Start < Ende ? (Ende - Start).TotalHours : (Ende.AddDays(1) - Start).TotalHours;
+ public double DurationHours => Dauer;
public string DarstellungInPopUp
{