Fehlermeldung FinanzOnline, Ueberstunden, Feiertags
This commit is contained in:
@@ -3,11 +3,10 @@ Imports System.Globalization
|
||||
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 As cTimasAPI = New cTimasAPI
|
||||
@@ -15,16 +14,17 @@ Public Class frmUeberstundenauszahlen
|
||||
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 faktorFeiertagsarbeit As Double = 200
|
||||
Dim faktorSamstagsarbeit As Double = 150
|
||||
Dim keinenFaktor As Boolean = False
|
||||
Dim stunden100ausz, stunden50ausz, stunden100auszbere, stunden50auszbere, stunden100bereitsausbezahl, stunden50bereitsausbezahlt, stunden25bereitsausbezahlt, mehrabeit, stundenlfdSaldo, stundenlfdSaldobere, overwrittenSum As Double
|
||||
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)
|
||||
@@ -41,22 +41,9 @@ Public Class frmUeberstundenauszahlen
|
||||
|
||||
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"
|
||||
'65;"01-Lfd Saldo"
|
||||
'69;"10-Na 22-06"
|
||||
'70;"11-Sa 00-24"
|
||||
'72;"13-So 00-24"
|
||||
'73;"14-FtN 00-24"
|
||||
'1209;Mehrarbeit
|
||||
'1235;"Überstunden 100% gesamt"
|
||||
'1550;"AUSZ ÜS 100%"
|
||||
'1551;"AUSZ ÜS 50%"
|
||||
'1553;"AUSZ ÜS MA 25%"
|
||||
timeaccountdt = dv.ToTable
|
||||
|
||||
getAddDataFromTimas()
|
||||
|
||||
getUeberstunden(False)
|
||||
|
||||
'getAddDataFromTimas()
|
||||
|
||||
|
||||
@@ -144,12 +131,6 @@ Public Class frmUeberstundenauszahlen
|
||||
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"),
|
||||
@@ -248,25 +229,76 @@ Public Class frmUeberstundenauszahlen
|
||||
|
||||
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
|
||||
|
||||
If cbx100.Checked AndAlso txtAusz100.Text <> "" AndAlso IsNumeric(txtAusz100.Text) AndAlso CDbl(txtAusz100.Text) >= 0 Then
|
||||
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 cbx50.Checked AndAlso txtAusz50.Text <> "" AndAlso IsNumeric(txtAusz50.Text) AndAlso CDbl(txtAusz50.Text) >= 0 Then
|
||||
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
|
||||
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
|
||||
@@ -281,16 +313,16 @@ Public Class frmUeberstundenauszahlen
|
||||
|
||||
End If
|
||||
|
||||
If overwrittenSum > 0 Then
|
||||
txtBruttoSum.Text = overwrittenSum
|
||||
Else
|
||||
txtBruttoSum.Text = sum
|
||||
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
|
||||
|
||||
@@ -457,6 +489,25 @@ Public Class frmUeberstundenauszahlen
|
||||
|
||||
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()
|
||||
@@ -505,31 +556,36 @@ Public Class frmUeberstundenauszahlen
|
||||
'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(txtAusz100.Text) * 100 / faktorFeiertagsarbeit, 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)
|
||||
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 faktorSamstagsarbeit = 150 AndAlso istTeilzeit Then
|
||||
If faktor50Zuschlag = 150 AndAlso istTeilzeit Then
|
||||
'Besprechung mit RESI ob Teilzeitmitarbeiter 50% ausgezahlt bekommen oder diese umgerechnet in 25% werden!
|
||||
MsgBox("Die Konstellation SA-Zuschlag und Teilzeitmitarbeiter ist noch nicht umgesetzt!")
|
||||
Exit Sub
|
||||
'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)
|
||||
@@ -732,17 +788,17 @@ Public Class frmUeberstundenauszahlen
|
||||
|
||||
Dim summeAusz = CDbl(txtAusz.Text)
|
||||
If summeAusz <= 0 Then
|
||||
txtAusz50vonSaldo.Text = "0"
|
||||
txtAusz50.Text = "0"
|
||||
txtAusz100.Text = "0"
|
||||
txtAusz.Text = "0"
|
||||
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!
|
||||
|
||||
@@ -765,41 +821,51 @@ Public Class frmUeberstundenauszahlen
|
||||
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 >= stundenlfdSaldo Then
|
||||
txtAusz50vonSaldo.Text = stundenlfdSaldo
|
||||
summeAusz = RoundOfDigits(summeAusz - stundenlfdSaldo, 2)
|
||||
|
||||
txtAusz50vonSaldo.Text = summeAusz
|
||||
|
||||
ElseIf summeAusz < 0 Then
|
||||
txtAusz50vonSaldo.Text = "0"
|
||||
Else
|
||||
txtAusz50vonSaldo.Text = summeAusz
|
||||
summeAusz = RoundOfDigits(summeAusz - stundenlfdSaldo, 2)
|
||||
End If
|
||||
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!
|
||||
'wenn keinFaktor (also keine hochgerechneten 100% und 50%, dann kann nur monatsweiiße ausbezahlt werden (weil
|
||||
|
||||
txtlfdSaldo.Text = timas.getTimeSaldo(MA.mit_timasId, "", "overallBalance")
|
||||
|
||||
stunden100auszbere = RoundOfDigits(stunden100ausz * faktorFeiertagsarbeit / 100, 2)
|
||||
stunden50auszbere = RoundOfDigits(stunden50ausz * faktorSamstagsarbeit / 100, 2)
|
||||
stunden100auszbere = RoundOfDigits(stunden100ausz * faktor100Zuschlag / 100, 2)
|
||||
stunden50auszbere = RoundOfDigits(stunden50ausz * faktor50Zuschlag / 100, 2)
|
||||
|
||||
txt100x2.Text = stunden100auszbere
|
||||
txt50x15.Text = stunden50auszbere
|
||||
@@ -841,10 +907,10 @@ Public Class frmUeberstundenauszahlen
|
||||
|
||||
If row.Item("name") = "SA-Zuschlag" Then
|
||||
If row.Item("value") = "true" Then
|
||||
faktorSamstagsarbeit = 150 'Samstagsarbeit wir im Timas hochgerechnet
|
||||
faktor50Zuschlag = 150 'Samstagsarbeit wir im Timas hochgerechnet
|
||||
lblMA.Text = "Mitarbeiter (mit SA-Zuschlag):"
|
||||
Else
|
||||
faktorSamstagsarbeit = 100 'Samstagsarbeit wir im Timas NICHT hochgerechnet
|
||||
faktor50Zuschlag = 100 'Samstagsarbeit wir im Timas NICHT hochgerechnet
|
||||
lblMA.Text = "Mitarbeiter (ohne SA-Zuschlag):"
|
||||
|
||||
End If
|
||||
@@ -853,18 +919,20 @@ Public Class frmUeberstundenauszahlen
|
||||
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!"
|
||||
keinenFaktor = True
|
||||
|
||||
ignoreFactor = True
|
||||
|
||||
'Zuschläge ohne Faktoren!
|
||||
faktorSamstagsarbeit = 100
|
||||
faktorFeiertagsarbeit = 100
|
||||
faktor50Zuschlag = 100
|
||||
faktor100Zuschlag = 100
|
||||
faktorTeilzeit = 100
|
||||
|
||||
Else
|
||||
Label5.Text = ""
|
||||
keinenFaktor = False
|
||||
ignoreFactor = False
|
||||
End If
|
||||
|
||||
cbxabwDatum.Enabled = Not keinenFaktor
|
||||
cbxabwDatum.Enabled = Not ignoreFactor
|
||||
|
||||
End If
|
||||
|
||||
@@ -881,24 +949,4 @@ Public Class frmUeberstundenauszahlen
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Function fixTime(val As String) As String
|
||||
|
||||
Try
|
||||
If val <> "" AndAlso IsNumeric(val) Then
|
||||
Dim hours = Convert.ToInt32(val)
|
||||
Dim minutes = (val Mod hours) * 60
|
||||
Return hours & ":" & minutes
|
||||
Else
|
||||
Return ""
|
||||
End If
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user