From 24a6d93c9e5f0f01ee3bbb48835e3dc92d575869 Mon Sep 17 00:00:00 2001 From: Andreas Luxbauer Date: Tue, 3 Dec 2024 13:06:11 +0100 Subject: [PATCH] KN8, DY->Atez --- .../KdSearchBox.vb | 176 +++++++++++++++++- .../Schnittstellen/cTariffKN8.vb | 77 ++++++++ .../VERAG_PROG_ALLGEMEIN.vbproj | 14 ++ 3 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 VERAG_PROG_ALLGEMEIN/Schnittstellen/cTariffKN8.vb diff --git a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/KdSearchBox.vb b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/KdSearchBox.vb index 50e0ac94..ef036b4f 100644 --- a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/KdSearchBox.vb +++ b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/KdSearchBox.vb @@ -312,7 +312,7 @@ Public Class KdSearchBox End Sub - Sub ThreadInitAKTIV() + Sub ThreadInitAKTIV_COMP() Try If usrcntl Is Nothing Then Exit Sub If usrcntl.dgvKundenAktiv Is Nothing Then Exit Sub @@ -402,6 +402,180 @@ Public Class KdSearchBox End Try End Sub + Sub ThreadInit_ALLCOPMP_AND_INAKTIV() + Try + If usrcntl Is Nothing Then Exit Sub + If usrcntl.dgvKundenInAktiv Is Nothing Then Exit Sub + With usrcntl.dgvKundenInAktiv + + Dim srch As String = Me.Text.Replace("'", "").ToString.Trim + If srch.StartsWith("*") Then srch = Replace(srch, "*", "%", , 1) ' Suche mit beginnenden * + + Dim srch2 As String = "" + If srch.Contains(",") Then + Dim spitter() = srch.Split(",") + srch = spitter(0).ToString.Trim + srch2 = spitter(1).ToString.Trim + End If + If srch2.StartsWith("*") Then srch2 = Replace(srch2, "*", "%", , 1) ' Suche mit beginnenden * + + Dim SQLstr As String = " SELECT top 6 Auswahl, Ordnungsbegriff as Firma, AdressenNr as KdNr,Adressen.[LandKz] + ' ' + Adressen.[PLZ] + ' - ' + Adressen.[Ort] + ' ' + Adressen.[Straße] as Adresse " + 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 &= " WHERE 1=1 " + SQLstr &= " AND ( " + SQLstr &= " Ordnungsbegriff COLLATE Latin1_General_CI_AI LIKE '" & srch & "%' COLLATE Latin1_General_CI_AI " + 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 & "%' )) " + ' SQLstr &= " AND [Auswahl]='I' " + 'If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE" Then 'Keine + ' SQLstr &= " AND isnull(Kunden.[FilialenNr],0) NOT IN ('5701') " + 'ElseIf VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA <> "VERAG" And VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA <> "ATILLA" Then + ' SQLstr &= " AND Kunden.[FilialenNr]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.STAMMFILIALE & "' " + 'Else + ' 'SQLstr &= " AND isnull([FilialenNr],0)<>'5501' " + ' SQLstr &= " AND isnull(Kunden.[FilialenNr],0) NOT IN ('5501','5601','5701','5801') " + 'End If + + 'If VERAG_PROG_ALLGEMEIN.cAllgemein.CLUSTER <> "" Then + ' SQLstr &= " AND (Filialen.Firma='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' OR Filialen.CLUSTER='" & VERAG_PROG_ALLGEMEIN.cAllgemein.CLUSTER & "') " + 'Else + ' SQLstr &= " AND Filialen.Firma='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' " + 'End If + + + SQLstr &= " AND '" & VERAG_PROG_ALLGEMEIN.cAllgemein.CLUSTER & "' IN (Filialen.Firma,Filialen.Cluster) " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + If _UseFIRMA <> "" Then + SQLstr &= " AND '" & _UseFIRMA & "' IN (Filialen.Firma,Filialen.Cluster) " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + Else + SQLstr &= " AND ( '" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA.Replace("ATILLA", "VERAG") & "' IN (Filialen.Firma,Filialen.Cluster) " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("AVISO_IMEX", "AVISO") Then + SQLstr &= " OR Filialen.Firma IN ('IMEX') " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + End If + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_VERAGIMEX", "SDL") Then + SQLstr &= " OR Filialen.Firma IN ('IMEX','VERAG') " ' Wenn die OFFERTE_FREMD_VERAGIMEX --> Beide + End If + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_UNISPED_BREXIT", "SDL") Then + SQLstr &= " OR (Filialen.Firma IN ('UNISPED') AND Kunden.[FilialenNr]=7002) " ' Wenn die OFFERTE_FREMD_VERAGIMEX --> Beide + End If + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_FRONTOFFICE", "SDL") Then + SQLstr &= " OR Filialen.Firma IN ('FRONTOFFICE') " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + End If + SQLstr &= " ) " + End If + + + 'AUSNAHME BIS BESSERE LÖSUNG: + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE" Then + SQLstr &= " and Filialen.Firma NOT IN ('AMBAR') " + End If + + If Not _displayWoelflKd Then SQLstr &= " AND AdressenNr NOT LIKE '15%'" + SQLstr &= " order by Ordnungsbegriff " + + setDS(usrcntl.dgvKundenInAktiv, SQL.loadDgvBySql(SQLstr, "FMZOLL")) + + End With + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Es ist ein Fehler beim Kunden-Such-Feld aufgetreten!",,,, "ERR_KDS_04") + End Try + End Sub + + + Sub ThreadInitAKTIV() + Try + If usrcntl Is Nothing Then Exit Sub + If usrcntl.dgvKundenAktiv Is Nothing Then Exit Sub + With usrcntl.dgvKundenAktiv + + Dim srch As String = Me.Text.Replace("'", "").ToString.Trim + If srch.StartsWith("*") Then srch = Replace(srch, "*", "%", , 1) ' Suche mit beginnenden * + + Dim srch2 As String = "" + If srch.Contains(",") Then + Dim spitter() = srch.Split(",") + srch = spitter(0).ToString.Trim + srch2 = spitter(1).ToString.Trim + End If + If srch2.StartsWith("*") Then srch2 = Replace(srch2, "*", "%", , 1) ' Suche mit beginnenden * + + Dim topAnz = 10 + If nurAktive Then topAnz = 16 + Dim AvisoEmail = "" + If _displayAVISO_Email Then + AvisoEmail = ", (SELECT CASE WHEN Count(*)>0 Then 'JA' ELSE '' END [Adressen] FROM [tblEmailBenachrichtigung] WHERE [eb_KundenNr]=AdressenNr) as [E-Mail] " + End If + Dim SQLstr As String = " SELECT top " & topAnz & " Ordnungsbegriff as Firma, AdressenNr as KdNr,Adressen.[LandKz] + ' ' + Adressen.[PLZ] + ' - ' + Adressen.[Ort] + ' ' + Adressen.[Straße] as Adresse " & AvisoEmail & " " + 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 &= " WHERE 1=1 " + SQLstr &= " AND ( " + SQLstr &= " Ordnungsbegriff COLLATE Latin1_General_CI_AI LIKE '" & srch & "%' COLLATE Latin1_General_CI_AI " + 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 & "%' )) " + SQLstr &= " AND [Auswahl]='A' " + + 'If VERAG_PROG_ALLGEMEIN.cAllgemein.CLUSTER <> "" Then + ' SQLstr &= " AND (Filialen.Firma='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' OR Filialen.CLUSTER='" & VERAG_PROG_ALLGEMEIN.cAllgemein.CLUSTER & "') " + 'Else + ' SQLstr &= " AND Filialen.Firma='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' " + 'End If + + If _AlleFirmenCLUSTER Then + SQLstr &= " AND '" & VERAG_PROG_ALLGEMEIN.cAllgemein.CLUSTER & "' IN (Filialen.Firma,Filialen.Cluster) " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + ElseIf _UseFIRMA <> "" Then + SQLstr &= " AND '" & _UseFIRMA & "' IN (Filialen.Firma,Filialen.Cluster) " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + Else + SQLstr &= " AND ( '" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA.Replace("ATILLA", "VERAG") & "' IN (Filialen.Firma,Filialen.Cluster) " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("AVISO_IMEX", "AVISO") Then + SQLstr &= " OR Filialen.Firma IN ('IMEX') " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + End If + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_VERAGIMEX", "SDL") Then + SQLstr &= " OR Filialen.Firma IN ('IMEX','VERAG') " ' Wenn die OFFERTE_FREMD_VERAGIMEX --> Beide + End If + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_UNISPED_BREXIT", "SDL") Then + SQLstr &= " OR (Filialen.Firma IN ('UNISPED') AND Kunden.[FilialenNr]=7002) " ' Wenn die OFFERTE_FREMD_VERAGIMEX --> Beide + End If + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_FRONTOFFICE", "SDL") Then + SQLstr &= " OR Filialen.Firma IN ('FRONTOFFICE') " ' Wenn die Firmenbezeichnung im CLUSter vorkommt .--> Frontoffice + End If + SQLstr &= " ) " + End If + + 'AUSNAHME BIS BESSERE LÖSUNG: + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE" Then + SQLstr &= " and Filialen.Firma NOT IN ('AMBAR') " + End If + + + 'If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE" Then 'Keine + ' SQLstr &= " AND isnull(Kunden.[FilialenNr],0) NOT IN ('5701') " + 'ElseIf VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA <> "VERAG" And VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA <> "ATILLA" Then + ' SQLstr &= " AND Kunden.[FilialenNr]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.STAMMFILIALE & "' " + 'Else + ' 'SQLstr &= " AND isnull(Kunden.[FilialenNr],0)<>'5501' " + ' SQLstr &= " AND isnull(Kunden.[FilialenNr],0) NOT IN ('5501','5601','5701','5801') " + 'End If + If Not _displayWoelflKd Then SQLstr &= " AND AdressenNr NOT LIKE '15%'" + SQLstr &= " order by Ordnungsbegriff " + + setDS(usrcntl.dgvKundenAktiv, SQL.loadDgvBySql(SQLstr, "FMZOLL")) + + End With + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Es ist ein Fehler beim Kunden-Such-Feld aufgetreten!",,,, "ERR_KDS_03") + End Try + End Sub Sub ThreadInitINAKTIV() Try If usrcntl Is Nothing Then Exit Sub diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cTariffKN8.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cTariffKN8.vb new file mode 100644 index 00000000..70281fc9 --- /dev/null +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cTariffKN8.vb @@ -0,0 +1,77 @@ + +Imports System.IO +Imports System.Globalization +Imports System.Net +Imports io.konik.zugferd.entity +Imports System.Data.SqlClient + +' Definieren der Klasse, um die Daten zu repräsentieren +Public Class cTariffKN8 + Public Property Spalte1 As String + Public Property Spalte2 As String + Public Property Spalte3 As String + Public Property Spalte4 As String +End Class +Public Class cTariffKN8_Interface + + + + Public Shared Function UPDATE_KN8() + ' URL zur Datei + Dim fileUrl As String = "https://www.statistik.at/kdb/downloads/csv/prod/KN" & Now.Year & "_DE_CKT.txt" + + 'Dim fileUrl As String = "https://www.statistik.at/kdb/downloads/csv/prod/KN2024_DE_CKT.txt" + + Try + ' WebClient verwenden, um die Datei direkt herunterzuladen + Using client As New WebClient() + Dim fileContent As String = client.DownloadString(fileUrl) + + ' Datei-Inhalt in Zeilen aufteilen + Dim lines As String() = fileContent.Split(New String() {Environment.NewLine}, StringSplitOptions.None) + + ' Verbindung zur Datenbank öffnen + Using connection As New SqlConnection(VERAG_PROG_ALLGEMEIN.SQL.GetFMZOLLConnectionString) + connection.Open() + + Using command As New SqlCommand("DELETE tblEZTKN8 ", connection) + + command.ExecuteNonQuery() + + End Using + + ' Zeilen durchlaufen, Kopfzeile überspringen + For i As Integer = 1 To lines.Length - 1 + Dim line As String = lines(i).Trim() + + ' Überspringen leerer Zeilen + If String.IsNullOrEmpty(line) Then Continue For + + ' Spalten trennen (Semikolon als Trennzeichen) + Dim columns As String() = line.Split(";") + + ' Sicherstellen, dass genügend Spalten vorhanden sind + If columns.Length >= 4 Then + ' Daten in die Datenbank einfügen + Using command As New SqlCommand("INSERT INTO tblEZTKN8 (Ebene, EDV_Code, Code, Kurztitel) VALUES (@Spalte1, @Spalte2, @Spalte3, @Spalte4)", connection) + command.Parameters.AddWithValue("@Spalte1", columns(0).Trim().Replace("""", "")) + command.Parameters.AddWithValue("@Spalte2", columns(1).Trim().Replace("""", "")) + command.Parameters.AddWithValue("@Spalte3", columns(2).Trim().Replace("""", "")) + command.Parameters.AddWithValue("@Spalte4", columns(3).Trim().Replace("""", "")) + + command.ExecuteNonQuery() + + End Using + End If + Next + End Using + End Using + Return True + + Console.WriteLine("Daten erfolgreich in die Datenbank geladen.") + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + Return False + End Function +End Class diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj index a3cebc8c..a821f842 100644 --- a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj +++ b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj @@ -417,6 +417,7 @@ Resources.resx + @@ -664,6 +665,7 @@ + True True @@ -892,6 +894,18 @@ Designer + + Designer + + + Designer + + + Designer + + + Designer + Designer