Creditsafe, etc.

This commit is contained in:
2025-09-05 17:19:03 +02:00
parent 594c9846a5
commit 68ba370fe5
2 changed files with 282 additions and 106 deletions

View File

@@ -9,6 +9,7 @@ Imports System.Xml
Imports MDM_Worker
Imports Renci.SshNet
Imports VERAG_PROG_ALLGEMEIN
Imports VERAG_PROG_ALLGEMEIN.cAllgemein
Imports VERAG_PROG_ALLGEMEIN.cTelotecAPI
Public Class frmStartOptions
@@ -830,6 +831,24 @@ Public Class frmStartOptions
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()
Case Else
@@ -4865,7 +4884,9 @@ Public Class frmStartOptions
getLatestBatchNrMSE()
ElseIf tbcntr.SelectedIndex = 5 Then
countmissingCSinPortfolio()
Dim count As Integer = 0
countmissingCSinPortfolio(count)
lbl_CS_online.Text = count
End If
End Sub
@@ -6253,17 +6274,167 @@ weiter:
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.
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
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 addCreditsave As Boolean = False
If cs.authenticate() = "200" Then addCreditsave = True
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 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
addCreditsave = False
@@ -6271,7 +6442,7 @@ weiter:
Dim Path As String = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genCSVFromDT(dtCreditsafe_CSV,,, "importcsv")
If Path <> "" Then
If cs.AddCompaniesCSVToPortfolio(Path) <> "OK" Then 'bei Fehler abbrechen!
If cs.AddCompaniesCSVToPortfolio(Path).Contains("400") Then 'bei Fehler abbrechen!
Exit While
End If
@@ -6290,105 +6461,31 @@ weiter:
Next
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 While
End Sub
Private Sub countmissingCSinPortfolio()
Dim count As Integer = 0
Dim countMissing As Integer = 0
Dim countUploaeded As Integer = 0
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 = ""
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
lblMissingCS.Text &= countMissing
lblCS_DB.Text = sqlCountUploaded
End Sub
Private Sub cbCheckDate_CheckedChanged(sender As Object, e As EventArgs) Handles cbCheckDate.CheckedChanged