MH: Fehler in Druckversionen der Dienstplanung behoben und diese verbessert

This commit is contained in:
Marcel Hirschle
2022-01-05 16:23:38 +01:00
parent bf234c774e
commit d5cf6a33ab
18 changed files with 383 additions and 136 deletions

View File

@@ -81,24 +81,30 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label Grid.Column="0" Content="Start" Margin="3,3,0,3"/>
<Label x:Name="_lblStart" Grid.Column="0" Content="Start" Margin="3,3,0,3"/>
<dxe:TextEdit Grid.Column="1" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" MinWidth="50" ShowError="False" MaskShowPlaceHolders="True" x:Name="_TxtStart"
MaskUseAsDisplayFormat="True" InvalidValueBehavior="AllowLeaveEditor" Height="23" Margin="0,3,3,3"
EditValue="{validation:ValidationBinding Path=NewVM.Start, UpdateSourceTrigger=PropertyChanged}"/>
<Label Grid.Column="2" Content="Ende" Margin="3,3,0,3"/>
EditValue="{validation:ValidationBinding Path=NewVM.Start, UpdateSourceTrigger=PropertyChanged}" />
<Label x:Name="_lblEnde" Grid.Column="2" Content="Ende" Margin="3,3,0,3"/>
<dxe:TextEdit Grid.Column="3" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" MinWidth="50" ShowError="False" MaskShowPlaceHolders="True" x:Name="_TxtEnde"
MaskUseAsDisplayFormat="True" InvalidValueBehavior="AllowLeaveEditor" Height="23" Margin="0,3,3,3"
EditValue="{validation:ValidationBinding Path=NewVM.Ende, UpdateSourceTrigger=PropertyChanged}"/>
<Label Grid.Column="4" Content="Pause (min)" Margin="3,3,0,3"/>
<dxe:SpinEdit Name="_SpinPause" AllowNullInput="True" IsFloatValue="False" MinValue="0" Grid.Column="5"
EditValue="{validation:ValidationBinding Path=NewVM.Ende, UpdateSourceTrigger=PropertyChanged}" />
<dxe:CheckEdit x:Name="_CheckDauer" Grid.Column="4" Content="Dauer statt feste Zeiten festlegen" Margin="3,3,0,3" Foreground="Black" Checked="CheckEdit_Checked" Unchecked="CheckEdit_Unchecked"/>
<Label x:Name="_lblDauer" Grid.Column="0" Content="Dauer" Margin="3,3,0,3" Visibility="Collapsed"/>
<dxe:TextEdit Grid.Column="1" Grid.ColumnSpan="3" MaskType="Numeric" Mask="########0.00" MinWidth="50" ShowError="False" MaskShowPlaceHolders="True" x:Name="_TxtDauer"
MaskUseAsDisplayFormat="True" InvalidValueBehavior="AllowLeaveEditor" Height="23" Margin="0,3,3,3"
EditValue="{validation:ValidationBinding Path=NewVM.Dauer, UpdateSourceTrigger=PropertyChanged}" Visibility="Collapsed"/>
<Label Grid.Column="6" Content="Pause (min)" Margin="3,3,0,3"/>
<dxe:SpinEdit Name="_SpinPause" AllowNullInput="True" IsFloatValue="False" MinValue="0" Grid.Column="7" HorizontalAlignment="Left"
Height="23" Width="50" EditValue="{Binding Path=NewVM.Pause, Converter={StaticResource Int2DecimalConverter}, UpdateSourceTrigger=PropertyChanged}" />
<Button Grid.Column="7" Content="Hinzufügen" Click="Button_Click"/>
<Button Grid.Column="8" Content="Hinzufügen" Click="Button_Click"/>
</Grid>
<!--Dritte Zeile-->
@@ -123,6 +129,11 @@
<dxe:TextEditSettings MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" MaskShowPlaceHolders="True" MaskUseAsDisplayFormat="True"/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn Header="Dauer" FixedWidth="True" Width="100" FieldName="Dauer" >
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="########0.00" MaskShowPlaceHolders="True" MaskUseAsDisplayFormat="True"/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Pause" Header="Pause" Width="100">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings HorizontalContentAlignment="Left"/>

View File

@@ -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;
}
}
}

View File

@@ -233,6 +233,7 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
@@ -260,15 +261,18 @@
</ListBox>
<WrapPanel FlowDirection="LeftToRight" Margin="0 5 0 0" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3">
<Label Content="Startzeit:" Margin="0 0 5 0" />
<dxe:TextEdit x:Name="textbox_startzeit" Width="75" Margin="0 0 20 0" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d"/>
<dxe:TextEdit x:Name="textbox_startzeit" Width="75" Margin="0 0 20 0" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" EditValueChanged="textbox_startzeit_EditValueChanged"/>
<Label Content="Endzeit:" Margin="0 0 5 0" />
<dxe:TextEdit Width="75" x:Name="textbox_endzeit" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d"/>
<dxe:TextEdit Width="75" x:Name="textbox_endzeit" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" EditValueChanged="textbox_endzeit_EditValueChanged"/>
</WrapPanel>
<Label Grid.Column="0" Grid.Row="3" Content="Bemerkung" Margin="-4 4 0 0" />
<TextBox x:Name="textbox_bemerkung" Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="3" Margin="0 0 0 3" Height="50"
<WrapPanel FlowDirection="LeftToRight" Margin="0 5 0 0" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="3">
<Label Content="Dauer:" Margin="0 0 5 0" />
<dxe:TextEdit x:Name="textbox_dauer" Width="75" Margin="12 0 0 0" MaskType="Numeric" Mask="########0.00"/>
</WrapPanel>
<Label Grid.Column="0" Grid.Row="4" Content="Bemerkung:" Margin="0 4 0 0" />
<TextBox x:Name="textbox_bemerkung" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="3" Margin="0 0 0 3" Height="50"
TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto"/>
<Button x:Name="button_save_bemerkung" Grid.Column="2" Grid.Row="5" Content="Speichern" Click="button_save_Click" Margin="0 7 0 0"></Button>
<Button x:Name="button_save_bemerkung" Grid.Column="2" Grid.Row="6" Content="Speichern" Click="button_save_Click" Margin="0 7 0 0"></Button>
</Grid>
</GroupBox>
</Border>

View File

@@ -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
/// <summary>

View File

@@ -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;
}

View File

@@ -4609,7 +4609,7 @@ namespace BeWo.Data.Access
var criteria = CreateCriteriaIsActive<DienstInfo>()
.Add(Restrictions.Or(Restrictions.Eq("Wohnheim", whOid), Restrictions.IsNull("Wohnheim")));
return criteria.List<DienstInfo>();
return criteria.List<DienstInfo>(); // Hier fliegt man raus
}
public long? GetActiveMedVerListOidForCustomer(long customerOid)

View File

@@ -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;
}
}
}
}
}

View File

@@ -22,5 +22,6 @@
<property column="Ende" type="DateTime" name="Ende" />
<property column="Pause" type="int" name="Pause" />
<property column="Wohnheim" type="Int64" name="Wohnheim" />
<property column="Dauer" type="Double" name="Dauer" />
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,2 @@
ALTER TABLE `bewodemo`.`dienstinfo`
ADD COLUMN `Dauer` DOUBLE NULL DEFAULT NULL AFTER `Wohnheim`;

View File

@@ -1028,7 +1028,9 @@ namespace BeWo.Report
employeeOids.Add(vertretung.EmployeeOid);
}
var employee = MapperFactory.EmployeeDC_Employee.MapToNewDCs(DAOFactory.GenericDAO.GetActiveByIDs<Employee>(employeeOids));
List<EmployeeDC> employee = new List<EmployeeDC>();
foreach (var oid in employeeOids)
employee.Add(MapperFactory.EmployeeDC_Employee.MapToNewDC(DAOFactory.GenericDAO.GetByID<Employee>(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<Employee>(employeeOids));
List<EmployeeDC> employee = new List<EmployeeDC>();
foreach (var oid in employeeOids)
employee.Add(MapperFactory.EmployeeDC_Employee.MapToNewDC(DAOFactory.GenericDAO.GetByID<Employee>(oid)));
List<AbsenceTimeDC> absences = employeeService.GetMultipleEmployeeAbsenceTimesForMonth(dt.Year, dt.Month, employeeOids);
List<FeiertagDC> feiertageDCs = opertionsService.ErstelleDefaultFeiertage(dt.Year).Where(f => f.Datum.Month == dt.Month).ToList();
Dictionary<long?, decimal> stundenBeiAbwesenheit = new Dictionary<long?, decimal>();
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),

View File

@@ -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);

View File

@@ -21,15 +21,28 @@ namespace BeWo.Report.ReportObjects
ro.PageObjects = new List<PageObject>();
// (Vorerst) leere Einträge erstellen
List<Listeneintrag> eintraege = new List<Listeneintrag>();
List<Dictionary<int, List<Listeneintrag>>> alleEintraege = new List<Dictionary<int, List<Listeneintrag>>>();
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<int, List<Listeneintrag>> eintraegeDict = new Dictionary<int, List<Listeneintrag>>();
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<Listeneintrag> listeneintraege = new List<Listeneintrag>();
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<Listeneintrag> listeneintraege = new List<Listeneintrag>();
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<Listeneintrag> liste = new List<Listeneintrag>();
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<Listeneintrag> EintraegeProMitarbeiter { get; set; }
}
}

View File

@@ -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++)
{

View File

@@ -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);

View File

@@ -26,6 +26,7 @@ namespace BeWo.Service.DCEntityMapper
bDataContract.Wohnheim = MapperFactory.WohnheimDC_Wohnheim.MapToNewDC(DAOFactory.GenericDAO.GetByID<Wohnheim>(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)

View File

@@ -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<DienstInfoDC> dienst)
{
@@ -162,6 +162,18 @@ namespace BeWo.Service.Dienstplanung
public static void DeactivateDienst(Dictionary<long, long> pOid2Version)
{
ServiceLogic.SetActivationType<DienstInfo>(pOid2Version, ActivationTypeId.Deleted);
// Alle Diensteinträge und Vertretungen mit diesem Dienst suchen
var diensteintraege = DAOFactory.GenericDAO.GetAllActive<DienstEintrag>();
var dienstvertretungen = DAOFactory.GenericDAO.GetAllActive<Dienstvertretung>();
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<DienstInfoDC> dienste)
{

View File

@@ -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)

View File

@@ -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
{