Ueberstundenauszahlung

This commit is contained in:
2024-02-22 15:18:46 +01:00
parent e480d92d1c
commit 4c5885c7da
2 changed files with 74 additions and 82 deletions

View File

@@ -31,7 +31,6 @@ Partial Class frmUeberstundenauszahlen
Me.txt100 = New System.Windows.Forms.TextBox() Me.txt100 = New System.Windows.Forms.TextBox()
Me.txt50 = New System.Windows.Forms.TextBox() Me.txt50 = New System.Windows.Forms.TextBox()
Me.txtMehr = New System.Windows.Forms.TextBox() Me.txtMehr = New System.Windows.Forms.TextBox()
Me.Label5 = New System.Windows.Forms.Label()
Me.txtAusz = New System.Windows.Forms.TextBox() Me.txtAusz = New System.Windows.Forms.TextBox()
Me.lblMA = New System.Windows.Forms.Label() Me.lblMA = New System.Windows.Forms.Label()
Me.Label7 = New System.Windows.Forms.Label() Me.Label7 = New System.Windows.Forms.Label()
@@ -53,9 +52,10 @@ Partial Class frmUeberstundenauszahlen
Me.picDel = New System.Windows.Forms.PictureBox() Me.picDel = New System.Windows.Forms.PictureBox()
Me.txtAusz50vonSaldo = New System.Windows.Forms.TextBox() Me.txtAusz50vonSaldo = New System.Windows.Forms.TextBox()
Me.Panel1 = New System.Windows.Forms.Panel() Me.Panel1 = New System.Windows.Forms.Panel()
Me.dgvUeberstunden = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.txt50x1 = New System.Windows.Forms.TextBox()
Me.Label8 = New System.Windows.Forms.Label() Me.Label8 = New System.Windows.Forms.Label()
Me.txt50x1 = New System.Windows.Forms.TextBox()
Me.dgvUeberstunden = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.cbxoverwrite = New System.Windows.Forms.CheckBox()
CType(Me.picDel, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picDel, System.ComponentModel.ISupportInitialize).BeginInit()
Me.Panel1.SuspendLayout() Me.Panel1.SuspendLayout()
CType(Me.dgvUeberstunden, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.dgvUeberstunden, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -133,15 +133,6 @@ Partial Class frmUeberstundenauszahlen
Me.txtMehr.TabIndex = 7 Me.txtMehr.TabIndex = 7
Me.txtMehr.Text = "0" Me.txtMehr.Text = "0"
' '
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.Location = New System.Drawing.Point(75, 179)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(86, 13)
Me.Label5.TabIndex = 8
Me.Label5.Text = "max. auszahlbar:"
'
'txtAusz 'txtAusz
' '
Me.txtAusz.Location = New System.Drawing.Point(192, 196) Me.txtAusz.Location = New System.Drawing.Point(192, 196)
@@ -325,6 +316,7 @@ Partial Class frmUeberstundenauszahlen
' '
'Panel1 'Panel1
' '
Me.Panel1.Controls.Add(Me.cbxoverwrite)
Me.Panel1.Controls.Add(Me.Label8) Me.Panel1.Controls.Add(Me.Label8)
Me.Panel1.Controls.Add(Me.txt50x1) Me.Panel1.Controls.Add(Me.txt50x1)
Me.Panel1.Controls.Add(Me.Label2) Me.Panel1.Controls.Add(Me.Label2)
@@ -339,7 +331,6 @@ Partial Class frmUeberstundenauszahlen
Me.Panel1.Controls.Add(Me.Label1) Me.Panel1.Controls.Add(Me.Label1)
Me.Panel1.Controls.Add(Me.txtMehr) Me.Panel1.Controls.Add(Me.txtMehr)
Me.Panel1.Controls.Add(Me.txtberAusz50) Me.Panel1.Controls.Add(Me.txtberAusz50)
Me.Panel1.Controls.Add(Me.Label5)
Me.Panel1.Controls.Add(Me.txtberAusz100) Me.Panel1.Controls.Add(Me.txtberAusz100)
Me.Panel1.Controls.Add(Me.txtAusz) Me.Panel1.Controls.Add(Me.txtAusz)
Me.Panel1.Controls.Add(Me.txtSummeAuszb) Me.Panel1.Controls.Add(Me.txtSummeAuszb)
@@ -350,9 +341,27 @@ Partial Class frmUeberstundenauszahlen
Me.Panel1.Controls.Add(Me.txtAusz50) Me.Panel1.Controls.Add(Me.txtAusz50)
Me.Panel1.Location = New System.Drawing.Point(15, 67) Me.Panel1.Location = New System.Drawing.Point(15, 67)
Me.Panel1.Name = "Panel1" Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(421, 219) Me.Panel1.Size = New System.Drawing.Size(421, 235)
Me.Panel1.TabIndex = 30 Me.Panel1.TabIndex = 30
' '
'Label8
'
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(194, 179)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(56, 13)
Me.Label8.TabIndex = 33
Me.Label8.Text = "Auszahlen"
'
'txt50x1
'
Me.txt50x1.Location = New System.Drawing.Point(112, 108)
Me.txt50x1.Name = "txt50x1"
Me.txt50x1.ReadOnly = True
Me.txt50x1.Size = New System.Drawing.Size(49, 20)
Me.txt50x1.TabIndex = 32
Me.txt50x1.Text = "0"
'
'dgvUeberstunden 'dgvUeberstunden
' '
Me.dgvUeberstunden.AKTUALISIERUNGS_INTERVALL = -1 Me.dgvUeberstunden.AKTUALISIERUNGS_INTERVALL = -1
@@ -367,23 +376,17 @@ Partial Class frmUeberstundenauszahlen
Me.dgvUeberstunden.TabIndex = 13 Me.dgvUeberstunden.TabIndex = 13
Me.dgvUeberstunden.Visible = False Me.dgvUeberstunden.Visible = False
' '
'txt50x1 'cbxoverwrite
' '
Me.txt50x1.Location = New System.Drawing.Point(112, 108) Me.cbxoverwrite.AutoSize = True
Me.txt50x1.Name = "txt50x1" Me.cbxoverwrite.Checked = True
Me.txt50x1.ReadOnly = True Me.cbxoverwrite.CheckState = System.Windows.Forms.CheckState.Checked
Me.txt50x1.Size = New System.Drawing.Size(49, 20) Me.cbxoverwrite.Location = New System.Drawing.Point(59, 179)
Me.txt50x1.TabIndex = 32 Me.cbxoverwrite.Name = "cbxoverwrite"
Me.txt50x1.Text = "0" Me.cbxoverwrite.Size = New System.Drawing.Size(102, 17)
' Me.cbxoverwrite.TabIndex = 31
'Label8 Me.cbxoverwrite.Text = "max. auszahlbar"
' Me.cbxoverwrite.UseVisualStyleBackColor = True
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(194, 179)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(56, 13)
Me.Label8.TabIndex = 33
Me.Label8.Text = "Auszahlen"
' '
'frmUeberstundenauszahlen 'frmUeberstundenauszahlen
' '
@@ -419,7 +422,6 @@ Partial Class frmUeberstundenauszahlen
Friend WithEvents txt100 As Windows.Forms.TextBox Friend WithEvents txt100 As Windows.Forms.TextBox
Friend WithEvents txt50 As Windows.Forms.TextBox Friend WithEvents txt50 As Windows.Forms.TextBox
Friend WithEvents txtMehr As Windows.Forms.TextBox Friend WithEvents txtMehr As Windows.Forms.TextBox
Friend WithEvents Label5 As Windows.Forms.Label
Friend WithEvents txtAusz As Windows.Forms.TextBox Friend WithEvents txtAusz As Windows.Forms.TextBox
Friend WithEvents lblMA As Windows.Forms.Label Friend WithEvents lblMA As Windows.Forms.Label
Friend WithEvents Label7 As Windows.Forms.Label Friend WithEvents Label7 As Windows.Forms.Label
@@ -444,4 +446,5 @@ Partial Class frmUeberstundenauszahlen
Friend WithEvents Panel1 As Windows.Forms.Panel Friend WithEvents Panel1 As Windows.Forms.Panel
Friend WithEvents txt50x1 As Windows.Forms.TextBox Friend WithEvents txt50x1 As Windows.Forms.TextBox
Friend WithEvents Label8 As Windows.Forms.Label Friend WithEvents Label8 As Windows.Forms.Label
Friend WithEvents cbxoverwrite As Windows.Forms.CheckBox
End Class End Class

View File

@@ -2,6 +2,7 @@
Imports System.Threading Imports System.Threading
Imports System.Windows.Forms Imports System.Windows.Forms
Imports Microsoft.Office.Interop.Outlook Imports Microsoft.Office.Interop.Outlook
Imports Therefore.API
Public Class frmUeberstundenauszahlen Public Class frmUeberstundenauszahlen
@@ -12,7 +13,7 @@ Public Class frmUeberstundenauszahlen
Dim dtResult As New DataTable Dim dtResult As New DataTable
Dim tag As cFeiertage Dim tag As cFeiertage
Dim auszahlugsdatum As New Date Dim auszahlugsdatum As New Date
Dim maxUberstundenpruefung As Boolean = True
Dim stunden100ausz, stunden50ausz, stunden100auszbere, stunden50auszbere, stunden100bereitsausbezahl, stunden50bereitsausbezahlt, mehrabeit, stundenlfdSaldo, stundenlfdSaldobere As Double Dim stunden100ausz, stunden50ausz, stunden100auszbere, stunden50auszbere, stunden100bereitsausbezahl, stunden50bereitsausbezahlt, mehrabeit, stundenlfdSaldo, stundenlfdSaldobere As Double
@@ -34,6 +35,21 @@ Public Class frmUeberstundenauszahlen
getUeberstunden(False) getUeberstunden(False)
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 End Sub
Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles dtpMonat.ValueChanged, dtpBis.ValueChanged Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles dtpMonat.ValueChanged, dtpBis.ValueChanged
@@ -59,7 +75,7 @@ Public Class frmUeberstundenauszahlen
timas.getTimeAccounts(startdate, enddate, MA.mit_timasId, timeaccountdt, dtResult) timas.getTimeAccounts(startdate, enddate, MA.mit_timasId, timeaccountdt, dtResult)
If dtResult.Rows.Count < 1 Then If dtResult.Rows.Count < 1 Then
MsgBox("Es konnten keine Stunden ermittelt werden!") MsgBox("Für den gewählten Zeitraum konnten keine Stunden ermittelt werden!")
Panel1.Enabled = False Panel1.Enabled = False
Exit Sub Exit Sub
Else Else
@@ -186,6 +202,7 @@ Public Class frmUeberstundenauszahlen
stunden50bereitsausbezahlt = calc stunden50bereitsausbezahlt = calc
End If 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 'If r.Item("accountid") = "65" Then
' calc = CDbl(txtlfdSaldo.Text) ' calc = CDbl(txtlfdSaldo.Text)
' calc += r.Item("value") * (r.Item("multiplier") & "1") ' calc += r.Item("value") * (r.Item("multiplier") & "1")
@@ -210,7 +227,12 @@ Public Class frmUeberstundenauszahlen
txt100x2.Text = stunden100auszbere txt100x2.Text = stunden100auszbere
txt50x15.Text = stunden50auszbere txt50x15.Text = stunden50auszbere
txtlfdSaldo.Text = timas.getTimeSaldo(MA.mit_timasId, "", "overallBalance") 'Saldo zu Stichtag, nicht aktueller Saldo!!! '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) stundenlfdSaldo = CDbl(txtlfdSaldo.Text)
stundenlfdSaldobere = stundenlfdSaldo stundenlfdSaldobere = stundenlfdSaldo
@@ -248,12 +270,17 @@ Public Class frmUeberstundenauszahlen
txt50x15.Text = stunden50auszbere txt50x15.Text = stunden50auszbere
txt50x1.Text = stundenlfdSaldobere txt50x1.Text = stundenlfdSaldobere
If stundenlfdSaldo >= summeAusz Then 'Prüfung, damit nicht zuviele ÜS ausbezahlt werden können! If stundenlfdSaldo >= summeAusz Then 'Prüfung, damit nicht zuviele ÜS ausbezahlt werden können!
Button1.Enabled = True Button1.Enabled = True
Else Else
Button1.Enabled = False If maxUberstundenpruefung Then
Button1.Enabled = False
Else
Button1.Enabled = True
End If
End If End If
@@ -285,49 +312,6 @@ Public Class frmUeberstundenauszahlen
summeAusz = Math.Round(summeAusz - stundenlfdSaldo, 2) summeAusz = Math.Round(summeAusz - stundenlfdSaldo, 2)
End If End If
'Dim ausz100 As Double = (CDbl(txt100x2.Text))
'Dim ausz50 As Double = (CDbl(txt50x15.Text))
'Dim ausz50vonldfSaldo As Double = CDbl(txtlfdSaldo.Text)
'If ausz50 + ausz100 + ausz50vonldfSaldo >= summeAusz Then 'Prüfung, damit nicht zuviele ÜS ausbezahlt werden!
' Button1.Enabled = True
'Else
' Button1.Enabled = False
'End If
'If summeAusz >= ausz100 Then
' txtAusz100.Text = ausz100
' summeAusz = summeAusz - ausz100
'Else
' txtAusz100.Text = summeAusz
' summeAusz = summeAusz - ausz100
'End If
'If summeAusz >= ausz50 Then
' summeAusz = summeAusz - ausz50
' txtAusz50.Text = ausz50
'ElseIf summeAusz < 0 Then
' txtAusz50.Text = "0"
'Else
' txtAusz50.Text = summeAusz
' summeAusz = ausz50 - summeAusz
'End If
'If summeAusz >= ausz50vonldfSaldo Then
' summeAusz = summeAusz - ausz50vonldfSaldo
' txtAusz50vonSaldo.Text = ausz50vonldfSaldo
'ElseIf summeAusz < 0 Then
' txtAusz50vonSaldo.Text = "0"
'Else
' txtAusz50vonSaldo.Text = summeAusz
' summeAusz = ausz50vonldfSaldo - summeAusz
'End If
End If End If
@@ -354,8 +338,8 @@ Public Class frmUeberstundenauszahlen
Dim sum100, sum50, gesamt As Double Dim sum100, sum50, gesamt As Double
sum100 = Math.Round(CDbl(txtAusz100.Text) * 0.5, 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 = Math.Round(CDbl(txtAusz50.Text) * 0.67, 2) + CDbl(txtAusz50vonSaldo.Text) sum50 = RoundOfDigits(CDbl(txtAusz50.Text) * 100 / 150, 2) + CDbl(txtAusz50vonSaldo.Text)
gesamt = CDbl(txtAusz.Text) gesamt = CDbl(txtAusz.Text)
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) 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)
@@ -436,4 +420,9 @@ Public Class frmUeberstundenauszahlen
End If End If
End Sub 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
End Class End Class