This commit is contained in:
2025-09-25 13:04:34 +02:00
parent f4dcfa7592
commit 7c22afa197
2 changed files with 179 additions and 49 deletions

View File

@@ -277,6 +277,8 @@ Partial Class frmStartOptions
Me.Button27 = New System.Windows.Forms.Button() Me.Button27 = New System.Windows.Forms.Button()
Me.lblWartungen = New System.Windows.Forms.Label() Me.lblWartungen = New System.Windows.Forms.Label()
Me.TabPage7 = New System.Windows.Forms.TabPage() Me.TabPage7 = New System.Windows.Forms.TabPage()
Me.Label50 = New System.Windows.Forms.Label()
Me.Label49 = New System.Windows.Forms.Label()
Me.Label48 = New System.Windows.Forms.Label() Me.Label48 = New System.Windows.Forms.Label()
Me.cbxCSsync = New System.Windows.Forms.CheckBox() Me.cbxCSsync = New System.Windows.Forms.CheckBox()
Me.cbxMailsenden = New System.Windows.Forms.CheckBox() Me.cbxMailsenden = New System.Windows.Forms.CheckBox()
@@ -352,8 +354,7 @@ Partial Class frmStartOptions
Me.MyTextBox1 = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.MyTextBox1 = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.txtGJ_UNISPED = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.txtGJ_UNISPED = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.DataGridViewTextBoxColumn1 = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.DataGridViewTextBoxColumn1 = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.Label49 = New System.Windows.Forms.Label() Me.cbxEventtriggered = New System.Windows.Forms.CheckBox()
Me.Label50 = New System.Windows.Forms.Label()
Me.pnl.SuspendLayout() Me.pnl.SuspendLayout()
CType(Me.PictureBox24, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.PictureBox24, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox23, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.PictureBox23, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -3467,6 +3468,7 @@ Partial Class frmStartOptions
' '
'TabPage7 'TabPage7
' '
Me.TabPage7.Controls.Add(Me.cbxEventtriggered)
Me.TabPage7.Controls.Add(Me.Label50) Me.TabPage7.Controls.Add(Me.Label50)
Me.TabPage7.Controls.Add(Me.Label49) Me.TabPage7.Controls.Add(Me.Label49)
Me.TabPage7.Controls.Add(Me.Label48) Me.TabPage7.Controls.Add(Me.Label48)
@@ -3490,6 +3492,28 @@ Partial Class frmStartOptions
Me.TabPage7.Text = "Creditsafe" Me.TabPage7.Text = "Creditsafe"
Me.TabPage7.UseVisualStyleBackColor = True Me.TabPage7.UseVisualStyleBackColor = True
' '
'Label50
'
Me.Label50.AutoSize = True
Me.Label50.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label50.ForeColor = System.Drawing.Color.Red
Me.Label50.Location = New System.Drawing.Point(168, 181)
Me.Label50.Name = "Label50"
Me.Label50.Size = New System.Drawing.Size(228, 13)
Me.Label50.TabIndex = 167
Me.Label50.Text = "*prüfe Kunden, deren Bon-Dat. älter ist"
'
'Label49
'
Me.Label49.AutoSize = True
Me.Label49.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label49.ForeColor = System.Drawing.Color.Red
Me.Label49.Location = New System.Drawing.Point(109, 246)
Me.Label49.Name = "Label49"
Me.Label49.Size = New System.Drawing.Size(234, 13)
Me.Label49.TabIndex = 166
Me.Label49.Text = "*nur Info bei Kundenrechnung < 2 Jahre"
'
'Label48 'Label48
' '
Me.Label48.AutoSize = True Me.Label48.AutoSize = True
@@ -4715,27 +4739,18 @@ Partial Class frmStartOptions
Me.DataGridViewTextBoxColumn1.MinimumWidth = 8 Me.DataGridViewTextBoxColumn1.MinimumWidth = 8
Me.DataGridViewTextBoxColumn1.Name = "DataGridViewTextBoxColumn1" Me.DataGridViewTextBoxColumn1.Name = "DataGridViewTextBoxColumn1"
' '
'Label49 'cbxEventtriggered
' '
Me.Label49.AutoSize = True Me.cbxEventtriggered.AutoSize = True
Me.Label49.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.cbxEventtriggered.Checked = True
Me.Label49.ForeColor = System.Drawing.Color.Red Me.cbxEventtriggered.CheckState = System.Windows.Forms.CheckState.Checked
Me.Label49.Location = New System.Drawing.Point(109, 246) Me.cbxEventtriggered.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label49.Name = "Label49" Me.cbxEventtriggered.Location = New System.Drawing.Point(14, 144)
Me.Label49.Size = New System.Drawing.Size(234, 13) Me.cbxEventtriggered.Name = "cbxEventtriggered"
Me.Label49.TabIndex = 166 Me.cbxEventtriggered.Size = New System.Drawing.Size(237, 17)
Me.Label49.Text = "*nur Info bei Kundenrechnung < 2 Jahre" Me.cbxEventtriggered.TabIndex = 168
' Me.cbxEventtriggered.Text = "Daily-Check (schneller aber weniger deailiert)"
'Label50 Me.cbxEventtriggered.UseVisualStyleBackColor = True
'
Me.Label50.AutoSize = True
Me.Label50.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label50.ForeColor = System.Drawing.Color.Red
Me.Label50.Location = New System.Drawing.Point(168, 181)
Me.Label50.Name = "Label50"
Me.Label50.Size = New System.Drawing.Size(228, 13)
Me.Label50.TabIndex = 167
Me.Label50.Text = "*prüfe Kunden, deren Bon-Dat. älter ist"
' '
'frmStartOptions 'frmStartOptions
' '
@@ -5145,4 +5160,5 @@ Partial Class frmStartOptions
Friend WithEvents cbxCSsync As CheckBox Friend WithEvents cbxCSsync As CheckBox
Friend WithEvents Label49 As Label Friend WithEvents Label49 As Label
Friend WithEvents Label50 As Label Friend WithEvents Label50 As Label
Friend WithEvents cbxEventtriggered As CheckBox
End Class End Class

View File

@@ -833,6 +833,17 @@ Public Class frmStartOptions
End If End If
Case "CREDITSAFE_EVENTS_DETAIL"
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
Dim upateKunden As Boolean = True
Dim OnlyCurrentMonthData As Boolean = True
Dim setzeInfoImKunden As Boolean = False
Dim sendMail As Boolean = True
importCreditsafeEvents(CDate("01." & Now.Month & "." & Now.Year).ToShortDateString, OnlyCurrentMonthData, upateKunden, setzeInfoImKunden, sendMail, True)
closeMe()
Case "CREDITSAFE_EVENTS" Case "CREDITSAFE_EVENTS"
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
@@ -841,7 +852,7 @@ Public Class frmStartOptions
Dim setzeInfoImKunden As Boolean = False Dim setzeInfoImKunden As Boolean = False
Dim sendMail As Boolean = True Dim sendMail As Boolean = True
importCreditsafeEvents(CDate("01." & Now.Month & "." & Now.Year).ToShortDateString, OnlyCurrentMonthData, upateKunden, setzeInfoImKunden, sendMail) importCreditsafeEvents(CDate("01." & Now.Month & "." & Now.Year).ToShortDateString, OnlyCurrentMonthData, upateKunden, setzeInfoImKunden, sendMail, False)
closeMe() closeMe()
Case "CREDITSAFE_UPLOADS" Case "CREDITSAFE_UPLOADS"
@@ -6341,23 +6352,29 @@ weiter:
End If End If
importCreditsafeEvents(datumString, cbCheckDate.Checked, bcxKundendatenaktCS.Checked, cbxKundenbesonderheitenCS.Checked, cbxMailsenden.Checked) importCreditsafeEvents(datumString, cbCheckDate.Checked, bcxKundendatenaktCS.Checked, cbxKundenbesonderheitenCS.Checked, cbxMailsenden.Checked, Not cbxEventtriggered.Checked)
End Sub End Sub
Private Sub importCreditsafeEvents(datum As String, checkDate As Boolean, upateKunden As Boolean, setzeKundenbesonderheiten As Boolean, sendMail As Boolean) Private Sub importCreditsafeEvents(datum As String, checkDate As Boolean, upateKunden As Boolean, setzeKundenbesonderheiten As Boolean, sendMail As Boolean, companyDetailEventsRequest As Boolean)
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'WICHTIG, bei companyDetailEventsRequest = true wird gleich Punkt 3 gemacht (dauert länger, aber mehr Datensätze und alle Kunden werden geprüft, bei companyDetailEventsRequest = false wird die u.a. Best Practice-Methode durchgeführt-> also triggerbasierend)!!!!
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Best Practices for Viewing Notification Events 'Best Practices for Viewing Notification Events
'1. Use Portfolio-Specific Events for Targeted Monitoring: Start with the portfolio-specific endpoint to focus on changes relevant to a particular portfolio. '1. Use Portfolio-Specific Events for Targeted Monitoring: Start with the portfolio-specific endpoint to focus on changes relevant to a particular portfolio.
'2. Leverage Global Events for a Broader View: Use the all-events endpoint to gain a comprehensive overview of all notifications across your portfolios. '2. Leverage Global Events for a Broader View: Use the all-events endpoint to gain a comprehensive overview of all notifications across your portfolios.
'3. Drill Down to Company-Level Events When Needed: For detailed insights into a specific company, use the company-specific endpoint. '3. Drill Down to Company-Level Events When Needed: For detailed insights into a specific company, use the company-specific endpoint.
'4. Verify Enabled Rules: Ensure that the appropriate event rules are enabled for your portfolios to capture the desired notifications. Refer to the Activate Event Rules section for guidance.
'aktuell machem wir gleich Punkt 3 (damit haben wir alle Informationen), das verursacht allerdings sehr viele API-Aurfrufe, besser nach dem Best Practice oben! '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dim creditsaveOld As String = " Dim creditsaveOld As String = "
@@ -6388,11 +6405,73 @@ weiter:
Dim creditsave As String = "select distinct(ba_KundenNr) from Kunden
Dim creditsave As String = "select distinct(ba_KundenNr),f.Firma from Kunden
inner join tblKundenErweitert on Kunden.KundenNr = kde_KundenNr inner join tblKundenErweitert on Kunden.KundenNr = kde_KundenNr
inner join Filialen as f on f.FilialenNr = Kunden.FilialenNr
inner join tblBonitaetsauskunft on ba_KundenNr = kde_KundenNr inner join tblBonitaetsauskunft on ba_KundenNr = kde_KundenNr
where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 1 AND ba_Pruefungstool = 'creditsafe API'" & IIf(datum <> "", " AND Kunden.Bonitätsdatum <= '" & datum & "'", "") where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 1 AND ba_Pruefungstool = 'creditsafe API'" & IIf(datum <> "", " AND Kunden.Bonitätsdatum <= '" & datum & "'", "")
'KundenNr und Firma
Dim cs = New cCreditSafeAPI("creditsafe")
Dim Mailinfolast2Years As Boolean = False
If cs.authenticate() = "200" Then
If Not companyDetailEventsRequest Then
Dim API_Start_Daily = VERAG_PROG_ALLGEMEIN.cAPI.INSERT_API(VERAG_PROG_ALLGEMEIN.cAPI_INOUT.IN, VERAG_PROG_ALLGEMEIN.cAPI_Type.REST, VERAG_PROG_ALLGEMEIN.cAPI_ART.AVISO_IN_CS, "DAiLY-CREDITSAFE-EVENTS-IMPORT", "CS")
Dim dtMonitoredRequest As New DataTable
Dim companyDummy As New cCreditSafeAPI.Company("", "", "", "", "", "", Nothing, "", "", "", "", "", "", "", "", "", 0)
If txtCSDate.Text <> "" AndAlso IsDate(txtCSDate.Text) Then
companyDummy.lastChecked = CDate(txtCSDate.Text)
End If
repeatRequestDaily:
Dim page As Integer = 0
Dim totalPages As Integer = -1
Dim APIText = cs.getCompanyEvents(companyDummy, dtMonitoredRequest, False, totalPages, checkDate, upateKunden, False,, setzeKundenbesonderheiten, True,, page)
If (APIText.Contains("Error") Or APIText.Contains("Verbindungsfehler")) Then API_Start_Daily.UPDTAE_ERR("ERROR", APIText, "dailyImportCreditsafeEvents")
If APIText.Contains("Invalid token") Then
If Not cs.authenticate() = 200 Then
API_Start_Daily.UPDTAE_ERR("ERROR", APIText, "importCreditsafeEvents")
Exit Sub
Else
Thread.Sleep(4000)
GoTo repeatRequestDaily
End If
End If
If totalPages > 1 Then
For i = 2 To totalPages
repeatRequestDailyPages:
APIText = cs.getCompanyEvents(companyDummy, dtMonitoredRequest, False, totalPages, checkDate, upateKunden, False,, setzeKundenbesonderheiten, True,, i)
If APIText.Contains("Invalid token") Then
If Not cs.authenticate() = 200 Then
API_Start_Daily.UPDTAE_ERR("ERROR", APIText, "dailyImportCreditsafeEvents")
Exit For
Else
Thread.Sleep(4000)
GoTo repeatRequestDailyPages
End If
End If
Next
End If
Exit Sub
End If
If False Then If False Then
creditsave &= " and (ba_KundenNr = 718137 or ba_KundenNr = 1003418)" creditsave &= " and (ba_KundenNr = 718137 or ba_KundenNr = 1003418)"
End If End If
@@ -6404,17 +6483,24 @@ weiter:
If dtCreditsafe.Rows.Count = 0 Then Exit Sub If dtCreditsafe.Rows.Count = 0 Then Exit Sub
Dim countMissingVerag As Integer = 0
Dim cs = New cCreditSafeAPI("creditsafe") Dim countMissingIMEX As Integer = 0
Dim countMissingUNISPED As Integer = 0
Dim countMissingAMBAR As Integer = 0
Dim dt_fehlendeCreditsafeIDS As New DataTable Dim dt_fehlendeCreditsafeIDS As New DataTable
dt_fehlendeCreditsafeIDS.Columns.Add("KundenNr", GetType(String)) dt_fehlendeCreditsafeIDS.Columns.Add("KundenNr", GetType(String))
dt_fehlendeCreditsafeIDS.Columns.Add("Creditsafe-ID", GetType(String)) dt_fehlendeCreditsafeIDS.Columns.Add("Creditsafe-ID", GetType(String))
dt_fehlendeCreditsafeIDS.Columns.Add("Creditsafe-NO", GetType(String)) dt_fehlendeCreditsafeIDS.Columns.Add("Creditsafe-NO", GetType(String))
dt_fehlendeCreditsafeIDS.Columns.Add("Firma", GetType(String))
If cs.authenticate() = "200" Then
Dim counter As Integer = 0
Dim API_Start = VERAG_PROG_ALLGEMEIN.cAPI.INSERT_API(VERAG_PROG_ALLGEMEIN.cAPI_INOUT.IN, VERAG_PROG_ALLGEMEIN.cAPI_Type.REST, VERAG_PROG_ALLGEMEIN.cAPI_ART.AVISO_IN_CS, "CREDITSAFE-EVENTS-IMPORT", "CS")
If dtCreditsafe.Rows.Count = 0 Then
API_Start.UPDTAE_ERR("ERROR - KEINE DATEN", "Anzahl abgefragte Datensätze:" & dtCreditsafe.Rows.Count & " Anzahl importierte Datensätze:" & counter & " Anzahl fehlende Creditsafe-IDs:" & dt_fehlendeCreditsafeIDS.Rows.Count, "importCreditsafeEvents")
End If
For Each row As DataRow In dtCreditsafe.Rows For Each row As DataRow In dtCreditsafe.Rows
@@ -6429,7 +6515,7 @@ weiter:
If currentBonID > 0 Then company.csBonID = currentBonID If currentBonID > 0 Then company.csBonID = currentBonID
Dim dt As New DataTable() Dim dt As New DataTable()
Dim Mailinfolast2Years As Boolean = False
Dim exists As Boolean = dtRechnungen.AsEnumerable().Any(Function(r) r.Field(Of Integer)("RechnungsKundenNr") = KUNDE_ERW.kde_KundenNr) Dim exists As Boolean = dtRechnungen.AsEnumerable().Any(Function(r) r.Field(Of Integer)("RechnungsKundenNr") = KUNDE_ERW.kde_KundenNr)
If sendMail Then If sendMail Then
@@ -6440,10 +6526,10 @@ weiter:
End If End If
End If End If
repeatRequest:
Dim APIText As String = "" Dim APIText As String = ""
If exists Then If exists Then
APIText = cs.getCompanyEvents(company, dt, checkDate, upateKunden, False,, setzeKundenbesonderheiten, Mailinfolast2Years) APIText = cs.getCompanyEvents(company, dt, False, checkDate, upateKunden, False,, setzeKundenbesonderheiten, Mailinfolast2Years, row("Firma"))
End If End If
If (APIText.Contains("Error") Or APIText.Contains("Verbindungsfehler")) Then If (APIText.Contains("Error") Or APIText.Contains("Verbindungsfehler")) Then
@@ -6455,7 +6541,18 @@ weiter:
R("KundenNr") = KUNDE_ERW.kde_KundenNr R("KundenNr") = KUNDE_ERW.kde_KundenNr
R("Creditsafe-ID") = KUNDE_ERW.kde_CreditSaveId R("Creditsafe-ID") = KUNDE_ERW.kde_CreditSaveId
R("Creditsafe-NO") = KUNDE_ERW.kde_CreditSaveNo R("Creditsafe-NO") = KUNDE_ERW.kde_CreditSaveNo
dt.Rows.Add(R) R("Firma") = row("Firma")
dt_fehlendeCreditsafeIDS.Rows.Add(R)
If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
Select Case row(FIRMA)
Case "VERAG" : countMissingVerag += 1
Case "IMEX" : countMissingIMEX += 1
Case "AMBAR" : countMissingAMBAR += 1
Case "UNISPED" : countMissingUNISPED += 1
End Select
End If
KUNDE_ERW.kde_CreditSaveId = "" KUNDE_ERW.kde_CreditSaveId = ""
KUNDE_ERW.SAVE() KUNDE_ERW.SAVE()
@@ -6467,21 +6564,38 @@ weiter:
Exit For Exit For
Else Else
Thread.Sleep(4000) Thread.Sleep(4000)
GoTo repeatRequest
End If End If
End If End If
Else
counter += 1
End If End If
Thread.Sleep(1000) Thread.Sleep(1000)
Next Next
If dtCreditsafe.Rows.Count = (counter - dt_fehlendeCreditsafeIDS.Rows.Count) Then
API_Start.UPDTAE_OK()
Else
API_Start.UPDTAE_ERR("IMPORT UNVOLLSTÄNDIG", "Anzahl abgefragte Datensätze:" & dtCreditsafe.Rows.Count & " Anzahl importierte Datensätze:" & counter & " Anzahl fehlende Creditsafe-IDs:" & dt_fehlendeCreditsafeIDS.Rows.Count, "importCreditsafeEvents")
End If
If dt_fehlendeCreditsafeIDS.Rows.Count > 0 Then If dt_fehlendeCreditsafeIDS.Rows.Count > 0 Then
Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt_fehlendeCreditsafeIDS,,,,, False) Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt_fehlendeCreditsafeIDS,,,,, False)
If filepath <> "" Then If filepath <> "" Then
Dim anhenge As New List(Of String) Dim anhenge As New List(Of String)
anhenge.Add(filepath) anhenge.Add(filepath)
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "d.breimaier@verag.ag", "as@verag.ag"), IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & "CREDITSAFE - fehlende CS-IDs", "Im Anhang befinden sich eine Liste der Kunden, deren Creditsafe-ID ungültig sind/nicht gefunden wurden!" & "<br><br>" & "*Automatic generated e-mail*",,,,, "d.breimaier@verag.ag", anhenge) Dim empfaneger As String = ""
If countMissingVerag > 0 Then empfaneger &= "as@verag.ag;"
If countMissingIMEX > 0 Then empfaneger &= "Viktoria.Leirich@imex-group.at;"
If countMissingUNISPED > 0 Then empfaneger &= "sabine.muehlboeck@unisped.at;"
If countMissingAMBAR > 0 Then empfaneger &= "Buchhaltung@ambarlog.com;"
If empfaneger <> "" Then VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & "CREDITSAFE - fehlende CS-IDs", "Im Anhang befinden sich eine Liste der Kunden, deren Creditsafe-ID ungültig sind/nicht gefunden wurden!" & "<br><br>" & "*Automatic generated e-mail*",,,,, "d.breimaier@verag.ag", anhenge)
End If End If
End If End If