Mitarbeiter-Überstundensaldo, etc.

This commit is contained in:
2026-10-12 17:08:07 +02:00
parent 016e1ecb1f
commit b69e058dff
8 changed files with 311 additions and 68 deletions

View File

@@ -39,6 +39,7 @@ Public Class usrCntlMitarbeiter
btnUEZ_ausz.Visible = False
lblAktiv.Text = ""
cbxClientTimas.Visible = False
If TabControl1.SelectedIndex = 0 Then
showVERAGATILLA("VERAG")
@@ -61,6 +62,23 @@ Public Class usrCntlMitarbeiter
btnUEZ_ausz.Visible = True
End If
If dgvTimasNew IsNot Nothing Then
cbxClientTimas.Visible = True
cbxClientTimas.Items.Clear()
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AMBAR", "AMBAR"))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATILLA", "ATILLA"))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FRONTOFFICE", "FO"))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "IMEX"))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG AG", "VERAG AG"))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG - MDM", "VERAG 360"))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG CS", "VERAG CS"))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG GMBH", "VERAG GMBH"))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG UNISPED Ltd", "VERAG UNISPED LIMITED"))
cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG CUSTOMS LOGISTICS Ltd", "VERAG CL LIMITED"))
cbxClientTimas.SelectedIndex = 0
showTIMAS(False)
End If
End If
@@ -224,11 +242,11 @@ Public Class usrCntlMitarbeiter
Public Sub showTIMAS(refresh As Boolean)
Public Sub showTIMAS(refresh As Boolean, Optional TimasMandant As String = "")
locZeilen = -1
If Not Grid_aktiv Then Exit Sub
If dt.Columns.Count > 0 And Not refresh Then
If dt.Columns.Count > 0 And Not refresh AndAlso TimasMandant <> "" Then
If txtSuche.Text <> "" Then
dt.DefaultView.RowFilter = "Vorname like '%" & txtSuche.Text & "%' or Nachname like '%" & txtSuche.Text & "%' or 'Personal-Nr (Lohn)' like '%" & txtSuche.Text & "%' or Info like '%" & txtSuche.Text & "%'"
@@ -236,12 +254,17 @@ Public Class usrCntlMitarbeiter
dt.DefaultView.RowFilter = Nothing
End If
If TimasMandant <> "" Then
dt.DefaultView.RowFilter = "Info like '%" & TimasMandant & "%'"
End If
dgvTimasNew.DataSource = dt
Else
Dim timas As New cTimasAPI("timas")
timas.getEmployeeList(dt)
timas.getEmployeeList(dt, TimasMandant)
dgvTimasNew.DataSource = dt
Dim dt_onlyActive As New DataTable
dt_onlyActive = dt.Select("[Ausweis-Nr] <> 0 and Vorname <> '' and Nachname <> ''").CopyToDataTable
dgvTimasNew.DataSource = dt_onlyActive
@@ -766,18 +789,30 @@ Public Class usrCntlMitarbeiter
copyToClipboardWIKI()
ElseIf item.Name = "checkue" Then
checkUeberstunden(False, Now().Month, Now().Year)
ElseIf item.Name = "ueuebersicht" Then
Dim f As New frmDatumsabfrage("Überstunden-Übersicht Monat ", True)
f.dtp_date.Format = DateTimePickerFormat.Custom
f.dtp_date.CustomFormat = "MM.yyyy"
ElseIf item.Name = "ue_stand_yesterday" Then
gettimesaldo(False)
ElseIf item.Name = "ue_stand" Then
Dim f As New frmDatumsabfrage("Zeitsaldo-Stichtag ", True)
f.ShowDialog()
If f.DialogResult = DialogResult.OK Then
checkUeberstunden(True, CDate(f.dtp_date.Value).Month, CDate(f.dtp_date.Value).Year)
gettimesaldo(True, CDate(f.dtp_date.Value))
End If
Else
ElseIf item.Name = "ueuebersicht" Then
Dim f As New frmDatumsabfrage("Überstunden-Übersicht Monat ", True)
f.dtp_date.Format = DateTimePickerFormat.Custom
f.dtp_date.CustomFormat = "MM.yyyy"
f.ShowDialog()
If f.DialogResult = DialogResult.OK Then
checkUeberstunden(True, CDate(f.dtp_date.Value).Month, CDate(f.dtp_date.Value).Year)
End If
Else
MsgBox("Funktion nicht implementiert!")
End If
@@ -826,6 +861,18 @@ Public Class usrCntlMitarbeiter
ContextMenuStrip2.Items.Add(checkue)
End If
If Not ContextMenuStrip2.Items.ContainsKey("ue_stand_yesterday") Then
Dim ue_stand = New ToolStripMenuItem() With {.Text = "Stand Zeitsaldo gestern", .Name = "ue_stand_yesterday", .Font = New Font(Me.Font.FontFamily, Me.Font.Size), .Image = My.Resources.Excel_2013_logo_155x110}
AddHandler ue_stand.Click, AddressOf mnuItem_Clicked
ContextMenuStrip2.Items.Add(ue_stand)
End If
If Not ContextMenuStrip2.Items.ContainsKey("ue_stand") Then
Dim ue_stand = New ToolStripMenuItem() With {.Text = "Stand Zeitsaldo Stichtag", .Name = "ue_stand", .Font = New Font(Me.Font.FontFamily, Me.Font.Size), .Image = My.Resources.Excel_2013_logo_155x110}
AddHandler ue_stand.Click, AddressOf mnuItem_Clicked
ContextMenuStrip2.Items.Add(ue_stand)
End If
ContextMenuStrip2.Show(Cursor.Position)
@@ -1012,7 +1059,9 @@ Public Class usrCntlMitarbeiter
dt_Accounts.Columns.Add("accountid", GetType(Integer))
Dim ROW_ACC As DataRow = dt_Accounts.NewRow
ROW_ACC("accountid") = "993" 'Auszahlungen ÜS!
dt_Accounts.Rows.Add(ROW_ACC)
Dim dt_Employee As New DataTable
@@ -1032,6 +1081,7 @@ Public Class usrCntlMitarbeiter
Dim dateEnd = CDate(tag.GetLastyDayYInxMonth(DayOfWeek.Monday, Month, year, True))
For Each r As DataGridViewRow In dgvTimasNew.Rows
Dim ROW As DataRow = dt_Employee.NewRow
ROW("employeeId") = r.Cells("Id").Value
@@ -1041,8 +1091,6 @@ Public Class usrCntlMitarbeiter
dt_Employee.Rows.Add(ROW)
Next
Dim timas As New cTimasAPI("timas")
timas.getTimeAccounts(dateStart, dateEnd, 0, dt_Accounts, dt_result, dt_Employee)
@@ -1096,8 +1144,8 @@ Public Class usrCntlMitarbeiter
' Daten einfügen
For Each row In query
dt_merged.Rows.Add(row)
Next
dt_merged.Rows.Add(row)
Next
If dt_merged.Rows.Count > 0 Then
If dt_merged.Rows.Count > 0 Then
@@ -1117,7 +1165,7 @@ Public Class usrCntlMitarbeiter
End If
End If
@@ -1129,4 +1177,142 @@ Public Class usrCntlMitarbeiter
End Sub
Private Sub gettimesaldo(stichtag As Boolean, Optional st_datum As Date = Nothing)
Dim timas As New cTimasAPI("timas")
Dim isServiceRunning As Boolean = True
Dim dt_Employee_temp As New DataTable
dt_Employee_temp.Columns.Add("employeeId", GetType(Integer))
If dgvTimasNew.SelectedRows.Count = 0 Then
MsgBox("Bitte Mitarbeiter markieren!")
End If
For Each r As DataGridViewRow In dgvTimasNew.SelectedRows
Dim ROW As DataRow = dt_Employee_temp.NewRow
ROW("employeeId") = r.Cells("Id").Value
dt_Employee_temp.Rows.Add(ROW)
Next
Dim sqlWhere As String = String.Join(",", dt_Employee_temp.AsEnumerable().Where(Function(r) Not r.IsNull("employeeId")).Select(Function(r) r("employeeId").ToString()))
Dim sql = "select mit_timasId as employeeId,mit_vname as Vorname ,mit_nname as Nachname , mit_niederlassung as Niederlassung,mit_abteilung as Abteilung, mit_firma as Firma
FROM [ADMIN].[dbo].tblMitarbeiter where mit_timasId in (" & sqlWhere & ")"
Dim dt_AVISO As DataTable = (New SQL).loadDgvBySql(sql, "ADMIN", 100, True)
Dim query =
From fa In dt_Employee_temp.AsEnumerable() Join emp In dt_AVISO.AsEnumerable() On fa.Field(Of Integer)("employeeId") Equals emp.Field(Of Integer)("employeeId")
Select New With {
.EmployeeId = fa.Field(Of Integer)("employeeId"),
.Vorname = emp.Field(Of String)("Vorname"),
.Nachname = emp.Field(Of String)("Nachname"),
.Niederlassung = emp.Field(Of String)("Niederlassung"),
.Abteilung = emp.Field(Of String)("Abteilung"),
.Firma = emp.Field(Of String)("Firma")
}
Dim dt_Employee As New DataTable
dt_Employee.Columns.Add("employeeId", GetType(Integer))
dt_Employee.Columns.Add("Vorname", GetType(String))
dt_Employee.Columns.Add("Nachname", GetType(String))
dt_Employee.Columns.Add("Niederlassung", GetType(String))
dt_Employee.Columns.Add("Abteilung", GetType(String))
dt_Employee.Columns.Add("Firma", GetType(String))
dt_Employee.Columns.Add("Saldo-raw", GetType(String))
dt_Employee.Columns.Add("Saldo", GetType(Double))
For Each item In query
dt_Employee.Rows.Add(
item.EmployeeId,
item.Vorname,
item.Nachname,
item.Niederlassung,
item.Abteilung,
item.Firma,
DBNull.Value, ' Saldo-raw
DBNull.Value ' Saldo
)
Next
Dim emp_id_all As Integer = -1
Dim saldo As String = ""
Dim saldoDouble As Double
For Each r As DataRow In dt_Employee.Rows
Dim emp_id As Integer = r.Item("employeeId")
If emp_id <> emp_id_all Then
If stichtag Then
saldo = timas.getTimeSaldo(emp_id, "", "dailyBalanceYesterday", isServiceRunning, "time", True, st_datum)
Else
saldo = timas.getTimeSaldo(emp_id, "", "dailyBalanceYesterday", isServiceRunning, "time", True)
End If
If Not isServiceRunning Then
MsgBox("Abfragefehler am Timas-Server!")
Exit Sub
End If
r.Item("Saldo-raw") = saldo
emp_id_all = emp_id
Dim teile = saldo.Trim().Split(":"c)
Dim stunden As Integer
Dim minuten As Integer
If teile.Length = 2 AndAlso
Integer.TryParse(teile(0), stunden) AndAlso
Integer.TryParse(teile(1), minuten) AndAlso
minuten >= 0 AndAlso minuten < 60 Then
saldoDouble = CDbl(stunden + minuten / 60.0)
r("Saldo") = Math.Round(saldoDouble, 2)
Else
saldoDouble = 0
r("Saldo") = DBNull.Value
End If
Else
r.Item("Saldo-raw") = saldo
r.Item("Saldo") = Math.Round(saldoDouble, 2)
End If
Next
If dt_Employee.Rows.Count > 0 Then
VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt_Employee,,, "Stundensaldo: " & Now.AddDays(-1).ToShortDateString,,,,, True)
End If
End Sub
Private Sub cbxClientTimas_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbxClientTimas.SelectedIndexChanged
Dim Firma = cbxClientTimas.SelectedItem.Text
If Firma <> "" Then
showTIMAS(False, Firma)
Else
showTIMAS(False)
End If
End Sub
End Class