1063 lines
40 KiB
VB.net
1063 lines
40 KiB
VB.net
|
|
Imports System.Drawing
|
|
Imports System.Globalization
|
|
Imports System.Reflection
|
|
Imports System.Text
|
|
Imports System.Threading
|
|
Imports System.Windows.Forms
|
|
Imports DocumentFormat.OpenXml.Drawing.Diagrams
|
|
|
|
Public Class frmUeberstundenauszahlen
|
|
Dim refresh As Boolean = False
|
|
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
|
Dim MA As cMitarbeiter = Nothing
|
|
Dim timas = New cTimasAPI("timas")
|
|
Dim dt As New DataTable
|
|
Dim customFields As New DataTable
|
|
Dim timeaccountdt As New DataTable
|
|
Dim dtResult As New DataTable
|
|
Dim tag As cFeiertage
|
|
Dim auszahlugsdatum As New Date
|
|
Dim maxUberstundenpruefung As Boolean = True
|
|
|
|
Dim istTeilzeit As Boolean = False
|
|
Dim faktorTeilzeit As Double = 100
|
|
Dim faktor100Zuschlag As Double = 200
|
|
Dim faktor50Zuschlag As Double = 150
|
|
Dim ignoreFactor As Boolean = False
|
|
Dim stunden100ausz, stunden50ausz, stunden100auszbere, stunden50auszbere, stunden100bereitsausbezahl, stunden50bereitsausbezahlt, stunden25bereitsausbezahlt, mehrabeit, stundenlfdSaldo, stundenlfdSaldobere, overwrittenSum, overallSumNetto, overallSumBrutto As Double
|
|
'Dim dtbereitsausgezahlteUE As New DataTable
|
|
|
|
|
|
Sub New(mit_id)
|
|
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
|
|
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
|
MA = New cMitarbeiter(mit_id)
|
|
tag = New cFeiertage(DateTime.Parse(dtpMonat.Value).Year)
|
|
Label7.Text = MA.mit_vname & " " & MA.mit_nname
|
|
customFields = timas.getEmployeecustomFields(MA.mit_timasId)
|
|
timas.getTimeaccountList(dt)
|
|
|
|
Select Case MA.mit_firma
|
|
Case "VERAG", "FRONTOFFICE", "IMEX", "ALL" : LinkLabel1.Visible = True
|
|
Case Else : LinkLabel1.Visible = False
|
|
|
|
End Select
|
|
|
|
cbxalle.Visible = VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMIN", "SDL")
|
|
|
|
|
|
Dim dv = New DataView(dt)
|
|
dv.RowFilter = "accountid = 65 Or accountid = 69 Or accountid = 70 Or accountid = 72 Or accountid = 73 Or accountid = 1209 Or accountid = 1235 Or accountid = 1550 Or accountid = 1551 Or accountid = 1553"
|
|
timeaccountdt = dv.ToTable
|
|
getAddDataFromTimas()
|
|
getUeberstunden(False)
|
|
'getAddDataFromTimas()
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub cbxoverwrite_CheckedChanged(sender As Object, e As EventArgs) Handles cbxoverwrite.CheckedChanged
|
|
|
|
If Not cbxoverwrite.Checked Then
|
|
maxUberstundenpruefung = False 'Limit für max. auszahlbar deaktivieren!
|
|
Else
|
|
If Not maxUberstundenpruefung Then
|
|
maxUberstundenpruefung = True
|
|
getUeberstunden(cbxabwDatum.Checked)
|
|
End If
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles dtpMonat.ValueChanged, dtpBis.ValueChanged
|
|
getUeberstunden(cbxabwDatum.Checked)
|
|
|
|
End Sub
|
|
|
|
Private Sub cbxTeilzeit_CheckedChanged(sender As Object, e As EventArgs) Handles cbxTeilzeit.CheckedChanged
|
|
istTeilzeit = cbxTeilzeit.Checked
|
|
changeTeilzeit()
|
|
End Sub
|
|
|
|
Private Sub getUeberstunden(abwDatum As Boolean)
|
|
|
|
Dim startdate, enddate As Date
|
|
If timeaccountdt IsNot Nothing Then
|
|
|
|
If abwDatum Then
|
|
startdate = (dtpMonat.Value)
|
|
enddate = (dtpBis.Value)
|
|
auszahlugsdatum = tag.GetLastyDayYInxMonth(enddate.DayOfWeek, enddate.Month, enddate.Year, True) 'Endmonat des Enddates
|
|
|
|
Else
|
|
startdate = tag.GetFirstyDayYInxMonth(DateTime.Parse(dtpMonat.Value).DayOfWeek, DateTime.Parse(dtpMonat.Value).Month, DateTime.Parse(dtpMonat.Value).Year, True)
|
|
enddate = tag.GetLastyDayYInxMonth(DateTime.Parse(dtpMonat.Value).DayOfWeek, DateTime.Parse(dtpMonat.Value).Month, DateTime.Parse(dtpMonat.Value).Year, True)
|
|
auszahlugsdatum = enddate
|
|
End If
|
|
|
|
timas.getTimeAccounts(startdate, enddate, MA.mit_timasId, timeaccountdt, dtResult)
|
|
|
|
If dtResult.Rows.Count < 1 Then
|
|
lblWarning.Text = "Für den gewählten Zeitraum konnten keine Stunden ermittelt werden!"
|
|
Panel1.Enabled = False
|
|
Exit Sub
|
|
Else
|
|
lblWarning.Text = ""
|
|
Panel1.Enabled = True
|
|
End If
|
|
|
|
dt = getUeberstunden(timeaccountdt, dtResult)
|
|
fillFields(dt)
|
|
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Function getUeberstunden(dtAccouts As DataTable, dtSumUeberstunden As DataTable) As DataTable
|
|
Dim dtmerged As New DataTable
|
|
If dtAccouts IsNot Nothing AndAlso dtSumUeberstunden IsNot Nothing Then
|
|
|
|
dtmerged = dtAccouts.Clone
|
|
|
|
|
|
dtmerged.Merge(dtSumUeberstunden, False, MissingSchemaAction.Add)
|
|
|
|
If (dtmerged.Columns.Contains("accountType")) Then
|
|
dtmerged.Columns.Remove("accountType")
|
|
dtmerged.AcceptChanges()
|
|
End If
|
|
|
|
If (dtmerged.Columns.Contains("info")) Then
|
|
dtmerged.Columns.Remove("info")
|
|
dtmerged.AcceptChanges()
|
|
End If
|
|
|
|
If (dtmerged.Columns.Contains("number")) Then
|
|
dtmerged.Columns.Remove("number")
|
|
dtmerged.AcceptChanges()
|
|
End If
|
|
|
|
Dim groups = dtmerged.AsEnumerable().
|
|
GroupBy(Function(row) New With {
|
|
Key .Id = row.Field(Of Integer)("accountid"),
|
|
Key .Multi = row.Field(Of String)("multiplier")
|
|
})
|
|
|
|
Dim tableResult = dtmerged.Clone()
|
|
For Each grp In groups
|
|
|
|
tableResult.Rows.Add(grp.Key.Id, grp.Key.Multi,
|
|
grp.Sum(Function(row)
|
|
Dim value = 0
|
|
If Not IsDBNull(row.Item("value")) Then value = row.Item("value")
|
|
Return value
|
|
End Function))
|
|
Next
|
|
|
|
|
|
End If
|
|
Return dtmerged
|
|
End Function
|
|
|
|
Private Sub cbx100_CheckedChanged(sender As Object, e As EventArgs) Handles cbx100.CheckedChanged, cbx50.CheckedChanged, cx25.CheckedChanged
|
|
|
|
txtAusz100.ReadOnly = Not cbx100.Checked
|
|
txtAusz50.ReadOnly = Not cbx50.Checked
|
|
txtAusz50vonSaldo.ReadOnly = Not cx25.Checked
|
|
|
|
End Sub
|
|
|
|
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
|
|
customFields = timas.getEmployeecustomFields(MA.mit_timasId)
|
|
getAddDataFromTimas()
|
|
getUeberstunden(cbxabwDatum.Checked)
|
|
End Sub
|
|
|
|
Private Sub picShow_Click(sender As Object, e As EventArgs) Handles picShow.Click
|
|
|
|
Try
|
|
|
|
|
|
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
|
Dim frm As New Form
|
|
Dim dgv As New DataGridView()
|
|
|
|
If dt.Rows.Count = 0 Then
|
|
MsgBox("keine Daten vorhanden!")
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
If dt.Columns.Contains("accountid") Then
|
|
|
|
|
|
Dim dv = New DataView(dt)
|
|
dv.RowFilter = "accountid = 1550 Or accountid = 1551 Or accountid = 1553" 'Überstunden!
|
|
dt = dv.ToTable
|
|
|
|
For Each row As DataRow In dt.Rows
|
|
|
|
Select Case row(0)
|
|
|
|
Case 1550 : If IsDBNull(row(1)) Then row(1) = CStr("ÜS 100%")
|
|
Case 1551 : If IsDBNull(row(1)) Then row(1) = CStr("ÜS 50%")
|
|
Case 1553 : If IsDBNull(row(1)) Then row(1) = CStr("ÜS 25%")
|
|
|
|
End Select
|
|
Next
|
|
|
|
If (dt.Columns.Contains("accountid")) Then
|
|
dt.Columns.Remove("accountid")
|
|
dt.AcceptChanges()
|
|
End If
|
|
|
|
End If
|
|
|
|
dgv.DataSource = dt
|
|
|
|
|
|
|
|
If dgv IsNot Nothing Then
|
|
dgv.AutoSize = DataGridViewAutoSizeColumnMode.Fill
|
|
dgv.Dock = DockStyle.Fill
|
|
dgv.ReadOnly = True
|
|
frm.Controls.Add(dgv)
|
|
frm.Width *= 2
|
|
frm.StartPosition = FormStartPosition.CenterScreen
|
|
frm.ShowDialog()
|
|
End If
|
|
|
|
|
|
Catch ex As System.Exception
|
|
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub txtAusz100_TextChanged(sender As Object, e As EventArgs) Handles txtAusz100.TextChanged, txtAusz50.TextChanged, txtAusz50vonSaldo.TextChanged
|
|
|
|
Dim sum As Double = 0
|
|
overwrittenSum = 0
|
|
|
|
Select Case sender.Name
|
|
Case "txtAusz100"
|
|
txtAusz100Netto.Text = 0
|
|
If txtAusz100.Text <> "" AndAlso IsNumeric(txtAusz100.Text) AndAlso CDbl(txtAusz100.Text) > 0 Then
|
|
txtAusz100Netto.Text = RoundOfDigits(txtAusz100.Text * 100 / faktor100Zuschlag, 2)
|
|
Else
|
|
txtAusz100Netto.Text = 0
|
|
End If
|
|
|
|
Case "txtAusz50"
|
|
txtAusz50Netto.Text = 0
|
|
|
|
If txtAusz50.Text <> "" AndAlso IsNumeric(txtAusz50.Text) AndAlso CDbl(txtAusz50.Text) > 0 Then
|
|
txtAusz50Netto.Text = RoundOfDigits(txtAusz50.Text * 100 / faktor50Zuschlag, 2)
|
|
Else
|
|
txtAusz50Netto.Text = 0
|
|
|
|
End If
|
|
|
|
Case "txtAusz50vonSaldo"
|
|
txtAusz50vonSaldoNetto.Text = 0
|
|
If txtAusz50vonSaldo.Text <> "" AndAlso IsNumeric(txtAusz50vonSaldo.Text) AndAlso CDbl(txtAusz50vonSaldo.Text) > 0 Then
|
|
txtAusz50vonSaldoNetto.Text = txtAusz50vonSaldo.Text
|
|
Else
|
|
txtAusz50vonSaldoNetto.Text = 0
|
|
|
|
End If
|
|
|
|
End Select
|
|
|
|
|
|
If cbx100.Checked AndAlso txtAusz100.Text <> "" AndAlso IsNumeric(txtAusz100.Text) AndAlso CDbl(txtAusz100.Text) > 0 Then
|
|
stunden100auszbere = CDbl(txtAusz100.Text)
|
|
overwrittenSum += stunden100auszbere
|
|
End If
|
|
|
|
If (txtAusz100.Text <> "" AndAlso IsNumeric(txtAusz100.Text)) Then
|
|
sum += CDbl(txtAusz100.Text)
|
|
|
|
End If
|
|
|
|
If (txtAusz50.Text <> "" AndAlso IsNumeric(txtAusz50.Text)) Then
|
|
sum += CDbl(txtAusz50.Text)
|
|
|
|
End If
|
|
|
|
|
|
If (txtAusz50vonSaldo.Text <> "" AndAlso IsNumeric(txtAusz50vonSaldo.Text)) Then
|
|
sum += CDbl(txtAusz50vonSaldo.Text)
|
|
|
|
End If
|
|
|
|
If cbx50.Checked AndAlso txtAusz50.Text <> "" AndAlso IsNumeric(txtAusz50.Text) AndAlso CDbl(txtAusz50.Text) > 0 Then
|
|
stunden50auszbere = CDbl(txtAusz50.Text)
|
|
overwrittenSum += stunden50auszbere
|
|
End If
|
|
|
|
If cx25.Checked AndAlso txtAusz50vonSaldo.Text <> "" AndAlso IsNumeric(txtAusz50vonSaldo.Text) AndAlso CDbl(txtAusz50vonSaldo.Text) > 0 Then
|
|
stundenlfdSaldobere = RoundOfDigits(txtAusz50vonSaldo.Text, 2)
|
|
overwrittenSum += stundenlfdSaldobere
|
|
End If
|
|
|
|
|
|
|
|
If overwrittenSum > 0 Then
|
|
txtAuszManuell.Text = overwrittenSum
|
|
txtAusz.Visible = False
|
|
txtAusz_hhmm.Visible = False
|
|
txtAuszManuell.Visible = True
|
|
txtAuszManuell_hhmm.Visible = True
|
|
Else
|
|
txtAusz.Visible = True
|
|
txtAusz_hhmm.Visible = True
|
|
txtAuszManuell.Visible = False
|
|
txtAuszManuell_hhmm.Visible = False
|
|
|
|
End If
|
|
|
|
If overwrittenSum > 0 Then
|
|
txtBruttoSum.Text = overwrittenSum
|
|
Else
|
|
txtBruttoSum.Text = sum
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Sub fillFields(dt As DataTable)
|
|
|
|
|
|
picDel.Visible = False
|
|
|
|
For Each c As Control In Panel1.Controls
|
|
If TypeOf c Is Windows.Forms.TextBox Then
|
|
c.Text = "0"
|
|
End If
|
|
Next
|
|
|
|
'alle zurücksetzen, falls im neuen Monat dieser Wert nicht mitgegeben wird!
|
|
stunden50ausz = 0
|
|
stunden100ausz = 0
|
|
mehrabeit = 0
|
|
stunden50bereitsausbezahlt = 0
|
|
stunden100bereitsausbezahl = 0
|
|
stunden25bereitsausbezahlt = 0
|
|
|
|
If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
|
|
Dim calc As Double = 0
|
|
For Each r As DataRow In dt.Rows
|
|
If Not IsDBNull(r.Item("value")) Then
|
|
|
|
If r.Item("accountid") = "1209" Then
|
|
calc = CDbl(txtMehr.Text)
|
|
calc += r.Item("value") * (r.Item("multiplier") & "1")
|
|
txtMehr.Text = calc
|
|
mehrabeit = calc
|
|
End If
|
|
|
|
If r.Item("accountid") = "1235" Then
|
|
calc = CDbl(txt100.Text)
|
|
calc += r.Item("value") * (r.Item("multiplier") & "1")
|
|
txt100.Text = calc
|
|
stunden100ausz = calc
|
|
End If
|
|
|
|
If r.Item("accountid") = "70" Then
|
|
calc = CDbl(txt50.Text)
|
|
calc += r.Item("value") * (r.Item("multiplier") & "1")
|
|
txt50.Text = calc
|
|
stunden50ausz = calc
|
|
End If
|
|
|
|
|
|
If r.Item("accountid") = "1550" Then
|
|
calc = CDbl(txtberAusz100.Text)
|
|
calc += r.Item("value") * (r.Item("multiplier") & "1")
|
|
txtberAusz100.Text = calc
|
|
stunden100bereitsausbezahl = calc
|
|
End If
|
|
|
|
If r.Item("accountid") = "1551" Then
|
|
calc = CDbl(txtberAusz50.Text)
|
|
calc += r.Item("value") * (r.Item("multiplier") & "1")
|
|
txtberAusz50.Text = calc
|
|
stunden50bereitsausbezahlt = calc
|
|
End If
|
|
|
|
If r.Item("accountid") = "1553" Then
|
|
txtberAusz25.Visible = True
|
|
calc = CDbl(txtberAusz25.Text)
|
|
calc += r.Item("value") * (r.Item("multiplier") & "1")
|
|
txtberAusz25.Text = calc
|
|
stunden25bereitsausbezahlt = calc
|
|
cbxTeilzeit.Checked = True
|
|
End If
|
|
|
|
'Berechnung von lfd Saldo im Zeitraum -> deaktiviert, es soll immer der aktuelle Saldo gezogen werden, egal in welchem Monat ich bin (22.02.2024)
|
|
'If r.Item("accountid") = "65" Then
|
|
' calc = CDbl(txtlfdSaldo.Text)
|
|
' calc += r.Item("value") * (r.Item("multiplier") & "1")
|
|
' txtlfdSaldo.Text = calc
|
|
'End If
|
|
|
|
End If
|
|
Next
|
|
|
|
If (stunden100bereitsausbezahl + stunden50bereitsausbezahlt + stunden25bereitsausbezahlt) > 0 Then
|
|
picDel.Visible = True
|
|
Button1.Enabled = False
|
|
txtAusz.Enabled = False
|
|
picShow.Visible = True
|
|
Else
|
|
Button1.Enabled = True
|
|
txtAusz.Enabled = True
|
|
picShow.Visible = False
|
|
|
|
End If
|
|
|
|
'If cbxabwDatum.Checked AndAlso dtbereitsausgezahlteUE IsNot Nothing Then
|
|
|
|
' 'If dtbereitsausgezahlteUE.Rows.Count > 0 Then
|
|
|
|
' ' txtberAusz100ZR.Text = CDbl(dtbereitsausgezahlteUE.Rows(0).Item("ue100").ToString)
|
|
' ' If istTeilzeit Then
|
|
' ' txtberAusz50ZR.Text = CDbl(dtbereitsausgezahlteUE.Rows(0).Item("ue50").ToString) + CDbl(dtbereitsausgezahlteUE.Rows(0).Item("ue0").ToString)
|
|
' ' Else
|
|
' ' txtberAusz25ZR.Text = CDbl(dtbereitsausgezahlteUE.Rows(0).Item("ue25").ToString) + CDbl(dtbereitsausgezahlteUE.Rows(0).Item("ue0").ToString)
|
|
' ' End If
|
|
|
|
' 'End If
|
|
|
|
'End If
|
|
|
|
calxMaxauszahlbar()
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub txtAuszManuell_TextChanged(sender As Object, e As EventArgs) Handles txtAuszManuell.TextChanged
|
|
|
|
'If txtAuszManuell.Text <> "" AndAlso IsNumeric(txtAuszManuell.Text) Then
|
|
|
|
' txtAuszManuell_hhmm.Text = fixTime(txtAuszManuell.Text)
|
|
|
|
'End If
|
|
|
|
End Sub
|
|
|
|
Private Sub txtAuszManuell_hhmm_TextChanged(sender As Object, e As EventArgs) Handles txtAuszManuell_hhmm.TextChanged
|
|
|
|
If txtAuszManuell_hhmm.Text <> "" AndAlso txtAuszManuell_hhmm.Text.Contains(":") AndAlso Not txtAuszManuell_hhmm.Text.EndsWith(":") Then
|
|
Try
|
|
|
|
Dim timeToDouble = txtAuszManuell_hhmm.Text
|
|
Dim ts As TimeSpan = New TimeSpan(Integer.Parse(timeToDouble.Split(":"c)(0)), Integer.Parse(timeToDouble.Split(":"c)(1)), 0)
|
|
txtAuszManuell.Text = Math.Round(ts.TotalHours, 2)
|
|
|
|
'txtAusz.Text = ts.Hours & "," & ts.Minutes
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub txtAusz_hhmm_TextChanged(sender As Object, e As EventArgs) Handles txtAusz_hhmm.TextChanged
|
|
|
|
If txtAusz_hhmm.Text <> "" AndAlso txtAusz_hhmm.Text.Contains(":") AndAlso Not txtAusz_hhmm.Text.EndsWith(":") Then
|
|
Try
|
|
|
|
Dim timeToDouble = txtAusz_hhmm.Text
|
|
Dim ts As TimeSpan = New TimeSpan(Integer.Parse(timeToDouble.Split(":"c)(0)), Integer.Parse(timeToDouble.Split(":"c)(1)), 0)
|
|
txtAusz.Text = Math.Round(ts.TotalHours, 2)
|
|
|
|
'txtAusz.Text = ts.Hours & "," & ts.Minutes
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles PictureBox5.Click
|
|
Dim webAddress As String = "https://wiki.verag.ag/de/software/zeiterfassung_admin/zeiterfassung_admin#%C3%BCberstunden-auszahlen-%C3%BCber-avisosdldispo"
|
|
Process.Start(webAddress)
|
|
End Sub
|
|
|
|
Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
|
|
Dim webAddress As String = "https://wiki.verag.ag/de/software/zeiterfassung_admin/zeiterfassung_admin#dokumente"
|
|
Process.Start(webAddress)
|
|
End Sub
|
|
|
|
Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged, cbxalle.CheckedChanged
|
|
If TabControl1.SelectedIndex = 1 Then
|
|
Try
|
|
|
|
|
|
|
|
Dim dtbereitsausgezahlteUE As DataTable
|
|
Dim bereitsgezahlteueberstunden = "select uest_deleted as geloescht, uest_date as Datum ,isnull(uest_100,0) as ÜS100 , isnull(uest_50,0) as ÜS50, isnull(uest_25,0) as ÜS25, isnull(uest_0,0) as ÜS50_Saldo, isnull(uest_paidout_sum,0) as ausbezahlt, uest_systemuser as eingetragen_von ,uest_created as eingetragen_am, cast (case when isnull([uest_ignorePayoutDate],0) = 0 then 0 else 1 end as bit) ignoreAuszahlungsdatum
|
|
FROM [ADMIN].[dbo].[tblUeberstunden]
|
|
where uest_timasId = " & MA.mit_timasId & IIf(Not cbxalle.Checked, " and uest_deleted = 0", "") & "
|
|
Order by uest_date"
|
|
|
|
dtbereitsausgezahlteUE = SQL.loadDgvBySql(bereitsgezahlteueberstunden, "ADMIN", 100, True)
|
|
|
|
With dgvUberstundenauszahlungen
|
|
|
|
.DataSource = dtbereitsausgezahlteUE
|
|
|
|
.Columns("geloescht").Visible = False
|
|
.Columns("ignoreAuszahlungsdatum").Width = 50
|
|
.Columns("ignoreAuszahlungsdatum").HeaderText = "Auszdat. irgnoriert"
|
|
.Columns("ignoreAuszahlungsdatum").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
|
|
|
|
|
|
|
|
For Each row As DataGridViewRow In .Rows
|
|
|
|
If Not IsDBNull(row.Cells("geloescht").Value) Then
|
|
If Not row.Cells("geloescht").Value Then
|
|
row.DefaultCellStyle.BackColor = Color.LightGreen
|
|
Else
|
|
row.DefaultCellStyle.BackColor = Color.IndianRed
|
|
End If
|
|
|
|
End If
|
|
Next
|
|
|
|
|
|
End With
|
|
|
|
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub txtAusz_hhmm_KeyPress(sender As Object, e As KeyPressEventArgs)
|
|
Select Case Asc(e.KeyChar)
|
|
Case 48 To 57, 8, 44, 46, 58
|
|
Case Else
|
|
e.Handled = True
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub txtAusz_hhmm_Validated(sender As Object, e As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Private Sub txtAusz100Netto_TextChanged(sender As Object, e As EventArgs) Handles txtAusz100Netto.TextChanged, txtAusz50Netto.TextChanged, txtAusz50vonSaldoNetto.TextChanged
|
|
|
|
Dim sum As Double = 0
|
|
If txtAusz100Netto.Text <> "" AndAlso txtAusz100Netto.Text >= 0 Then
|
|
sum += RoundOfDigits(CDbl(txtAusz100Netto.Text), 2)
|
|
End If
|
|
|
|
If txtAusz50Netto.Text <> "" AndAlso txtAusz50Netto.Text >= 0 Then
|
|
sum += RoundOfDigits(CDbl(txtAusz50Netto.Text), 2)
|
|
End If
|
|
|
|
If txtAusz50vonSaldoNetto.Text <> "" AndAlso txtAusz50vonSaldoNetto.Text >= 0 Then
|
|
sum += RoundOfDigits(CDbl(txtAusz50vonSaldoNetto.Text), 2)
|
|
End If
|
|
|
|
txtNettoSum.Text = sum
|
|
|
|
End Sub
|
|
|
|
Private Sub txtAusz_TextChanged(sender As Object, e As EventArgs) Handles txtAusz.TextChanged
|
|
|
|
calcUeberstunden()
|
|
|
|
End Sub
|
|
|
|
Private Sub cbxabwDatum_CheckedChanged(sender As Object, e As EventArgs) Handles cbxabwDatum.CheckedChanged
|
|
If cbxabwDatum.Checked Then
|
|
lblBis.Visible = True
|
|
dtpBis.Visible = True
|
|
lblMonat.Text = "bis"
|
|
dtpMonat.CustomFormat = "yyyy/MM/dd"
|
|
|
|
Else
|
|
lblBis.Visible = False
|
|
dtpBis.Visible = False
|
|
lblMonat.Text = "Monat"
|
|
dtpMonat.CustomFormat = "yyyy/MM"
|
|
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
|
|
|
Dim checkauszahlungsdatum As Boolean = False
|
|
Dim meldung As String = ""
|
|
Dim stichtag As Integer = 25
|
|
Dim ignoreAuszahlungsdatum As Boolean = False
|
|
|
|
Select Case IIf(MA.mit_firma = "ALL", MA.mit_FirmaHaupt, MA.mit_firma)
|
|
Case "ATILLA"
|
|
meldung = " des Vormonats"
|
|
If auszahlugsdatum.Month = Now.Month - 1 AndAlso Now.Day < 25 Or auszahlugsdatum.Month = Now.Month AndAlso Now.Day < 25 Or auszahlugsdatum.Month > Now.Month Then
|
|
checkauszahlungsdatum = True
|
|
End If
|
|
|
|
Case Else
|
|
meldung = " des Monats"
|
|
If auszahlugsdatum.Month = Now.Month AndAlso Now.Day < 25 Or auszahlugsdatum.Month > Now.Month Then
|
|
checkauszahlungsdatum = True
|
|
End If
|
|
|
|
End Select
|
|
|
|
If Not checkauszahlungsdatum Then
|
|
Dim check = InputBox("Die Ü-Std. von " & MonthName(auszahlugsdatum.Month) & " wurden uU schon in die Lohnverrechnung übertragen (Stichtag: " & stichtag & meldung & ")!" & vbNewLine & "Wollten Sie die Ü-Std. trotzdem in Timas austragen, dann bitte GELESEN eingeben!", "Auszahlungsmonat beachten!")
|
|
If check <> "GELESEN" Then
|
|
Exit Sub
|
|
Else
|
|
ignoreAuszahlungsdatum = True
|
|
End If
|
|
|
|
|
|
End If
|
|
|
|
'65;"01-Lfd Saldo"
|
|
'66;02-Krank
|
|
'67;03-Urlaub
|
|
'69;"10-Na 22-06"
|
|
'70;"11-Sa 00-24"
|
|
'72;"13-So 00-24"
|
|
'73;"14-FtN 00-24"
|
|
'438;04-Sonstige
|
|
'986;Stundenlohn
|
|
'987;FT-Ersatzzeit
|
|
'993;"Ausz. ÜS"
|
|
'1209;Mehrarbeit
|
|
'1210;"Script hilfskonto WSaldo"
|
|
'1227;Schichtzulage
|
|
'1231;Urlaubsstunden
|
|
'1235;"Überstunden 100% gesamt"
|
|
'1257;Zuschlag
|
|
'1272;"unbezahlter Urlaub"
|
|
'1366;"Mehrarbeit am 25. des Monats gesamt"
|
|
'1393;"Urlaub (Stunden)"
|
|
'1550;"AUSZ ÜS 100%"
|
|
'1551;"AUSZ ÜS 50%"
|
|
'1598; Korrektur MJ - ÜBER API ansprechen!
|
|
|
|
'sum100 = RoundOfDigits(CDbl(txtAusz100.Text) * 100 / faktor100Zuschlag, 2) 'Übergabe in ZE-System als heruntergerechnete 100%ige bzw. 50%ige ÜS!
|
|
'sum50 = RoundOfDigits(CDbl(txtAusz50.Text) * 100 / faktor50Zuschlag, 2)
|
|
'sum0 = RoundOfDigits(CDbl(txtAusz50vonSaldo.Text) * 100 / faktorTeilzeit, 2)
|
|
'gesamt = IIf(overwrittenSum > 0, overwrittenSum, CDbl(txtAusz.Text))
|
|
|
|
Dim sum100, sum50, sum0, gesamt As Double
|
|
sum100 = RoundOfDigits(CDbl(txtAusz100Netto.Text), 2) 'Übergabe in ZE-System als heruntergerechnete 100%ige bzw. 50%ige ÜS!
|
|
sum50 = RoundOfDigits(CDbl(txtAusz50Netto.Text), 2)
|
|
sum0 = RoundOfDigits(CDbl(txtAusz50vonSaldoNetto.Text), 2)
|
|
gesamt = IIf(overwrittenSum > 0, overwrittenSum, CDbl(txtAusz.Text))
|
|
|
|
|
|
If faktor50Zuschlag = 150 AndAlso istTeilzeit Then
|
|
'Besprechung mit RESI ob Teilzeitmitarbeiter 50% ausgezahlt bekommen oder diese umgerechnet in 25% werden!
|
|
'29.03.2024 MÜSSEN SOFERN SICH NICHT 40Wochenstunden ERREICHEN, ALS 25% AUSBEZAHLT WERDEN!
|
|
'MsgBox("Die Konstellation SA-Zuschlag und Teilzeitmitarbeiter ist noch nicht umgesetzt!")
|
|
'Exit Sub
|
|
End If
|
|
|
|
Dim txtAusgabe As New StringBuilder
|
|
txtAusgabe.Append("Überstunden für " & MA.mit_vname & " " & MA.mit_nname & " mit " & auszahlugsdatum.ToShortDateString() & " auszahlen?" & vbNewLine)
|
|
|
|
txtAusgabe.Append(sum100 & "x 100% ÜS :" & txtAusz100.Text & vbNewLine)
|
|
|
|
If Not istTeilzeit Then
|
|
txtAusgabe.Append(sum50 + sum0 & "x 50% ÜS: " & CDbl(txtAusz50.Text) + CDbl(txtAusz50vonSaldo.Text) & vbNewLine)
|
|
Else
|
|
txtAusgabe.Append(sum50 + sum0 & "x 25% ÜS: " & CDbl(txtAusz50.Text) + CDbl(txtAusz50vonSaldo.Text) & vbNewLine)
|
|
End If
|
|
|
|
txtAusgabe.Append("ÜS gesamt: " & gesamt)
|
|
|
|
Dim aksAuszahlung As MsgBoxResult = MsgBox(txtAusgabe.ToString, vbYesNo)
|
|
|
|
If aksAuszahlung = vbYes Then
|
|
Dim dtsetEntries As New DataTable
|
|
|
|
dtsetEntries.Columns.Add("accountid", GetType(Integer))
|
|
dtsetEntries.Columns.Add("value", GetType(String))
|
|
|
|
If sum100 > 0 Then
|
|
Dim row = dtsetEntries.NewRow
|
|
row.Item("accountid") = 1550
|
|
row.Item("value") = sum100.ToString.Replace(",", ".")
|
|
dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count)
|
|
End If
|
|
|
|
If (sum50 > 0 Or sum0 > 0) And Not istTeilzeit Then
|
|
Dim row = dtsetEntries.NewRow
|
|
row.Item("accountid") = 1551
|
|
row.Item("value") = (sum50 + sum0).ToString.Replace(",", ".")
|
|
dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count)
|
|
|
|
End If
|
|
|
|
'ANMERKUNG -> TZ-Mitarbeiter bekommt die Stunden, die am SA gearbeitet wurden, auch als 25% ausgezahlt!
|
|
If (sum50 > 0 Or sum0 > 0) And istTeilzeit Then
|
|
Dim row = dtsetEntries.NewRow
|
|
row.Item("accountid") = 1553
|
|
row.Item("value") = (sum50 + sum0).ToString.Replace(",", ".")
|
|
dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count)
|
|
|
|
End If
|
|
|
|
|
|
'If istTeilzeit Then
|
|
' If sum50 > 0 Then
|
|
' Dim row = dtsetEntries.NewRow
|
|
' row.Item("accountid") = 1551
|
|
' row.Item("value") = sum50.ToString.Replace(",", ".")
|
|
' dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count)
|
|
' End If
|
|
|
|
' If sum0 > 0 Then
|
|
' Dim row = dtsetEntries.NewRow
|
|
' row.Item("accountid") = 1553
|
|
' row.Item("value") = sum0.ToString.Replace(",", ".")
|
|
' dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count)
|
|
' End If
|
|
'End If
|
|
|
|
|
|
If gesamt > 0 Then
|
|
Dim row = dtsetEntries.NewRow
|
|
row.Item("accountid") = 1598
|
|
Dim value = gesamt * (-1)
|
|
row.Item("value") = value.ToString.Replace(",", ".")
|
|
dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count)
|
|
|
|
row = dtsetEntries.NewRow
|
|
row.Item("accountid") = 993
|
|
row.Item("value") = gesamt.ToString.Replace(",", ".")
|
|
dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count)
|
|
|
|
End If
|
|
|
|
Dim ues As New cUeberstunden(MA.mit_id, auszahlugsdatum.ToShortDateString, Now())
|
|
ues.uest_timasId = MA.mit_timasId
|
|
ues.uest_100 = sum100
|
|
ues.uest_50 = sum50
|
|
ues.uest_overwriteValue = IIf(cbx100.Checked Or cbx50.Checked Or cx25.Checked, True, False)
|
|
ues.uest_systemuser = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
|
ues.uest_ignoreLimit = Not maxUberstundenpruefung
|
|
ues.uest_maxUE = CDbl(txtSummeAuszb.Text)
|
|
ues.uest_paidout_sum = gesamt
|
|
ues.uest_isParttime = cbxTeilzeit.Checked
|
|
ues.uest_ignorePayoutDate = ignoreAuszahlungsdatum
|
|
|
|
If istTeilzeit Then
|
|
ues.uest_25 = sum0
|
|
Else
|
|
ues.uest_0 = sum0
|
|
End If
|
|
|
|
|
|
Dim info As String = ""
|
|
If timas.setTimeAccountEntries(MA, dtsetEntries, auszahlugsdatum, info) Then
|
|
If ues.SAVE() Then
|
|
MsgBox("Erfolgreich in Timas eingetragen")
|
|
Else
|
|
MsgBox("Fehler beim Speichern")
|
|
End If
|
|
Else
|
|
|
|
MsgBox(info)
|
|
End If
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub picDel_Click(sender As Object, e As EventArgs) Handles picDel.Click
|
|
|
|
|
|
Dim txtAusgabe As New StringBuilder
|
|
txtAusgabe.Append("Ausbezahlte Überstunden für " & MA.mit_vname & " " & MA.mit_nname & " mit " & auszahlugsdatum.ToShortDateString() & " zurücksetzen?" & vbNewLine)
|
|
txtAusgabe.Append("100% ÜS: " & txtberAusz100.Text & vbNewLine)
|
|
txtAusgabe.Append("50% ÜS: " & txtberAusz50.Text + IIf(Not istTeilzeit, CDbl(txtberAusz25.Text), 0) & vbNewLine)
|
|
If istTeilzeit Then txtAusgabe.Append("25% ÜS: " & CDbl(txtberAusz25.Text) & vbNewLine)
|
|
'txtAusgabe.Append("ÜS gesamt: " & CDbl(txtberAusz100.Text) + CDbl(txtberAusz50.Text) + CDbl(txtberAusz25.Text))
|
|
|
|
|
|
Dim aksAuszahlung As MsgBoxResult = MsgBox(txtAusgabe.ToString, vbYesNo)
|
|
If aksAuszahlung = vbYes Then
|
|
Dim dtdeleteEntries As New DataTable
|
|
|
|
dtdeleteEntries.Columns.Add("accountid", GetType(Integer))
|
|
|
|
|
|
Dim rowNew = dtdeleteEntries.NewRow
|
|
rowNew.Item("accountid") = 1598
|
|
dtdeleteEntries.Rows.InsertAt(rowNew, dtdeleteEntries.Rows.Count)
|
|
|
|
rowNew = dtdeleteEntries.NewRow
|
|
rowNew.Item("accountid") = 993
|
|
dtdeleteEntries.Rows.InsertAt(rowNew, dtdeleteEntries.Rows.Count)
|
|
|
|
If txtAusz100.Text <> "" AndAlso IsNumeric(txtAusz100.Text) Then
|
|
Dim row = dtdeleteEntries.NewRow
|
|
row.Item("accountid") = 1550
|
|
dtdeleteEntries.Rows.InsertAt(row, dtdeleteEntries.Rows.Count)
|
|
End If
|
|
|
|
If txtAusz50.Text <> "" AndAlso IsNumeric(txtAusz50.Text) Then
|
|
Dim row = dtdeleteEntries.NewRow
|
|
row.Item("accountid") = 1551
|
|
dtdeleteEntries.Rows.InsertAt(row, dtdeleteEntries.Rows.Count)
|
|
End If
|
|
|
|
If txtberAusz25.Text <> "" AndAlso IsNumeric(txtberAusz25.Text) Then
|
|
Dim row = dtdeleteEntries.NewRow
|
|
row.Item("accountid") = 1553
|
|
dtdeleteEntries.Rows.InsertAt(row, dtdeleteEntries.Rows.Count)
|
|
End If
|
|
|
|
Dim info As String = ""
|
|
If timas.deleteTimeAccounts(auszahlugsdatum, auszahlugsdatum, MA.mit_timasId, dtdeleteEntries, info) Then
|
|
|
|
'Dim dtEntriesset0 As New DataTable
|
|
'dtEntriesset0.Columns.Add("accountid", GetType(Integer))
|
|
'dtEntriesset0.Columns.Add("value", GetType(Double))
|
|
'Dim row0 = dtEntriesset0.NewRow
|
|
'row0.Item("accountid") = 1598
|
|
'row0.Item("value") = -0.000001 'darf nicht 0 sein!!!!
|
|
'dtEntriesset0.Rows.InsertAt(row0, dtEntriesset0.Rows.Count)
|
|
'timas.setTimeAccountEntries(MA, dtEntriesset0, auszahlugsdatum, "")
|
|
|
|
|
|
|
|
Dim ues As New cUeberstunden(MA.mit_id, auszahlugsdatum.ToString("dd/MM/yyyy"))
|
|
|
|
If ues.hasEntry Then
|
|
ues.uest_deleted = True
|
|
ues.uest_lastChanged = Now()
|
|
ues.uest_systemuser = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
|
ues.SAVE()
|
|
End If
|
|
MsgBox("Erfolgreich aus Timas zurückgesetzt!")
|
|
picDel.Visible = False
|
|
Thread.Sleep(1000) 'warten bis Eintrag in Timas-DB
|
|
getUeberstunden(cbxabwDatum.Checked)
|
|
Else
|
|
MsgBox(info)
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Public Function RoundOfDigits(ByVal Value As Decimal, ByVal Digits As Integer) As Decimal
|
|
If Digits < 0 Then Return Math.Round(Value * CDec(Math.Pow(10, Digits)), 0, MidpointRounding.AwayFromZero) / CDec(Math.Pow(10, Digits))
|
|
Return Math.Round(Value, Digits)
|
|
End Function
|
|
|
|
Private Sub changeTeilzeit()
|
|
|
|
If istTeilzeit Then
|
|
lbllfdSaldo.Text = "Mehrarbeit 25% (nur Teilzeit-MA)"
|
|
Label4.Text = "Überstunden 50% (Sa) - werden als 25% ausbezahlt!"
|
|
faktorTeilzeit = 100 ' werden Zeitlich nicht hochgerechnet, sondern nur mit aufschlag ausbezahlt, somit keine Hochrechnung um Faktor!
|
|
Else
|
|
lbllfdSaldo.Text = "lfd Saldo"
|
|
Label4.Text = "Überstunden 50% (Sa)"
|
|
faktorTeilzeit = 100
|
|
End If
|
|
|
|
calcUeberstunden()
|
|
calxMaxauszahlbar()
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub calcUeberstunden()
|
|
|
|
|
|
If txtAusz.Text <> "" AndAlso IsNumeric(txtAusz.Text) Then
|
|
|
|
Dim summeAusz = CDbl(txtAusz.Text)
|
|
If summeAusz < 0 Then
|
|
txtAusz50vonSaldo.Text = 0
|
|
txtAusz50.Text = 0
|
|
txtAusz100.Text = 0
|
|
txtAusz.Text = 0
|
|
Button1.Enabled = False
|
|
Exit Sub
|
|
End If
|
|
|
|
txt100x2.Text = stunden100auszbere
|
|
txt50x15.Text = stunden50auszbere
|
|
|
|
|
|
If stundenlfdSaldo >= summeAusz Then 'Prüfung, damit nicht zuviele ÜS ausbezahlt werden können!
|
|
|
|
Button1.Enabled = True
|
|
|
|
Else
|
|
If maxUberstundenpruefung Then
|
|
Button1.Enabled = False
|
|
Else
|
|
Button1.Enabled = True
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
If summeAusz >= stunden100auszbere Then
|
|
txtAusz100.Text = stunden100auszbere
|
|
Else
|
|
txtAusz100.Text = summeAusz
|
|
End If
|
|
|
|
summeAusz = RoundOfDigits(summeAusz - stunden100auszbere, 2)
|
|
'summeAusz = RoundOfDigits(summeAusz - RoundOfDigits(stunden100auszbere * 100 / faktor100Zuschlag, 2), 2)
|
|
|
|
If summeAusz >= stunden50auszbere Then
|
|
txtAusz50.Text = stunden50auszbere
|
|
summeAusz = RoundOfDigits(summeAusz - stunden50auszbere, 2)
|
|
'summeAusz = RoundOfDigits(summeAusz - RoundOfDigits(stunden50auszbere * 100 / faktor50Zuschlag, 2), 2)
|
|
ElseIf summeAusz < 0 Then
|
|
txtAusz50.Text = "0"
|
|
Else
|
|
txtAusz50.Text = summeAusz
|
|
summeAusz = RoundOfDigits(summeAusz - stunden50auszbere, 2)
|
|
'summeAusz = RoundOfDigits(summeAusz - RoundOfDigits(stunden50auszbere * 100 / faktor50Zuschlag, 2), 2)
|
|
End If
|
|
|
|
|
|
'If summeAusz < 0 Then
|
|
' txtAusz50vonSaldo.Text = "0"
|
|
'ElseIf summeAusz > stundenlfdSaldo Then
|
|
' summeAusz = RoundOfDigits(stundenlfdSaldo - summeAusz, 2)
|
|
' txtAusz50vonSaldo.Text = summeAusz
|
|
'Else
|
|
' txtAusz50vonSaldo.Text = summeAusz
|
|
'End If
|
|
|
|
If summeAusz < 0 Then
|
|
txtAusz50vonSaldo.Text = "0"
|
|
Else
|
|
txtAusz50vonSaldo.Text = summeAusz
|
|
End If
|
|
End If
|
|
|
|
If stundenlfdSaldo < 0 And cbxoverwrite.Checked Then txtAusz50vonSaldo.Text = 0 'Wenn Saldo negativ, dann nichts vom lfd Saldo vorschlagen!
|
|
|
|
If Not refresh Then refresh = Not refresh
|
|
|
|
End Sub
|
|
|
|
Private Sub calxMaxauszahlbar()
|
|
|
|
|
|
'wenn berechneter Saldo negativ, dann ist im Regelfall das aktuelle MOnat noch nicht abgeschlossen!, daher anstatt den berechneten Saldo in overallBalance laden!
|
|
|
|
txtlfdSaldo.Text = timas.getTimeSaldo(MA.mit_timasId, "", "dailyBalanceYesterday")
|
|
|
|
stunden100auszbere = RoundOfDigits(stunden100ausz * faktor100Zuschlag / 100, 2)
|
|
stunden50auszbere = RoundOfDigits(stunden50ausz * faktor50Zuschlag / 100, 2)
|
|
|
|
txt100x2.Text = stunden100auszbere
|
|
txt50x15.Text = stunden50auszbere
|
|
|
|
stundenlfdSaldo = CDbl(txtlfdSaldo.Text)
|
|
stundenlfdSaldobere = RoundOfDigits(stundenlfdSaldo * faktorTeilzeit / 100, 2)
|
|
|
|
txt50x1.Text = stundenlfdSaldobere
|
|
|
|
stundenlfdSaldobere -= stunden100auszbere
|
|
stundenlfdSaldobere -= stunden50auszbere
|
|
stundenlfdSaldobere = Math.Round(stundenlfdSaldobere, 2)
|
|
|
|
|
|
If stundenlfdSaldo <= 0 Then Button1.Enabled = False
|
|
|
|
If (stunden100bereitsausbezahl + stunden50bereitsausbezahlt + stunden25bereitsausbezahlt) > 0 Then
|
|
txtSummeAuszb.Text = stundenlfdSaldobere
|
|
Else
|
|
txtSummeAuszb.Text = stundenlfdSaldo
|
|
End If
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub getAddDataFromTimas()
|
|
|
|
For Each row As DataRow In customFields.Rows
|
|
If Not IsDBNull(row.Item("value")) AndAlso Not IsDBNull(row.Item("name")) Then
|
|
|
|
If row.Item("name") = "Teilzeit" Then
|
|
If row.Item("value") = "true" Then
|
|
cbxTeilzeit.Checked = True
|
|
Else
|
|
cbxTeilzeit.Checked = False
|
|
End If
|
|
End If
|
|
|
|
If row.Item("name") = "SA-Zuschlag" Then
|
|
If row.Item("value") = "true" Then
|
|
faktor50Zuschlag = 150 'Samstagsarbeit wir im Timas hochgerechnet
|
|
lblMA.Text = "Mitarbeiter (mit SA-Zuschlag):"
|
|
Else
|
|
faktor50Zuschlag = 100 'Samstagsarbeit wir im Timas NICHT hochgerechnet
|
|
lblMA.Text = "Mitarbeiter (ohne SA-Zuschlag):"
|
|
|
|
End If
|
|
End If
|
|
|
|
If row.Item("name") = "ÜS werden nicht auf lfd. Saldo hinzugezählt" Then
|
|
If row.Item("value") = "true" Then
|
|
Label5.Text = "ÜS werden nicht auf lfd. Saldo hinzugezählt!"
|
|
|
|
ignoreFactor = True
|
|
|
|
'Zuschläge ohne Faktoren!
|
|
faktor50Zuschlag = 100
|
|
faktor100Zuschlag = 100
|
|
faktorTeilzeit = 100
|
|
|
|
Else
|
|
Label5.Text = ""
|
|
ignoreFactor = False
|
|
End If
|
|
|
|
cbxabwDatum.Enabled = Not ignoreFactor
|
|
|
|
End If
|
|
|
|
If row.Item("name") = "Automatisch auszahlen" Then
|
|
If row.Item("value") = "true" Then
|
|
Label3.Text = "Mehrarbeit (autom. ausbez.)"
|
|
Else
|
|
Label3.Text = "Mehrarbeit (NICHT autom. ausbez.)"
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
Next
|
|
End Sub
|
|
|
|
End Class |