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