Bon, kundenubersicht, etc.

This commit is contained in:
2025-09-03 17:31:59 +02:00
parent 1eccc1c634
commit 8c4d04703b
3 changed files with 299 additions and 118 deletions

View File

@@ -43,9 +43,10 @@ Public Class frmBonitätsverlauf
If KdSearchBox1.KdNr_value > 0 Then If KdSearchBox1.KdNr_value > 0 Then
With MyDatagridview1 With MyDatagridview1
Dim sqlstr As String = "" Dim sqlstr As String = ""
Dim KD_ERW As New cKundenErweitert(KdSearchBox1.KdNr_value) Dim KD_ERW As New cKundenErweitert(KdSearchBox1.KdNr_value)
If KD_ERW.kde_CreditSaveId IsNot Nothing AndAlso KD_ERW.kde_CreditSaveId <> "" AndAlso newView Then If KD_ERW.kde_CreditSaveId IsNot Nothing AndAlso KD_ERW.kde_CreditSaveId <> "" Then
Dim sqlIndex As String = "" Dim sqlIndex As String = ""
@@ -55,13 +56,7 @@ Public Class frmBonitätsverlauf
sqlIndex = "ba_CreditSaveBonitaetsIndex" sqlIndex = "ba_CreditSaveBonitaetsIndex"
End If End If
sqlstr &= "SELECT * Dim sqlNewViewAdd As String = " UNION ALL
FROM (
SELECT ba_Datum," & sqlIndex & " ,ba_GruendundsDatum,ba_Umsatz,ba_Mitarbeiter,ba_Hoechstkredit,ba_Sachbearbeiter,ba_Zahlungsweise,ba_GFName,ba_Risikostufe,ba_CreditSaveRisikoklasse,ba_Pruefungstool,ba_GSName,ba_Geschaeftszweck,ba_datenarchivId
FROM tblBonitaetsauskunft
WHERE ba_KundenNr = " & KdSearchBox1.KdNr_value & "
UNION ALL
SELECT SELECT
CAST(e.eventDate AS DATE) AS ba_Datum,MAX(e.crValue) AS " & sqlIndex & ",NULL AS ba_GruendundsDatum,NULL AS ba_Umsatz,NULL AS ba_Mitarbeiter,MAX(e.clValue) AS ba_Hoechstkredit,MAX(e.sachbearbeiter) AS ba_Sachbearbeiter,NULL AS ba_Zahlungsweise,NULL AS ba_GFName,NULL AS ba_Risikostufe,NULL AS ba_CreditSaveRisikoklasse,Source AS ba_Pruefungstool,NULL AS ba_GSName,NULL AS ba_Geschaeftszweck,NULL AS ba_datenarchivId CAST(e.eventDate AS DATE) AS ba_Datum,MAX(e.crValue) AS " & sqlIndex & ",NULL AS ba_GruendundsDatum,NULL AS ba_Umsatz,NULL AS ba_Mitarbeiter,MAX(e.clValue) AS ba_Hoechstkredit,MAX(e.sachbearbeiter) AS ba_Sachbearbeiter,NULL AS ba_Zahlungsweise,NULL AS ba_GFName,NULL AS ba_Risikostufe,NULL AS ba_CreditSaveRisikoklasse,Source AS ba_Pruefungstool,NULL AS ba_GSName,NULL AS ba_Geschaeftszweck,NULL AS ba_datenarchivId
@@ -71,7 +66,7 @@ Public Class frmBonitätsverlauf
e.portfolioId, e.portfolioId,
e.eventDate, e.eventDate,
e.sachbearbeiter, e.sachbearbeiter,
CASE WHEN e.localEventCode = 'CR' OR e.globalEventCode = 'CR' THEN e.newValueCR ELSE 0 END AS crValue, CASE WHEN e.localEventCode = 'CR' OR e.globalEventCode = 'CR' THEN " & IIf(Not KD_ERW.kde_CreditSaveId.ToLower.Contains("at"), "e.newValueCRIndex", "e.newValueCR") & " ELSE 0 END AS crValue,
CASE WHEN e.localEventCode = 'CL' OR e.globalEventCode = 'CL' THEN e.newValueCL ELSE 0 END AS clValue, CASE WHEN e.localEventCode = 'CL' OR e.globalEventCode = 'CL' THEN e.newValueCL ELSE 0 END AS clValue,
'creditsafe API' AS Source 'creditsafe API' AS Source
FROM [VERAG].[dbo].[tblCreditsafeEvents] e FROM [VERAG].[dbo].[tblCreditsafeEvents] e
@@ -81,10 +76,20 @@ Public Class frmBonitätsverlauf
AND b.ba_Pruefungstool = 'creditsafe API' AND b.ba_Pruefungstool = 'creditsafe API'
AND (e.localEventCode IN ('CL','CR') OR e.globalEventCode IN ('CL','CR')) AND (e.localEventCode IN ('CL','CR') OR e.globalEventCode IN ('CL','CR'))
) e ) e
GROUP BY e.companyId, e.portfolioId, CAST(e.eventDate AS DATE), Source GROUP BY e.companyId, e.portfolioId, CAST(e.eventDate AS DATE), Source"
) AS Temp
sqlstr &= "SELECT *
FROM (
SELECT ba_Datum," & sqlIndex & " ,ba_GruendundsDatum,ba_Umsatz,ba_Mitarbeiter,ba_Hoechstkredit,ba_Sachbearbeiter,ba_Zahlungsweise,ba_GFName,ba_Risikostufe,ba_CreditSaveRisikoklasse,ba_Pruefungstool,ba_GSName,ba_Geschaeftszweck,ba_datenarchivId
FROM tblBonitaetsauskunft
WHERE ba_KundenNr = " & KdSearchBox1.KdNr_value & IIf(newView, sqlNewViewAdd, "") & ") AS Temp
ORDER BY Temp.ba_Datum DESC;" ORDER BY Temp.ba_Datum DESC;"
Else
sqlstr = "SELECT * FROM [tblBonitaetsauskunft] where ba_KundenNr=" & KdSearchBox1.KdNr_value & " ORDER BY ba_Datum DESC"
End If End If

View File

@@ -3185,6 +3185,7 @@ Public Class usrCntlKundenuebersicht
Exit Sub Exit Sub
End If End If
'#wenn PDF und JSON in einem geht, dann folgende Zeile auskommentieren!
pdfObject = cs.getPDF(company, failureDesc) pdfObject = cs.getPDF(company, failureDesc)
'cs.AddCompanyToPortfolio(company) 'cs.AddCompanyToPortfolio(company)
@@ -3352,14 +3353,17 @@ Public Class usrCntlKundenuebersicht
If cs.authenticate() = "200" Then If cs.authenticate() = "200" Then
Dim company As New cCreditSafeAPI.Company("", "", "", "", KUNDE_ERW.kde_CreditSaveNo, KUNDE_ERW.kde_CreditSaveId, Nothing, "", "", "", "", "", "", "", "", "", KUNDE.KundenNr) Dim company As New cCreditSafeAPI.Company("", "", "", "", KUNDE_ERW.kde_CreditSaveNo, KUNDE_ERW.kde_CreditSaveId, Nothing, "", "", "", "", "", "", "", "", "", KUNDE.KundenNr)
company.lastChecked = IIf(IsDate(lastChecked), lastChecked, Today().AddDays(-1)) company.lastChecked = IIf(IsDate(lastChecked), lastChecked, Today().AddDays(-30))
Dim currentBonID As Integer = SQL.getValueTxtBySql("Select Top(1) isnull(ba_id, -1) FROM [tblBonitaetsauskunft] where ba_KundenNr = " & KUNDE.KundenNr & " AND [ba_Pruefungstool] = 'creditsafe API' ORDER BY ba_Datum DESC", "FMZOLL") Dim currentBonID As Integer = SQL.getValueTxtBySql("Select Top(1) isnull(ba_id, -1) FROM [tblBonitaetsauskunft] where ba_KundenNr = " & KUNDE.KundenNr & " AND [ba_Pruefungstool] = 'creditsafe API' ORDER BY ba_Datum DESC", "FMZOLL")
If currentBonID > 0 Then company.csBonID = currentBonID If currentBonID > 0 Then company.csBonID = currentBonID
Dim dt As New DataTable() Dim dt As New DataTable()
cs.getCompanyEvents(company, dt, checklastDate) If cs.getCompanyEvents(company, dt, checklastDate, True) = "Error" Then
Exit Sub
End If
If dt.Rows.Count > 0 Then If dt.Rows.Count > 0 Then
Dim frm As New Form Dim frm As New Form
@@ -3387,7 +3391,14 @@ Public Class usrCntlKundenuebersicht
frm.Controls.Add(dgv) frm.Controls.Add(dgv)
frm.StartPosition = FormStartPosition.CenterScreen frm.StartPosition = FormStartPosition.CenterScreen
frm.ShowDialog() If frm.ShowDialog().Cancel Then
initCreditsave()
setKD(kdNr)
End If
End If End If

View File

@@ -219,6 +219,7 @@ Public Class cCreditSafeAPI
If acceptContentType.Contains("application/pdf") Then If acceptContentType.Contains("application/pdf") Then
'If acceptContentType.Contains("application/json+pdf") Or acceptContentType.Contains("application/json") Then
responseJson = rest.FullRequestNoBodyBd(method, url, pdfData) responseJson = rest.FullRequestNoBodyBd(method, url, pdfData)
If (rest.LastMethodSuccess <> True) Then If (rest.LastMethodSuccess <> True) Then
@@ -419,14 +420,20 @@ Public Class cCreditSafeAPI
End Function End Function
Shared Function getCompanyEvents(company As Company, ByRef dtEvents As DataTable, Optional checklastChecked As Boolean = False) As String Shared Function getCompanyEvents(company As Company, ByRef dtEvents As DataTable, Optional checklastChecked As Boolean = False, Optional updateKunden As Boolean = False) As String
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
'rest.AddQueryParam("from", Today().AddDays(-1))
Dim failureDesc As String Dim failureDesc As String
Dim myUrl As String = API_STRING & "/v1/monitoring/companies/" & company.creditSafeId & "/events" & IIf(checklastChecked, "?startDate=" & company.lastChecked, "") Dim myUrl As String = API_STRING & "/v1/monitoring/companies/" & company.creditSafeId & "/events" & IIf(checklastChecked, "?startDate=" & company.lastChecked.ToString("yyyy-MM-ddTHH:mm:ss"), "")
Dim jsonRespString = SendGetRequestWithAuthHeader(myUrl, company, "application/json", "GET", token, failureDesc) Dim jsonRespString = SendGetRequestWithAuthHeader(myUrl, company, "application/json", "GET", token, failureDesc)
If failureDesc <> "" Then
MsgBox(failureDesc)
Return "Error"
End If
Dim json As New Chilkat.JsonObject Dim json As New Chilkat.JsonObject
Dim success As Boolean = json.Load(jsonRespString) Dim success As Boolean = json.Load(jsonRespString)
@@ -464,10 +471,10 @@ Public Class cCreditSafeAPI
Dim CL As Double = -1 Dim CL As Double = -1
Dim CR As Integer = -1 Dim CR As Integer = -1
Dim CL_Date As Date = company.lastChecked Dim CL_Datum As Date = company.lastChecked
Dim CR_Date As Date = company.lastChecked Dim CR_Datum As Date = company.lastChecked
For i = 0 To 1 ' For i = 0 To 1
Dim j As Integer = 0 Dim j As Integer = 0
@@ -522,6 +529,7 @@ Public Class cCreditSafeAPI
cEvent.oldValueCL = cEvent.oldValue cEvent.oldValueCL = cEvent.oldValue
ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then
cEvent.oldValueCR = cEvent.oldValue cEvent.oldValueCR = cEvent.oldValue
cEvent.oldValueCRIndex = calculatedBonIndexFromBonScore(cEvent.oldValue, cEvent.oldRiskClass)
End If End If
Else Else
@@ -533,6 +541,7 @@ Public Class cCreditSafeAPI
cEvent.oldValue = Regex.Replace(cEvent.oldValue, "\s+", "") cEvent.oldValue = Regex.Replace(cEvent.oldValue, "\s+", "")
cEvent.oldValue = Regex.Replace(cEvent.oldValue, "[^\d]", "") cEvent.oldValue = Regex.Replace(cEvent.oldValue, "[^\d]", "")
cEvent.oldValueCR = cEvent.oldValue cEvent.oldValueCR = cEvent.oldValue
cEvent.oldValueCRIndex = calculatedBonIndexFromBonScore(cEvent.oldValue, cEvent.oldRiskClass)
End If End If
End If End If
@@ -542,10 +551,11 @@ Public Class cCreditSafeAPI
If cEvent.newValue IsNot Nothing AndAlso IsNumeric(cEvent.newValue) AndAlso Not cEvent.newValue.ToString.Contains("") Then If cEvent.newValue IsNot Nothing AndAlso IsNumeric(cEvent.newValue) AndAlso Not cEvent.newValue.ToString.Contains("") Then
If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then
cEvent.newValueCL = cEvent.newValue cEvent.newValueCL = cEvent.newValue
setCL_CR_Entry(CDate(cEvent.eventDate), "CL", cEvent.newValueCL, CL, CR, CL_Date, CR_Date) setCL_CR_Entry(CDate(cEvent.eventDate), "CL", cEvent.newValueCL, CL, CR, CL_Datum, CR_Datum)
ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then
cEvent.newValueCR = cEvent.newValue cEvent.newValueCR = cEvent.newValue
setCL_CR_Entry(CDate(cEvent.eventDate), "CR", cEvent.newValueCR, CL, CR, CL_Date, CR_Date) cEvent.newValueCRIndex = calculatedBonIndexFromBonScore(cEvent.newValue, cEvent.newRiskClass)
setCL_CR_Entry(CDate(cEvent.eventDate), "CR", cEvent.newValueCR, CL, CR, CL_Datum, CR_Datum)
End If End If
Else Else
@@ -553,13 +563,14 @@ Public Class cCreditSafeAPI
cEvent.newValue = Regex.Replace(cEvent.newValue, "\s+", "") cEvent.newValue = Regex.Replace(cEvent.newValue, "\s+", "")
cEvent.newValue = Regex.Replace(cEvent.newValue, "[^\d]", "") cEvent.newValue = Regex.Replace(cEvent.newValue, "[^\d]", "")
cEvent.newValueCL = cEvent.newValue cEvent.newValueCL = cEvent.newValue
setCL_CR_Entry(CDate(cEvent.eventDate), "CL", cEvent.newValueCL, CL, CR, CL_Date, CR_Date) setCL_CR_Entry(CDate(cEvent.eventDate), "CL", cEvent.newValueCL, CL, CR, CL_Datum, CR_Datum)
ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then
cEvent.newValue = Regex.Replace(cEvent.newValue, "\s+", "") cEvent.newValue = Regex.Replace(cEvent.newValue, "\s+", "")
cEvent.newValue = Regex.Replace(cEvent.newValue, "[^\d]", "") cEvent.newValue = Regex.Replace(cEvent.newValue, "[^\d]", "")
cEvent.newValueCR = cEvent.newValue cEvent.newValueCR = cEvent.newValue
setCL_CR_Entry(CDate(cEvent.eventDate), "CR", cEvent.newValueCR, CL, CR, CL_Date, CR_Date) cEvent.newValueCRIndex = calculatedBonIndexFromBonScore(cEvent.newValue, cEvent.newRiskClass)
setCL_CR_Entry(CDate(cEvent.eventDate), "CR", cEvent.newValueCR, CL, CR, CL_Datum, CR_Datum)
End If End If
End If End If
@@ -573,7 +584,7 @@ Public Class cCreditSafeAPI
j = j + 1 j = j + 1
End While End While
Next 'Next
@@ -586,19 +597,49 @@ Public Class cCreditSafeAPI
'viewEvents = New DataView(dtEvents, "localEventCode IN ('CL','CR') or e.globalEventCode IN ('CL','CR')", "", DataViewRowState.CurrentRows) 'viewEvents = New DataView(dtEvents, "localEventCode IN ('CL','CR') or e.globalEventCode IN ('CL','CR')", "", DataViewRowState.CurrentRows)
End If End If
If company.kdNr > 0 Then If company.kdNr > 0 AndAlso updateKunden Then
Dim KUNDE As New cKunde(company.kdNr) Dim KUNDE As New cKunde(company.kdNr)
If KUNDE.Bonitätsdatum <= CL_Date Or KUNDE.Bonitätsdatum <= CR_Date Then If KUNDE.Bonitätsdatum <= CL_Datum Or KUNDE.Bonitätsdatum <= CR_Datum Then
If KUNDE.Bonität <> CR Then Dim Index As Double = -1
KUNDE.Bonität = CR Dim ADR As New cAdressen(KUNDE.KundenNr)
KUNDE.Bonitätsdatum = CDate(CR_Date) Dim riskClass As String = ""
Dim riskClassChanged As Boolean = False
If Not (ADR.LandKz = "AT" Or ADR.LandKz = "A") Then 'bei nicht österr. den Index nehmen, sonst den Score
Index = calculatedBonIndexFromBonScore(CR, riskClass)
Else
calculatedBonIndexFromBonScore(CR, riskClass)
End If End If
If KUNDE.Höchstkredit <> CL Then If Index <> -1 Then
If KUNDE.Bonität <> Index Then
KUNDE.Bonität = Index
riskClassChanged = True
KUNDE.Bonitätsdatum = CDate(CR_Datum)
End If
Else
If KUNDE.Bonität <> CR AndAlso CR <> 0 Then
KUNDE.Bonität = CR
riskClassChanged = True
KUNDE.Bonitätsdatum = CDate(CR_Datum)
End If
If KUNDE.Höchstkredit <> CL AndAlso CL <> -1 Then
KUNDE.Höchstkredit = CL KUNDE.Höchstkredit = CL
KUNDE.Bonitätsdatum = CDate(CL_Date) riskClassChanged = True
If KUNDE.Bonitätsdatum <= CDate(CL_Datum) Then
KUNDE.Bonitätsdatum = CDate(CL_Datum)
End If
End If
End If
If riskClassChanged Then
Dim KUNDE_ERW As New cKundenErweitert(KUNDE.KundenNr)
KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass
KUNDE_ERW.SAVE()
End If End If
KUNDE.SAVE() KUNDE.SAVE()
@@ -613,14 +654,14 @@ Public Class cCreditSafeAPI
End Function End Function
Private Shared Sub setCL_CR_Entry(cs_date As Date, type As String, value As Object, CL As Double, CR As Integer, CL_Date As Date, CR_Date As Date) Private Shared Sub setCL_CR_Entry(ByVal cs_date As Date, ByVal type As String, ByRef value As Object, ByRef CL As Double, ByRef CR As Integer, ByRef CL_Datum As Date, ByRef CR_Datum As Date)
Select Case type Select Case type
Case "CR" Case "CR"
Dim saveCR As Boolean = False Dim saveCR As Boolean = False
If CR_Date <= cs_date Then If CR_Datum <= cs_date Then
cs_date = CR_Date CR_Datum = cs_date
saveCR = True saveCR = True
End If End If
@@ -628,8 +669,8 @@ Public Class cCreditSafeAPI
Case "CL" Case "CL"
Dim saveCL As Boolean = False Dim saveCL As Boolean = False
If CL_Date <= cs_date Then If CL_Datum <= cs_date Then
cs_date = CL_Date CL_Datum = cs_date
saveCL = True saveCL = True
End If End If
@@ -975,6 +1016,124 @@ Public Class cCreditSafeAPI
End Function End Function
Shared Function calculatedBonIndexFromBonScore(score As Integer, ByRef riskClass As String) As Double
Select Case score
Case 91 To 100
riskClass = "A"
Case 81 To 90
riskClass = "A"
Case 71 To 80
riskClass = "B"
Case 61 To 70
riskClass = "B"
Case 51 To 60
riskClass = "C"
Case 35 To 50
riskClass = "C"
Case 25 To 34
riskClass = "D"
Case 15 To 24
riskClass = "D"
Case 1 To 14
riskClass = "D"
Case Else
riskClass = "E"
End Select
Select Case score
Case 0
Return 6
Case 1 To 10
Return 5
Case 11 To 12
Return 4.9
Case 13 To 14
Return 4.8
Case 15 To 16
Return 4.7
Case 17 To 18
Return 4.6
Case 19 To 20
Return 4.5
Case 21 To 22
Return 4.4
Case 23 To 25
Return 4.3
Case 26 To 28
Return 4.2
Case 29 To 31
Return 4.1
Case 32 To 34
Return 4
Case 35 To 38
Return 3.9
Case 39 To 41
Return 3.8
Case 42 To 44
Return 3.7
Case 45 To 47
Return 3.6
Case 48 To 50
Return 3.5
Case 51 To 52
Return 3.4
Case 53 To 54
Return 3.3
Case 55 To 56
Return 3.2
Case 57 To 58
Return 3.1
Case 59 To 60
Return 3
Case 61 To 62
Return 2.9
Case 63 To 64
Return 2.8
Case 65 To 66
Return 2.7
Case 67 To 68
Return 2.6
Case 69 To 70
Return 2.5
Case 71 To 72
Return 2.4
Case 73 To 74
Return 2.3
Case 75 To 76
Return 2.2
Case 77 To 78
Return 2.1
Case 79 To 80
Return 2
Case 81 To 82
Return 1.9
Case 83 To 84
Return 1.8
Case 85 To 86
Return 1.7
Case 87 To 88
Return 1.6
Case 89 To 90
Return 1.5
Case 91 To 92
Return 1.4
Case 93 To 94
Return 1.3
Case 95 To 96
Return 1.2
Case 97 To 98
Return 1.1
Case 99 To 100
Return 1
Case Else
Return 6
End Select
End Function
Public Class CreditSafeUser Public Class CreditSafeUser
Public Property username As String Public Property username As String
@@ -1067,6 +1226,10 @@ Public Class cCreditSafeAPI
Property oldValueCL As Object = Nothing Property oldValueCL As Object = Nothing
Property newValueCL As Object = Nothing Property newValueCL As Object = Nothing
Property kundenNr As Integer Property kundenNr As Integer
Property newValueCRIndex As Object = Nothing
Property oldValueCRIndex As Object = Nothing
Property oldRiskClass As String
Property newRiskClass As String
Public hasEntry = False Public hasEntry = False
@@ -1095,6 +1258,8 @@ Public Class cCreditSafeAPI
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("oldValueCL", oldValueCL)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("oldValueCL", oldValueCL))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("newValueCL", newValueCL)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("newValueCL", newValueCL))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("kundenNr", kundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("kundenNr", kundenNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("newValueCRIndex", newValueCRIndex))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("oldValueCRIndex", oldValueCRIndex))
Return list Return list