Files
SDL/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb
2024-03-07 17:41:50 +01:00

752 lines
28 KiB
VB.net

Imports System.Text
Imports System.Threading
Imports System.Web.UI.WebControls
Imports System.Windows.Forms
Public Class frmUeberstundenauszahlen
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim MA As cMitarbeiter = Nothing
Dim timas As cTimasAPI = New cTimasAPI
Dim dt As New DataTable
Dim customFields As New DataTable
Dim timeaccountdt As New DataTable
Dim dtResult As New DataTable
'Dim dtbereitsausgezahlteUE 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 faktorSamstagsarbeit As Double = 150
Dim stunden100ausz, stunden50ausz, stunden100auszbere, stunden50auszbere, stunden100bereitsausbezahl, stunden50bereitsausbezahlt, stunden25bereitsausbezahlt, mehrabeit, stundenlfdSaldo, stundenlfdSaldobere, overwrittenSum As Double
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)
'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%"
'65
'69
'70
'72
'73
'1209
'1235
'1550
'1551
'1553
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
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
'Dim bereitsgezahlteueberstunden = "select sum(isnull(uest_100,0)) as ue100 , sum(isnull(uest_50,0)) as ue50, sum(isnull(uest_25,0)) as ue25, sum(isnull(uest_0,0)) as ue0
'FROM [ADMIN].[dbo].[tblUeberstunden]
'where uest_date between '" & startdate & "' and '" & enddate & "' and uest_deleted = 0 and uest_maId = " & MA.mit_id & "
'group by uest_maId"
'dtbereitsausgezahlteUE.Clear()
'dtbereitsausgezahlteUE = SQL.loadDgvBySql(bereitsgezahlteueberstunden, "ADMIN", 100, True)
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
'If (dtmerged.Columns.Contains("date")) Then
' dtmerged.Columns.Remove("date")
' 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
overwrittenSum = 0
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 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
txtAuszManuell.Visible = True
Else
txtAusz.Visible = True
txtAuszManuell.Visible = False
End If
End Sub
Public Sub fillFields(dt As DataTable)
'69 10-Na 22-06
'70 11-Sa 00-24 ===> 50%
'72 13-So 00-24
'73 14-FtN 00-24
'1209 Mehrarbeit
'1235 Überstunden 100% gesamt ===> 100%
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 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 sum100, sum50, sum0, gesamt As Double
sum100 = RoundOfDigits(CDbl(txtAusz100.Text) * 100 / 200, 2) 'Übergabe in ZE-System als heruntergerechnete 100%ige bzw. 50%ige ÜS!
sum50 = RoundOfDigits(CDbl(txtAusz50.Text) * 100 / faktorSamstagsarbeit, 2)
sum0 = RoundOfDigits(CDbl(txtAusz50vonSaldo.Text) * 100 / faktorTeilzeit, 2)
gesamt = IIf(overwrittenSum > 0, overwrittenSum, CDbl(txtAusz.Text))
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)
txtAusgabe.Append(IIf(Not istTeilzeit, sum50 + sum0, sum50) & "x 50% ÜS: " & CDbl(txtAusz50.Text) + IIf(Not istTeilzeit, CDbl(txtAusz50vonSaldo.Text), 0) & vbNewLine)
If istTeilzeit Then txtAusgabe.Append(sum0 & "x 25% ÜS: " & CDbl(txtAusz50vonSaldo.Text) & vbNewLine)
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 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") = IIf(istTeilzeit, 1553, 1551)
row.Item("value") = sum0.ToString.Replace(",", ".")
dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count)
End If
If gesamt > 0 Then 'vom ldf Saldo, ev. über API Möglich monatliche Korrektur direkt zu befüllen, dann muss dieser If Zweig überarbeitet werden!!!!!!!!!!!!!!
Dim 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
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) AndAlso ues.SAVE() Then
MsgBox("Erfolgreich in Timas eingetragen")
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") = 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
If timas.deleteTimeAccounts(auszahlugsdatum, auszahlugsdatum, MA.mit_timasId, dtdeleteEntries) Then
Dim ues As New cUeberstunden(MA.mit_id, auszahlugsdatum.ToString("dd/MM/yyyy"))
ues.uest_deleted = True
ues.uest_lastChanged = Now()
ues.uest_systemuser = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
ues.SAVE()
MsgBox("Erfolgreich aus Timas zurückgesetzt!")
picDel.Visible = False
Thread.Sleep(1000) 'warten bis Eintrag in Timas-DB
getUeberstunden(cbxabwDatum.Checked)
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)"
faktorTeilzeit = 100 ' werden Zeitlich nicht hochgerechnet, sondern nur mit aufschlag ausbezahlt, somit keine Hochrechnung um Faktor!
Else
lbllfdSaldo.Text = "lfd Saldo"
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
'txt50x1.Text = RoundOfDigits(stundenlfdSaldobere * faktorTeilzeit / 100, 2)
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)
If summeAusz >= stunden50auszbere Then
txtAusz50.Text = stunden50auszbere
summeAusz = RoundOfDigits(summeAusz - stunden50auszbere, 2)
ElseIf summeAusz < 0 Then
txtAusz50.Text = "0"
Else
txtAusz50.Text = summeAusz
summeAusz = RoundOfDigits(summeAusz - stunden50auszbere, 2)
End If
If summeAusz >= stundenlfdSaldo Then
txtAusz50vonSaldo.Text = stundenlfdSaldo
summeAusz = RoundOfDigits(summeAusz - stundenlfdSaldo, 2)
ElseIf summeAusz < 0 Then
txtAusz50vonSaldo.Text = "0"
Else
txtAusz50vonSaldo.Text = summeAusz
summeAusz = RoundOfDigits(summeAusz - stundenlfdSaldo, 2)
End If
End If
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, "", "overallBalance")
stunden100auszbere = RoundOfDigits(stunden100ausz * 2, 2)
stunden50auszbere = RoundOfDigits(stunden50ausz * 100 / faktorSamstagsarbeit, 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
faktorSamstagsarbeit = 150 'Samstagsarbeit wir im Timas hochgerechnet
lblMA.Text = "Mitarbeiter (mit SA-Zuschlag):"
Else
lblMA.Text = "Mitarbeiter (ohne SA-Zuschlag):"
faktorSamstagsarbeit = 100 'Samstagsarbeit wir im Timas NICHT hochgerechnet
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!"
Else
Label5.Text = ""
End If
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