Urlaubsplaner Updatefunktion eingebaut.

This commit is contained in:
2023-01-25 16:59:23 +01:00
parent 514c470565
commit d9680713ee
5 changed files with 265 additions and 87 deletions

View File

@@ -1129,10 +1129,11 @@ Public Class frmDienstplanVariabel
If dgv.Parent.Parent.GetType() Is GetType(usrCntlDienstWoche) Then o = dgv.Parent.Parent
Dim d As Date = CDate(getValuesDienstDGV(o, dgv.Name, "datum"))
If o.SCHICHT.dedet_Splitschicht = True Then
MsgBox("Keine Änderungen bei Splitschichten erlaubt!")
Exit Sub
If o IsNot Nothing Then
If o.SCHICHT.dedet_Splitschicht = True Then
MsgBox("Keine Änderungen bei Splitschichten erlaubt!")
Exit Sub
End If
End If
For Each s In BEN_SCHICHTEN
@@ -1264,7 +1265,7 @@ Public Class frmDienstplanVariabel
initALL()
End If
End Sub
Public Sub initALL(Optional MAID As Integer = -1)
Public Sub initALL(Optional MAID As Integer = -1, Optional onlyFehlzeiten As Boolean = False)
Me.Cursor = Cursors.WaitCursor
' Me.Enabled = False
@@ -1276,104 +1277,114 @@ Public Class frmDienstplanVariabel
Dim cDienstAbwesendheiten As List(Of cDienstAbwesendheiten) = SQLDienst.getDienstAbwesendheiten(montag, sonntag, niederlassung)
Dim ma As List(Of cDienstMA) = Nothing
If MAID > 0 Then
If Not SQLDienst.delDstEintraegeMaId(montag, sonntag, niederlassung, MAID) Then Me.Cursor = Cursors.Default : Exit Sub 'Alle löschen
If Not SQLDienst.delDstEintraegeMaId(montag, sonntag, niederlassung, MAID, onlyFehlzeiten) Then Me.Cursor = Cursors.Default : Exit Sub 'Alles Löschen/Nur Fehlzeiten löschen
ma = SQLDienst.getAllDienstMA(niederlassung, montag, " AND dstma_id = " & MAID)
Else
If Not SQLDienst.delDstEintraege(montag, sonntag, niederlassung) Then Me.Cursor = Cursors.Default : Exit Sub 'Alle löschen
If Not SQLDienst.delDstEintraege(montag, sonntag, niederlassung, onlyFehlzeiten) Then Me.Cursor = Cursors.Default : Exit Sub 'Alles Löschen/Nur Fehlzeiten löschen
ma = SQLDienst.getAllDienstMA(niederlassung, montag)
End If
Dim datum As Date = montag
For i = 1 To 7
Dim FT As New VERAG_PROG_ALLGEMEIN.cFeiertage(datum.Year) 'Evtl Jahressprung, darum neu definieren
For Each m In ma
Dim eintrag As New cDienstEintrag
eintrag.dstetr_dstmaId = m.dstma_id
eintrag.dstetr_datum = datum
Dim existingEntry = SQLDienst.getCountEntrys(eintrag.dstetr_dstmaId, eintrag.dstetr_datum, eintrag.dstetr_datum)
If Not FT.isFeiertag(datum, IIf(m.dstma_land <> "", m.dstma_land, SETTINGS.dpset_land)) Then
If m.dstma_muster Then
' MsgBox("HIER")
Dim tz As List(Of cDienstTeilzeit) = SQLDienst.getAllDienstTeilzeit(m.dstma_id)
eintrag.dstetr_art = getFromTeilzeit(m.dstma_4wo, "abt", tz, datum, SCHICHT)
If eintrag.dstetr_art = "" Then
eintrag.dstetr_art = "FREI"
Else
' MsgBox(getFromTeilzeit("von", tz, datum, SCHICHT) & " _ " & getFromTeilzeit("bis", tz, datum, SCHICHT))
eintrag.dstetr_von = getFromTeilzeit(m.dstma_4wo, "von", tz, datum, SCHICHT)
eintrag.dstetr_bis = getFromTeilzeit(m.dstma_4wo, "bis", tz, datum, SCHICHT)
eintrag.dstetr_pause = getFromTeilzeit(m.dstma_4wo, "pause", tz, datum, SCHICHT)
' eintrag.dstetr_pause = getDefaultTimeBySchicht(eintrag.dstetr_art, "pause", week(datum.DayOfWeek))
eintrag.dstetr_grund = ""
eintrag.dstetr_info = getFromTeilzeit(m.dstma_4wo, "info", tz, datum, SCHICHT)
'MsgBox(eintrag.dstetr_art)
If Not onlyFehlzeiten Or onlyFehlzeiten AndAlso existingEntry = 0 Then
If Not FT.isFeiertag(datum, IIf(m.dstma_land <> "", m.dstma_land, SETTINGS.dpset_land)) Then
If m.dstma_muster Then
' MsgBox("HIER")
Dim tz As List(Of cDienstTeilzeit) = SQLDienst.getAllDienstTeilzeit(m.dstma_id)
eintrag.dstetr_art = getFromTeilzeit(m.dstma_4wo, "abt", tz, datum, SCHICHT)
End If
Else
If m.dstma_arbvh = "VZ" Then
If week(datum.DayOfWeek) = "SA" Or week(datum.DayOfWeek) = "SO" Then
If eintrag.dstetr_art = "" Then
eintrag.dstetr_art = "FREI"
Else
eintrag.dstetr_art = getSchichtArt(m.dstma_abteilung, m.dstma_stammSchicht, datum)
eintrag.dstetr_hauptsplitschicht = getBooleanHauptsplitschicht(m.dstma_stammSchicht)
'MsgBox(getSchichtArt(m.dstma_abteilung, m.dstma_stammSchicht, datum))
'Abwesenheiten prüfen:
' For Each d In cDienstAbwesendheiten
'If d.dstna_mitId = eintrag.dstetr_dstmaId AndAlso d.dstna_datum_von <= datum And d.dstna_datum_bis >= datum Then
' eintrag.dstetr_art = d.dstna_grund
'End If
' Next
' MsgBox(getFromTeilzeit("von", tz, datum, SCHICHT) & " _ " & getFromTeilzeit("bis", tz, datum, SCHICHT))
eintrag.dstetr_von = getFromTeilzeit(m.dstma_4wo, "von", tz, datum, SCHICHT)
eintrag.dstetr_bis = getFromTeilzeit(m.dstma_4wo, "bis", tz, datum, SCHICHT)
eintrag.dstetr_pause = getFromTeilzeit(m.dstma_4wo, "pause", tz, datum, SCHICHT)
' eintrag.dstetr_pause = getDefaultTimeBySchicht(eintrag.dstetr_art, "pause", week(datum.DayOfWeek))
eintrag.dstetr_grund = ""
eintrag.dstetr_info = getFromTeilzeit(m.dstma_4wo, "info", tz, datum, SCHICHT)
'MsgBox(eintrag.dstetr_art)
eintrag.dstetr_art = getFromTeilzeit(m.dstma_4wo, "abt", tz, datum, SCHICHT)
End If
eintrag.dstetr_von = getDefaultTimeBySchicht(eintrag.dstetr_art, "von", week(datum.DayOfWeek))
eintrag.dstetr_bis = getDefaultTimeBySchicht(eintrag.dstetr_art, "bis", week(datum.DayOfWeek))
eintrag.dstetr_pause = getDefaultTimeBySchicht(eintrag.dstetr_art, "pause", week(datum.DayOfWeek))
eintrag.dstetr_grund = ""
eintrag.dstetr_info = ""
Else
If m.dstma_arbvh = "VZ" Then
If week(datum.DayOfWeek) = "SA" Or week(datum.DayOfWeek) = "SO" Then
eintrag.dstetr_art = "FREI"
Else
eintrag.dstetr_art = getSchichtArt(m.dstma_abteilung, m.dstma_stammSchicht, datum)
eintrag.dstetr_hauptsplitschicht = getBooleanHauptsplitschicht(m.dstma_stammSchicht)
'MsgBox(getSchichtArt(m.dstma_abteilung, m.dstma_stammSchicht, datum))
'Abwesenheiten prüfen:
' For Each d In cDienstAbwesendheiten
'If d.dstna_mitId = eintrag.dstetr_dstmaId AndAlso d.dstna_datum_von <= datum And d.dstna_datum_bis >= datum Then
' eintrag.dstetr_art = d.dstna_grund
'End If
' Next
End If
eintrag.dstetr_von = getDefaultTimeBySchicht(eintrag.dstetr_art, "von", week(datum.DayOfWeek))
eintrag.dstetr_bis = getDefaultTimeBySchicht(eintrag.dstetr_art, "bis", week(datum.DayOfWeek))
eintrag.dstetr_pause = getDefaultTimeBySchicht(eintrag.dstetr_art, "pause", week(datum.DayOfWeek))
eintrag.dstetr_grund = ""
eintrag.dstetr_info = ""
If False Then
If False Then
If m.dstma_kuerzel = "AKPINAR" Then
If m.dstma_kuerzel = "AKPINAR" Then
If Not week(datum.DayOfWeek) = "SA" And Not week(datum.DayOfWeek) = "SO" Then
'MsgBox("Hallo")
' eintrag.dstetr_von = "08:00"
' eintrag.dstetr_bis = "19:00"
eintrag.dstetr_info = " 8-14 14:30-19"
If Not week(datum.DayOfWeek) = "SA" And Not week(datum.DayOfWeek) = "SO" Then
'MsgBox("Hallo")
' eintrag.dstetr_von = "08:00"
' eintrag.dstetr_bis = "19:00"
eintrag.dstetr_info = " 8-14 14:30-19"
End If
End If
End If
' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung)
Else 'TEILZEIT
eintrag.dstetr_art = "FREI"
eintrag.dstetr_von = "00:00"
eintrag.dstetr_bis = "00:00"
eintrag.dstetr_pause = "0"
eintrag.dstetr_grund = ""
eintrag.dstetr_info = ""
' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung)
End If
' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung)
Else 'TEILZEIT
eintrag.dstetr_art = "FREI"
eintrag.dstetr_von = "00:00"
eintrag.dstetr_bis = "00:00"
eintrag.dstetr_pause = "0"
eintrag.dstetr_grund = ""
eintrag.dstetr_info = ""
' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung)
End If
Else 'FEIERTAG
eintrag.dstetr_art = "FREI"
eintrag.dstetr_von = "00:00"
eintrag.dstetr_bis = "00:00"
eintrag.dstetr_pause = "0"
eintrag.dstetr_grund = ""
eintrag.dstetr_info = ""
' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung)
End If
Else 'FEIERTAG
eintrag.dstetr_art = "FREI"
eintrag.dstetr_von = "00:00"
eintrag.dstetr_bis = "00:00"
eintrag.dstetr_pause = "0"
eintrag.dstetr_grund = ""
eintrag.dstetr_info = ""
' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung)
End If
'Abwesenheiten prüfen:
For Each d In cDienstAbwesendheiten
If d.dstna_mitId = eintrag.dstetr_dstmaId AndAlso d.dstna_datum_von <= datum And d.dstna_datum_bis >= datum Then
@@ -1386,10 +1397,24 @@ Public Class frmDienstplanVariabel
eintrag.dstetr_von = getDefaultTimeBySchicht(grund, "von", week(datum.DayOfWeek).ToUpper)
eintrag.dstetr_bis = getDefaultTimeBySchicht(grund, "bis", week(datum.DayOfWeek).ToUpper)
eintrag.dstetr_pause = getDefaultTimeBySchicht(grund, "pause", week(datum.DayOfWeek).ToUpper)
End If
Next
SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung)
If onlyFehlzeiten Then
'MsgBox("MA-ID: " & eintrag.dstetr_dstmaId & " " & "existingEntry: " & existingEntry & " Art: " & eintrag.dstetr_art & " DATUM: " & eintrag.dstetr_datum)
If existingEntry = 1 AndAlso (eintrag.dstetr_art = "URL" Or eintrag.dstetr_art = "KS" Or eintrag.dstetr_art = "DR" Or eintrag.dstetr_art = "BS") Or existingEntry = 0 Then
SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung,, False)
Else
End If
Else
'SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung,, False)
SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung)
End If
Next
datum = datum.AddDays(1)
@@ -2100,14 +2125,13 @@ Public Class frmDienstplanVariabel
MsgBox("Keine Splitschichten erlaubt!")
Exit Sub
End If
If o.SCHICHT.dedet_Hauptsplitschicht = False Then
MsgBox("In Schicht " & o.schicht_name & " sind keine Splitschichten erlaubt!")
Exit Sub
End If
Dim ids As New List(Of Integer)
Dim arr As DataGridViewSelectedCellCollection = dgv_tmp.SelectedCells
For Each c As DataGridViewCell In arr
@@ -2456,7 +2480,7 @@ Public Class frmDienstplanVariabel
If frmUrlKW.RESULT <> "" Then
' MsgBox(markId)
initALL(markId)
initALL(markId, True)
End If
@@ -2690,7 +2714,7 @@ Public Class frmDienstplanVariabel
End If
Else
MsgBox("Kein Mitarbeiter auswewählt!")
MsgBox("Kein Mitarbeiter ausgewählt!")
End If
End Sub
@@ -2918,4 +2942,12 @@ Public Class frmDienstplanVariabel
End Function
Private Sub Button20_Click(sender As Object, e As EventArgs) Handles Button20.Click
If Panel6.Controls.Count > 0 Then
Dim u As usrcntlDienstplanStunden = DirectCast(Panel6.Controls(0), usrcntlDienstplanStunden)
If markId > 0 Then
initALL(markId, True)
End If
End If
End Sub
End Class