From 39169c98f8f10cfd47fa40322d76114901b45c2b Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 17 Apr 2024 08:50:07 +0200 Subject: [PATCH] =?UTF-8?q?API=20Einstellungen,=20=C3=9Cberstundenauszahlu?= =?UTF-8?q?ng,=20Sammelrechnungsdruck,=20etc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/Creditsafe/usrcntlCreditsafe.vb | 16 ++-- SDL/Fakturierung/cFakturierung.vb | 4 +- .../frmAbrechnungsMaske.Designer.vb | 7 ++ SDL/Fakturierung/frmAbrechnungsMaske.resx | 3 + SDL/Fakturierung/frmAbrechnungsMaske.vb | 48 ++++++++-- SDL/frmMain.vb | 33 ++++++- SDL/kunden/usrCntlKundenBesonderheiten.vb | 2 +- SDL/kunden/usrCntlKundenuebersicht.vb | 6 +- .../frmMitarbeitersuche.vb | 4 +- .../frmUeberstundenauszahlen.vb | 2 +- .../ATEZ/VERAG_OUT_ATEZ_IN/cATEZ_NCTS_IN.vb | 22 ++++- .../Creditsafe/cCreditSafeAPI.vb | 96 ++++++++++++++----- .../Schnittstellen/Digicast/cDigicustAPI.vb | 24 ++++- .../Schnittstellen/TIMAS/cTimasAPI.vb | 19 +++- 14 files changed, 230 insertions(+), 56 deletions(-) diff --git a/SDL/Creditsafe/usrcntlCreditsafe.vb b/SDL/Creditsafe/usrcntlCreditsafe.vb index 094a4e49..de83b2dd 100644 --- a/SDL/Creditsafe/usrcntlCreditsafe.vb +++ b/SDL/Creditsafe/usrcntlCreditsafe.vb @@ -1,4 +1,5 @@  +Imports System.Runtime.Serialization Imports DocumentFormat.OpenXml.Drawing.Diagrams Imports itextsharp.text.pdf Imports VERAG_PROG_ALLGEMEIN @@ -12,6 +13,7 @@ Public Class usrcntlCreditsafe Public comp As Company Dim uidDefault As String Public createCostumer As Boolean = False + Dim creditsafeAPI As New cCreditSafeAPI("creditsafe") Sub New() InitializeComponent() @@ -35,12 +37,14 @@ Public Class usrcntlCreditsafe End Sub Private Sub init() - user = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_CSuser - pw = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_CSpwd + + user = creditsafeAPI.dataTablecs.Rows(0).Item("api_user") + pw = creditsafeAPI.dataTablecs.Rows(0).Item("api_password") + 'Zugangsdaten hartcoded, da Webservice-User nicht Mitarbeiterabhängig ist!!! - user = "creditsafe@verag.ag" - pw = "^AZcBVTBUIHTT5SQ1C9OOH" + 'user = "creditsafe@verag.ag" + 'pw = "^AZcBVTBUIHTT5SQ1C9OOH" cboLand.fillWithSQL(" SELECT [Länderverzeichnis für die Außenhandelsstatistik].LandKz,[Länderverzeichnis für die Außenhandelsstatistik].LandBez " & " FROM [Länderverzeichnis für die Außenhandelsstatistik] LEFT JOIN [Währungstabelle] ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = [Währungstabelle].[Währungsschlüssel] " & @@ -98,10 +102,10 @@ Public Class usrcntlCreditsafe dataTable.Clear() - Dim cs = New cCreditSafeAPI() + Dim cs = New cCreditSafeAPI("creditsafe") Cursor = Cursors.WaitCursor - If cs.authenticate(user, pw) = "200" Then + If cs.authenticate() = "200" Then Dim company = New cCreditSafeAPI.Company(cbxSprache._value, txtFirma.Text, txtUID.Text, cboLand.SelectedItem.Value, "", "", Nothing, txtStrasse.Text, txtPLZ.Text, txtOrt.Text, "", "", "", "", "", "") lblWarning.Text = cs.searchCompanies(company, dataTable).ToString diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index ba926794..b57d5380 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -2327,7 +2327,7 @@ Public Class cFakturierung End Function - Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "") As Boolean + Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional mergePDF As Boolean = False) As Boolean 'SB Nicht mehr benötigt, da RG-Nr und DruckdatumUhrzeit Dim dt As DataTable @@ -3073,7 +3073,7 @@ Public Class cFakturierung Return "" End Function - Shared Function doSAMMELRechnungDruck_Rechnungsdruck(dt As DataTable, RechnungsNr As Integer, DruckdatumUhrzeit As Date, Rgstatus As Integer, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "", Optional PrinterName As String = "", Optional SRDruckWiederholen As Boolean = False, Optional VorschauID As String = "") As Boolean 'RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Optional vorschau As Boolean = False, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "") As Boolean + Shared Function doSAMMELRechnungDruck_Rechnungsdruck(dt As DataTable, RechnungsNr As Integer, DruckdatumUhrzeit As Date, Rgstatus As Integer, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "", Optional PrinterName As String = "", Optional SRDruckWiederholen As Boolean = False, Optional VorschauID As String = "", Optional mergePDF As Boolean = False) As Boolean 'RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Optional vorschau As Boolean = False, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "") As Boolean Try diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb index ef762a06..b1624614 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb @@ -83,6 +83,7 @@ Partial Class frmAbrechnungsMaske Me.btnBisJahr = New System.Windows.Forms.Button() Me.btnVonJahr = New System.Windows.Forms.Button() Me.UsrCntlFaktAbrechnung1 = New SDL.usrCntlFaktAbrechnung() + Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.pnl.SuspendLayout() CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainer.Panel1.SuspendLayout() @@ -902,6 +903,11 @@ Partial Class frmAbrechnungsMaske Me.UsrCntlFaktAbrechnung1.Size = New System.Drawing.Size(863, 615) Me.UsrCntlFaktAbrechnung1.TabIndex = 0 ' + 'ContextMenuStrip1 + ' + Me.ContextMenuStrip1.Name = "ContextMenuStrip1" + Me.ContextMenuStrip1.Size = New System.Drawing.Size(61, 4) + ' 'frmAbrechnungsMaske ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -989,4 +995,5 @@ Partial Class frmAbrechnungsMaske Public WithEvents cboSort As VERAG_PROG_ALLGEMEIN.MyComboBox Friend WithEvents cbxOriginalDrucken As CheckBox Friend WithEvents Button11 As Button + Friend WithEvents ContextMenuStrip1 As ContextMenuStrip End Class diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.resx b/SDL/Fakturierung/frmAbrechnungsMaske.resx index d584bd9e..c477c7b6 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.resx +++ b/SDL/Fakturierung/frmAbrechnungsMaske.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.vb b/SDL/Fakturierung/frmAbrechnungsMaske.vb index d58392c8..a63b1a68 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.vb @@ -688,16 +688,50 @@ Public Class frmAbrechnungsMaske End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btnWiederholeRgDruck.Click - Dim SR_RechnungsNr = InputBox("SR-Nummer eingeben: ") + + + + If Not ContextMenuStrip1.Items.ContainsKey("1") Then + Dim print = New ToolStripMenuItem() With {.Text = "Drucken", .Name = "1", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler print.Click, AddressOf mnuItem_Clicked + ContextMenuStrip1.Items.Add(print) + End If + + If Not ContextMenuStrip1.Items.ContainsKey("2") Then + Dim mail = New ToolStripMenuItem() With {.Text = "E-Mail", .Name = "2", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + ContextMenuStrip1.Items.Add(mail) + AddHandler mail.Click, AddressOf mnuItem_Clicked + End If + + If Not ContextMenuStrip1.Items.ContainsKey("3") Then + Dim pdf = New ToolStripMenuItem() With {.Text = "PDF", .Name = "3", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler pdf.Click, AddressOf mnuItem_Clicked + ContextMenuStrip1.Items.Add(pdf) + End If + + ContextMenuStrip1.Show(Cursor.Position) + + End Sub + + Private Sub mnuItem_Clicked(sender As Object, e As EventArgs) + ContextMenuStrip1.Hide() + Dim id = 3 'default per PDF + Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) + + If item IsNot Nothing Then id = item.Name + + Dim SR_RechnungsNr = InputBox("SR-Nummer eingeben: ", "Rechnungsdruck - " & IIf(item.Text IsNot Nothing, item.Text, "PDF")) If IsNumeric(SR_RechnungsNr) Then - Dim RK_ID = SQL.getValueTxtBySql("SELECT TOP 1 RK_ID FROM Rechnungsausgang WHERE RechnungsNr='" & SR_RechnungsNr & "' AND Firma_ID='" & cboFirma._value & "' ORDER BY DruckDatumZeit DESC", "FMZOLL") - If IsNumeric(RK_ID) Then - Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID) - If RG_TMP IsNot Nothing Then - cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, , 3,, True) + Dim RK_ID = SQL.getValueTxtBySql("SELECT TOP 1 RK_ID FROM Rechnungsausgang WHERE RechnungsNr='" & SR_RechnungsNr & "' AND Firma_ID='" & cboFirma._value & "' ORDER BY DruckDatumZeit DESC", "FMZOLL") + If IsNumeric(RK_ID) Then + Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID) + If RG_TMP IsNot Nothing Then + 'id mitübergeben (1_> drucken, 2 Email, 3 PDF) + cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, , id,, True) + End If End If End If - End If + End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click diff --git a/SDL/frmMain.vb b/SDL/frmMain.vb index 0e817eb8..8d641a05 100644 --- a/SDL/frmMain.vb +++ b/SDL/frmMain.vb @@ -145,7 +145,7 @@ Public Class frmMain If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_timasId IsNot Nothing Then - Dim timas As New cTimasAPI + Dim timas As New cTimasAPI("timas") Dim infoMessage As String = "" Dim timeEntryExisting As Boolean = False Dim isEndpointRunning As Boolean = True @@ -560,6 +560,37 @@ Public Class frmMain Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click + + Try + If False Then + If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_timasId IsNot Nothing Then + If Not VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_timasNichtStempeln Then + Dim timas As New cTimasAPI("timas") + Dim infoMessage As New DataTable + Dim timeEntryExisting As Boolean = False + Dim isEndpointRunning As Boolean = True + Dim isPresent = timas.getTimeEntries(cAllgemein.MITARBEITER.mit_timasId, infoMessage, timeEntryExisting,, isEndpointRunning) + If timeEntryExisting AndAlso isEndpointRunning AndAlso isPresent Then + Dim a As MsgBoxResult = MsgBox("Soll " & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & " ausgestempelt werden?" & vbNewLine & Now.ToString() & " als Endzeit erfassen?", vbYesNo) + If a = vbYes Then + Dim info + timas.setTimeEntry(cAllgemein.MITARBEITER, Now, info, "out") + MsgBox(info) + Else + + End If + + End If + + End If + End If + End If + + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + Me.Close() End Sub diff --git a/SDL/kunden/usrCntlKundenBesonderheiten.vb b/SDL/kunden/usrCntlKundenBesonderheiten.vb index f8823632..1856e908 100644 --- a/SDL/kunden/usrCntlKundenBesonderheiten.vb +++ b/SDL/kunden/usrCntlKundenBesonderheiten.vb @@ -85,7 +85,7 @@ Public Class usrCntlKundenBesonderheiten End Sub Private Sub initDGV(Optional kdnrTmp = -1, Optional simpleView = False, Optional preferedKategorie = "", Optional preferedKategorieOtherIN = "") - If dgvBesonderheiten.Columns IsNot Nothing Then + If dgvBesonderheiten.Columns IsNot Nothing AndAlso dgvBesonderheiten.Columns.Count > 0 Then dgvBesonderheiten.Columns.Clear() End If diff --git a/SDL/kunden/usrCntlKundenuebersicht.vb b/SDL/kunden/usrCntlKundenuebersicht.vb index 8f6b6f41..f4bbfbfa 100644 --- a/SDL/kunden/usrCntlKundenuebersicht.vb +++ b/SDL/kunden/usrCntlKundenuebersicht.vb @@ -2739,10 +2739,10 @@ Public Class usrCntlKundenuebersicht Else - Dim cs = New cCreditSafeAPI() + Dim cs = New cCreditSafeAPI("creditsafe") 'If cs.authenticate(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_CSuser, VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_CSpwd) = "200" Then - If cs.authenticate("creditsafe@verag.ag", "^AZcBVTBUIHTT5SQ1C9OOH") = "200" Then + If cs.authenticate() = "200" Then 'Prüfung wird benötigt, da deutsche Abfragen einen Reasoncode benötigen! If checkNullStr(ADRESSE.LandKz) = "" Then @@ -2788,7 +2788,7 @@ Public Class usrCntlKundenuebersicht Else - MsgBox("Authentifizierungsfehler für User " & VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_CSuser) + MsgBox("Authentifizierungsfehler bei Creditsafe-User") End If diff --git a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.vb b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.vb index d3870a1d..85de37c3 100644 --- a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.vb +++ b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.vb @@ -10,7 +10,7 @@ Imports VERAG_PROG_ALLGEMEIN.cCreditSafeAPI Public Class frmMitarbeitersuche Dim mit_id As Integer = -1 Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL - Dim timas As New cTimasAPI + Dim timas As New cTimasAPI("timas") Dim requestDone As Boolean = False Dim MA As cMitarbeiter = Nothing @@ -323,7 +323,7 @@ Public Class frmMitarbeitersuche If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_timasId IsNot Nothing Then - Dim timas As New cTimasAPI + Dim timas As New cTimasAPI("timas") If art = "post" Then 'postgang ausstempen, dann beginn post, + 1h ende post diff --git a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb index 6d89e788..164c2156 100644 --- a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb +++ b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb @@ -9,7 +9,7 @@ Public Class frmUeberstundenauszahlen Dim refresh As Boolean = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim MA As cMitarbeiter = Nothing - Dim timas As cTimasAPI = New cTimasAPI + Dim timas As cTimasAPI = New cTimasAPI("timas") Dim dt As New DataTable Dim customFields As New DataTable Dim timeaccountdt As New DataTable diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/VERAG_OUT_ATEZ_IN/cATEZ_NCTS_IN.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/VERAG_OUT_ATEZ_IN/cATEZ_NCTS_IN.vb index 37da582d..8a515ef6 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/VERAG_OUT_ATEZ_IN/cATEZ_NCTS_IN.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/VERAG_OUT_ATEZ_IN/cATEZ_NCTS_IN.vb @@ -1,6 +1,7 @@ Imports System.Data.SqlClient Imports System.Net Imports System.Reflection +Imports System.ServiceModel.Configuration Imports System.ServiceModel.Security Imports System.Threading Imports System.Web.Routing @@ -610,18 +611,29 @@ Public Class cATEZ_NCTS_IN 'Shared API_STRING As String = "https://dev-tds.singlewindow.io" 'PROD Shared API_STRING As String = "https://transcom.singlewindow.io" + Shared API As New DataTable Shared token As String = "" Shared refresh_token As String = "" Public dataTable As New DataTable() Shared jsonData As New Chilkat.JsonObject Public Shared sessionID As Integer = -1 + Dim SQl As SQL + Shared apiSettingsloaded As Boolean = False + Sub New(program As String) + API = SQL.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & program & "' and api_productive ='" & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN") + If API.Rows.Count = 0 Then + MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!") + Else + apiSettingsloaded = True + API_STRING = API.Rows(0).Item("api_url") + End If + API_STRING = API.Rows(0).Item("api_url") + End Sub Shared Function SendRequestAuthentificationToken(ByVal myuri As String, ByVal contentType As String, ByVal method As String, ByRef Itoken As String) As String Try - - Dim session = New cATEZ_NCTS_Sessions() If Not IsDBNull(session.token) AndAlso session.token IsNot Nothing Then @@ -631,6 +643,8 @@ Public Class cATEZ_NCTS_IN Return "200" End If + If apiSettingsloaded = False Then Return "400" + VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() Dim rest As New Chilkat.Rest @@ -650,8 +664,8 @@ Public Class cATEZ_NCTS_IN Dim json As New Chilkat.JsonObject - json.UpdateString("password", "V3r4gAtez2023!") - json.UpdateString("username", "atez-integration@verag.ag") + json.UpdateString("password", API.Rows(0).Item("api_password")) + json.UpdateString("username", API.Rows(0).Item("api_user")) rest.AddHeader("Content-Type", contentType) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb index 8ea9bb24..e5f369b2 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb @@ -1,35 +1,38 @@ -Imports System.Diagnostics.Eventing.Reader -Imports System.IO + Imports System.Net -Imports System.Text Imports System.Threading -Imports System.Web.UI.WebControls -Imports System.Windows.Forms Imports Chilkat -Imports iTextSharp.text.pdf -Imports Microsoft.Office.Interop.Outlook -Imports Newtonsoft.Json -Imports Spire.Pdf.Lists -Imports Spire.Pdf.OPC -Imports VERAG_PROG_ALLGEMEIN.IDEV_Intrastat -Imports VERAG_PROG_ALLGEMEIN.TESTJSON + Public Class cCreditSafeAPI - 'Test - 'Shared API_STRING As String = "https://connect.sandbox.creditsafe.com" - 'PROD - Shared API_STRING As String = "https://connect.creditsafe.com" + Shared API_STRING As String + Shared API As New DataTable Shared token As String = "" Public dataTable As New DataTable() + Public dataTablecs As New DataTable() + Shared SQL As New SQL + Shared apiSettingsloaded As Boolean = False + Sub New(program As String) + API = SQL.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & program & "' and api_productive ='" & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN") + dataTablecs = API + If API.Rows.Count = 0 Then + MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!") + Else + apiSettingsloaded = True + API_STRING = API.Rows(0).Item("api_url") + End If + End Sub - Shared Function SendRequestAuthentificationToken(myuri As String, user As CreditSafeUser, contentType As String, method As String) As String + Shared Function SendRequestAuthentificationToken(myuri As String, contentType As String, method As String, Optional csUser As CreditSafeUser = Nothing) As String Try VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() + If apiSettingsloaded = False Then Return "400" + Dim rest As New Chilkat.Rest Dim success As Boolean @@ -45,10 +48,15 @@ Public Class cCreditSafeAPI End If - Dim json As New Chilkat.JsonObject - json.UpdateString("username", user.username) - json.UpdateString("password", user.password) + If csUser IsNot Nothing Then + json.UpdateString("username", csUser.username) + json.UpdateString("password", csUser.password) + Else + json.UpdateString("username", API.Rows(0).Item("api_user")) + json.UpdateString("password", API.Rows(0).Item("api_password")) + End If + rest.AddHeader("Content-Type", contentType) @@ -176,11 +184,15 @@ Public Class cCreditSafeAPI End Function - Shared Function authenticate(username As String, passwort As String) As String + Shared Function authenticate(Optional username As String = "", Optional password As String = "") As String Dim myUri As String = API_STRING & "/v1/authenticate" - Dim csUser = New CreditSafeUser(username, passwort) - Dim response = SendRequestAuthentificationToken(myUri, csUser, "application/json", "POST") + Dim csUser + If username <> "" AndAlso password <> "" Then + csUser = New CreditSafeUser(username, password) + End If + + Dim response = SendRequestAuthentificationToken(myUri, "application/json", "POST", csUser) Return response @@ -506,6 +518,44 @@ Public Class cCreditSafeAPI End Function + Public Function getSubscriptionCountries() As String + + VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() + + If apiSettingsloaded = False Then Return "400" + + Dim rest As New Chilkat.Rest + Dim success As Boolean + + rest.AddHeader("Authorization", "Bearer ") + + Dim sbResponseBody As New Chilkat.StringBuilder + success = rest.FullRequestNoBodySb("GET", "/v1/access", sbResponseBody) + If (success <> True) Then + Return 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(sbResponseBody.GetAsString()) + Return respStatusCode & " " & sbResponseBody.GetAsString() + End If + + + Dim jsonResponse As New Chilkat.JsonObject + jsonResponse.LoadSb(sbResponseBody) + + jsonResponse.EmitCompact = False + Debug.WriteLine(jsonResponse.Emit()) + + + End Function + Shared Sub setSearchParam(ByRef rest As Chilkat.Rest, ByRef company As Company) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Digicast/cDigicustAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Digicast/cDigicustAPI.vb index 1653ca04..fb06ef78 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Digicast/cDigicustAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Digicast/cDigicustAPI.vb @@ -352,15 +352,30 @@ End Class Public Class cDigicustAPI 'PROD - Shared API_STRING As String = "https://api.digicust.com" + Shared API_STRING As String Shared token As String = "" + Shared api As New DataTable Shared refresh_token As String = "" Public dataTable As New DataTable() + Dim sql As New SQL + Shared apiSettingsloaded As Boolean = False + Sub New(program As String) + api = sql.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & program & "' and api_productive ='" & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN") + If api.Rows.Count = 0 Then + MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!") + Else + apiSettingsloaded = True + API_STRING = api.Rows(0).Item("api_url") + End If + API_STRING = api.Rows(0).Item("api_url") + End Sub + Shared Function SendRequestAuthentificationToken(ByVal myuri As String, ByVal contentType As String, ByVal method As String, ByRef _token As String) As String Try + Dim session = New cDigicustSessions() If Not IsDBNull(session.token) AndAlso session.token IsNot Nothing Then @@ -371,6 +386,8 @@ Public Class cDigicustAPI VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() + If apiSettingsloaded = False Then Return "400" + Dim rest As New Chilkat.Rest Dim success As Boolean Dim bTls As Boolean = True @@ -385,8 +402,9 @@ Public Class cDigicustAPI End If Dim json As New Chilkat.JsonObject - success = json.UpdateString("username", "edv@verag.ag") - success = json.UpdateString("password", "hbG&%RhpE6kjV@r") + + success = json.UpdateString("username", api.Rows(0).Item("user")) + success = json.UpdateString("password", api.Rows(0).Item("password")) rest.AddHeader("Content-Type", contentType) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/TIMAS/cTimasAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/TIMAS/cTimasAPI.vb index 8c72e983..65ff1f44 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/TIMAS/cTimasAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/TIMAS/cTimasAPI.vb @@ -4,22 +4,35 @@ Imports System.Runtime.Remoting Imports System.Text Imports System.Threading Imports System.Windows.Forms +Imports DocumentFormat.OpenXml.Wordprocessing Imports Microsoft.Office.Interop.Outlook Public Class cTimasAPI - Dim API_STRING = "https://zeit.verag.ag" + Public API_STRING + Dim API As New DataTable Dim rest As New Chilkat.Rest + Dim SQL As New SQL + Dim apiSettingsloaded As Boolean = False - Sub New() + Sub New(program As String) VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() + API = SQL.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & program & "' and api_productive ='" & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN") + If API.Rows.Count = 0 Then + MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!") + Else + apiSettingsloaded = True + API_STRING = API.Rows(0).Item("api_url") + End If + End Sub Public Function checkConnectionTImas(ByRef failureText As String) As Boolean Try Dim success As Boolean + If apiSettingsloaded = False Then Return False rest.VerboseLogging = True Dim bTls As Boolean = True @@ -33,7 +46,7 @@ Public Class cTimasAPI Return False End If - success = rest.SetAuthBasic("admin", "BmWr501956") + success = rest.SetAuthBasic(API.Rows(0).Item("api_user"), API.Rows(0).Item("api_password")) If (success <> True) Then Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)