This commit is contained in:
2025-09-08 21:25:49 +02:00
2 changed files with 1111 additions and 974 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -9,6 +9,7 @@ Imports System.Xml
Imports MDM_Worker Imports MDM_Worker
Imports Renci.SshNet Imports Renci.SshNet
Imports VERAG_PROG_ALLGEMEIN Imports VERAG_PROG_ALLGEMEIN
Imports VERAG_PROG_ALLGEMEIN.cAllgemein
Imports VERAG_PROG_ALLGEMEIN.cTelotecAPI Imports VERAG_PROG_ALLGEMEIN.cTelotecAPI
Public Class frmStartOptions Public Class frmStartOptions
@@ -830,6 +831,24 @@ Public Class frmStartOptions
End If End If
Case "CREDITSAFE_EVENTS"
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
Dim upateKunden As Boolean = True
Dim OnlyCurrentMonthData As Boolean = True
Dim setzeInfoImKunden As Boolean = True
Dim sendMail As Boolean = True
importCreditsafeEvents(CDate("01." & Now.Month & "." & Now.Year).ToShortDateString, OnlyCurrentMonthData, upateKunden, setzeInfoImKunden, sendMail)
closeMe()
Case "CREDITSAFE_UPLOADS"
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
UploadCompaniesToCreditsafe()
closeMe() closeMe()
Case Else Case Else
@@ -4865,7 +4884,9 @@ Public Class frmStartOptions
getLatestBatchNrMSE() getLatestBatchNrMSE()
ElseIf tbcntr.SelectedIndex = 5 Then ElseIf tbcntr.SelectedIndex = 5 Then
countmissingCSinPortfolio() Dim count As Integer = 0
countmissingCSinPortfolio(count)
lbl_CS_online.Text = count
End If End If
End Sub End Sub
@@ -6253,17 +6274,167 @@ weiter:
Private Sub btnCreditsaveLauf_Click(sender As Object, e As EventArgs) Handles btnCreditsaveLauf.Click Private Sub btnCreditsaveLauf_Click(sender As Object, e As EventArgs) Handles btnCreditsaveLauf.Click
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = cbxTestsystemCS.Checked
'Existing companies in the portfolio will be skipped, and only new unique entries will be added. 'Existing companies in the portfolio will be skipped, and only new unique entries will be added.
UploadCompaniesToCreditsafe()
End Sub
Private Sub countmissingCSinPortfolio(ByRef count As Integer)
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = cbxTestsystemCS.Checked
Dim countMissing As Integer = 0
Dim countUploaeded As Integer = 0
Dim sql As New SQL Dim sql As New SQL
lblCSPortfolio.Text = "im Portfolio:"
lblMissingCS.Text = "hochzuladende Unternehmen in CS: "
Dim sqlCountNotUploaded As String = sql.getValueTxtBySql("select count(distinct(kde_CreditSaveNo)) from tblKundenErweitert where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 0", "FMZOLL")
Dim sqlCountUploaded As String = sql.getValueTxtBySql("select count(distinct(kde_CreditSaveNo)) from tblKundenErweitert where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 1", "FMZOLL")
If sqlCountNotUploaded <> "" AndAlso IsNumeric(sqlCountNotUploaded) Then countMissing = CInt(sqlCountNotUploaded)
If sqlCountUploaded <> "" AndAlso IsNumeric(sqlCountUploaded) Then countUploaeded = CInt(sqlCountUploaded)
lblCS_DB.Text = sqlCountUploaded
lblMissingCS.Text &= countMissing
Dim cs = New cCreditSafeAPI("creditsafe")
If cs.authenticate() = "200" Then
Dim portOnline As Integer
cs.GetCompaniesFromPortfolio(portOnline)
count = portOnline
End If
End Sub
Private Sub Button28_Click_1(sender As Object, e As EventArgs) Handles Button28.Click
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = cbxTestsystemCS.Checked
Dim datumString = ""
If cbCheckDate.Checked Then
If txtCSDate.Text <> "" AndAlso IsDate(txtCSDate.Text) Then
datumString = txtCSDate.Text
Else
MsgBox("Datum hat falsches Format!" & vbNewLine & "Vorgang wird abgebrochen!")
Exit Sub
End If
Else
datumString = Today.ToShortDateString
End If
importCreditsafeEvents(datumString, cbCheckDate.Checked, bcxKundendatenaktCS.Checked, cbxKundenbesonderheitenCS.Checked, cbxMailsenden.Checked)
End Sub
Private Sub importCreditsafeEvents(datum As String, checkDate As Boolean, upateKunden As Boolean, setzeKundenbesonderheiten As Boolean, sendMail As Boolean)
'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.
'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.
'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, das verursacht sehr viele APP-Aurfrufe, besser nach der Liste oben!
Dim creditsaveOld As String = "
select ba_KundenNr FROM tblBonitaetsauskunft WHERE ba_Pruefungstool = 'creditsafe API'
EXCEPT
SELECT * FROM ( SELECT ba_KundenNr
FROM tblBonitaetsauskunft
WHERE ba_Pruefungstool = 'creditsafe API' and cast(ba_Datum as Date) >= '" & datum & "'
UNION ALL
SELECT e.KundenNr
FROM (
SELECT e.KundenNr,
e.eventDate,
'creditsafe API' AS Source
FROM [VERAG].[dbo].[tblCreditsafeEvents] e
INNER JOIN [VERAG].[dbo].[tblBonitaetsauskunft] b
ON e.bonId = b.ba_id
WHERE b.ba_Pruefungstool = 'creditsafe API'
AND (e.localEventCode IN ('CL','CR') OR e.globalEventCode IN ('CL','CR'))
) e
WHERE cast(e.eventDate as Date) >= '" & datum & "'
GROUP BY Source, e.KundenNr, cast(e.eventDate as Date)
) AS Temp"
Dim creditsave As String = "select distinct(ba_KundenNr) from Kunden
inner join tblKundenErweitert on Kunden.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 & "'", "")
If False Then
creditsave &= " and ba_KundenNr = 720249"
End If
Dim dtCreditsafe As DataTable = (New SQL).loadDgvBySql(creditsave, "FMZOLL")
If dtCreditsafe.Rows.Count = 0 Then Exit Sub
Dim cs = New cCreditSafeAPI("creditsafe")
If cs.authenticate() = "200" Then
For Each row As DataRow In dtCreditsafe.Rows
Dim KUNDE_ERW As New cKundenErweitert(row("ba_KundenNr"))
Dim company As New cCreditSafeAPI.Company("", "", "", "", KUNDE_ERW.kde_CreditSaveNo, KUNDE_ERW.kde_CreditSaveId, Nothing, "", "", "", "", "", "", "", "", "", KUNDE_ERW.kde_KundenNr)
If txtCSDate.Text <> "" AndAlso IsDate(txtCSDate.Text) Then
company.lastChecked = CDate(txtCSDate.Text)
End If
Dim currentBonID As Integer = (New SQL).getValueTxtBySql("Select Top(1) isnull(ba_id, -1) FROM [tblBonitaetsauskunft] where ba_KundenNr = " & KUNDE_ERW.kde_KundenNr & " AND [ba_Pruefungstool] = 'creditsafe API' ORDER BY ba_Datum DESC", "FMZOLL")
If currentBonID > 0 Then company.csBonID = currentBonID
Dim dt As New DataTable()
cs.getCompanyEvents(company, dt, checkDate, upateKunden, False,, setzeKundenbesonderheiten, sendMail)
Thread.Sleep(1000)
Next
End If
End Sub
Private Sub UploadCompaniesToCreditsafe()
Dim cs = New cCreditSafeAPI("creditsafe") Dim cs = New cCreditSafeAPI("creditsafe")
Dim addCreditsave As Boolean = False Dim addCreditsave As Boolean = False
If cs.authenticate() = "200" Then addCreditsave = True If cs.authenticate() = "200" Then addCreditsave = True
While addCreditsave While addCreditsave
Dim creditsave As String = "select kde_CreditSaveNo 'Safe Number', '' as 'Local Org No.',left(kde_CreditSaveId,2) as 'Country Code', '' as Reference, '' as 'Free Text', '' as 'Personal Limit' from tblKundenErweitert where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 0 group by kde_CreditSaveNo, kde_CreditSaveId" Dim creditsave As String = "select kde_CreditSaveNo 'Safe Number', '' as 'Local Org No.',left(kde_CreditSaveId,2) as 'Country Code', '' as Reference, '' as 'Free Text', '' as 'Personal Limit' from tblKundenErweitert where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 0 group by kde_CreditSaveNo, kde_CreditSaveId"
Dim dtCreditsafe_CSV As DataTable = sql.loadDgvBySql(creditsave, "FMZOLL") Dim dtCreditsafe_CSV As DataTable = (New SQL).loadDgvBySql(creditsave, "FMZOLL")
If dtCreditsafe_CSV.Rows.Count = 0 Then If dtCreditsafe_CSV.Rows.Count = 0 Then
addCreditsave = False addCreditsave = False
@@ -6271,7 +6442,7 @@ weiter:
Dim Path As String = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genCSVFromDT(dtCreditsafe_CSV,,, "importcsv") Dim Path As String = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genCSVFromDT(dtCreditsafe_CSV,,, "importcsv")
If Path <> "" Then If Path <> "" Then
If cs.AddCompaniesCSVToPortfolio(Path) <> "OK" Then 'bei Fehler abbrechen! If cs.AddCompaniesCSVToPortfolio(Path).Contains("400") Then 'bei Fehler abbrechen!
Exit While Exit While
End If End If
@@ -6290,105 +6461,31 @@ weiter:
Next Next
If CS_ID <> "" Then If CS_ID <> "" Then
addCreditsave = sql.doSQL("Update tblKundenErweitert set kde_CSPortfolioAdded = 1 where kde_CreditSaveNo in (" & CS_ID & ")", "FMZOLL") addCreditsave = (New SQL).doSQL("Update tblKundenErweitert set kde_CSPortfolioAdded = 1 where kde_CreditSaveNo in (" & CS_ID & ")", "FMZOLL")
End If End If
End While End While
End Sub Dim countMissing As Integer = 0
Dim countUploaeded As Integer = 0
Private Sub countmissingCSinPortfolio()
Dim count As Integer = 0
Dim sql As New SQL Dim sql As New SQL
Dim sqlCount As String = sql.getValueTxtBySql("select isnull(count(*),0) from tblKundenErweitert where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 0 group by kde_CreditSaveNo, kde_CreditSaveId", "FMZOLL") lblCSPortfolio.Text = "im Portfolio:"
lblMissingCS.Text = "hochzuladende Unternehmen in CS: "
If sqlCount <> "" AndAlso IsNumeric(sqlCount) Then count = CInt(sqlCount) Dim sqlCountNotUploaded As String = sql.getValueTxtBySql("select count(distinct(kde_CreditSaveNo)) from tblKundenErweitert where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 0", "FMZOLL")
lblMissingCS.Text &= count Dim sqlCountUploaded As String = sql.getValueTxtBySql("select count(distinct(kde_CreditSaveNo)) from tblKundenErweitert where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 1", "FMZOLL")
End Sub If sqlCountNotUploaded <> "" AndAlso IsNumeric(sqlCountNotUploaded) Then countMissing = CInt(sqlCountNotUploaded)
Private Sub Button28_Click_1(sender As Object, e As EventArgs) Handles Button28.Click If sqlCountUploaded <> "" AndAlso IsNumeric(sqlCountUploaded) Then countUploaeded = CInt(sqlCountUploaded)
Dim datumString = "" lblMissingCS.Text &= countMissing
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
If cbCheckDate.Checked Then
If txtCSDate.Text <> "" AndAlso IsDate(txtCSDate.Text) Then
datumString = txtCSDate.Text
Else
MsgBox("Datum hat falsches Format!" & vbNewLine & "Vorgang wird abgebrochen!")
Exit Sub
End If
Else
datumString = Today.ToShortDateString
End If
Dim creditsave As String = "
select ba_KundenNr FROM tblBonitaetsauskunft WHERE ba_Pruefungstool = 'creditsafe API'
EXCEPT
SELECT * FROM ( SELECT ba_KundenNr
FROM tblBonitaetsauskunft
WHERE ba_Pruefungstool = 'creditsafe API' and cast(ba_Datum as Date) >= '" & datumString & "'
UNION ALL
SELECT e.KundenNr
FROM (
SELECT e.KundenNr,
e.eventDate,
'creditsafe API' AS Source
FROM [VERAG].[dbo].[tblCreditsafeEvents] e
INNER JOIN [VERAG].[dbo].[tblBonitaetsauskunft] b
ON e.bonId = b.ba_id
WHERE b.ba_Pruefungstool = 'creditsafe API'
AND (e.localEventCode IN ('CL','CR') OR e.globalEventCode IN ('CL','CR'))
) e
WHERE cast(e.eventDate as Date) >= '" & datumString & "'
GROUP BY Source, e.KundenNr, cast(e.eventDate as Date)
) AS Temp"
Dim dtCreditsafe As DataTable = (New SQL).loadDgvBySql(creditsave, "FMZOLL")
If dtCreditsafe.Rows.Count = 0 Then Exit Sub
Dim cs = New cCreditSafeAPI("creditsafe")
If cs.authenticate() = "200" Then
For Each row As DataRow In dtCreditsafe.Rows
Dim KUNDE_ERW As New cKundenErweitert(row("ba_KundenNr"))
Dim company As New cCreditSafeAPI.Company("", "", "", "", KUNDE_ERW.kde_CreditSaveNo, KUNDE_ERW.kde_CreditSaveId, Nothing, "", "", "", "", "", "", "", "", "", KUNDE_ERW.kde_KundenNr)
If txtCSDate.Text <> "" AndAlso IsDate(txtCSDate.Text) Then
company.lastChecked = CDate(txtCSDate.Text)
End If
Dim currentBonID As Integer = (New SQL).getValueTxtBySql("Select Top(1) isnull(ba_id, -1) FROM [tblBonitaetsauskunft] where ba_KundenNr = " & KUNDE_ERW.kde_KundenNr & " AND [ba_Pruefungstool] = 'creditsafe API' ORDER BY ba_Datum DESC", "FMZOLL")
If currentBonID > 0 Then company.csBonID = currentBonID
Dim dt As New DataTable()
cs.getCompanyEvents(company, dt, cbCheckDate.Checked, bcxKundendatenaktCS.Checked)
Thread.Sleep(2000)
Next
End If
lblCS_DB.Text = sqlCountUploaded
End Sub End Sub
Private Sub cbCheckDate_CheckedChanged(sender As Object, e As EventArgs) Handles cbCheckDate.CheckedChanged Private Sub cbCheckDate_CheckedChanged(sender As Object, e As EventArgs) Handles cbCheckDate.CheckedChanged