Mitarbeiter, StartOptions, etc.
This commit is contained in:
@@ -155,6 +155,7 @@ Public Class frmMitarbDetails
|
||||
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FRONTOFFICE", "FO"))
|
||||
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "IMEX"))
|
||||
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG AG", "VERAG AG"))
|
||||
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG CS", "VERAG CS"))
|
||||
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG GMBH", "VERAG GMBH"))
|
||||
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG UNISPED Ltd", "VERAG UNISPED LIMITED"))
|
||||
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG CUSTOMS LOGISTICS Ltd", "VERAG CL LIMITED"))
|
||||
@@ -1452,70 +1453,152 @@ Public Class frmMitarbDetails
|
||||
|
||||
Private Sub datEinstiegsdatum_ValueChanged(sender As Object, e As EventArgs) Handles datEinstiegsdatum.ValueChanged, cbUrlaubInStund.CheckedChanged, txtUrlaubsabsp.TextChanged, cboDaysPerWeek.SelectedIndexChanged
|
||||
|
||||
If cbxEinsteigsDat.Checked And mitarbeiter.mit_einstiegsdatum <> "" Then
|
||||
If cbxEinsteigsDat.Checked AndAlso Not String.IsNullOrWhiteSpace(mitarbeiter.mit_einstiegsdatum) Then
|
||||
|
||||
If CDate(mitarbeiter.mit_einstiegsdatum).ToShortDateString >= DateTime.Parse("01/01/2000") Then
|
||||
Dim einstiegsdat As Date
|
||||
If Date.TryParse(mitarbeiter.mit_einstiegsdatum, einstiegsdat) AndAlso einstiegsdat >= #01/01/2000# Then
|
||||
|
||||
' Prüfen, ob Arbeitszeit und Arbeitstage korrekt eingegeben wurden
|
||||
If Not String.IsNullOrWhiteSpace(txtWoStd.Text) AndAlso IsNumeric(txtWoStd.Text) AndAlso Not String.IsNullOrWhiteSpace(cboDaysPerWeek.Text) AndAlso IsNumeric(cboDaysPerWeek.Text) Then
|
||||
|
||||
If txtWoStd.Text <> "" AndAlso IsNumeric(txtWoStd.Text) AndAlso cboDaysPerWeek.Text <> "" AndAlso IsNumeric(cboDaysPerWeek.Text) Then
|
||||
Dim einstiegsdat As Date = CDate(mitarbeiter.mit_einstiegsdatum)
|
||||
' Ende des Jahres oder ggf. Kündigungsdatum
|
||||
Dim endOfCurrentYear As Date = New DateTime(einstiegsdat.Year, 12, 31)
|
||||
Dim span As TimeSpan = endOfCurrentYear - einstiegsdat
|
||||
|
||||
Dim endOfCurrentYear = New DateTime(einstiegsdat.Year, 12, 31)
|
||||
If cbxGekuendigt.Checked AndAlso Not String.IsNullOrWhiteSpace(mitarbeiter.mit_kuendigungsdatum) Then
|
||||
|
||||
Dim span = endOfCurrentYear - einstiegsdat
|
||||
|
||||
If cbxGekuendigt.Checked AndAlso mitarbeiter.mit_kuendigungsdatum <> "" AndAlso CDate(mitarbeiter.mit_kuendigungsdatum).ToShortDateString >= DateTime.Parse("01/01/2000") Then
|
||||
Dim kuendigungsdatum As Date = CDate(mitarbeiter.mit_kuendigungsdatum)
|
||||
span = kuendigungsdatum - einstiegsdat
|
||||
Dim kuendigungsdatum As Date
|
||||
If Date.TryParse(mitarbeiter.mit_kuendigungsdatum, kuendigungsdatum) AndAlso kuendigungsdatum >= #01/01/2000# Then
|
||||
span = kuendigungsdatum - einstiegsdat
|
||||
End If
|
||||
End If
|
||||
|
||||
Dim days As Double = span.TotalDays
|
||||
Dim uansp As Double = 0
|
||||
Dim aliquU As Double = 0
|
||||
|
||||
calcUrlaubsabspruch(cbUrlaubInStund.Checked, uansp)
|
||||
' Urlaubsanspruch berechnen
|
||||
calcUrlaubsabspruchNew(cbUrlaubInStund.Checked, uansp)
|
||||
|
||||
If days > 0 AndAlso uansp > 0 Then
|
||||
If IsNumeric(txtUrlaubsabsp.Text) Then uansp = txtUrlaubsabsp.Text
|
||||
If Not cbUrlaubInStund.Checked Then
|
||||
aliquU = Math.Round((uansp / 365) * span.TotalDays, 2, MidpointRounding.AwayFromZero)
|
||||
txtaliquUA.Text = aliquU
|
||||
lblHoursOrDays2.Text = "D"
|
||||
Else
|
||||
aliquU = Math.Round((uansp / 365) * span.TotalDays, 2, MidpointRounding.AwayFromZero)
|
||||
txtaliquUA.Text = aliquU
|
||||
lblHoursOrDays2.Text = "H"
|
||||
If IsNumeric(txtUrlaubsabsp.Text) Then
|
||||
uansp = CDbl(txtUrlaubsabsp.Text)
|
||||
End If
|
||||
|
||||
' aliquoter Urlaubsanspruch
|
||||
aliquU = Math.Round((uansp / 365) * days, 2, MidpointRounding.AwayFromZero)
|
||||
txtaliquUA.Text = aliquU.ToString("0.00")
|
||||
|
||||
lblHoursOrDays2.Text = If(cbUrlaubInStund.Checked, "H", "D")
|
||||
End If
|
||||
|
||||
|
||||
End If
|
||||
End If
|
||||
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub calcUrlaubsabspruch(UrlaubInStunden As Boolean, ByRef urlaubsabspruch As Double)
|
||||
If Not UrlaubInStunden Then
|
||||
If cboDaysPerWeek.SelectedItem <> "" Then
|
||||
If Not cbabwJahresurlaub.Checked Then
|
||||
urlaubsabspruch = 5 * cboDaysPerWeek.SelectedItem
|
||||
End If
|
||||
|
||||
urlaubsabspruch = 0 ' sicherstellen, dass immer ein Wert zurückgegeben wird
|
||||
|
||||
Dim daysPerWeek As Double = 0
|
||||
Dim wochenstunden As Double = 0
|
||||
|
||||
' Tage pro Woche validieren
|
||||
If cboDaysPerWeek.SelectedItem IsNot Nothing AndAlso IsNumeric(cboDaysPerWeek.SelectedItem) Then
|
||||
daysPerWeek = CDbl(cboDaysPerWeek.SelectedItem)
|
||||
End If
|
||||
|
||||
' Wochenstunden validieren
|
||||
If IsNumeric(txtWoStd.Text) Then
|
||||
wochenstunden = CDbl(txtWoStd.Text)
|
||||
End If
|
||||
|
||||
' Wenn keine gültigen Werte, abbrechen
|
||||
If daysPerWeek <= 0 Then Exit Sub
|
||||
|
||||
' Jahresurlaub nur berechnen, wenn nicht "abgewählter Jahresurlaub"
|
||||
If Not cbabwJahresurlaub.Checked Then
|
||||
If Not UrlaubInStunden Then
|
||||
' Urlaub in Tagen
|
||||
urlaubsabspruch = 5 * daysPerWeek
|
||||
lblHoursOrDays1.Text = "D"
|
||||
End If
|
||||
Else
|
||||
If cboDaysPerWeek.SelectedItem <> "" AndAlso IsNumeric(txtWoStd.Text) AndAlso txtWoStd.Text > 0 Then
|
||||
If Not cbabwJahresurlaub.Checked Then
|
||||
urlaubsabspruch = (txtWoStd.Text / cboDaysPerWeek.SelectedItem) * cboDaysPerWeek.SelectedItem * 5
|
||||
Else
|
||||
' Urlaub in Stunden
|
||||
If wochenstunden > 0 Then
|
||||
urlaubsabspruch = (wochenstunden / daysPerWeek) * 5
|
||||
lblHoursOrDays1.Text = "H"
|
||||
End If
|
||||
lblHoursOrDays1.Text = "H"
|
||||
End If
|
||||
End If
|
||||
txtUrlaubsabsp.Text = urlaubsabspruch
|
||||
|
||||
' Ergebnis anzeigen
|
||||
txtUrlaubsabsp.Text = urlaubsabspruch.ToString("0.00")
|
||||
|
||||
'If Not UrlaubInStunden Then
|
||||
' If cboDaysPerWeek.SelectedItem <> "" Then
|
||||
' If Not cbabwJahresurlaub.Checked Then
|
||||
' urlaubsabspruch = 5 * cboDaysPerWeek.SelectedItem
|
||||
' End If
|
||||
' lblHoursOrDays1.Text = "D"
|
||||
' End If
|
||||
'Else
|
||||
' If cboDaysPerWeek.SelectedItem <> "" AndAlso IsNumeric(txtWoStd.Text) AndAlso txtWoStd.Text > 0 Then
|
||||
' If Not cbabwJahresurlaub.Checked Then
|
||||
' urlaubsabspruch = (txtWoStd.Text / cboDaysPerWeek.SelectedItem) * cboDaysPerWeek.SelectedItem * 5
|
||||
' End If
|
||||
' lblHoursOrDays1.Text = "H"
|
||||
' End If
|
||||
'End If
|
||||
'txtUrlaubsabsp.Text = urlaubsabspruch
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub calcUrlaubsabspruchNew(UrlaubInStunden As Boolean, ByRef urlaubsabspruch As Double)
|
||||
|
||||
Dim tageProWoche As Double = 0
|
||||
Dim wochenstunden As Double = 0
|
||||
|
||||
' Eingaben validieren
|
||||
If cboDaysPerWeek.SelectedItem IsNot Nothing AndAlso IsNumeric(cboDaysPerWeek.SelectedItem) Then
|
||||
tageProWoche = CDbl(cboDaysPerWeek.SelectedItem)
|
||||
End If
|
||||
|
||||
If IsNumeric(txtWoStd.Text) Then
|
||||
wochenstunden = CDbl(txtWoStd.Text)
|
||||
End If
|
||||
|
||||
' Nur berechnen, wenn Jahresurlaub nicht manuell abgewählt wurde
|
||||
If Not cbabwJahresurlaub.Checked Then
|
||||
urlaubsabspruch = BerechneUrlaubsanspruch(tageProWoche, wochenstunden, UrlaubInStunden)
|
||||
Else
|
||||
urlaubsabspruch = 0
|
||||
End If
|
||||
|
||||
' UI aktualisieren
|
||||
txtUrlaubsabsp.Text = urlaubsabspruch.ToString("0.00")
|
||||
lblHoursOrDays1.Text = If(UrlaubInStunden, "H", "D")
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function BerechneUrlaubsanspruch(tageProWoche As Double, wochenstunden As Double, urlaubInStunden As Boolean) As Double
|
||||
|
||||
' Sicherheitsprüfungen
|
||||
If tageProWoche <= 0 Then Return 0
|
||||
If urlaubInStunden AndAlso wochenstunden <= 0 Then Return 0
|
||||
|
||||
Dim anspruch As Double = 0
|
||||
|
||||
If Not urlaubInStunden Then
|
||||
' Urlaub in Tagen
|
||||
anspruch = 5 * tageProWoche
|
||||
Else
|
||||
' Urlaub in Stunden: durchschnittliche Tagesarbeitszeit * 5
|
||||
anspruch = (wochenstunden / tageProWoche) * 5
|
||||
End If
|
||||
|
||||
Return Math.Round(anspruch, 2, MidpointRounding.AwayFromZero)
|
||||
End Function
|
||||
|
||||
Private Sub TabControl2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl2.SelectedIndexChanged
|
||||
If TabControl2.SelectedIndex = 2 Then
|
||||
Try
|
||||
|
||||
Reference in New Issue
Block a user