Wiederherstellung

This commit is contained in:
2024-03-01 14:51:03 +01:00
parent 8135bdf6c2
commit cd5f875c1f
4 changed files with 154 additions and 434 deletions

View File

@@ -1,8 +1,8 @@

Imports System.Text
Imports System.Runtime.InteropServices.ComTypes
Imports System.Threading
Imports System.Windows.Forms
Imports Microsoft.Office.Interop.Outlook
Imports Therefore.API
Public Class frmUeberstundenauszahlen
@@ -14,9 +14,7 @@ Public Class frmUeberstundenauszahlen
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 stunden100ausz, stunden50ausz, stunden100auszbere, stunden50auszbere, stunden100bereitsausbezahl, stunden50bereitsausbezahlt, stunden25bereitsausbezahlt, mehrabeit, stundenlfdSaldo, stundenlfdSaldobere, overwrittenSum As Double
Dim stunden100ausz, stunden50ausz, stunden100auszbere, stunden50auszbere, stunden100bereitsausbezahl, stunden50bereitsausbezahlt, mehrabeit, stundenlfdSaldo, stundenlfdSaldobere As Double
Sub New(mit_id)
@@ -59,11 +57,6 @@ Public Class frmUeberstundenauszahlen
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
@@ -89,7 +82,7 @@ Public Class frmUeberstundenauszahlen
Panel1.Enabled = True
End If
Dim dt = getUeberstunden(timeaccountdt, dtResult)
Dim dt = calcUeberstunden(timeaccountdt, dtResult)
fillFields(dt)
dgvUeberstunden.DataSource = dt
@@ -97,7 +90,7 @@ Public Class frmUeberstundenauszahlen
End Sub
Private Function getUeberstunden(dtAccouts As DataTable, dtSumUeberstunden As DataTable) As DataTable
Private Function calcUeberstunden(dtAccouts As DataTable, dtSumUeberstunden As DataTable) As DataTable
Dim dtmerged As DataTable
If dtAccouts IsNot Nothing AndAlso dtSumUeberstunden IsNot Nothing Then
@@ -147,49 +140,6 @@ Public Class frmUeberstundenauszahlen
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
getUeberstunden(cbxabwDatum.Checked)
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
@@ -207,13 +157,9 @@ Public Class frmUeberstundenauszahlen
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
@@ -256,15 +202,6 @@ Public Class frmUeberstundenauszahlen
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)
@@ -275,7 +212,7 @@ Public Class frmUeberstundenauszahlen
End If
Next
If (stunden100bereitsausbezahl + stunden50bereitsausbezahlt + stunden25bereitsausbezahlt) > 0 Then
If (stunden100bereitsausbezahl + stunden50bereitsausbezahlt) > 0 Then
picDel.Visible = True
Button1.Enabled = False
txtAusz.Enabled = False
@@ -284,7 +221,30 @@ Public Class frmUeberstundenauszahlen
txtAusz.Enabled = True
End If
calxMaxauszahlbar()
stunden100auszbere = stunden100ausz * 2
stunden50auszbere = stunden50ausz * 1.5
txt100x2.Text = stunden100auszbere
txt50x15.Text = stunden50auszbere
'If CDbl(txtlfdSaldo.Text) < 0 Or auszahlugsdatum.Month = Today.Month AndAlso auszahlugsdatum.Year = Today.Year Then
'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")
'End If
stundenlfdSaldo = CDbl(txtlfdSaldo.Text)
stundenlfdSaldobere = stundenlfdSaldo
stundenlfdSaldobere -= stunden100auszbere
stundenlfdSaldobere -= stunden50auszbere
stundenlfdSaldobere = Math.Round(stundenlfdSaldobere, 2)
If stundenlfdSaldo <= 0 Then Button1.Enabled = False
txtSummeAuszb.Text = stundenlfdSaldo
End If
@@ -292,7 +252,69 @@ Public Class frmUeberstundenauszahlen
Private Sub txtAusz_TextChanged(sender As Object, e As EventArgs) Handles txtAusz.TextChanged
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 = stundenlfdSaldobere
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 = Math.Round(summeAusz - stunden100auszbere, 2)
If summeAusz >= stunden50auszbere Then
txtAusz50.Text = stunden50auszbere
summeAusz = Math.Round(summeAusz - stunden50auszbere, 2)
ElseIf summeAusz < 0 Then
txtAusz50.Text = "0"
Else
txtAusz50.Text = summeAusz
summeAusz = Math.Round(summeAusz - stunden50auszbere, 2)
End If
If summeAusz >= stundenlfdSaldo Then
txtAusz50vonSaldo.Text = stundenlfdSaldo
summeAusz = Math.Round(summeAusz - stundenlfdSaldo, 2)
ElseIf summeAusz < 0 Then
txtAusz50vonSaldo.Text = "0"
Else
txtAusz50vonSaldo.Text = summeAusz
summeAusz = Math.Round(summeAusz - stundenlfdSaldo, 2)
End If
End If
End Sub
@@ -316,19 +338,12 @@ Public Class frmUeberstundenauszahlen
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!
sum100 = RoundOfDigits(CDbl(txtAusz100.Text) * 0.5, 2) 'Übergabe in ZE-System als heruntergerechnete 100%ige bzw. 50%ige ÜS!
sum50 = RoundOfDigits(CDbl(txtAusz50.Text) * 100 / 150, 2)
sum0 = RoundOfDigits(CDbl(txtAusz50vonSaldo.Text) * 100 / faktorTeilzeit, 2)
gesamt = IIf(overwrittenSum > 0, overwrittenSum, CDbl(txtAusz.Text))
sum0 = CDbl(txtAusz50vonSaldo.Text)
gesamt = 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)
Dim aksAuszahlung As MsgBoxResult = MsgBox("Überstunden für " & MA.mit_vname & " " & MA.mit_nname & " mit " & auszahlugsdatum.ToShortDateString() & " auszahlen?" & vbNewLine & sum100 & "x 100% ÜS :" & txtAusz100.Text & vbNewLine & sum50 & "x 50% ÜS: " & CDbl(txtAusz50.Text) + CDbl(txtAusz50vonSaldo.Text) & vbNewLine & "ÜS gesamt: " & gesamt, vbYesNo)
If aksAuszahlung = vbYes Then
Dim dtsetEntries As New DataTable
@@ -336,28 +351,28 @@ Public Class frmUeberstundenauszahlen
dtsetEntries.Columns.Add("accountid", GetType(Integer))
dtsetEntries.Columns.Add("value", GetType(String))
If sum100 > 0 Then
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
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
If sum0 >= 0 Then
Dim row = dtsetEntries.NewRow
row.Item("accountid") = IIf(istTeilzeit, 1553, 1551)
row.Item("accountid") = 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!!!!!!!!!!!!!!
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(",", ".")
@@ -368,17 +383,11 @@ Public Class frmUeberstundenauszahlen
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_0 = sum0
ues.uest_systemuser = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
ues.uest_ignoreLimit = Not maxUberstundenpruefung
ues.uest_maxUE = CDbl(txtSummeAuszb.Text)
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
@@ -393,17 +402,7 @@ Public Class frmUeberstundenauszahlen
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)
Dim aksAuszahlung As MsgBoxResult = MsgBox("Ausbezahlte Überstunden für " & MA.mit_vname & " " & MA.mit_nname & " mit " & auszahlugsdatum.ToShortDateString() & " zurücksetzen?" & vbNewLine & "100% ÜS: " & txtberAusz100.Text & vbNewLine & "50% ÜS: " & txtberAusz50.Text & vbNewLine & "ÜS gesamt: " & CDbl(txtberAusz100.Text) + CDbl(txtberAusz50.Text), vbYesNo)
If aksAuszahlung = vbYes Then
Dim dtdeleteEntries As New DataTable
@@ -426,18 +425,12 @@ Public Class frmUeberstundenauszahlen
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()
ues.uest_lastChanged = Now()
ues.uest_systemuser = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
ues.SAVE()
MsgBox("Erfolgreich aus Timas zurückgesetzt!")
picDel.Visible = False