creditsafe-API
This commit is contained in:
@@ -8,6 +8,8 @@ Imports System.Runtime.InteropServices.ComTypes
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports System.Threading
|
||||
Imports System.Web.UI
|
||||
Imports com.sun.org.apache.xalan.internal.xsltc
|
||||
Imports com.sun.source.tree
|
||||
Imports Microsoft.VisualBasic.ApplicationServices
|
||||
Imports Org.BouncyCastle.Ocsp
|
||||
|
||||
@@ -144,23 +146,21 @@ Public Class cCreditSafeAPI
|
||||
Dim responseJson As String
|
||||
Dim pdfData As New Chilkat.BinData
|
||||
|
||||
rest.VerboseLogging = 1
|
||||
|
||||
If isMonitoring Then
|
||||
|
||||
If csvImport Then
|
||||
|
||||
Dim fileInfo As New FileInfo(csvFile)
|
||||
|
||||
Dim content As String = File.ReadAllText(csvFile)
|
||||
'content = content.Replace(";", ",")
|
||||
'File.WriteAllText(csvFile, content)
|
||||
|
||||
Dim fileStream As New Chilkat.Stream
|
||||
fileStream.SourceFile = csvFile
|
||||
|
||||
rest.PartSelector = "1"
|
||||
|
||||
rest.AddHeader("Content-Disposition", "form-data; name=""importcsv""")
|
||||
rest.AddHeader("Content-Type", "file")
|
||||
'rest.SetMultipartBodyString(content)
|
||||
rest.AddHeader("Content-Disposition", "form-data; name=""importcsv""; filename=""importcsv.csv""")
|
||||
rest.AddHeader("Content-Type", "text/csv")
|
||||
rest.SetMultipartBodyStream(fileStream)
|
||||
|
||||
rest.PartSelector = "0"
|
||||
@@ -265,7 +265,6 @@ Public Class cCreditSafeAPI
|
||||
failureDesc = rest.ResponseStatusText & IIf(responseJson <> "", vbNewLine & responseJson, "")
|
||||
Return failureDesc
|
||||
Else
|
||||
|
||||
Return responseJson
|
||||
End If
|
||||
End If
|
||||
@@ -281,6 +280,44 @@ Public Class cCreditSafeAPI
|
||||
End Function
|
||||
|
||||
|
||||
Shared Sub test(csvFile As String)
|
||||
|
||||
|
||||
|
||||
' Note: The above code does not need to be repeatedly called for each REST request.
|
||||
' The rest object can be setup once, and then many requests can be sent. Chilkat will automatically
|
||||
' reconnect within a FullRequest* method as needed. It is only the very first connection that is explicitly
|
||||
' made via the Connect method.
|
||||
|
||||
rest.PartSelector = "1"
|
||||
Dim fileStream1 As New Chilkat.Stream
|
||||
fileStream1.SourceFile = csvFile
|
||||
rest.AddHeader("Content-Disposition", "form-data; name=""importcsv""; filename=" & csvFile & "")
|
||||
rest.AddHeader("Content-Type", "text/csv")
|
||||
rest.SetMultipartBodyStream(fileStream1)
|
||||
|
||||
rest.PartSelector = "0"
|
||||
rest.AddHeader("Content-Type", "multipart/form-data")
|
||||
|
||||
Dim strResponseBody As String = rest.FullRequestMultipart("POST", "/v1/monitoring/portfolios/1662419/import")
|
||||
If (rest.LastMethodSuccess <> True) Then
|
||||
Debug.WriteLine(rest.LastErrorText)
|
||||
|
||||
End If
|
||||
|
||||
Dim respStatusCode As Integer = rest.ResponseStatusCode
|
||||
Debug.WriteLine("response status code = " & respStatusCode)
|
||||
If (respStatusCode >= 400) Then
|
||||
Debug.WriteLine("Response Status Code = " & respStatusCode)
|
||||
Debug.WriteLine("Response Header:")
|
||||
Debug.WriteLine(rest.ResponseHeader)
|
||||
Debug.WriteLine("Response Body:")
|
||||
Debug.WriteLine(strResponseBody)
|
||||
|
||||
End If
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
@@ -321,6 +358,27 @@ Public Class cCreditSafeAPI
|
||||
|
||||
End Function
|
||||
|
||||
Shared Function GetCompaniesFromPortfolio(ByRef totalCount As Integer, Optional PortfolioID As String = "1662419") As String
|
||||
|
||||
Dim myUri As String = API_STRING & "/v1/monitoring/portfolios/" & PortfolioID & "/companies" 'Default
|
||||
|
||||
Dim jsonRespString = SendGetRequestWithAuthHeader(myUri, Nothing, "application/json", "GET", token, "", False)
|
||||
|
||||
Dim json As New Chilkat.JsonObject
|
||||
Dim success As Boolean = json.Load(jsonRespString)
|
||||
|
||||
|
||||
If IsNumeric(json.StringOf("totalCount")) Then
|
||||
totalCount = CInt(json.StringOf("totalCount"))
|
||||
Else
|
||||
totalCount = -1
|
||||
End If
|
||||
|
||||
|
||||
Return jsonRespString
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Shared Function searchCompanies(company As Company, ByRef dataTable As DataTable) As String
|
||||
|
||||
@@ -420,14 +478,22 @@ Public Class cCreditSafeAPI
|
||||
End Function
|
||||
|
||||
|
||||
Shared Function getCompanyEvents(company As Company, ByRef dtEvents As DataTable, Optional checklastChecked As Boolean = False, Optional updateKunden As Boolean = False, Optional showError 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, Optional showError As Boolean = False, Optional getTotalNr As Boolean = False, Optional setzeKundenbesonderheiten As Boolean = False, Optional sendMail As Boolean = False) As String
|
||||
|
||||
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
|
||||
|
||||
'rest.AddQueryParam("from", Today().AddDays(-1))
|
||||
|
||||
Dim checkDate As String = ""
|
||||
|
||||
If company IsNot Nothing AndAlso IsDate(company.lastChecked) Then
|
||||
checkDate = company.lastChecked.ToString("yyyy-MM-ddTHH:mm:ss")
|
||||
Else
|
||||
checkDate = Today().AddDays(-30).ToString("yyyy-MM-ddTHH:mm:ss")
|
||||
End If
|
||||
|
||||
Dim failureDesc As String
|
||||
Dim myUrl As String = API_STRING & "/v1/monitoring/companies/" & company.creditSafeId & "/events" & IIf(checklastChecked, "?startDate=" & company.lastChecked.ToString("yyyy-MM-ddTHH:mm:ss"), "")
|
||||
Dim myUrl As String = API_STRING & "/v1/monitoring/companies/" & company.creditSafeId & "/events" & IIf(checklastChecked, "?startDate=" & checkDate, "")
|
||||
Dim jsonRespString = SendGetRequestWithAuthHeader(myUrl, company, "application/json", "GET", token, failureDesc)
|
||||
|
||||
If failureDesc <> "" Then
|
||||
@@ -458,7 +524,7 @@ Public Class cCreditSafeAPI
|
||||
dtEvents.Rows.Clear()
|
||||
|
||||
Dim num As Integer = json.SizeOfArray("data")
|
||||
If num = 0 Then
|
||||
If num = 0 OrElse getTotalNr Then
|
||||
Return json.StringOf("totalCount")
|
||||
End If
|
||||
|
||||
@@ -596,9 +662,13 @@ Public Class cCreditSafeAPI
|
||||
'viewEvents = New DataView(dtEvents, "localEventCode IN ('CL','CR') or e.globalEventCode IN ('CL','CR')", "", DataViewRowState.CurrentRows)
|
||||
End If
|
||||
|
||||
If company.kdNr > 0 AndAlso updateKunden AndAlso (CR <> -1000000 Or CL <> -1000000) Then
|
||||
Dim triggerMail As Boolean = False
|
||||
|
||||
If company.kdNr > 0 AndAlso (CR <> -1000000 Or CL <> -1000000) Then
|
||||
Dim KUNDE As New cKunde(company.kdNr)
|
||||
|
||||
Dim Mailtext As String = ""
|
||||
|
||||
If KUNDE.Bonitätsdatum <= CL_Datum Or KUNDE.Bonitätsdatum <= CR_Datum Then
|
||||
|
||||
Dim Index As Double = -1
|
||||
@@ -615,12 +685,14 @@ Public Class cCreditSafeAPI
|
||||
|
||||
If Index <> -1 Then
|
||||
If KUNDE_ERW.kde_CreditSaveBonitaetsIndex <> Index Then
|
||||
createInfo("B-INDEX", KUNDE_ERW, KUNDE, Index, riskClass, Mailtext, triggerMail, setzeKundenbesonderheiten)
|
||||
KUNDE_ERW.kde_CreditSaveBonitaetsIndex = Index
|
||||
KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass
|
||||
KUNDE.Bonitätsdatum = Today()
|
||||
End If
|
||||
Else
|
||||
If KUNDE_ERW.kde_CreditSaveBonitaetsScore <> CR AndAlso CR <> defaultCR Then
|
||||
createInfo("B-SCORE", KUNDE_ERW, KUNDE, CR, riskClass, Mailtext, triggerMail, setzeKundenbesonderheiten)
|
||||
KUNDE_ERW.kde_CreditSaveBonitaetsScore = CR
|
||||
KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass
|
||||
KUNDE.Bonitätsdatum = Today()
|
||||
@@ -628,16 +700,21 @@ Public Class cCreditSafeAPI
|
||||
End If
|
||||
|
||||
If KUNDE.Höchstkredit <> CL AndAlso CL <> defaultCL Then
|
||||
createInfo("KREDITLIMIT", KUNDE_ERW, KUNDE, CL, riskClass, Mailtext, triggerMail, setzeKundenbesonderheiten)
|
||||
KUNDE.Höchstkredit = CL
|
||||
If KUNDE.Bonitätsdatum <= CDate(CL_Datum) Then
|
||||
KUNDE.Bonitätsdatum = Today()
|
||||
End If
|
||||
End If
|
||||
|
||||
KUNDE_ERW.SAVE()
|
||||
If updateKunden Then KUNDE_ERW.SAVE()
|
||||
End If
|
||||
|
||||
KUNDE.SAVE()
|
||||
If updateKunden Then KUNDE.SAVE()
|
||||
|
||||
If triggerMail AndAlso sendMail Then
|
||||
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("as@verag.ag", IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & "CREDITSAFE " & KUNDE.KundenNr, "Änderungen der Creditsafe-Daten" & vbNewLine & vbNewLine & vbNewLine & Mailtext.ToString & vbNewLine & vbNewLine & vbNewLine & "*Automatic generated e-mail*",,,,, "d.breimaier@verag.ag")
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
@@ -1126,6 +1203,103 @@ Public Class cCreditSafeAPI
|
||||
End Select
|
||||
End Function
|
||||
|
||||
Shared Sub createInfo(typ As String, kundeErw As cKundenErweitert, kunde As cKunde, newValue As Object, risikoklasse As String, ByRef mailText As String, ByRef triggerMail As Boolean, setzeKundeninfo As Boolean)
|
||||
|
||||
Dim createInfo As Boolean = False
|
||||
|
||||
If newValue Is Nothing OrElse Not IsNumeric(newValue) Then
|
||||
Exit Sub
|
||||
End If
|
||||
Dim defaultOldValue As Double = -1000000
|
||||
Dim oldValue As Double = defaultOldValue
|
||||
Dim oldRiksClass = IIf(Not kundeErw.kde_CreditSaveBonitaetsklasse Is Nothing, kundeErw.kde_CreditSaveBonitaetsklasse, "")
|
||||
|
||||
Dim infoAbxProzentVerschlechertung As Double = -25
|
||||
Dim infoAbxProzentVerschlechertungMailInfo As Double = -50
|
||||
|
||||
Dim changedInProzent As Double = 0
|
||||
|
||||
|
||||
|
||||
Select Case typ
|
||||
Case "B-INDEX"
|
||||
oldValue = kundeErw.kde_CreditSaveBonitaetsIndex
|
||||
'LIMITs DEFINIEREN
|
||||
|
||||
If Not (oldValue = defaultOldValue) Then
|
||||
changedInProzent = calcChange(oldValue, newValue)
|
||||
End If
|
||||
|
||||
If changedInProzent < Math.Abs(infoAbxProzentVerschlechertung) Or risikoklasse = "E" Or newValue >= 5 Then createInfo = True
|
||||
If changedInProzent < Math.Abs(infoAbxProzentVerschlechertungMailInfo) Or risikoklasse = "E" Or newValue >= 5 Then triggerMail = True
|
||||
|
||||
Case "B-SCORE"
|
||||
oldValue = kundeErw.kde_CreditSaveBonitaetsScore
|
||||
'LIMITs DEFINIEREN
|
||||
|
||||
If Not (oldValue = defaultOldValue) Then
|
||||
changedInProzent = calcChange(oldValue, newValue)
|
||||
End If
|
||||
|
||||
If changedInProzent < infoAbxProzentVerschlechertung Or risikoklasse = "E" Or newValue >= 5 Then createInfo = True
|
||||
If changedInProzent < infoAbxProzentVerschlechertungMailInfo Or risikoklasse = "E" Or newValue >= 5 Then triggerMail = True
|
||||
|
||||
Case "KREDITLIMIT"
|
||||
oldValue = kunde.Höchstkredit
|
||||
|
||||
If Not (oldValue = defaultOldValue) Then
|
||||
changedInProzent = calcChange(oldValue, newValue)
|
||||
End If
|
||||
|
||||
'LIMITs DEFINIEREN
|
||||
If newValue = 0 Then
|
||||
createInfo = True
|
||||
triggerMail = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
If Not createInfo Then Exit Sub
|
||||
|
||||
|
||||
Dim textVermerk As String = "ACHTUNG, Änderung des " & typ & " von " & oldValue.ToString & " um " & changedInProzent.ToString("F2") & "% " & " auf " & newValue.ToString
|
||||
|
||||
mailText &= "<br><br>" & textVermerk
|
||||
|
||||
If setzeKundeninfo Then
|
||||
|
||||
|
||||
If kundeErw.kde_BesonderheitenNeu Then
|
||||
|
||||
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
If SQL.doSQL("INSERT INTO tblKundenBesonderheiten (kdb_KundenNr,kdb_kategorie,kdb_text,kdb_mitId,kdb_mitName,kdb_EingetragenAm,kdb_visible,kdb_hervorheben,kdb_history) " &
|
||||
" VALUES(" & kunde.KundenNr & ",'ALLG' ,'" & textVermerk & "'," & "4" & ",'" & "AUTO" & "','" & Now() & "',1,1,0)", "FMZOLL") Then
|
||||
End If
|
||||
|
||||
Else
|
||||
|
||||
If kunde.Besonderheiten <> "" Then kunde.Besonderheiten &= vbNewLine
|
||||
kunde.Besonderheiten &= textVermerk
|
||||
|
||||
|
||||
End If
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Shared Function calcChange(oldValue As Double, newValue As Double)
|
||||
|
||||
|
||||
If oldValue <> 0 Then
|
||||
Return ((newValue - oldValue) / oldValue) * 100
|
||||
Else
|
||||
Return 100
|
||||
End If
|
||||
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user