diff --git a/initATLASAufschubkonten/frmStartOptions.Designer.vb b/initATLASAufschubkonten/frmStartOptions.Designer.vb
index 2907a64..b7868c7 100644
--- a/initATLASAufschubkonten/frmStartOptions.Designer.vb
+++ b/initATLASAufschubkonten/frmStartOptions.Designer.vb
@@ -277,6 +277,8 @@ Partial Class frmStartOptions
Me.Button27 = New System.Windows.Forms.Button()
Me.lblWartungen = New System.Windows.Forms.Label()
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.cbxCSsync = 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.txtGJ_UNISPED = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.DataGridViewTextBoxColumn1 = New System.Windows.Forms.DataGridViewTextBoxColumn()
- Me.Label49 = New System.Windows.Forms.Label()
- Me.Label50 = New System.Windows.Forms.Label()
+ Me.cbxEventtriggered = New System.Windows.Forms.CheckBox()
Me.pnl.SuspendLayout()
CType(Me.PictureBox24, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox23, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -3467,6 +3468,7 @@ Partial Class frmStartOptions
'
'TabPage7
'
+ Me.TabPage7.Controls.Add(Me.cbxEventtriggered)
Me.TabPage7.Controls.Add(Me.Label50)
Me.TabPage7.Controls.Add(Me.Label49)
Me.TabPage7.Controls.Add(Me.Label48)
@@ -3490,6 +3492,28 @@ Partial Class frmStartOptions
Me.TabPage7.Text = "Creditsafe"
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
'
Me.Label48.AutoSize = True
@@ -4715,27 +4739,18 @@ Partial Class frmStartOptions
Me.DataGridViewTextBoxColumn1.MinimumWidth = 8
Me.DataGridViewTextBoxColumn1.Name = "DataGridViewTextBoxColumn1"
'
- 'Label49
+ 'cbxEventtriggered
'
- 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"
- '
- '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"
+ Me.cbxEventtriggered.AutoSize = True
+ Me.cbxEventtriggered.Checked = True
+ Me.cbxEventtriggered.CheckState = System.Windows.Forms.CheckState.Checked
+ Me.cbxEventtriggered.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.cbxEventtriggered.Location = New System.Drawing.Point(14, 144)
+ Me.cbxEventtriggered.Name = "cbxEventtriggered"
+ Me.cbxEventtriggered.Size = New System.Drawing.Size(237, 17)
+ Me.cbxEventtriggered.TabIndex = 168
+ Me.cbxEventtriggered.Text = "Daily-Check (schneller aber weniger deailiert)"
+ Me.cbxEventtriggered.UseVisualStyleBackColor = True
'
'frmStartOptions
'
@@ -5145,4 +5160,5 @@ Partial Class frmStartOptions
Friend WithEvents cbxCSsync As CheckBox
Friend WithEvents Label49 As Label
Friend WithEvents Label50 As Label
+ Friend WithEvents cbxEventtriggered As CheckBox
End Class
diff --git a/initATLASAufschubkonten/frmStartOptions.vb b/initATLASAufschubkonten/frmStartOptions.vb
index 55314d4..b12a872 100644
--- a/initATLASAufschubkonten/frmStartOptions.vb
+++ b/initATLASAufschubkonten/frmStartOptions.vb
@@ -833,6 +833,17 @@ Public Class frmStartOptions
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"
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
@@ -841,7 +852,7 @@ Public Class frmStartOptions
Dim setzeInfoImKunden As Boolean = False
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()
Case "CREDITSAFE_UPLOADS"
@@ -6341,23 +6352,29 @@ weiter:
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
- 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
'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 (damit haben wir alle Informationen), das verursacht allerdings sehr viele API-Aurfrufe, besser nach dem Best Practice oben!
+ '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dim creditsaveOld As String = "
@@ -6388,33 +6405,102 @@ 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 Filialen as f on f.FilialenNr = Kunden.FilialenNr
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 = 718137 or ba_KundenNr = 1003418)"
- End If
-
-
- Dim dtRechnungen As DataTable = (New SQL).loadDgvBySql("select distinct(RechnungsKundenNr) from Rechnungsausgang where cast(RechnungsDatum as Date) >= ' " & Today().AddYears(-2) & "' ", "FMZOLL")
-
- Dim dtCreditsafe As DataTable = (New SQL).loadDgvBySql(creditsave, "FMZOLL")
-
- If dtCreditsafe.Rows.Count = 0 Then Exit Sub
-
+ 'KundenNr und Firma
Dim cs = New cCreditSafeAPI("creditsafe")
- Dim dt_fehlendeCreditsafeIDS As New DataTable
- dt_fehlendeCreditsafeIDS.Columns.Add("KundenNr", GetType(String))
- dt_fehlendeCreditsafeIDS.Columns.Add("Creditsafe-ID", GetType(String))
- dt_fehlendeCreditsafeIDS.Columns.Add("Creditsafe-NO", GetType(String))
-
+ 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
+ creditsave &= " and (ba_KundenNr = 718137 or ba_KundenNr = 1003418)"
+ End If
+
+
+ Dim dtRechnungen As DataTable = (New SQL).loadDgvBySql("select distinct(RechnungsKundenNr) from Rechnungsausgang where cast(RechnungsDatum as Date) >= ' " & Today().AddYears(-2) & "' ", "FMZOLL")
+
+ Dim dtCreditsafe As DataTable = (New SQL).loadDgvBySql(creditsave, "FMZOLL")
+
+ If dtCreditsafe.Rows.Count = 0 Then Exit Sub
+
+ Dim countMissingVerag As Integer = 0
+ Dim countMissingIMEX As Integer = 0
+ Dim countMissingUNISPED As Integer = 0
+ Dim countMissingAMBAR As Integer = 0
+
+ Dim dt_fehlendeCreditsafeIDS As New DataTable
+ dt_fehlendeCreditsafeIDS.Columns.Add("KundenNr", GetType(String))
+ dt_fehlendeCreditsafeIDS.Columns.Add("Creditsafe-ID", GetType(String))
+ dt_fehlendeCreditsafeIDS.Columns.Add("Creditsafe-NO", GetType(String))
+ dt_fehlendeCreditsafeIDS.Columns.Add("Firma", GetType(String))
+
+
+
+ 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
@@ -6429,7 +6515,7 @@ weiter:
If currentBonID > 0 Then company.csBonID = currentBonID
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)
If sendMail Then
@@ -6440,10 +6526,10 @@ weiter:
End If
End If
-
+repeatRequest:
Dim APIText As String = ""
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
If (APIText.Contains("Error") Or APIText.Contains("Verbindungsfehler")) Then
@@ -6455,7 +6541,18 @@ weiter:
R("KundenNr") = KUNDE_ERW.kde_KundenNr
R("Creditsafe-ID") = KUNDE_ERW.kde_CreditSaveId
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.SAVE()
@@ -6467,21 +6564,38 @@ weiter:
Exit For
Else
Thread.Sleep(4000)
+ GoTo repeatRequest
End If
End If
+ Else
+ counter += 1
+
End If
Thread.Sleep(1000)
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
Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt_fehlendeCreditsafeIDS,,,,, False)
If filepath <> "" Then
Dim anhenge As New List(Of String)
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!" & "
" & "*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!" & "
" & "*Automatic generated e-mail*",,,,, "d.breimaier@verag.ag", anhenge)
End If
End If