Merge branch 'newMaster2024' of https://dev.azure.com/VeragAG/_git/SDL into newMaster2024

This commit is contained in:
2025-04-22 15:24:34 +02:00
109 changed files with 9220 additions and 3143 deletions

View File

@@ -872,6 +872,8 @@ Public Class cNCTS_FREMD
Dim NCTS As New cNCTS_FREMD
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
If MRN Is Nothing Then Return Nothing
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT TOP 1 * FROM tblNCTS_FREMD WHERE [ncts_MRN] LIKE @MRN " & If(checkValidStatus, " AND ncts_status BETWEEN 40 and 90 ", "") & " order by ncts_LetzteBearbeitung desc", conn)
cmd.Parameters.AddWithValue("@MRN", MRN)

View File

@@ -1,14 +1,13 @@
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
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles.VisualStyleElement
Imports Chilkat
Imports Newtonsoft.Json.Linq
Imports DocumentFormat.OpenXml.Wordprocessing
Imports javax
Imports javax.xml.ws.soap.AddressingFeature
Imports VERAG_PROG_ALLGEMEIN.VERAG_OUT_NCTS
Public Class cATEZ_NCTS_Sessions
@@ -17,6 +16,7 @@ Public Class cATEZ_NCTS_Sessions
Public Property datetime As DateTime = Now()
Public Property refresh_token As String
Public Property token_validuntil As DateTime
Public Property program As String
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
@@ -30,22 +30,30 @@ Public Class cATEZ_NCTS_Sessions
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("datetime", datetime))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("refresh_token", refresh_token))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("token_validuntil", token_validuntil))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("program", program))
Return list
End Function
Sub New()
LOAD()
LOAD("")
End Sub
Sub New(token As String, refreshtoken As String, timestamp As DateTime)
Sub New(Program As String)
LOAD(Program)
End Sub
Sub New(token As String, refreshtoken As String, timestamp As DateTime, program As String)
Me.token = token
Me.refresh_token = refreshtoken
token_validuntil = timestamp
Me.program = program
SAVE()
End Sub
Public Function SAVE(Optional errHinweis = "") As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
@@ -80,11 +88,11 @@ Public Class cATEZ_NCTS_Sessions
End Function
Public Sub LOAD()
Public Sub LOAD(Program As String)
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT TOP(1) * FROM tblATEZ_NCTS_Sessions where token_validuntil >= dateadd(minute,-10,getdate()) order by datetime desc ", conn)
Using cmd As New SqlCommand("SELECT TOP(1) * FROM tblATEZ_NCTS_Sessions where token_validuntil >= dateadd(minute,-10,getdate()) " & IIf(Program <> "", " AND program = '" & Program & "' ", "") & " order by datetime desc ", conn)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
@@ -621,35 +629,38 @@ Public Class cATEZ_NCTS_IN
Dim SQl As New SQL
Shared apiSettingsloaded As Boolean = False
Sub New(program As String)
Sub New(program As String, Optional errorMessage As Boolean = True)
API = SQl.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & program & "' and api_productive ='" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN")
If API.Rows.Count = 0 Then
MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!")
If errorMessage Then MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!")
Else
apiSettingsloaded = True
API_STRING = API.Rows(0).Item("api_url")
If Not IsDBNull(API.Rows(0).Item("api_debugpath")) AndAlso API.Rows(0).Item("api_debugpath") <> "" Then
Rest.VerboseLogging = True
Rest.DebugLogFilePath = API.Rows(0).Item("api_debugpath") & program & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "_Test", "") & ".txt"
rest.VerboseLogging = True
rest.DebugLogFilePath = API.Rows(0).Item("api_debugpath") & program & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "_Test", "") & ".txt"
Else
Rest.VerboseLogging = False
rest.VerboseLogging = False
End If
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
Shared Function SendRequestAuthentificationToken(ByVal myuri As String, ByVal contentType As String, ByVal method As String, ByRef Itoken As String, ByVal program As String, Optional client_id As String = "", Optional grant_type As String = "", Optional useBody As Boolean = True) As String
Try
Dim session = New cATEZ_NCTS_Sessions()
If Not IsDBNull(session.token) AndAlso session.token IsNot Nothing Then
Itoken = session.token
token = Itoken
sessionID = session.session_Id
Return "200"
If CDate(session.token_validuntil) < DateTime.Now Then
Itoken = session.token
token = Itoken
sessionID = session.session_Id
Return "200"
End If
End If
If apiSettingsloaded = False Then Return "400"
@@ -663,6 +674,8 @@ Public Class cATEZ_NCTS_IN
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
'API_STRING = API_STRING.Replace("https://", "")
'API_STRING = API_STRING.Replace("http://", "")
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
@@ -671,22 +684,41 @@ Public Class cATEZ_NCTS_IN
End If
Dim json As New Chilkat.JsonObject
json.UpdateString("password", API.Rows(0).Item("api_password"))
json.UpdateString("username", API.Rows(0).Item("api_user"))
rest.AddHeader("Content-Type", contentType)
Dim sbRequestBody As New Chilkat.StringBuilder
json.EmitSb(sbRequestBody)
'DEBUG-Mode -> no request will be sent!
'rest.DebugMode = True
Dim sbResponseBody As New Chilkat.StringBuilder
Dim ResponseStr = rest.FullRequestSb(method, myuri, sbRequestBody, sbResponseBody)
Dim ResponseStr As String
If useBody Then
Dim json As New Chilkat.JsonObject
json.UpdateString("username", API.Rows(0).Item("api_user"))
json.UpdateString("password", API.Rows(0).Item("api_password"))
If client_id <> "" Then json.UpdateString("client_id", client_id)
If grant_type <> "" Then json.UpdateString("grant_type", grant_type)
Dim sbRequestBody As New Chilkat.StringBuilder
json.EmitSb(sbRequestBody)
ResponseStr = rest.FullRequestSb(method, myuri, sbRequestBody, sbResponseBody)
Else
rest.ClearAllQueryParams()
rest.AddQueryParam("grant_type", grant_type)
rest.AddQueryParam("username", API.Rows(0).Item("api_user"))
rest.AddQueryParam("password", API.Rows(0).Item("api_password"))
rest.AddQueryParam("client_id", client_id)
ResponseStr = rest.FullRequestFormUrlEncoded(method, myuri)
End If
If (rest.ResponseStatusCode <> 200) Then
@@ -694,13 +726,19 @@ Public Class cATEZ_NCTS_IN
End If
Dim jsonResp = New Chilkat.JsonObject()
jsonResp.LoadSb(sbResponseBody)
If useBody Then
jsonResp.LoadSb(sbResponseBody)
Else
jsonResp.Load(ResponseStr)
End If
Itoken = jsonResp.StringOf("access_token")
token = Itoken
refresh_token = jsonResp.StringOf("refresh_token")
refresh_token = If(jsonResp.StringOf("refresh_token"), "")
Dim now As DateTime = DateTime.Now()
now = now.AddSeconds(jsonResp.IntOf("expires_in"))
session = New cATEZ_NCTS_Sessions(Itoken, refresh_token, now.ToString("yyyy-MM-dd HH:mm:ss"))
session = New cATEZ_NCTS_Sessions(Itoken, refresh_token, now.ToString("yyyy-MM-dd HH:mm:ss"), program)
sessionID = session.session_Id
Return rest.ResponseStatusCode
@@ -710,17 +748,28 @@ Public Class cATEZ_NCTS_IN
End Function
Shared Function authenticate() As String
Shared Function authenticate(program As String, Optional client_id As String = "", Optional grant_type As String = "") As String
Dim myUri As String = API_STRING & "/api/tds/auth/"
Dim response = SendRequestAuthentificationToken(myUri, "application/json", "POST", token)
Dim myUri As String = API_STRING
Dim contentType = "application/json"
Dim useBody As Boolean = True
Select Case program
Case "NCTS" : myUri &= "/api/tds/auth/"
Case "VAT" : myUri &= "/token" : contentType = "application/x-www-form-urlencoded" : useBody = False
End Select
Dim response = SendRequestAuthentificationToken(myUri, contentType, "POST", token, program, client_id, grant_type, useBody)
Return response
End Function
Shared Function SendRequestWithAuthHeader(acceptContentType As String, ByRef failureDesc As String) As String
Shared Function SendRequestWithAuthHeader(acceptContentType As String, ByRef failureDesc As String, myUrl As String, Method As String, Optional dt As DataTable = Nothing) As String
Try
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
@@ -755,7 +804,7 @@ Public Class cATEZ_NCTS_IN
'rest.PercentDoneOnSend = True
rest.IdleTimeoutMs = 5000 * 31
success = rest.SendReqSb("POST", "/api/integrations/verag", sbRequestBody)
success = rest.SendReqSb(Method, myUrl, sbRequestBody)
Dim responseStatusCode = rest.ReadResponseHeader()
If (responseStatusCode < 0) Then
@@ -804,6 +853,51 @@ Public Class cATEZ_NCTS_IN
Dim jsonResult As New Chilkat.JsonObject
success = jsonResult.LoadSb(sbResponseBody)
jsonResult.Emit()
If dt IsNot Nothing Then
Dim data As New Chilkat.JsonObject
data = jsonResult
If (data.LastMethodSuccess = False) Then
Debug.WriteLine("data member not found.")
End If
Dim num As Integer = 1
If num = -1 Then
Return "FEHLER Array Data ist leer"
End If
Dim j As Integer = 0
While j < num
Dim invoice As Chilkat.JsonObject = data.ObjectAt(j)
Dim R As DataRow = dt.NewRow
R("currency") = checkNullStr(invoice.StringOf("currency"))
Dim totalAmonut As String = invoice.StringOf("total_VAT_amount").Replace(".", ",")
R("total_VAT_amount") = CDbl(checkNulDbl(totalAmonut))
R("invoice_id") = checkNullStr(invoice.StringOf("invoice_id"))
R("invoice_date") = checkNullStr(invoice.StringOf("invoice_date"))
R("seller_VAT_id") = checkNullStr(invoice.StringOf("seller_VAT_id"))
R("seller_address_city") = checkNullStr(invoice.StringOf("seller_address_city"))
R("seller_address_country") = checkNullStr(invoice.StringOf("seller_address_country"))
R("seller_address_postcode") = checkNullStr(invoice.StringOf("seller_address_postcode"))
R("seller_address_street") = checkNullStr(invoice.StringOf("seller_address_street"))
R("status") = checkNullStr(jsonResult.StringOf("status"))
dt.Rows.Add(R)
j = j + 1
End While
Return jsonResult.StringOf("status")
End If
Return jsonResult.StringOf("atezId")
End If
@@ -816,7 +910,24 @@ Public Class cATEZ_NCTS_IN
End Try
End Function
Shared Function setJson(ncts As cATEZ_NCTS_DATA)
Public Shared Function checkNullStr(ByVal o As Object) As String
If o IsNot Nothing AndAlso o IsNot DBNull.Value AndAlso Not o = "null" Then Return CStr(o)
Return ""
End Function
Public Shared Function checkNulDbl(ByVal o As Object) As Double
If o IsNot Nothing And o IsNot DBNull.Value Then
If IsNumeric(o) Then
Return Math.Round(CDbl(o), 2)
Else
Return 0
End If
Else
Return 0
End If
End Function
Shared Function setJsonNCTS(ncts As cATEZ_NCTS_DATA)
jsonData.Clear()
ncts.json = ""
@@ -868,6 +979,21 @@ Public Class cATEZ_NCTS_IN
End Function
Shared Function setJsonVAT(documentType As String, docID As Integer)
jsonData.Clear()
Dim success As Boolean
success = jsonData.UpdateString("document_type", documentType)
Dim base64 As New Chilkat.BinData
success = base64.LoadFile(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(docID))
success = jsonData.UpdateString("document_base64", base64.GetEncoded("base64"))
Return success
End Function
Public Function setJsonPDF(ncts As cATEZ_NCTS_DATA, dgv As DataGridView)
Dim success As Boolean
@@ -894,4 +1020,7 @@ Public Class cATEZ_NCTS_IN
End Function
End Class

View File

@@ -60,6 +60,15 @@ Public Class cHMRC
cHMRCCredentials.CLIENT_ID = cHMRC_ENS.Client_ID
cHMRCCredentials.CLIENT_SECRET = cHMRC_ENS.Client_Secret
End If
Case "ATEZ_ENS"
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
Else
cHMRCCredentials.API_STRING = "https://api.service.hmrc.gov.uk"
cHMRCCredentials.CLIENT_ID = "b28AgFVSAXkLPtnnlU1xTRXbMXoD"
cHMRCCredentials.CLIENT_SECRET = "17dfde2d-2aa9-47a0-9a3a-160363b909c5"
End If
End Select
Return cHMRCCredentials
End Function
@@ -1513,9 +1522,10 @@ Public Class cHMRC
Public Shared Function getTOKEN(APPLICATION, Optional forceNewToken = False) As cHMRCToken
Public Shared Function getTOKEN(APPLICATION, Optional forceNewToken = False, Optional saveAPPLICATION_NAME = "", Optional otherHMRCAPPLICATION_NAME = "") As cHMRCToken
If saveAPPLICATION_NAME = "" Then saveAPPLICATION_NAME = APPLICATION
Dim TOKEN = New cHMRCToken(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, APPLICATION)
Dim TOKEN = New cHMRCToken(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, saveAPPLICATION_NAME)
Try
Dim appl = ""
Dim HMRC_APPLICATION = "AVISO"
@@ -1538,16 +1548,26 @@ Public Class cHMRC
'appl = "write:import-control-system+read:import-control-system"
appl = "hello"
HMRC_APPLICATION = "AVISO_ENS"
Case Else
appl = "hello"
HMRC_APPLICATION = "AVISO_ENS"
End Select
If otherHMRCAPPLICATION_NAME <> "" Then
HMRC_APPLICATION = otherHMRCAPPLICATION_NAME
End If
If forceNewToken OrElse TOKEN.hasEntry = False OrElse TOKEN.token_BEARER_TOKEN Is Nothing OrElse TOKEN.token_BEARER_TOKEN = "" Then
'Neuer Token
Dim AccessToken = ""
Dim RefreshToken = ""
grantAccess(AccessToken, RefreshToken, appl, HMRC_APPLICATION)
TOKEN.token_Application = APPLICATION
TOKEN.token_Application = saveAPPLICATION_NAME
TOKEN.token_BEARER_TOKEN = AccessToken
TOKEN.token_REFRESH_TOKEN = RefreshToken
TOKEN.token_refresh_datetime = Now