From 463089f9db1f490ee258688b3d18e32bff8ea288 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 13 Oct 2023 17:03:18 +0200 Subject: [PATCH] Feiertage und Urlaubsberechnung Dienstplan --- UID/Dienstplan/frmDienstplanVariabel.vb | 8 +++---- UID/Dienstplan/frmDiestAddMa.vb | 1 + UID/Dienstplan/usrCntlDienstplan.vb | 4 ++-- UID/Dienstplan/usrcntlDienstplanStunden.vb | 2 +- UID/cProgramFunctions.vb | 2 +- UID/cSqlDb.vb | 6 ++--- UID/usrCntlAPI.Designer.vb | 26 ++++++++++---------- UID/usrCntlAPI.vb | 14 +++++++++++ UID/usrCntlERS.vb | 28 +++++++++++++++------- 9 files changed, 59 insertions(+), 32 deletions(-) diff --git a/UID/Dienstplan/frmDienstplanVariabel.vb b/UID/Dienstplan/frmDienstplanVariabel.vb index 409878f..4546368 100644 --- a/UID/Dienstplan/frmDienstplanVariabel.vb +++ b/UID/Dienstplan/frmDienstplanVariabel.vb @@ -899,7 +899,7 @@ Public Class frmDienstplanVariabel Try entryId_TMP = entryId - Dim row As DataRow = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info as dstma_kuerzel,dstetr_info,dstma_id, dstetr_von,dstetr_bis,dstetr_art,dstetr_pause,dstetr_datum,dstma_mitId, dstetr_splitschicht FROM tblDienstplanEintraege, tblDienstMitarb, tblMitarbeiter WHERE dstetr_dstmaId=dstma_id AND mit_id=dstma_mitId AND dstetr_id='" & entryId & "'").Rows(0) + Dim row As DataRow = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info as dstma_kuerzel,dstetr_info,dstma_id, dstetr_von,dstetr_bis,dstetr_art,dstetr_pause,dstetr_datum,dstma_mitId, dstetr_splitschicht, dstma_land FROM tblDienstplanEintraege, tblDienstMitarb, tblMitarbeiter WHERE dstetr_dstmaId=dstma_id AND mit_id=dstma_mitId AND dstetr_id='" & entryId & "'").Rows(0) TextBox1.Text = row("dstetr_von").ToString TextBox2.Text = row("dstetr_bis").ToString @@ -909,8 +909,8 @@ Public Class frmDienstplanVariabel - Dim tatStd As Double = SQLDienst.getDstStunden(row("dstma_id").ToString, row("dstetr_datum").ToString, row("dstetr_datum").ToString, niederlassung) - Dim schichtStd As Double = SQLDienst.getDstStunden(row("dstma_id").ToString, row("dstetr_datum").ToString, row("dstetr_datum").ToString, niederlassung, True) + Dim tatStd As Double = SQLDienst.getDstStunden(row("dstma_id").ToString, row("dstetr_datum").ToString, row("dstetr_datum").ToString, niederlassung, row("dstma_land").ToString) + Dim schichtStd As Double = SQLDienst.getDstStunden(row("dstma_id").ToString, row("dstetr_datum").ToString, row("dstetr_datum").ToString, niederlassung, row("dstma_land").ToString, True) txtWoStd.Text = tatStd txtSchichtstd.Text = schichtStd @@ -921,7 +921,7 @@ Public Class frmDienstplanVariabel Label32.Text = CDate(row("dstetr_datum")).ToShortDateString - lblMAInfo.Text = row("dstma_kuerzel").ToString + lblMAInfo.Text = row("dstma_kuerzel").ToString & "(" & row("dstma_id").ToString & ")" aktMitarbeiterEintrag = row("dstetr_id").ToString If row("dstetr_art").ToString.Contains("NACHT") Then Button9.Visible = True diff --git a/UID/Dienstplan/frmDiestAddMa.vb b/UID/Dienstplan/frmDiestAddMa.vb index d45cc38..5d04bfa 100644 --- a/UID/Dienstplan/frmDiestAddMa.vb +++ b/UID/Dienstplan/frmDiestAddMa.vb @@ -58,6 +58,7 @@ Public Class frmDiestAddMa cboLand.Items.Clear() cboLand.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT", "AT")) cboLand.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE", "DE")) + cboLand.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB", "GB")) diff --git a/UID/Dienstplan/usrCntlDienstplan.vb b/UID/Dienstplan/usrCntlDienstplan.vb index b019cd7..38aa4e6 100644 --- a/UID/Dienstplan/usrCntlDienstplan.vb +++ b/UID/Dienstplan/usrCntlDienstplan.vb @@ -437,7 +437,7 @@ Public Class usrCntlDienstplan Dim tatStd As Double = 0 If arbeit Then - tatStd = SQLDienst.getDstStunden(MA_DST.dstma_id, datum, datum, niederlassung) + tatStd = SQLDienst.getDstStunden(MA_DST.dstma_id, datum, datum, niederlassung, MA_DST.dstma_land) tatStdSum += tatStd End If @@ -501,7 +501,7 @@ Public Class usrCntlDienstplan If groupKW Then Dim sollStd As Double = cPF.getWochenstunden(STD_LIST, MA_DST.dstma_wochenStunden, datumMO, SCHICHT, MA_DST.dstma_mitId, MA_DST.dstma_muster, MA_DST.dstma_WEStdRegelAZ, MA_DST.dstma_arbvh, niederlassung, MA_DST.dstma_TzFeiertageStd, MA_DST.dstma_4wo) - Dim tatStd As Double = SQLDienst.getDstStunden(MA_DST.dstma_id, datumMO, datumMO.AddDays(6), niederlassung) + Dim tatStd As Double = SQLDienst.getDstStunden(MA_DST.dstma_id, datumMO, datumMO.AddDays(6), niederlassung, MA_DST.dstma_land) rpt.txtSumWoStunden.Text = CDbl(tatStd).ToString("N2") rpt.txtWoStd.Text = CDbl(sollStd * -1).ToString("N2") diff --git a/UID/Dienstplan/usrcntlDienstplanStunden.vb b/UID/Dienstplan/usrcntlDienstplanStunden.vb index da12415..cd604f3 100644 --- a/UID/Dienstplan/usrcntlDienstplanStunden.vb +++ b/UID/Dienstplan/usrcntlDienstplanStunden.vb @@ -99,7 +99,7 @@ Public Class usrcntlDienstplanStunden 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, ma.dstma_4wo) '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) + Dim tatStd As Double = SQLDienst.getDstStunden(r.Cells("dstma_id").Value, datum_montag, datum_montag.AddDays(6), niederlassung, ma.dstma_land) r.Cells("stundenBerechnet").Value = (Wochenstunden) diff --git a/UID/cProgramFunctions.vb b/UID/cProgramFunctions.vb index daaf15b..2f73cbf 100644 --- a/UID/cProgramFunctions.vb +++ b/UID/cProgramFunctions.vb @@ -1090,7 +1090,7 @@ Public Class cProgramFunctions ' MsgBox(Wochenstunden) Wochenstunden = cPF.getWochenstunden(STD_LIST, Wochenstunden, datum, SCHICHT, r("dstma_id"), ma.dstma_muster, ma.dstma_WEStdRegelAZ, ma.dstma_arbvh, niederlassung, ma.dstma_TzFeiertageStd, ma.dstma_4wo) - Dim tatStd As Double = SQLDienst.getDstStunden(r("dstma_id"), datum_montag, datum_montag.AddDays(6), niederlassung) + Dim tatStd As Double = SQLDienst.getDstStunden(r("dstma_id"), datum_montag, datum_montag.AddDays(6), niederlassung, ma.dstma_land) ' : ANDERES ERG"""""!!!!!!!!!!!!!!!!!!!! ' Wochenstunden = cPF.getWochenstunden(Wochenstunden, datum, SCHICHT, r.Cells("dstma_id").Value, ma.dstma_muster, ma.dstma_WEStdRegelAZ, ma.dstma_arbvh, niederlassung) diff --git a/UID/cSqlDb.vb b/UID/cSqlDb.vb index ac8e6dc..97a0d85 100644 --- a/UID/cSqlDb.vb +++ b/UID/cSqlDb.vb @@ -4084,7 +4084,7 @@ Public Class cDienstplan Return False End Function - Public Function getDstStunden(maId As Integer, datum_von As Date, datum_bis As Date, niederlassung As String, Optional onlySplitschichten As Boolean = False) As Double + Public Function getDstStunden(maId As Integer, datum_von As Date, datum_bis As Date, niederlassung As String, Optional land As String = "", Optional onlySplitschichten As Boolean = False) As Double Try Dim stunden As Double Dim rgx As New Regex("^\d{2}:\d{2}$") @@ -4137,12 +4137,12 @@ Public Class cDienstplan 'End If If cPF.isValidTime(von) And cPF.isValidTime(bis) Then ' Wenn Format stimmt - s += cPF.getDiff(von, bis, niederlassung, (FT.isFeiertag(datum, cDienstSettings.getLand(niederlassung)) Or woTag = "SO")) + s += cPF.getDiff(von, bis, niederlassung, (FT.isFeiertag(datum, IIf(land <> "", land, cDienstSettings.getLand(niederlassung))) Or woTag = "SO")) If IsNumeric(dr.Item("dstetr_pause")) Then s -= CDbl(dr.Item("dstetr_pause")) 'Wenn Feiertag oder Sonntag, werden die Stunden (von-bis) doppelt gerechent, also müssen die Pausenstunden doppelt abgezoben werden: - If (FT.isFeiertag(datum, cDienstSettings.getLand(niederlassung)) Or woTag = "SO") Then s -= CDbl(dr.Item("dstetr_pause")) + If (FT.isFeiertag(datum, IIf(land <> "", land, cDienstSettings.getLand(niederlassung))) Or woTag = "SO") Then s -= CDbl(dr.Item("dstetr_pause")) End If Else diff --git a/UID/usrCntlAPI.Designer.vb b/UID/usrCntlAPI.Designer.vb index a4476e5..e36853a 100644 --- a/UID/usrCntlAPI.Designer.vb +++ b/UID/usrCntlAPI.Designer.vb @@ -26,6 +26,7 @@ Partial Class usrCntlAPI Me.SplitContainer = New System.Windows.Forms.SplitContainer() Me.pnlSearch = New System.Windows.Forms.Panel() Me.SplitContainer1 = New System.Windows.Forms.SplitContainer() + Me.Button1 = New System.Windows.Forms.Button() Me.Label11 = New System.Windows.Forms.Label() Me.txtZollBelegNr = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.Label10 = New System.Windows.Forms.Label() @@ -79,7 +80,6 @@ Partial Class usrCntlAPI Me.Panel3 = New System.Windows.Forms.Panel() Me.Button10 = New System.Windows.Forms.Button() Me.Button11 = New System.Windows.Forms.Button() - Me.Button1 = New System.Windows.Forms.Button() CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainer.Panel1.SuspendLayout() Me.SplitContainer.Panel2.SuspendLayout() @@ -184,6 +184,18 @@ Partial Class usrCntlAPI Me.SplitContainer1.SplitterDistance = 125 Me.SplitContainer1.TabIndex = 0 ' + 'Button1 + ' + Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button1.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button1.Location = New System.Drawing.Point(850, 122) + Me.Button1.Name = "Button1" + Me.Button1.Size = New System.Drawing.Size(162, 52) + Me.Button1.TabIndex = 53 + Me.Button1.Text = "API Verwaltung" + Me.Button1.UseVisualStyleBackColor = True + ' 'Label11 ' Me.Label11.AutoSize = True @@ -945,18 +957,6 @@ Partial Class usrCntlAPI Me.Button11.TabIndex = 4 Me.Button11.UseVisualStyleBackColor = True ' - 'Button1 - ' - Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.Button1.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button1.Location = New System.Drawing.Point(850, 122) - Me.Button1.Name = "Button1" - Me.Button1.Size = New System.Drawing.Size(162, 52) - Me.Button1.TabIndex = 53 - Me.Button1.Text = "API Verwaltung" - Me.Button1.UseVisualStyleBackColor = True - ' 'usrCntlAPI ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) diff --git a/UID/usrCntlAPI.vb b/UID/usrCntlAPI.vb index 5cb60c6..92f6e1b 100644 --- a/UID/usrCntlAPI.vb +++ b/UID/usrCntlAPI.vb @@ -267,4 +267,18 @@ Public Class usrCntlAPI Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click End Sub + + Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click + srcTAG = srcTAG.AddDays(-1) + initBtns("Tag") + End Sub + + Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click + srcTAG = srcTAG.AddDays(1) + initBtns("Tag") + End Sub + + Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click + initBtns("Tag") + End Sub End Class diff --git a/UID/usrCntlERS.vb b/UID/usrCntlERS.vb index 81487c3..5da1b01 100644 --- a/UID/usrCntlERS.vb +++ b/UID/usrCntlERS.vb @@ -23,7 +23,7 @@ Public Class usrCntlERS txtUser.initKdBox(Me.FindForm) ' initKdAbsender() - cboFirma.fillWithSQL("SELECT [Firma_Bez] FROM [tblFirma] ", False, "FMZOLL", True) + cboFirma.fillWithSQL("SELECT distinct(isnull(ers_Firma,'')) FROM [tblERS] ", False, "ADMIN", True) cboDatum.Items.Clear() cboDatum.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Error-Datum", "EDat")) @@ -121,7 +121,7 @@ Public Class usrCntlERS Dim sqlstr As String = "" Dim TopMax = If(IsNumeric(txtMaxSrch.Text), " TOP " & txtMaxSrch.Text, "") - sqlstr &= "SELECT " & TopMax & " [ers_id],[ers_progId],[ers_progName],[ers_progVersion],[ers_datetime],[ers_Testsystem],[ers_Type],[ers_EMail],[ers_maId],[ers_userName],[ers_Firma],[ers_errCode],[ers_errStack],[ers_errMessage],[ers_errMethodName],[ers_infotext] + sqlstr &= "SELECT " & TopMax & " [ers_id],[ers_progId],[ers_progName],[ers_progVersion],[ers_datetime],[ers_errCode],[ers_errStack],[ers_errMessage],[ers_errMethodName],[ers_Testsystem],[ers_Type],[ers_EMail],[ers_maId],[ers_userName],[ers_Firma],[ers_infotext] FROM [tblERS] WHERE 1=1 " With DataGridView @@ -175,13 +175,11 @@ Public Class usrCntlERS '.Columns("RechnungAn").HeaderText = "Rechnung an" '.Columns("RechnungAn").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill - ''.Columns("Absender").MinimumWidth = 150 - ''.Columns("Absender").HeaderText = "Absender" - ''.Columns("Absender").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill + .Columns("ers_errStack").MinimumWidth = 150 + .Columns("ers_errStack").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill - '.Columns("Vermittler").MinimumWidth = 150 - '.Columns("Vermittler").HeaderText = "Auftraggeber" - '.Columns("Vermittler").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill + .Columns("ers_errMessage").MinimumWidth = 150 + .Columns("ers_errMessage").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill ''.Columns("Empfänger").MinimumWidth = 150 ''.Columns("Empfänger").HeaderText = "Empfänger" @@ -283,4 +281,18 @@ Public Class usrCntlERS End If End Sub + + Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click + srcTAG = srcTAG.AddDays(-1) + initBtns("Tag") + End Sub + + Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click + srcTAG = srcTAG.AddDays(1) + initBtns("Tag") + End Sub + + Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click + initBtns("Tag") + End Sub End Class