182 lines
7.6 KiB
VB.net
182 lines
7.6 KiB
VB.net
Imports System.Globalization
|
|
|
|
Public Class usrcntlDienstplanStunden
|
|
|
|
Dim SQLDienst As New cDienstplan
|
|
' Dim ListMA As New List(Of cMAShort)
|
|
' Dim aktDate As Date = Now
|
|
Dim aktWoche As Integer = 0
|
|
Dim aktJahr As Integer = 1900
|
|
Dim niederlassung As String = ""
|
|
Dim cPF As New cProgramFunctions
|
|
Public SCHICHT = "ROT"
|
|
Public loaded As Integer = False
|
|
|
|
Public Event NAME_CHANGED(maId As Integer)
|
|
|
|
|
|
Sub New(aktWoche, aktJahr, niederlassung, SCHICHT)
|
|
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
|
|
Me.aktWoche = aktWoche
|
|
Me.aktJahr = aktJahr
|
|
Me.niederlassung = niederlassung
|
|
Me.SCHICHT = SCHICHT
|
|
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
|
'initStdMa()
|
|
End Sub
|
|
Public Sub initStdMa()
|
|
loaded = False
|
|
Try
|
|
Dim datum_start As Date = CalendarWeek(aktWoche, aktJahr)
|
|
Dim datum_end As Date = datum_start.AddDays(6)
|
|
With dgvStundenMa
|
|
.Columns.Clear()
|
|
.DataSource = SQLDienst.loadDGV("SELECT dstma_abteilung AS ABT, dstma_kuerzel AS NAME,dstma_wochenStunden,dstma_arbvh, dstma_id,dstma_farbe,dstma_mitId,dstma_ueberstdCounter FROM tblDienstMitarb INNER JOIN tblMitarbeiter ON mit_id=dstma_mitId WHERE dstma_inaktiv=0 AND (mit_gekuendigt =0 OR mit_kuendigungsdatum>='" & datum_start.ToShortDateString & "') AND dstma_niederlassung='" & niederlassung & "' ORDER BY ABT DESC, dstma_arbvh DESC, NAME")
|
|
|
|
Try
|
|
|
|
Dim d2 As New DataGridViewTextBoxColumn
|
|
d2.Name = "stundenBerechnet"
|
|
.Columns.Insert(2, d2)
|
|
|
|
Dim d As New DataGridViewTextBoxColumn
|
|
d.HeaderText = "Stunden Woche"
|
|
d.Name = "stunden"
|
|
.Columns.Insert(3, d)
|
|
|
|
|
|
|
|
' Dim d2 As New DataGridViewTextBoxColumn
|
|
' d2.HeaderText = "Std/Mon."
|
|
' .Columns.Add(d2)
|
|
|
|
.RowHeadersVisible = False
|
|
.Columns("dstma_farbe").Visible = False
|
|
'.Columns("dstma_kuerzel").Visible = False
|
|
.Columns("dstma_arbvh").Visible = False
|
|
.Columns("dstma_id").Visible = False
|
|
.Columns("dstma_wochenStunden").Visible = False
|
|
.Columns("dstma_mitId").Visible = False
|
|
|
|
.Columns("dstma_ueberstdCounter").HeaderText = "Überstd.(letzte KW)"
|
|
.Columns("dstma_ueberstdCounter").Width = 60
|
|
|
|
|
|
.Columns("stundenBerechnet").HeaderText = "Std."
|
|
.Columns("stundenBerechnet").Width = 40
|
|
|
|
.Columns("ABT").Width = 50
|
|
If niederlassung <> "SUB" Then .Columns("ABT").Visible = False
|
|
.Columns("NAME").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
|
|
'.Columns(2).Width = 50
|
|
.Columns("stunden").Width = 70
|
|
' .Columns(9).Width = 80
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message)
|
|
MsgBox("initStdMa-Error: " & ex.StackTrace)
|
|
End Try
|
|
|
|
For Each r As DataGridViewRow In .Rows
|
|
Try : r.DefaultCellStyle.ForeColor = ColorTranslator.FromHtml(r.Cells("dstma_farbe").Value) : Catch : End Try
|
|
|
|
Dim datum_montag As Date = CalendarWeek(aktWoche, aktJahr)
|
|
Dim thisMonth As New DateTime(DateTime.Today.Year, DateTime.Today.Month, 1)
|
|
Dim datum As Date = datum_montag
|
|
|
|
Dim ma As cDienstMA = SQLDienst.getDstMA(r.Cells("dstma_id").Value)
|
|
Dim Wochenstunden As Double = 0
|
|
|
|
If IsNumeric(ma.dstma_wochenStunden) Then Wochenstunden = ma.dstma_wochenStunden
|
|
'MsgBox(ma.dstma_wochenStunden)
|
|
'hier wird berechnet, wie viele Stunden tatsächlich zu arbeiten sind (abzgl. Feiertage)
|
|
Wochenstunden = cPF.getWochenstunden(Wochenstunden, datum, SCHICHT, r.Cells("dstma_id").Value, ma.dstma_muster, ma.dstma_WEStdRegelAZ, ma.dstma_arbvh, niederlassung, ma.dstma_TzFeiertageStd)
|
|
|
|
'Hier wird berechnet wie viele Std tastächlich gearbeitet wurden:
|
|
Dim tatStd As Double = SQLDienst.getDstStunden(r.Cells("dstma_id").Value, datum_montag, datum_montag.AddDays(6), niederlassung)
|
|
|
|
|
|
r.Cells("stundenBerechnet").Value = (Wochenstunden)
|
|
r.Cells("stunden").Value = (tatStd) & " (" & tatStd - Wochenstunden & ")"
|
|
Dim arb As New cArbeitstage
|
|
r.Cells("dstma_ueberstdCounter").Value = SQLDienst.getDienstplanUeberSdtMaSUMMEBisKW(r.Cells("dstma_id").Value, aktWoche, aktJahr, niederlassung) '
|
|
|
|
Next
|
|
End With
|
|
loaded = True
|
|
Catch ex As Exception
|
|
MsgBox("initStdMa-Error: " & ex.Message)
|
|
|
|
End Try
|
|
initUestd()
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Public Function CalendarWeek(ByVal nWeek As Integer, _
|
|
ByVal nYear As Integer) As Date
|
|
|
|
' Wochentag des 4. Januar des Jahres ermitteln
|
|
Dim dStart As New Date(nYear, 1, 4)
|
|
Dim nDay As Integer = (dStart.DayOfWeek + 6) Mod 7 + 1
|
|
|
|
' Beginn der 1. KW des Jahres
|
|
Dim dFirst As Date = dStart.AddDays(1 - nDay)
|
|
|
|
' Gesuchte KW ermitteln
|
|
Return dFirst.AddDays((nWeek - 1) * 7)
|
|
End Function
|
|
|
|
Public Sub markrow(maId)
|
|
loaded = False
|
|
dgvStundenMa.ClearSelection()
|
|
For Each r In dgvStundenMa.Rows
|
|
If r.Cells("dstma_id").value = maId Then
|
|
r.DefaultCellStyle.Font = New Font(dgvStundenMa.Font, FontStyle.Bold)
|
|
r.Selected = True
|
|
End If
|
|
Next
|
|
loaded = True
|
|
End Sub
|
|
Public Sub clearRowBg()
|
|
loaded = False
|
|
For Each r In dgvStundenMa.Rows
|
|
r.DefaultCellStyle.Font = New Font(dgvStundenMa.Font, FontStyle.Regular)
|
|
Next
|
|
loaded = True
|
|
End Sub
|
|
|
|
Private Sub btnCounterUest_Click(sender As Object, e As EventArgs) Handles btnCounterUest.Click
|
|
If dgvStundenMa.SelectedRows.Count = 0 Then MsgBox("Mitarbeiter auswählen!") : Exit Sub
|
|
If Not IsNumeric(txtUeberstd.Text) Then MsgBox("Falsches Format!") : Exit Sub
|
|
Dim maId = dgvStundenMa.SelectedRows(0).Cells("dstma_id").Value
|
|
SQLDienst.insertupdateDienstplanUeberSdtMaAuszahlung(maId, aktWoche, aktJahr, CDbl(IIf(IsNumeric(txtUeberstd.Text), txtUeberstd.Text, 0)), niederlassung)
|
|
'MsgBox(CDbl(IIf(IsNumeric(lblUeberStd.Text), lblUeberStd.Text, 0)))
|
|
' SQLDienst.updateDienstMaStd(dgvStundenMa.SelectedRows(0).Cells("dstma_id").Value, CDbl(IIf(IsNumeric(lblUeberStd.Text), lblUeberStd.Text, 0)) + CDbl(txtUeberstd.Text))
|
|
|
|
|
|
initStdMa()
|
|
markrow(maId)
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub dgvStundenMa_SelectionChanged(sender As Object, e As EventArgs) Handles dgvStundenMa.SelectionChanged
|
|
If dgvStundenMa.SelectedRows.Count = 0 Then Exit Sub
|
|
initUestd()
|
|
If loaded Then RaiseEvent NAME_CHANGED(dgvStundenMa.SelectedRows(0).Cells("dstma_id").Value)
|
|
End Sub
|
|
|
|
Sub initUestd()
|
|
If dgvStundenMa.SelectedRows.Count = 0 Then Exit Sub
|
|
lblUeberStd.Text = dgvStundenMa.SelectedRows(0).Cells("dstma_ueberstdCounter").Value()
|
|
txtUeberstd.Text = "0"
|
|
txtUeberstd.Text = SQLDienst.getDienstplanAuszSdtMaSUMM_KW(dgvStundenMa.SelectedRows(0).Cells("dstma_id").Value, aktWoche, aktJahr)
|
|
lblName.Text = dgvStundenMa.SelectedRows(0).Cells("NAME").Value()
|
|
|
|
End Sub
|
|
End Class
|