From 0cce7333048cec6b9adaa7e3c2439ca359adafed Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 30 Dec 2025 11:21:06 +0100 Subject: [PATCH] =?UTF-8?q?Ueberstundenauszahlung=20(Pr=C3=BCfung=20bei=20?= =?UTF-8?q?manuell=20ausgetragenen=20=C3=9CS=20auf=20MAX-Auszahlung).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KdSearchBox.vb | 153 +++--------------- VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb | 2 +- .../frmUeberstundenauszahlen.vb | 5 + 3 files changed, 27 insertions(+), 133 deletions(-) diff --git a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/KdSearchBox.vb b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/KdSearchBox.vb index 158380df..893fc9c2 100644 --- a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/KdSearchBox.vb +++ b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/KdSearchBox.vb @@ -169,127 +169,9 @@ Public Class KdSearchBox End If Try - - If usrcntl.Visible = False Then - usrcntl.Width = usrcntlWIDTH - usrcntl.Height = usrcntlHEIGHT - - Dim locationOnForm As Point = Nothing - If Me.FindForm IsNot Nothing Then - If dgvpos = "LEFT" Or dgvpos = "" Then - locationOnForm = Me.FindForm().PointToClient(Me.Parent.PointToScreen(Me.Location)) - ElseIf dgvpos = "RIGHT" Then - locationOnForm = Me.FindForm().PointToClient(Me.Parent.PointToScreen(Me.Location)) - locationOnForm.X = locationOnForm.X - (usrcntl.Width - Me.Width) - End If - End If - - - If locationOnForm.Y + usrcntl.Height + Me.Height > form.ClientRectangle.Height Then - usrcntl.Height = form.ClientRectangle.Height - locationOnForm.Y - Me.Height - End If - - usrcntl.Location = locationOnForm - usrcntl.Top += Me.Height - End If - - If usrcntl IsNot Nothing AndAlso usrcntl.dgvKundenAktiv IsNot Nothing Then - - With usrcntl.dgvKundenAktiv - - If usrcntl.Visible = False Then - .AllowUserToAddRows = False - .AllowUserToDeleteRows = False - .AllowUserToOrderColumns = False - .AllowUserToResizeColumns = False - .AllowUserToResizeRows = False - .ReadOnly = True - .MultiSelect = False - .SelectionMode = DataGridViewSelectionMode.FullRowSelect - .BackgroundColor = Color.White - .ForeColor = Color.Black - Try - .GridColor = Color.White - Catch ex As Exception - 'Keine Ahnung warum hier ein Fehler kommt - End Try - - End If - - - 'THREADING AKTIV - Me.ThreadInitAKTIV(GlobalAnzahlKunden) - - - End With - End If - - If nurAktive Then - usrcntl.dgvKundenInAktiv.Visible = False - usrcntl.Panel1.Visible = False - Else - If usrcntl IsNot Nothing AndAlso usrcntl.dgvKundenInAktiv IsNot Nothing Then - - With usrcntl.dgvKundenInAktiv - If usrcntl.Visible = False Then - .AllowUserToAddRows = False - .AllowUserToDeleteRows = False - .AllowUserToOrderColumns = False - .AllowUserToResizeColumns = False - .AllowUserToResizeRows = False - .ReadOnly = True - .MultiSelect = False - .SelectionMode = DataGridViewSelectionMode.FullRowSelect - .BackgroundColor = Color.White - .ForeColor = Color.Black - Try - .GridColor = Color.White - Catch ex As Exception - 'Keine Ahnung warum hier ein Fehler kommt - End Try - .DefaultCellStyle.ForeColor = Color.Gray - End If - - - Me.ThreadInitINAKTIV() - 'THREADING INAKTIV - 'Dim ThreadInitINAKTIV = New System.Threading.Thread(AddressOf Me.ThreadInitINAKTIV) - 'ThreadInitINAKTIV.IsBackground = True - 'ThreadInitINAKTIV.Start() - - End With - - End If - End If - - If _hideIfListEmpty Then - - If usrcntl.dgvKundenAktiv.RowCount = 0 And usrcntl.dgvKundenInAktiv.RowCount = 0 Then - setObjectVisible(usrcntl, False) - Else - setObjectVisible(usrcntl, True) - End If - If False Then - - 'THREADING ThreadWaitAndSee - Dim ThreadWaitAndSee = New System.Threading.Thread(Sub() - Threading.Thread.Sleep(200) - If usrcntl.dgvKundenAktiv.RowCount = 0 And usrcntl.dgvKundenInAktiv.RowCount = 0 Then - setObjectVisible(usrcntl, False) - Else - setObjectVisible(usrcntl, True) - End If - End Sub) - ThreadWaitAndSee.IsBackground = True - ThreadWaitAndSee.Start() - End If - Else - usrcntl.Visible = True - usrcntl.Show() - usrcntl.BringToFront() - End If - Eingabe_verarbeitet = True - last_search = Now + Eingabe_verarbeitet = False + last_eingabe = Now + doKeyDown(Now, GlobalAnzahlKunden) Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) @@ -479,10 +361,10 @@ Public Class KdSearchBox ' If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE" Or VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERIMEX" Or _AlleFirmenCLUSTER Or _UseFIRMA <> "" Or VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("AVISO_IMEX", "AVISO") Or VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_VERAGIMEX", "SDL") Then SQLstr &= ", Filialen.Firma as Firma_Intern " SQLstr &= " FROM [Adressen] " SQLstr &= " INNER JOIN Kunden on KundenNr=AdressenNr " - SQLstr &= " INNER JOIN Filialen on Filialen.FilialenNr=isnull(Kunden.FilialenNr,4803) " + SQLstr &= " INNER JOIN Filialen on Filialen.FilialenNr=COALESCE(Kunden.FilialenNr, 4803)" SQLstr &= " WHERE 1=1 " SQLstr &= " AND ( " - SQLstr &= " Ordnungsbegriff COLLATE Latin1_General_CI_AI LIKE '" & srch & "%' COLLATE Latin1_General_CI_AI " + SQLstr &= " Ordnungsbegriff_AI LIKE '" & srch & "%' " If IsNumeric(srch) Then SQLstr &= " OR AdressenNr LIKE '" & srch & "%' " If _searchName1 Then SQLstr &= " OR Adressen.[Name 1] LIKE '" & srch & "%' " SQLstr &= " ) " @@ -563,14 +445,16 @@ Public Class KdSearchBox SQLstr &= ", Filialen.Firma as Firma_Intern " SQLstr &= " FROM [Adressen] " SQLstr &= " INNER JOIN Kunden on KundenNr=AdressenNr " - SQLstr &= " INNER JOIN Filialen on Filialen.FilialenNr=isnull(Kunden.FilialenNr,4803) " + SQLstr &= " INNER JOIN Filialen on Filialen.FilialenNr=COALESCE(Kunden.FilialenNr, 4803) " SQLstr &= " WHERE 1=1 " SQLstr &= " AND ( " - SQLstr &= " Ordnungsbegriff COLLATE Latin1_General_CI_AI LIKE '" & srch & "%' COLLATE Latin1_General_CI_AI " + SQLstr &= " Ordnungsbegriff_AI LIKE '" & srch & "%' " If IsNumeric(srch) Then SQLstr &= " OR AdressenNr LIKE '" & srch & "%' " If _searchName1 Then SQLstr &= " OR Adressen.[Name 1] LIKE '" & srch & "%' " SQLstr &= " ) " - If srch2 <> "" Then SQLstr &= " AND (Filialen.Firma LIKE '" & srch2 & "%' OR ( Adressen.PLZ LIKE '" & srch2 & "%' OR Adressen.Ort LIKE '" & srch2 & "%' OR Adressen.LandKz LIKE '" & srch2 & "%' OR Adressen.Straße LIKE '" & srch2 & "%' )) " + If srch2 <> "" Then + SQLstr &= " AND (Filialen.Firma LIKE '" & srch2 & "%' OR ( Adressen.PLZ LIKE '" & srch2 & "%' OR Adressen.Ort LIKE '" & srch2 & "%' OR Adressen.LandKz LIKE '" & srch2 & "%' OR Adressen.Straße LIKE '" & srch2 & "%' )) " + End If ' SQLstr &= " AND [Auswahl]='I' " 'If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE" Then 'Keine ' SQLstr &= " AND isnull(Kunden.[FilialenNr],0) NOT IN ('5701') " @@ -657,14 +541,16 @@ Public Class KdSearchBox If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE" Or VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERIMEX" Or _AlleFirmenCLUSTER Or _UseFIRMA <> "" Or VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("AVISO_IMEX", "AVISO") Or VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_VERAGIMEX", "SDL") Then SQLstr &= ", Filialen.Firma as Firma_Intern " SQLstrEnd &= " FROM [Adressen] " SQLstrEnd &= " INNER JOIN Kunden on KundenNr=AdressenNr " - SQLstrEnd &= " INNER JOIN Filialen on Filialen.FilialenNr=isnull(Kunden.FilialenNr,4803) " + SQLstrEnd &= " INNER JOIN Filialen on Filialen.FilialenNr=COALESCE(Kunden.FilialenNr, 4803) " SQLstrEnd &= " WHERE 1=1 " SQLstrEnd &= " AND ( " - SQLstrEnd &= " Ordnungsbegriff COLLATE Latin1_General_CI_AI LIKE '" & srch & "%' COLLATE Latin1_General_CI_AI " + SQLstrEnd &= " Ordnungsbegriff_AI LIKE '" & srch & "%' " If IsNumeric(srch) Then SQLstrEnd &= " OR AdressenNr LIKE '" & srch & "%' " If _searchName1 Then SQLstrEnd &= " OR Adressen.[Name 1] LIKE '" & srch & "%' " SQLstrEnd &= " ) " - If srch2 <> "" Then SQLstrEnd &= " AND (Filialen.Firma LIKE '" & srch2 & "%' OR ( Adressen.PLZ LIKE '" & srch2 & "%' OR Adressen.Ort LIKE '" & srch2 & "%' OR Adressen.LandKz LIKE '" & srch2 & "%' OR Adressen.Straße LIKE '" & srch2 & "%' )) " + If srch2 <> "" Then + SQLstrEnd &= " AND (Filialen.Firma LIKE '" & srch2 & "%' OR ( Adressen.PLZ LIKE '" & srch2 & "%' OR Adressen.Ort LIKE '" & srch2 & "%' OR Adressen.LandKz LIKE '" & srch2 & "%' OR Adressen.Straße LIKE '" & srch2 & "%' )) " + End If SQLstrEnd &= " AND [Auswahl]='A' " 'If VERAG_PROG_ALLGEMEIN.cAllgemein.CLUSTER <> "" Then @@ -710,7 +596,10 @@ Public Class KdSearchBox 'End If If Not _displayWoelflKd Then SQLstrEnd &= " AND AdressenNr NOT LIKE '15%'" - setDS(True, usrcntl.dgvKundenAktiv, SQL.loadDgvBySql(SQLstr & SQLstrEnd & " order by Ordnungsbegriff ", "FMZOLL"), topAnz, IIf(srch.Count > 2, SQL.getValueTxtBySql(SQLstrCount & SQLstrEnd, "FMZOLL"), "")) + Dim searchstring = SQLstr & SQLstrEnd & " order by Ordnungsbegriff " + + + setDS(True, usrcntl.dgvKundenAktiv, SQL.loadDgvBySql(searchstring, "FMZOLL"), topAnz, IIf(srch.Count > 2, SQL.getValueTxtBySql(SQLstrCount & SQLstrEnd, "FMZOLL"), "")) End With @@ -739,10 +628,10 @@ Public Class KdSearchBox If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE" Or VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERIMEX" Or _AlleFirmenCLUSTER Or _UseFIRMA <> "" Or VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("AVISO_IMEX", "AVISO") Or VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_VERAGIMEX", "SDL") Then SQLstr &= ", Filialen.Firma as Firma_Intern " SQLstr &= " FROM [Adressen] " SQLstr &= " INNER JOIN Kunden on KundenNr=AdressenNr " - SQLstr &= " INNER JOIN Filialen on Filialen.FilialenNr=isnull(Kunden.FilialenNr,4803) " + SQLstr &= " INNER JOIN Filialen on Filialen.FilialenNr=COALESCE(Kunden.FilialenNr, 4803) " SQLstr &= " WHERE 1=1 " SQLstr &= " AND ( " - SQLstr &= " Ordnungsbegriff COLLATE Latin1_General_CI_AI LIKE '" & srch & "%' COLLATE Latin1_General_CI_AI " + SQLstr &= " Ordnungsbegriff_AI LIKE '" & srch & "%' " If IsNumeric(srch) Then SQLstr &= " OR AdressenNr LIKE '" & srch & "%' " If _searchName1 Then SQLstr &= " OR Adressen.[Name 1] LIKE '" & srch & "%' " SQLstr &= " ) " diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb b/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb index fb25e4cb..0e0bc8d5 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb @@ -314,7 +314,7 @@ Public Class cAdressen Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL(False) - Using cmd As New SqlCommand("Select TOP(1) * FROM Adressen WHERE (UstIdKz + UstIdNr='" & UIDNr & "' or Steuernummer ='" & UIDNr & "') AND WölflKundenNr = " & woelflKdNr & " OR weitereWölflKundenNr " & woelflKdNr, conn) + Using cmd As New SqlCommand("Select TOP(1) * FROM Adressen WHERE (UstIdKz + UstIdNr='" & UIDNr & "' or Steuernummer ='" & UIDNr & "') AND WölflKundenNr = " & woelflKdNr & " OR weitereWölflKundenNr = " & woelflKdNr, conn) Dim dr = cmd.ExecuteReader() If dr.Read Then diff --git a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb index ce7f2a57..40309324 100644 --- a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb +++ b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb @@ -626,6 +626,11 @@ Public Class frmUeberstundenauszahlen Dim stichtag As Integer = 25 Dim ignoreAuszahlungsdatum As Boolean = False + If cbxoverwrite.Checked AndAlso (CDbl(txtSummeAuszb.Text) < CDbl(txtAuszManuell.Text) Or CDbl(txtSummeAuszb.Text) < CDbl(txtAuszManuell_hhmm.Text)) Then + MsgBox("Auszahlungssumme übersteigt den aktuellen Saldo!" & vbNewLine & "Vorgang wird abgebrochen") + Exit Sub + End If + Select Case IIf(MA.mit_firma = "ALL", MA.mit_FirmaHaupt, MA.mit_firma) '25.02.2025: ATILLA ist bereits auf das einheitliche Auszahlungsschema umgestiegen! 'Case "ATILLA"