Files
ADMIN/UID/Dienstplan/usrcntlDienstplanStunden.vb
2020-05-31 22:26:21 +02:00

183 lines
7.7 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
Dim STD_LIST = cDienstMitarbAbweichendeWochenstunden.GET_STD_LIST(CalendarWeek(aktWoche, aktJahr))
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(STD_LIST, 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