From 77b757b03183e079923cd16a34eef6eff98dc6fe Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 6 Nov 2026 11:02:06 +0100 Subject: [PATCH] Sicherheiten -> CBAM --- UID/usrCntlDatenarchiv.Designer.vb | 14 +++- UID/usrCntlDatenarchiv.vb | 110 +++++++++++++++++++++++++++-- 2 files changed, 118 insertions(+), 6 deletions(-) diff --git a/UID/usrCntlDatenarchiv.Designer.vb b/UID/usrCntlDatenarchiv.Designer.vb index 4665113..0b5ec23 100644 --- a/UID/usrCntlDatenarchiv.Designer.vb +++ b/UID/usrCntlDatenarchiv.Designer.vb @@ -43,6 +43,7 @@ Partial Class usrCntlDatenarchiv Me.txtMaxSrch = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.Button10 = New System.Windows.Forms.Button() Me.Button11 = New System.Windows.Forms.Button() + Me.lblWorkingArea = New System.Windows.Forms.Label() CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainer.Panel1.SuspendLayout() Me.SplitContainer.Panel2.SuspendLayout() @@ -98,6 +99,7 @@ Partial Class usrCntlDatenarchiv ' 'SplitContainer1.Panel1 ' + Me.SplitContainer1.Panel1.Controls.Add(Me.lblWorkingArea) Me.SplitContainer1.Panel1.Controls.Add(Me.lblfehlendeDokumente) Me.SplitContainer1.Panel1.Controls.Add(Me.Button1) Me.SplitContainer1.Panel1.Controls.Add(Me.cbxTestsystem) @@ -115,7 +117,7 @@ Partial Class usrCntlDatenarchiv ' Me.lblfehlendeDokumente.AutoSize = True Me.lblfehlendeDokumente.ForeColor = System.Drawing.Color.Red - Me.lblfehlendeDokumente.Location = New System.Drawing.Point(617, 15) + Me.lblfehlendeDokumente.Location = New System.Drawing.Point(449, 54) Me.lblfehlendeDokumente.Name = "lblfehlendeDokumente" Me.lblfehlendeDokumente.Size = New System.Drawing.Size(0, 13) Me.lblfehlendeDokumente.TabIndex = 57 @@ -326,6 +328,15 @@ Partial Class usrCntlDatenarchiv Me.Button11.TabIndex = 4 Me.Button11.UseVisualStyleBackColor = True ' + 'lblWorkingArea + ' + Me.lblWorkingArea.AutoSize = True + Me.lblWorkingArea.ForeColor = System.Drawing.Color.Black + Me.lblWorkingArea.Location = New System.Drawing.Point(449, 36) + Me.lblWorkingArea.Name = "lblWorkingArea" + Me.lblWorkingArea.Size = New System.Drawing.Size(0, 13) + Me.lblWorkingArea.TabIndex = 58 + ' 'usrCntlDatenarchiv ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -371,4 +382,5 @@ Partial Class usrCntlDatenarchiv Friend WithEvents btnSave As Button Friend WithEvents Button1 As Button Friend WithEvents lblfehlendeDokumente As Label + Friend WithEvents lblWorkingArea As Label End Class diff --git a/UID/usrCntlDatenarchiv.vb b/UID/usrCntlDatenarchiv.vb index 1030cbc..6a64855 100644 --- a/UID/usrCntlDatenarchiv.vb +++ b/UID/usrCntlDatenarchiv.vb @@ -179,13 +179,17 @@ Public Class usrCntlDatenarchiv Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim jahr As Integer = 2026 - Dim zupruefendeDokumente As String = " select top(100000) * from [tblDatenarchiv_Collection] where Year(coll_date) = " & jahr & " and coll_archiv = 0 and isnull(coll_pfad,'') <> '' order by coll_date desc " + 'Dim zupruefendeDokumente As String = " select top(100000) * from [tblDatenarchiv_Collection] where Year(coll_date) = " & jahr & " and coll_archiv = 0 and isnull(coll_pfad,'') <> '' order by coll_date desc " + Dim zupruefendeDokumente As String = " select top(100000) * from [tblDatenarchiv_Collection] where cast(coll_date as Date) = '29.10.2026' and coll_archiv = 0 and isnull(coll_pfad,'') <> '' order by coll_date desc " + VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim Datenarchiv_DOKS As DataTable = SQL.loadDgvBySql(zupruefendeDokumente, "FMZOLL") Dim dtFehlendeDOKS = Datenarchiv_DOKS.Clone() + Dim listOfSources As New List(Of String) + Dim listOfCOLL_DAID As New List(Of Integer) If Datenarchiv_DOKS.Rows.Count > 0 Then @@ -194,13 +198,16 @@ Public Class usrCntlDatenarchiv If r.Item("coll_pfad") <> "" Then If Not System.IO.File.Exists(r.Item("coll_pfad")) Then dtFehlendeDOKS.ImportRow(r) - lblfehlendeDokumente.Text = "fehlende Doks.: " & dtFehlendeDOKS.Rows.Count - Me.Refresh() - If dtFehlendeDOKS.Rows.Count >= 10000 Then Exit For + lblfehlendeDokumente.Text = "fehlende DOK.: " & dtFehlendeDOKS.Rows.Count + addToLlist(listOfSources, listOfCOLL_DAID, r) + 'Me.Refresh() + If dtFehlendeDOKS.Rows.Count >= 1000 Then Exit For End If End If + lblWorkingArea.Text = "geprüft DOK.: : " & Datenarchiv_DOKS.Rows.IndexOf(r) & "/" & Datenarchiv_DOKS.Rows.Count + Me.Refresh() Next @@ -209,9 +216,53 @@ Public Class usrCntlDatenarchiv MsgBox("Es existieren " & dtFehlendeDOKS.Rows.Count & " Datenarchiv-Datensätze, die kein zugeordnetes Dokument besitzen!") VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtFehlendeDOKS,,,,, True,,, True) + Dim deleted As Boolean = False + + If vbYes = MsgBox("Sollen diese Datenarchiveinträge gelöscht werden?" & vbNewLine & "Bitte vorher Excelliste prüfen!", vbYesNo) Then + Dim Where As String = "" + For Each DAID In listOfCOLL_DAID + Where &= DAID & "," + Next + + Where = Where.Substring(0, Where.Length - 1) + + deleted = SQL.doSQL("DELETE FROM [tblDatenarchiv_Collection] WHERE [coll_daId] in (" & Where & ")", "FMZOLL") + deleted = SQL.doSQL("DELETE FROM [tblDatenarchiv] WHERE [da_id] in (" & Where & ")", "FMZOLL") + + If deleted Then + For Each source In listOfSources + + 'Hier muss die DA-ID in der verknüpften Tabelle auf NULL gesetzt werden! + Select Case source + Case "AVISO_ANHAENGE" : SQL.doSQL("UPDATE tblAvisoAnhaenge set tblAvisoAnhaenge.anh_docId = NULL where tblAvisoAnhaenge.anh_docId in (" & Where & ")", "AVISO") ' -> Eintrag auch gleich löschen- > NEIN nur DA_ID laut Andreas, wegen Nachvollziehbarkeit: 05.11.2026 + 'Case "UID_PRUEFUNG"; EORI_PRUEFUNG -> Über AVISO-Anhänge + Case "RECHNUNGEN" : SQL.doSQL("UPDATE Rechnungsausgang set Rechnungsausgang.dsId = NULL where Rechnungsausgang.dsId in (" & Where & ")", "FMZOLL") + Case "ZUGFERD" : SQL.doSQL("UPDATE Rechnungsausgang set Rechnungsausgang.zugferdcheck_daid = NULL where Rechnungsausgang.zugferdcheck_daid in (" & Where & ")", "FMZOLL") + + Case "CREDITSAFE" : SQL.doSQL("UPDATE tblBonitaetsauskunft set tblBonitaetsauskunft.ba_datenarchivId = NULL where tblBonitaetsauskunft.ba_datenarchivId in (" & Where & ")", "FMZOLL") + + '3x weil 3 versch. Felder! + Case "VOLLMACHTEN" + SQL.doSQL("UPDATE tblKundenVollmachten set tblKundenVollmachten.kdvm_datenarchivId = NULL where tblKundenVollmachten.kdvm_datenarchivId in (" & Where & ")", "FMZOLL") + SQL.doSQL("UPDATE tblKundenVollmachten set tblKundenVollmachten.kdvm_emailId = NULL where tblKundenVollmachten.kdvm_emailId in (" & Where & ")", "FMZOLL") + SQL.doSQL("UPDATE tblKundenVollmachten set tblKundenVollmachten.kdvm_datenarchivId_2 = NULL where tblKundenVollmachten.kdvm_datenarchivId_2 in (" & Where & ")", "FMZOLL") + + 'MDM + Case "USTVA" : SQL.doSQL("UPDATE tblUStVPositionen set tblUStVPositionen.UStVPo_daId = NULL where UStVPo_daId_loeschbar = 1 AND tblUStVPositionen.UStVPo_daId in (" & Where & ")", "FMZOLL") + Case "USTVERS" : SQL.doSQL("UPDATE tblUStVErstattung set tblUStVErstattung.UStVEr_daId = NULL where tblUStVErstattung.UStVEr_daId in (" & Where & ")", "FMZOLL") + End Select + + Next + + End If - If vbYes = MsgBox("Sollen diese Datenarchiveinträge gelöscht werden?", vbYesNo) Then + If deleted Then + MsgBox("Daten wurden erfolgreich bereinigt!") + Else + MsgBox("Fehler beim Bereinigen der Daten!") + End If + End If @@ -227,4 +278,53 @@ Public Class usrCntlDatenarchiv End Sub + + + Private Sub addToLlist(listOfSources As List(Of String), listOfCOLL_DAID As List(Of Integer), r As DataRow) + + Dim da_id As Integer + + If Not IsDBNull(r.Item("coll_daId")) AndAlso Integer.TryParse(Convert.ToString(r.Item("coll_daId")).Trim(), da_id) Then + + If Not listOfCOLL_DAID.Contains(da_id) Then + listOfCOLL_DAID.Add(da_id) + End If + + End If + + + If r.Item("coll_pfad").ToString.Contains("AVISO_ANHAENGE") Then + If Not listOfSources.Contains("AVISO_ANHAENGE") Then listOfSources.Add("AVISO_ANHAENGE") + ElseIf r.Item("coll_pfad").ToString.Contains("RECHNUNGEN") Then + If Not listOfSources.Contains("RECHNUNGEN") Then listOfSources.Add("RECHNUNGEN") + ElseIf r.Item("coll_pfad").ToString.Contains("CHAT_ANHAENGE") Then + If Not listOfSources.Contains("CHAT_ANHAENGE") Then listOfSources.Add("CHAT_ANHAENGE") + ElseIf r.Item("coll_pfad").ToString.Contains("VOLLMACHTEN") Then + If Not listOfSources.Contains("VOLLMACHTEN") Then listOfSources.Add("VOLLMACHTEN") + ElseIf r.Item("coll_pfad").ToString.Contains("CREDITSAFE") Then + If Not listOfSources.Contains("CREDITSAFE") Then listOfSources.Add("CREDITSAFE") + ElseIf r.Item("coll_pfad").ToString.Contains("ZUGFERD") Then + If Not listOfSources.Contains("ZUGFERD") Then listOfSources.Add("ZUGFERD") + ElseIf r.Item("coll_pfad").ToString.Contains("KD_VERTRÄGE") Then + If Not listOfSources.Contains("KD_VERTRÄGE") Then listOfSources.Add("KD_VERTRÄGE") + ElseIf r.Item("coll_pfad").ToString.Contains("ZOLLDATEN") AndAlso r.Item("coll_pfad").ToString.Contains("DAKOSY") Then + If Not listOfSources.Contains("ZOLLDATEN") Then listOfSources.Add("ZOLLDATEN_DAKOSY") + ElseIf r.Item("coll_pfad").ToString.Contains("UID_PRUEFUNG") Then + If Not listOfSources.Contains("UID_PRUEFUNG") Then listOfSources.Add("UID_PRUEFUNG") + ElseIf r.Item("coll_pfad").ToString.Contains("EORI_PRUEFUNG") Then + If Not listOfSources.Contains("EORI_PRUEFUNG") Then listOfSources.Add("EORI_PRUEFUNG") + End If + + 'MDM-Spezifisch + If r.Item("coll_pfad").ToString.Contains("USTVERS_") AndAlso r.Item("coll_pfad").ToString.Contains("MDM") Then + If Not listOfSources.Contains("USTVERS_") Then listOfSources.Add("USTVERS") + End If + + + If r.Item("coll_pfad").ToString.Contains("USTVA_") AndAlso r.Item("coll_pfad").ToString.Contains("MDM") Then + If Not listOfSources.Contains("USTVA_") Then listOfSources.Add("USTVA") + End If + + End Sub + End Class