Files
SDL/VERAG_PROG_ALLGEMEIN/Schnittstellen/MSE/cMSEAPI.vb
2024-08-16 11:43:32 +02:00

1777 lines
98 KiB
VB.net

Imports System.Data.SqlClient
Imports System.Net
Imports System.Reflection
Public Class cMSEAPI
Public API_STRING
Dim API As New DataTable
Dim rest As New Chilkat.Rest
Dim defaultDebugLogFilePath = ""
Dim SQL As New SQL
Dim apiSettingsloaded As Boolean = False
Dim test As Boolean = False
Public PDFRECHNUNGENPFAD As String
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")
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"
Else
rest.VerboseLogging = False
End If
PDFRECHNUNGENPFAD = Me.GET_PARAM_ByName("PDFRECHNUNGEN-PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
End If
End Sub
Shared Function GET_PARAM_ByName(tcParam_name, TESTSYSTEM) As String
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Return SQL.getValueTxtBySql("SELECT TOP 1 [Param_value] FROM [tblPartnersystem_Paramter] WHERE Param_system='MSE' AND [Param_name]='" & tcParam_name & "'", , , SQL.GetNewOpenConnectionFMZOLL_SYSTEM(TESTSYSTEM))
End Function
Public Function createJWT(ByRef failureText As String) As String
Try
Dim jwt As New Chilkat.Jwt
Dim jose As New Chilkat.JsonObject
Dim success As Boolean = jose.AppendString("alg", "HS256")
success = jose.AppendString("typ", "JWT")
' Now build the JWT claims (also known as the payload)
Dim claims As New Chilkat.JsonObject
If API.Rows.Count = 0 Then Return "keine gültigen Zugangsdaten gefunden!"
success = claims.AppendString("iss", API.Rows(0).Item("api_user"))
Dim curDateTime As Integer = jwt.GenNumericDate(0)
' Set the timestamp defining an expiration time (end time) for the token
' to be now + 1 hour (3600 seconds)
success = claims.AddIntAt(-1, "exp", curDateTime + 3600)
jwt.AutoCompact = True
Dim strJwt As String = jwt.CreateJwt(jose.Emit(), claims.Emit(), API.Rows(0).Item("api_password"))
Debug.WriteLine(strJwt)
Return strJwt
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function getNewestTransactions(jwt As String, dt As DataTable, ByRef batchNr As Integer, ByRef totalPages As Integer, ByRef currentPage As Integer) As String
Try
Dim returnText As String = ""
Dim failureText As String = ""
Dim success As Boolean
rest.DebugMode = test
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
If (success <> True) Then
Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
rest.ClearAllQueryParams()
rest.AddHeader("X-API-Key", jwt)
rest.IdleTimeoutMs = 1000000
Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/transactions/new")
If (rest.LastMethodSuccess <> True) Then
Debug.WriteLine(rest.LastErrorText)
rest.IdleTimeoutMs = 30000 'defualt
Return rest.LastErrorText
End If
If (rest.ResponseStatusCode <> IIf(rest.DebugMode = True, 201, 200) And rest.ResponseStatusCode <> 404) Then
Debug.WriteLine(rest.ResponseHeader)
Return rest.LastErrorText
End If
Debug.WriteLine(responseJson)
If test Then
responseJson = "{""sender"":""MSTS"",""receiver"":""10738"",""datetime"":""2024-06-28 10:56:39"",""code"":""OK"",""message"":""OK"",""batch_seq_nr"":""2"",""customer_currency"":""EUR"",""total_pages"":100,""total_count"":99998,""total_amount"":291133.02,""page_nr"":1,""page_count"":999,""page_amount"":26238.88,""transactions"":[{""transaction_id"":1001723285,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-20 14:02:34"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-20 14:02:34"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723286,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-26 05:34:49"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-26 05:34:49"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723289,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-03 09:57:14"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-03 09:57:14"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723290,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-04 14:47:25"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-04 14:47:25"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""}]}"
End If
Dim json As New Chilkat.JsonObject
success = json.Load(responseJson)
If (success <> True) Then
Debug.WriteLine(json.LastErrorText)
End If
Debug.WriteLine(json)
batchNr = json.StringOf("batch_seq_nr")
totalPages = json.IntOf("total_pages")
currentPage = json.IntOf("page_nr")
If json.StringOf("message") <> "" AndAlso json.StringOf("message") <> "OK" Then Return json.StringOf("message")
Dim transactions As New Chilkat.JsonArray
transactions = json.ArrayOf("transactions")
If (json.LastMethodSuccess = False) Then
Debug.WriteLine("transactions member not found.")
End If
Dim num As Integer = transactions.Size
If num = -1 Then
Return "FEHLER im TransaktionArray"
End If
If json.StringOf("receiver") = "10738" Then saveTransactions(num, dt, transactions, json.StringOf("receiver"))
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function getCustomers(jwt As String, dt As DataTable) As String
Try
Dim returnText As String = ""
Dim failureText As String = ""
Dim success As Boolean
rest.DebugMode = test
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
If (success <> True) Then
Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
rest.ClearAllQueryParams()
rest.AddHeader("X-API-Key", jwt)
rest.IdleTimeoutMs = 1000000
Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/customers")
If (rest.LastMethodSuccess <> True) Then
Debug.WriteLine(rest.LastErrorText)
rest.IdleTimeoutMs = 30000 'defualt
Return rest.LastErrorText
End If
If (rest.ResponseStatusCode <> IIf(rest.DebugMode = True, 201, 200) And rest.ResponseStatusCode <> 404) Then
Debug.WriteLine(rest.ResponseHeader)
Return rest.LastErrorText
End If
Debug.WriteLine(responseJson)
If test Then
responseJson = "[{""customer_id"":13579,""partner_customer_number"":""203102"",""customer_name"":""NEGRO GROUP SRL"",""vat_number"":""RO17587350""},{""customer_id"":13566,""partner_customer_number"":""203104"",""customer_name"":""DANEMA SPECIAL TRANSPORT S.R.L."",""vat_number"":""RO27454467""},{""customer_id"":10746,""coc_number"":""11111"",""partner_customer_number"":""401386"",""customer_name"":""Teoma Transport"",""vat_number"":""SR100427963""},{""customer_id"":27765,""partner_customer_number"":""402810"",""customer_name"":""EMS TRANSPORTI DOO"",""vat_number"":""BA219169270003""}]"
End If
Dim customers As New Chilkat.JsonArray
success = customers.Load(responseJson)
If (success <> True) Then
Return customers.LastErrorText
End If
Dim num As Integer = customers.Size
If num = -1 Then
Return "FEHLER im Customer Array"
End If
saveCustomers(num, dt, customers)
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function getTransactionsFromToDate(jwt As String, dt As DataTable, start_date As Date, end_date As Date, ByRef batchNr As Integer, ByRef totalPages As Integer, ByRef currentPage As Integer) As String
Try
Dim returnText As String = ""
Dim failureText As String = ""
Dim success As Boolean
rest.DebugMode = test
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
If (success <> True) Then
Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
rest.ClearAllQueryParams()
rest.AddHeader("X-API-Key", jwt)
rest.AddQueryParam("start_date", start_date.ToString("yyyy-MM-dd"))
rest.AddQueryParam("end_date", end_date.ToString("yyyy-MM-dd"))
rest.IdleTimeoutMs = 1000000
Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/transactions")
If (rest.LastMethodSuccess <> True) Then
Debug.WriteLine(rest.LastErrorText)
rest.IdleTimeoutMs = 30000 'defualt
Return rest.LastErrorText
End If
If (rest.ResponseStatusCode <> IIf(rest.DebugMode = True, 201, 200) And rest.ResponseStatusCode <> 404) Then
Debug.WriteLine(rest.ResponseHeader)
Return rest.LastErrorText
End If
Debug.WriteLine(responseJson)
If test Then
responseJson = "{""sender"":""MSTS"",""receiver"":""10738"",""datetime"":""2024-06-28 10:56:39"",""code"":""OK"",""message"":""OK"",""batch_seq_nr"":""2"",""customer_currency"":""EUR"",""total_pages"":100,""total_count"":99998,""total_amount"":291133.02,""page_nr"":1,""page_count"":999,""page_amount"":26238.88,""transactions"":[{""transaction_id"":1001723285,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-07-20 14:02:34"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-10 14:02:34"",""exit_point_name"":null,""exit_datetime"":""2024-04-11 14:02:34"",""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":-2549.2400000000002,""original_gross_amount"":-2549.2400000000002,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723286,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-26 05:34:49"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-26 05:34:49"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723289,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-03 09:57:14"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-03 09:57:14"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723290,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-04 14:47:25"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-04 14:47:25"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""}]}"
End If
Dim json As New Chilkat.JsonObject
success = json.Load(responseJson)
If (success <> True) Then
Debug.WriteLine(json.LastErrorText)
End If
Debug.WriteLine(json)
If json.StringOf("message") <> "" AndAlso json.StringOf("message") <> "OK" Then Return json.StringOf("message")
batchNr = json.StringOf("batch_seq_nr")
totalPages = json.IntOf("total_pages")
currentPage = json.IntOf("page_nr")
Dim transactions As New Chilkat.JsonArray
transactions = json.ArrayOf("transactions")
If (json.LastMethodSuccess = False) Then
Debug.WriteLine("transactions member not found.")
End If
Dim num As Integer = transactions.Size
If num = -1 Then
Return "FEHLER Array Transaktions ist leer"
End If
If json.StringOf("receiver") = "10738" Then saveTransactions(num, dt, transactions, json.StringOf("receiver"))
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function getTransactionsFromTransactionID(jwt As String, dt As DataTable, ByRef transactionID As DataTable) As String
Try
Dim returnText As String = ""
Dim failureText As String = ""
Dim success As Boolean
rest.DebugMode = test
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
If (success <> True) Then
Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
rest.ClearAllQueryParams()
rest.AddHeader("X-API-Key", jwt)
rest.IdleTimeoutMs = 1000000
'transactionID.Columns.Add("transaction_id", GetType(String))
If transactionID IsNot Nothing And transactionID.Columns.Contains("transaction_id") And transactionID.Rows.Count > 0 Then
For Each row As DataRow In transactionID.Rows
Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/transactions/" & row("transaction_id"))
If (rest.LastMethodSuccess <> True) Then
Debug.WriteLine(rest.LastErrorText)
rest.IdleTimeoutMs = 30000 'defualt
Return rest.LastErrorText
End If
If (rest.ResponseStatusCode <> IIf(rest.DebugMode = True, 201, 200) And rest.ResponseStatusCode <> 404) Then
Debug.WriteLine(rest.ResponseHeader)
Return rest.LastErrorText
End If
Debug.WriteLine(responseJson)
If test Then
responseJson = "{""sender"":""MSTS"",""receiver"":""10738"",""datetime"":""2024-06-28 10:56:39"",""code"":""OK"",""message"":""OK"",""batch_seq_nr"":""2"",""customer_currency"":""EUR"",""total_pages"":100,""total_count"":99998,""total_amount"":291133.02,""page_nr"":1,""page_count"":999,""page_amount"":26238.88,""transactions"":[{""transaction_id"":1001723285,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-07-20 14:02:34"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-10 14:02:34"",""exit_point_name"":null,""exit_datetime"":""2024-04-11 14:02:34"",""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":-2549.2400000000002,""original_gross_amount"":-2549.2400000000002,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723286,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-26 05:34:49"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-26 05:34:49"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723289,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-03 09:57:14"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-03 09:57:14"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723290,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-04 14:47:25"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-04 14:47:25"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""}]}"
End If
Dim json As New Chilkat.JsonObject
success = json.Load(responseJson)
If (success <> True) Then
Debug.WriteLine(json.LastErrorText)
End If
Debug.WriteLine(json)
If json.StringOf("message") <> "" AndAlso json.StringOf("message") <> "OK" Then Return json.StringOf("message")
Dim transactions As New Chilkat.JsonArray
transactions = json.ArrayOf("transactions")
If (json.LastMethodSuccess = False) Then
Debug.WriteLine("transactions member not found.")
End If
Dim num As Integer = transactions.Size
If num = -1 Then
Return "FEHLER Array Transaktions ist leer"
End If
'If json.StringOf("receiver") = "10738" Then saveTransactions(num, dt, transactions, json.StringOf("receiver"))
saveTransactions(num, dt, transactions, json.StringOf("receiver"), True) ' wenn ID explizit aufgerufen keine Prüfung auf receivcer und purchaseDate
Next row
End If
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function getTransactionsFromBatchNrAndPage(jwt As String, dt As DataTable, ByRef batchNr As Integer, ByRef totalPages As Integer, ByRef currentPage As Integer) As String
Try
Dim returnText As String = ""
Dim failureText As String = ""
Dim success As Boolean
rest.DebugMode = test
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
Return rest.LastErrorText
End If
If (success <> True) Then
Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
Return rest.LastErrorText
End If
rest.ClearAllQueryParams()
rest.AddHeader("X-API-Key", jwt)
rest.AddQueryParam("batch_seq_nr", batchNr)
If currentPage > 0 Then rest.AddQueryParam("page_nr", currentPage)
rest.IdleTimeoutMs = 1000000
Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/transactions")
If (rest.LastMethodSuccess <> True) Then
Debug.WriteLine(rest.LastErrorText)
rest.IdleTimeoutMs = 30000 'defualt
Return rest.LastErrorText
End If
If (rest.ResponseStatusCode <> IIf(rest.DebugMode = True, 201, 200) And rest.ResponseStatusCode <> 404) Then
Debug.WriteLine(rest.ResponseHeader)
Return rest.LastErrorText
End If
Debug.WriteLine(responseJson)
If test Then
responseJson = "{""sender"":""MSTS"",""receiver"":""10738"",""datetime"":""2024-06-28 10:56:39"",""code"":""OK"",""message"":""OK"",""batch_seq_nr"":""2"",""customer_currency"":""EUR"",""total_pages"":100,""total_count"":99998,""total_amount"":291133.02,""page_nr"":1,""page_count"":999,""page_amount"":26238.88,""transactions"":[{""transaction_id"":1001723285,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-20 14:02:34"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-20 14:02:34"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723286,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-26 05:34:49"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-26 05:34:49"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723289,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-03 09:57:14"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-03 09:57:14"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723290,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-04 14:47:25"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-04 14:47:25"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""}]}"
End If
Dim json As New Chilkat.JsonObject
success = json.Load(responseJson)
If (success <> True) Then
Debug.WriteLine(json.LastErrorText)
Return json.LastErrorText
End If
Debug.WriteLine(json)
If json.StringOf("message") <> "" AndAlso json.StringOf("message") <> "OK" Then Return json.StringOf("message")
batchNr = json.StringOf("batch_seq_nr")
totalPages = json.IntOf("total_pages")
currentPage = json.IntOf("page_nr")
Dim transactions As New Chilkat.JsonArray
transactions = json.ArrayOf("transactions")
If (json.LastMethodSuccess = False) Then
Return "transactions member not found."
End If
Dim num As Integer = transactions.Size
If num < 1 Then
Return "FEHLER Array Transaktions ist leer"
End If
If json.StringOf("receiver") = "10738" Then saveTransactions(num, dt, transactions, json.StringOf("receiver"))
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function getSettlementsFromInvoiceID(jwt As String, dt As DataTable, invoiceID As String, ByRef batchNr As Integer, ByRef totalPages As Integer, ByRef currentPage As Integer) As String
Try
Dim returnText As String = ""
Dim failureText As String = ""
Dim success As Boolean
rest.DebugMode = test
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
Return rest.LastErrorText
End If
If (success <> True) Then
Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
Return rest.LastErrorText
End If
rest.ClearAllQueryParams()
rest.AddQueryParam("invoice_id", invoiceID)
rest.AddHeader("X-API-Key", jwt)
rest.IdleTimeoutMs = 1000000
Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/settlements")
If (rest.LastMethodSuccess <> True) Then
Debug.WriteLine(rest.LastErrorText)
rest.IdleTimeoutMs = 30000 'defualt
Return rest.LastErrorText
End If
If (rest.ResponseStatusCode <> IIf(rest.DebugMode = True, 201, 200) And rest.ResponseStatusCode <> 404) Then
Debug.WriteLine(rest.ResponseHeader)
Return rest.LastErrorText
End If
Debug.WriteLine(responseJson)
If test Then
responseJson = "{""sender"":""MSTS"",""receiver"":""10738"",""datetime"":""2024-07-25 14:17:45"",""code"":""OK"",""message"":""OK"",""customer_currency"":""EUR"",""total_pages"":1,""total_count"":56351,""total_amount"":164386.34,""page_nr"":1,""page_count"":56351,""page_amount"":164386.34,""settlements"":[{""transaction_id"":1001723285,""purchase_datetime"":""2024-06-25 21:29:16"",""partner_haulier_id"":""401058"",""transaction_net_amount"":9.08,""transaction_gross_amount"":10.9,""msts_fee_amount"":0.11,""msts_vat_amount"":0,""total_gross_amount"":11.01,""invoice_number"":""1753066"",""invoice_date"":""2024-07-15"",""specification_page_id"":197,""specification_page_name"":""French toll roads - TISPL"",""transaction_debit_or_credit"":""Debit"",""original_transaction_id"":null,""original_invoice_number"":null,""original_invoice_date"":null,""credit_comment"":null,""batch_seq_nr"":""1""},{""transaction_id"":1001723286,""purchase_datetime"":""2024-06-26 11:17:48"",""partner_haulier_id"":""401267"",""transaction_net_amount"":10.42,""transaction_gross_amount"":12.5,""msts_fee_amount"":0.13,""msts_vat_amount"":0,""total_gross_amount"":12.63,""invoice_number"":""1753066"",""invoice_date"":""2024-07-15"",""specification_page_id"":197,""specification_page_name"":""French toll roads - TISPL"",""transaction_debit_or_credit"":""Debit"",""original_transaction_id"":null,""original_invoice_number"":null,""original_invoice_date"":null,""credit_comment"":null,""batch_seq_nr"":""1""}]}"
End If
Dim json As New Chilkat.JsonObject
success = json.Load(responseJson)
If (success <> True) Then
Return json.LastErrorText
End If
Debug.WriteLine(json)
If json.StringOf("message") <> "" AndAlso json.StringOf("message") <> "OK" Then Return json.StringOf("message")
batchNr = json.StringOf("batch_seq_nr")
totalPages = json.IntOf("total_pages")
currentPage = json.IntOf("page_nr")
Dim transactions As New Chilkat.JsonArray
transactions = json.ArrayOf("settlements")
If (json.LastMethodSuccess = False) Then
Return "transactions member not found."
End If
Dim num As Integer = transactions.Size
If num = -1 Then
Return "FEHLER Array Transaktions ist leer"
End If
If json.StringOf("receiver") = "10738" Then saveSettlements(num, dt, transactions, json.StringOf("receiver"))
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function getSettlementsFromBatchNrAndPage(jwt As String, dt As DataTable, ByRef batchNr As Integer, ByRef totalPages As Integer, ByRef currentPage As Integer) As String
Try
Dim returnText As String = ""
Dim failureText As String = ""
Dim success As Boolean
rest.DebugMode = test
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
If (success <> True) Then
Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
rest.ClearAllQueryParams()
rest.AddHeader("X-API-Key", jwt)
rest.AddQueryParam("batch_seq_nr", batchNr)
If currentPage > 0 Then rest.AddQueryParam("page_nr", currentPage)
rest.IdleTimeoutMs = 1000000
Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/settlements")
If (rest.LastMethodSuccess <> True) Then
Debug.WriteLine(rest.LastErrorText)
rest.IdleTimeoutMs = 30000 'defualt
Return rest.LastErrorText
End If
If (rest.ResponseStatusCode <> IIf(rest.DebugMode = True, 201, 200) And rest.ResponseStatusCode <> 404) Then
Debug.WriteLine(rest.ResponseHeader)
Return rest.LastErrorText
End If
Debug.WriteLine(responseJson)
If test Then
responseJson = "{""sender"":""MSTS"",""receiver"":""23771"",""datetime"":""2024-06-28 10:56:39"",""code"":""OK"",""message"":""OK"",""batch_seq_nr"":""2"",""customer_currency"":""EUR"",""total_pages"":100,""total_count"":99998,""total_amount"":291133.02,""page_nr"":1,""page_count"":999,""page_amount"":26238.88,""transactions"":[{""transaction_id"":1001723285,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-20 14:02:34"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-20 14:02:34"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723286,""partner_haulier_id"":""401052"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-26 05:34:49"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-26 05:34:49"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005108291"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""BG1000FG"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723289,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-03 09:57:14"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-03 09:57:14"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""},{""transaction_id"":1001723290,""partner_haulier_id"":""401370"",""supplier_name"":""TUNNEL ALPIN DU FREJUS"",""transaction_country"":""FR"",""transaction_domain"":""Frejus tunnel"",""purchase_datetime"":""2024-04-04 14:47:25"",""entry_point_name"":""FREJUS TUNNEL"",""entry_datetime"":""2024-04-04 14:47:25"",""exit_point_name"":null,""exit_datetime"":null,""device_product_type"":""Frejus"",""device_product_number"":""3081184009005114273"",""transaction_product_id"":140,""transaction_product_name"":""Toll "",""license_plate_number"":""RU042IS"",""vehicle_country"":""RS"",""original_currency"":""EUR"",""original_net_amount"":258.38,""original_gross_amount"":310.05,""original_vat_percentage"":20,""transaction_net_amount"":258.38,""transaction_gross_amount"":310.05,""exempt_amount"":0,""msts_fee_amount"":4.65,""msts_vat_amount"":0,""msts_vat_percentage"":0,""total_gross_amount"":314.7,""transaction_status"":""Billed"",""original_transaction_id"":null,""credit_comment"":null,""loading_date"":""2024-05-14"",""batch_seq_nr"":""2""}]}"
End If
Dim json As New Chilkat.JsonObject
success = json.Load(responseJson)
If (success <> True) Then
Debug.WriteLine(json.LastErrorText)
End If
Debug.WriteLine(json)
If json.StringOf("message") <> "" AndAlso json.StringOf("message") <> "OK" Then Return json.StringOf("message")
batchNr = json.StringOf("batch_seq_nr")
totalPages = json.IntOf("total_pages")
currentPage = json.IntOf("page_nr")
Dim transactions As New Chilkat.JsonArray
transactions = json.ArrayOf("transactions")
If (json.LastMethodSuccess = False) Then
Debug.WriteLine("transactions member not found.")
End If
Dim num As Integer = transactions.Size
If num = -1 Then
Return "FEHLER Array Transaktions ist leer"
End If
If json.StringOf("receiver") = "10738" Then saveSettlements(num, dt, transactions, json.StringOf("receiver"))
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public 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 Function checkNullInteger(ByVal o As Object) As Integer
If o IsNot Nothing AndAlso o IsNot DBNull.Value Then
If IsNumeric(o) Then
Return CInt(o)
Else
Return -1
End If
Else
Return -1
End If
End Function
Public Function checkNullReturnValue(ByVal o As Object, ByVal returnValue As Object) As Object
If o IsNot Nothing And o IsNot DBNull.Value And Not o = "null" Then Return (o)
Return returnValue
End Function
Public Function checkNullIntegerZero(ByVal o As Object) As Integer
If o IsNot Nothing And o IsNot DBNull.Value And Not o = "null" Then Return CInt(o)
Return 0
End Function
Public 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 -1
End If
Else
Return -1
End If
End Function
Public Function checkNullBool(ByVal o As Object) As Boolean
If o Is Nothing Or o Is DBNull.Value Or o = "null" Then Return 0
Try
Return CBool(o)
Catch ex As Exception
End Try
Return 0
End Function
Public Function checkNullDateNothing(ByVal o As Object) As Object
If o Is DBNull.Value Or Not IsDate(o) Then
Return Nothing
Else
Return CDate(o)
End If
End Function
Public Function getInvoices(jwt As String, dt As DataTable, startDate As Date, end_date As Date) As String
Try
Dim returnText As String = ""
Dim failureText As String = ""
Dim success As Boolean
rest.DebugMode = test
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
If (success <> True) Then
Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
failureText = rest.LastErrorText
Return False
End If
rest.ClearAllQueryParams()
rest.AddQueryParam("start_date", startDate.ToString("yyyy-MM-dd"))
rest.AddQueryParam("end_date", end_date.ToString("yyyy-MM-dd"))
rest.AddHeader("X-API-Key", jwt)
rest.IdleTimeoutMs = 1000000
Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/invoices")
If (rest.LastMethodSuccess <> True) Then
Debug.WriteLine(rest.LastErrorText)
rest.IdleTimeoutMs = 30000 'defualt
Return rest.LastErrorText
End If
If (rest.ResponseStatusCode <> IIf(rest.DebugMode = True, 201, 200) And rest.ResponseStatusCode <> 404) Then
Debug.WriteLine(rest.ResponseHeader)
Return rest.LastErrorText
End If
Debug.WriteLine(responseJson)
If test Then
responseJson = "{""sender"":""MSTS"",""receiver"":""10738"",""datetime"":""2024-07-24 11:07:08"",""code"":""OK"",""message"":""OK"",""pdf_invoices"":[{""name"":""20240715_11024_ES_VAT.pdf"",""url"":"""",""total_amount_euro"":-2549.2400000000004,""total_vat_amount_euro"":-2549.2400000000002,""msts_vat_number"":""N0034998E"",""invoice_id"":1753066,""invoice_date"":""2024-07-15""},{""name"":""20240715_11024_FR_VAT.pdf"",""url"":"""",""total_amount_euro"":326.90000000000006,""total_vat_amount_euro"":54.49,""msts_vat_number"":""FR39491257770"",""invoice_id"":1753066,""invoice_date"":""2024-07-15""},{""name"":""20240715_11070_FR_VAT.pdf"",""url"":"""",""total_amount_euro"":0.00,""total_vat_amount_euro"":0.00,""msts_vat_number"":""FR39491257770"",""invoice_id"":1753066,""invoice_date"":""2024-07-15""}]}"
End If
Dim json As New Chilkat.JsonObject
success = json.Load(responseJson)
If (success <> True) Then
Debug.WriteLine(json.LastErrorText)
End If
If json.StringOf("message") <> "" AndAlso json.StringOf("message") <> "OK" Then Return json.StringOf("message")
Debug.WriteLine(json)
Dim invoices As New Chilkat.JsonArray
invoices = json.ArrayOf("pdf_invoices")
If (json.LastMethodSuccess = False) Then
Debug.WriteLine("pdf_invoices member not found.")
End If
Dim num As Integer = invoices.Size
If num = -1 Then
Return "FEHLER Array Invoices ist leer"
End If
Dim j As Integer = 0
If dt IsNot Nothing And Not dt.Columns.Contains("name") Then
dt.Columns.Add("name", GetType(String))
dt.Columns.Add("url", GetType(String))
dt.Columns.Add("total_amount_euro", GetType(Double))
dt.Columns.Add("total_vat_amount_euro", GetType(Double))
dt.Columns.Add("msts_vat_number", GetType(String))
dt.Columns.Add("invoice_id", GetType(String))
dt.Columns.Add("invoice_date", GetType(String))
While j < num
Dim invoice As Chilkat.JsonObject = invoices.ObjectAt(j)
Dim R As DataRow = dt.NewRow
R("name") = checkNullStr(invoice.StringOf("name"))
R("url") = checkNullStr(invoice.StringOf("url"))
R("total_amount_euro") = CDbl(IIf(invoice.StringOf("total_amount_euro") = "null", "0", invoice.StringOf("total_amount_euro").Replace(".", ",")))
R("total_vat_amount_euro") = CDbl(IIf(invoice.StringOf("total_vat_amount_euro") = "null", "0", invoice.StringOf("total_vat_amount_euro").Replace(".", ",")))
R("msts_vat_number") = checkNullStr(invoice.StringOf("msts_vat_number"))
R("invoice_id") = checkNullInteger(invoice.StringOf("invoice_id"))
R("invoice_date") = checkNullStr(invoice.StringOf("invoice_date"))
Dim invoice_date_string As String = invoice.StringOf("invoice_date")
Try
If invoice_date_string <> "" AndAlso invoice_date_string <> "null" Then R("invoice_date") = CDate(invoice_date_string)
Catch ex As Exception
'VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
dt.Rows.Add(R)
If R("total_amount_euro") <> 0 And R("total_vat_amount_euro") <> 0 Then
Dim inv As New cMSEInvoices()
Dim nameString = checkNullStr(R("name"))
inv.name = nameString
inv.total_amount_euro = Math.Round(R("total_amount_euro"), 2)
inv.total_vat_amount_euro = Math.Round(R("total_vat_amount_euro"), 2)
inv.msts_vat_number = checkNullStr(R("msts_vat_number"))
inv.invoice_id = checkNullInteger(R("invoice_id"))
inv.invoice_date = checkNullDateNothing(R("invoice_date"))
If nameString.Length > 13 AndAlso nameString.Contains("_") Then
inv.customer_number = nameString.Substring(nameString.IndexOf("_") + 1, 5)
End If
If nameString.Length > 16 AndAlso nameString.Contains("_") Then
Dim indexOfFirst_ = nameString.IndexOf("_")
If nameString.Length > indexOfFirst_ + 2 Then
Dim countryString = nameString.Substring(nameString.IndexOf("_", indexOfFirst_ + 1) + 1, 2)
inv.country = countryString
End If
End If
inv.SAVE()
End If
j = j + 1
End While
For Each r As DataRow In dt.Rows
'\\fmzoll\f\FMZoll\MSE\TESTRECHNUNGEN
'\\datenarchiv\Datenarchiv\MDM_SCHNITTSTELLEN\ECHTSYSTEM\Nachrichtendaten_ZIEL\MSE
If r("url") <> "" AndAlso r("name") <> "" AndAlso r("name").contains("VAT") Then 'only VAT-Invoices
VERAG_PROG_ALLGEMEIN.cFormularManager.getPDFViaSpirePDF_FromURLStream(r("url"), r("name"), PDFRECHNUNGENPFAD, False)
End If
Next
dt = dt.DefaultView.ToTable()
End If
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Sub saveTransactions(num As Integer, dt As DataTable, transactions As Chilkat.JsonArray, receiver As Integer, Optional ignorePurchaseDate As Boolean = False)
Dim j As Integer = 0
If dt IsNot Nothing And Not dt.Columns.Contains("transaction_id") Then
dt.Columns.Add("transaction_id", GetType(String))
dt.Columns.Add("partner_haulier_id", GetType(Integer))
dt.Columns.Add("supplier_name", GetType(String))
dt.Columns.Add("transaction_country", GetType(String))
dt.Columns.Add("transaction_domain", GetType(String))
dt.Columns.Add("purchase_datetime", GetType(DateTime))
dt.Columns.Add("entry_point_name", GetType(String))
dt.Columns.Add("entry_datetime", GetType(DateTime))
dt.Columns.Add("exit_point_name", GetType(String))
dt.Columns.Add("exit_datetime", GetType(DateTime))
dt.Columns.Add("device_product_type", GetType(String))
dt.Columns.Add("device_product_number", GetType(String))
dt.Columns.Add("transaction_product_id", GetType(Integer))
dt.Columns.Add("transaction_product_name", GetType(String))
dt.Columns.Add("license_plate_number", GetType(String))
dt.Columns.Add("vehicle_country", GetType(String))
dt.Columns.Add("original_currency", GetType(String))
dt.Columns.Add("original_net_amount", GetType(Double))
dt.Columns.Add("original_gross_amount", GetType(Double))
dt.Columns.Add("original_vat_amount", GetType(Double))
dt.Columns.Add("original_vat_percentage", GetType(Double))
dt.Columns.Add("customer_currency", GetType(String))
dt.Columns.Add("transaction_net_amount", GetType(Double))
dt.Columns.Add("transaction_gross_amount", GetType(Double))
dt.Columns.Add("exempt_amount", GetType(Double))
dt.Columns.Add("msts_fee_amount", GetType(Double))
dt.Columns.Add("msts_vat_amount", GetType(Double))
dt.Columns.Add("msts_vat_percentage", GetType(Double))
dt.Columns.Add("total_gross_amount", GetType(Double))
dt.Columns.Add("transaction_status", GetType(String))
dt.Columns.Add("original_transaction_id", GetType(String))
dt.Columns.Add("loading_date", GetType(Date))
dt.Columns.Add("batch_seq_nr", GetType(Integer))
dt.Columns.Add("distance_km", GetType(Double))
dt.Columns.Add("USteuer_EUR", GetType(Double))
End If
While j < num
Dim transaction As Chilkat.JsonObject = transactions.ObjectAt(j)
Dim purchaseDate As New Chilkat.CkDateTime
Dim entryDate As New Chilkat.CkDateTime
Dim exitDate As New Chilkat.CkDateTime
Dim loadingDate As New Chilkat.CkDateTime
Dim getAsLocal As Boolean = False
Dim USteuer_EUR As Double = 0
Dim R As DataRow = dt.NewRow
R("transaction_id") = transaction.StringOf("transaction_id")
R("partner_haulier_id") = transaction.IntOf("partner_haulier_id")
R("supplier_name") = transaction.StringOf("supplier_name")
R("transaction_country") = transaction.StringOf("transaction_country")
R("transaction_domain") = transaction.StringOf("transaction_domain")
R("entry_point_name") = transaction.StringOf("entry_point_name")
R("exit_point_name") = transaction.StringOf("exit_point_name")
R("device_product_type") = transaction.StringOf("device_product_type")
If ((transaction.StringOf("device_product_type") = "" Or transaction.StringOf("device_product_type") = "null") And CDbl(transaction.StringOf("msts_fee_amount").Replace(".", ",")) <> 0) Then
R("device_product_type") = transaction.StringOf("transaction_product_name")
End If
If ((transaction.StringOf("device_product_type") = "" Or transaction.StringOf("device_product_type") = "null") And transaction.StringOf("transaction_product_name") = "Charge - HU-GO SIM card fee") Then
R("device_product_type") = transaction.StringOf("transaction_product_name")
End If
R("device_product_number") = transaction.StringOf("device_product_number")
R("transaction_product_id") = transaction.IntOf("transaction_product_id")
R("transaction_product_name") = transaction.StringOf("transaction_product_name")
R("license_plate_number") = transaction.StringOf("license_plate_number")
R("vehicle_country") = transaction.StringOf("vehicle_country")
R("original_currency") = transaction.StringOf("original_currency")
R("original_net_amount") = CDbl(transaction.StringOf("original_net_amount").Replace(".", ","))
R("original_gross_amount") = CDbl(transaction.StringOf("original_gross_amount").Replace(".", ","))
R("original_vat_percentage") = CDbl(IIf(transaction.StringOf("original_vat_percentage") = "null", 0, transaction.StringOf("original_vat_percentage").Replace(".", ",")))
R("transaction_net_amount") = CDbl(transaction.StringOf("transaction_net_amount").Replace(".", ","))
R("transaction_gross_amount") = CDbl(transaction.StringOf("transaction_gross_amount").Replace(".", ","))
R("exempt_amount") = CDbl(transaction.StringOf("exempt_amount").Replace(".", ","))
R("msts_fee_amount") = CDbl(transaction.StringOf("msts_fee_amount").Replace(".", ","))
R("msts_vat_amount") = CDbl(transaction.StringOf("msts_vat_amount").Replace(".", ","))
R("msts_vat_percentage") = CDbl(transaction.StringOf("msts_vat_percentage").Replace(".", ","))
R("total_gross_amount") = CDbl(transaction.StringOf("total_gross_amount").Replace(".", ","))
R("transaction_status") = transaction.StringOf("transaction_status")
R("batch_seq_nr") = transaction.StringOf("batch_seq_nr")
R("original_vat_amount") = CDbl(R("original_gross_amount") - R("original_net_amount"))
If (transaction.StringOf("original_currency") = "EUR" Or R("original_vat_amount") = 0) Then
USteuer_EUR = R("original_vat_amount")
Else
If transaction.StringOf("transaction_country") = "HU" Then
Dim curBruttobetragEUR = R("msts_fee_amount") + R("transaction_gross_amount")
Dim steuersatz = SQL.DLookup("1+[Steuersatz]", "[Länderverzeichnis für die Außenhandelsstatistik]", "[LandNr]=64", "FMZOLL")
Dim curNettobetragEUR = CInt(curBruttobetragEUR / steuersatz * 100 + 0.5) / 100
USteuer_EUR = Math.Round(curBruttobetragEUR - curNettobetragEUR, 2)
End If
End If
R("USteuer_EUR") = USteuer_EUR
'R("distance_km") = transaction.StringOf("distance_km")
Dim purchase_datetime_string As String = transaction.StringOf("purchase_datetime")
Dim entry_datetime_string As String = transaction.StringOf("entry_datetime")
Dim exit_datetime_string As String = transaction.StringOf("exit_datetime")
Dim loading_date_string As String = transaction.StringOf("loading_date")
Try
If purchase_datetime_string <> "" AndAlso purchase_datetime_string <> "null" Then R("purchase_datetime") = CDate(purchase_datetime_string)
If entry_datetime_string <> "" AndAlso entry_datetime_string <> "null" Then R("entry_datetime") = CDate(entry_datetime_string)
If exit_datetime_string <> "" AndAlso exit_datetime_string <> "null" Then R("exit_datetime") = CDate(exit_datetime_string)
If loading_date_string <> "" AndAlso loading_date_string <> "null" Then R("loading_date") = CDate(loading_date_string)
Catch ex As Exception
'VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
dt.Rows.Add(R)
If IIf(ignorePurchaseDate, True, CDate(R("purchase_datetime")) >= "30.05.2024") Then
Dim trans As New cMSETransactions()
trans.transaction_id = checkNullStr(R("transaction_id"))
trans.controller_id = receiver
trans.partner_haulier_id = checkNullInteger(R("partner_haulier_id"))
trans.supplier_name = checkNullStr(R("supplier_name"))
trans.transaction_country = checkNullStr(R("transaction_country"))
trans.transaction_domain = checkNullStr(R("transaction_domain"))
trans.purchase_datetime = checkNullDateNothing(R("purchase_datetime"))
trans.entry_point_name = checkNullStr(R("entry_point_name"))
trans.entry_datetime = checkNullDateNothing(R("entry_datetime"))
trans.exit_point_name = checkNullStr(R("exit_point_name"))
trans.exit_datetime = checkNullDateNothing(R("exit_datetime"))
trans.device_product_type = checkNullStr(R("device_product_type"))
trans.device_product_number = checkNullStr(R("device_product_number"))
trans.transaction_product_id = checkNullInteger(R("transaction_product_id"))
trans.transaction_product_name = checkNullStr(R("transaction_product_name"))
trans.license_plate_number = checkNullStr(R("license_plate_number"))
trans.vehicle_country = checkNullStr(R("vehicle_country"))
trans.original_currency = checkNullStr(R("original_currency"))
trans.original_net_amount = checkNulDbl(R("original_net_amount"))
trans.original_gross_amount = checkNulDbl(R("original_gross_amount"))
trans.original_vat_amount = checkNulDbl(R("original_vat_amount"))
trans.original_vat_percentage = checkNulDbl(R("original_vat_percentage"))
trans.transaction_net_amount = checkNulDbl(R("transaction_net_amount"))
trans.transaction_gross_amount = checkNulDbl(R("transaction_gross_amount"))
trans.msts_fee_amount = checkNulDbl(R("msts_fee_amount"))
trans.msts_vat_amount = checkNulDbl(R("msts_vat_amount"))
trans.total_gross_amount = checkNulDbl(R("total_gross_amount"))
trans.transaction_status = checkNullStr(R("transaction_status"))
trans.loading_date = checkNullDateNothing(R("loading_date"))
trans.batch_seq_nr = checkNullInteger(R("batch_seq_nr"))
trans.tstmp = Now()
trans.USteuer_EUR = checkNulDbl(R("USteuer_EUR"))
'trans.distance_km = CDbl(R("distance_km"))
trans.SAVE()
End If
j = j + 1
End While
dt = dt.DefaultView.ToTable()
End Sub
Public Sub saveSettlements(num As Integer, dt As DataTable, transactions As Chilkat.JsonArray, receiver As Integer)
Dim j As Integer = 0
If dt IsNot Nothing And Not dt.Columns.Contains("transaction_id") Then
dt.Columns.Add("transaction_id", GetType(String))
dt.Columns.Add("invoice_number", GetType(String))
dt.Columns.Add("invoice_date", GetType(String))
dt.Columns.Add("specification_page_id", GetType(String))
dt.Columns.Add("specification_page_name", GetType(String))
dt.Columns.Add("transaction_debit_or_credit", GetType(String))
dt.Columns.Add("original_transaction_id", GetType(String))
dt.Columns.Add("original_invoice_number", GetType(Integer))
dt.Columns.Add("original_invoice_date", GetType(String))
dt.Columns.Add("credit_comment", GetType(String))
End If
While j < num
Dim transaction As Chilkat.JsonObject = transactions.ObjectAt(j)
Dim R As DataRow = dt.NewRow
R("transaction_id") = checkNullStr(transaction.StringOf("transaction_id"))
R("invoice_number") = checkNullStr(transaction.StringOf("invoice_number"))
R("specification_page_id") = checkNullStr(transaction.StringOf("specification_page_id"))
R("specification_page_name") = checkNullStr(transaction.StringOf("specification_page_name"))
R("transaction_debit_or_credit") = checkNullStr(transaction.StringOf("transaction_debit_or_credit"))
R("original_transaction_id") = checkNullStr(transaction.StringOf("original_transaction_id"))
R("original_invoice_number") = checkNullInteger(transaction.StringOf("original_invoice_number"))
R("credit_comment") = checkNullStr(transaction.StringOf("credit_comment"))
Dim invoice_date_string As String = transaction.StringOf("invoice_date")
Dim original_invoice_date_string As String = transaction.StringOf("original_invoice_date")
Try
If invoice_date_string <> "" AndAlso invoice_date_string <> "null" Then R("invoice_date") = CDate(invoice_date_string)
If original_invoice_date_string <> "" AndAlso original_invoice_date_string <> "null" Then R("original_invoice_date") = CDate(original_invoice_date_string)
Catch ex As Exception
'VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
dt.Rows.Add(R)
Dim trans = New cMSESettlements(R("transaction_id"))
trans.invoice_number = checkNullStr(R("invoice_number"))
trans.invoice_date = checkNullDateNothing(R("invoice_date"))
trans.specification_page_id = checkNullStr(R("specification_page_id"))
trans.specification_page_name = checkNullStr(R("specification_page_name"))
trans.transaction_debit_or_credit = checkNullStr(R("transaction_debit_or_credit"))
trans.original_transaction_id = checkNullStr(R("original_transaction_id"))
trans.original_invoice_number = checkNullInteger(R("original_invoice_number"))
trans.original_invoice_date = checkNullDateNothing(R("original_invoice_date"))
trans.credit_comment = checkNullStr(R("credit_comment"))
trans.SAVE()
j = j + 1
End While
dt = dt.DefaultView.ToTable()
End Sub
Public Sub saveCustomers(num As Integer, dt As DataTable, customers As Chilkat.JsonArray)
Dim j As Integer = 0
If dt IsNot Nothing And Not dt.Columns.Contains("customer_id") Then
dt.Columns.Add("customer_id", GetType(Integer))
dt.Columns.Add("partner_customer_number", GetType(String))
dt.Columns.Add("customer_name", GetType(String))
dt.Columns.Add("vat_number", GetType(String))
dt.Columns.Add("alternative_vat_number", GetType(String))
dt.Columns.Add("coc_number", GetType(String))
dt.Columns.Add("partner_fleet_card_number", GetType(String))
End If
While j < num
Dim custom As Chilkat.JsonObject = customers.ObjectAt(j)
Dim R As DataRow = dt.NewRow
R("customer_id") = custom.IntOf("customer_id")
R("partner_customer_number") = custom.StringOf("partner_customer_number")
R("customer_name") = custom.StringOf("customer_name")
R("vat_number") = custom.StringOf("vat_number")
R("alternative_vat_number") = custom.StringOf("alternative_vat_number")
R("coc_number") = custom.StringOf("coc_number")
R("partner_fleet_card_number") = custom.StringOf("partner_fleet_card_number")
dt.Rows.Add(R)
Dim cust As New cMSECustomers(R("customer_id"))
cust.partner_customer_number = checkNullStr(R("partner_customer_number"))
cust.customer_name = checkNullStr(R("customer_name"))
cust.vat_number = checkNullStr(R("vat_number"))
cust.alternative_vat_number = checkNullStr(R("alternative_vat_number"))
cust.coc_number = checkNullStr(R("coc_number"))
cust.partner_fleet_card_number = checkNullStr(R("partner_fleet_card_number"))
cust.SAVE()
j = j + 1
End While
dt = dt.DefaultView.ToTable()
End Sub
End Class
Public Class cMSEInvoices
Property id As Integer
Property name As Object = Nothing
Property total_amount_euro As Object = Nothing
Property total_vat_amount_euro As Object = Nothing
Property msts_vat_number As Object = Nothing
Property invoice_id As Object = Nothing
Property invoice_date As Object = Nothing
Property customer_number As Object = Nothing
Property country As Object = Nothing
Public hasEntry = False
Dim SQL As New SQL
Sub New()
End Sub
Sub New(name, invoice_id)
Me.name = name
Me.invoice_id = invoice_id
LOAD()
End Sub
Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("name", name))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("total_amount_euro", total_amount_euro))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("total_vat_amount_euro", total_vat_amount_euro))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("msts_vat_number", msts_vat_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("invoice_id", invoice_id))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("invoice_date", invoice_date))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("customer_number", customer_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("country", country))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblMSEInvoices WHERE name=@name AND invoice_id = @invoice_id) " &
" BEGIN " & getUpdateCmd() & " END " &
" Else " &
" BEGIN " & getInsertCmd() & " END " &
" commit tran "
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function
Public Sub LOAD()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblMSEInvoices WHERE name=@name AND invoice_id = @invoice_id", conn)
cmd.Parameters.AddWithValue("@name", name)
cmd.Parameters.AddWithValue("@invoice_id", invoice_id)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(li.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Public Function getUpdateCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
Return (" UPDATE tblMSEInvoices SET " & str & " WHERE name=@name AND invoice_id = @invoice_id ")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
Public Function getInsertCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
Dim values As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "],"
values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
values = values.Substring(0, values.Length - 1) 'wg. ','
Return (" INSERT INTO tblMSEInvoices (" & str & ") VALUES(" & values & ") ")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
End Class
Public Class cMSETransactions
Property transaction_id As Object = Nothing
Property controller_id As Integer
Property partner_haulier_id As Object = Nothing
Property supplier_name As Object = Nothing
Property transaction_country As Object = Nothing
Property transaction_domain As Object = Nothing
Property purchase_datetime As Object = Nothing
Property entry_point_name As Object = Nothing
Property entry_datetime As Object = Nothing
Property exit_point_name As Object = Nothing
Property exit_datetime As Object = Nothing
Property device_product_type As Object = Nothing
Property device_product_number As Object = Nothing
Property transaction_product_id As Object = Nothing
Property transaction_product_name As Object = Nothing
Property license_plate_number As Object = Nothing
Property vehicle_country As Object = Nothing
Property original_currency As Object = Nothing
Property original_net_amount As Object = Nothing
Property original_gross_amount As Object = Nothing
Property original_vat_amount As Object = Nothing
Property original_vat_percentage As Object = Nothing
Property customer_currency As Object = Nothing
Property transaction_net_amount As Object = Nothing
Property transaction_gross_amount As Object = Nothing
Property exempt_amount As Object = Nothing
Property msts_fee_amount As Object = Nothing
Property msts_vat_amount As Object = Nothing
Property msts_vat_percentage As Object = Nothing
Property total_gross_amount As Object = Nothing
Property transaction_status As Object = Nothing
Property loading_date As Object = Nothing
Property batch_seq_nr As Object = Nothing
Property distance_km As Object = Nothing
Property tstmp As Object = Nothing
Property USteuer_EUR As Object = Nothing
Property charged As Boolean = False
Property chargedDatetime As Object = Nothing
Public hasEntry = False
Dim SQL As New SQL
Sub New()
End Sub
Sub New(transaction_id)
Me.transaction_id = transaction_id
LOAD()
End Sub
Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_id", transaction_id))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("controller_id", controller_id))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("partner_haulier_id", partner_haulier_id))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("supplier_name", supplier_name))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_country", transaction_country))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_domain", transaction_domain))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("purchase_datetime", purchase_datetime))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("entry_point_name", entry_point_name))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("entry_datetime", entry_datetime))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("exit_point_name", exit_point_name))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("exit_datetime", exit_datetime))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("device_product_type", device_product_type))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("device_product_number", device_product_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_product_id", transaction_product_id))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_product_name", transaction_product_name))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("license_plate_number", license_plate_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("vehicle_country", vehicle_country))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("original_currency", original_currency))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("original_net_amount", original_net_amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("original_gross_amount", original_gross_amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("original_vat_amount", original_vat_amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("original_vat_percentage", original_vat_percentage))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("customer_currency", customer_currency))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_net_amount", transaction_net_amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_gross_amount", transaction_gross_amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("exempt_amount", exempt_amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("msts_fee_amount", msts_fee_amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("msts_vat_amount", msts_vat_amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("msts_vat_percentage", msts_vat_percentage))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("total_gross_amount", total_gross_amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_status", transaction_status))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("loading_date", loading_date))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("batch_seq_nr", batch_seq_nr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("distance_km", distance_km))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("tstmp", tstmp))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("USteuer_EUR", USteuer_EUR))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("charged", charged))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("chargedDatetime", chargedDatetime))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblMSETransactions WHERE transaction_id=@transaction_id) " &
" BEGIN " & getUpdateCmd() & " END " &
" Else " &
" BEGIN " & getInsertCmd() & " END " &
" commit tran "
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function
Public Sub LOAD()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblMSETransactions WHERE transaction_id=@transaction_id", conn)
cmd.Parameters.AddWithValue("@transaction_id", transaction_id)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(li.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Public Function getUpdateCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
Return (" UPDATE tblMSETransactions SET " & str & " WHERE transaction_id=@transaction_id and charged <> 1")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
Public Function getInsertCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
Dim values As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "],"
values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
values = values.Substring(0, values.Length - 1) 'wg. ','
Return (" INSERT INTO tblMSETransactions (" & str & ") VALUES(" & values & ") ")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
End Class
Public Class cMSESettlements
Property transaction_id As Object = Nothing
Property invoice_number As Object = Nothing
Property invoice_date As Object = Nothing
Property specification_page_id As Object = Nothing
Property specification_page_name As Object = Nothing
Property transaction_debit_or_credit As Object = Nothing
Property original_transaction_id As Object = Nothing
Property original_invoice_number As Object = Nothing
Property original_invoice_date As Object = Nothing
Property credit_comment As Object = Nothing
Public hasEntry = False
Dim SQL As New SQL
Sub New()
End Sub
Sub New(transaction_id)
Me.transaction_id = transaction_id
LOAD()
End Sub
Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_id", transaction_id))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("invoice_number", invoice_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("invoice_date", invoice_date))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("specification_page_id", specification_page_id))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("specification_page_name", specification_page_name))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transaction_debit_or_credit", transaction_debit_or_credit))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("original_transaction_id", original_transaction_id))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("original_invoice_number", original_invoice_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("original_invoice_date", original_invoice_date))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("credit_comment", credit_comment))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblMSESettlements WHERE transaction_id=@transaction_id) " &
" BEGIN " & getUpdateCmd() & " END " &
" Else " &
" BEGIN " & getInsertCmd() & " END " &
" commit tran "
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function
Public Sub LOAD()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblMSESettlements WHERE transaction_id=@transaction_id", conn)
cmd.Parameters.AddWithValue("@transaction_id", transaction_id)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(li.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Public Function getUpdateCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
Return (" UPDATE tblMSESettlements SET " & str & " WHERE transaction_id=@transaction_id")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
Public Function getInsertCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
Dim values As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "],"
values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
values = values.Substring(0, values.Length - 1) 'wg. ','
Return (" INSERT INTO tblMSESettlements (" & str & ") VALUES(" & values & ") ")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
End Class
Public Class cMSECustomers
Property customer_id As Object = Nothing
Property partner_customer_number As Object = Nothing
Property customer_name As Object = Nothing
Property vat_number As Object = Nothing
Property alternative_vat_number As Object = Nothing
Property coc_number As Object = Nothing
Property partner_fleet_card_number As Object = Nothing
Public hasEntry = False
Dim SQL As New SQL
Sub New()
End Sub
Sub New(customer_id)
Me.customer_id = customer_id
LOAD()
End Sub
Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("customer_id", customer_id))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("partner_customer_number", partner_customer_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("customer_name", customer_name))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("vat_number", vat_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("alternative_vat_number", alternative_vat_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("coc_number", coc_number))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("partner_fleet_card_number", partner_fleet_card_number))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblMSECustomers WHERE customer_id=@customer_id) " &
" BEGIN " & getUpdateCmd() & " END " &
" Else " &
" BEGIN " & getInsertCmd() & " END " &
" commit tran "
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function
Public Sub LOAD()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblMSECustomers WHERE customer_id=@customer_id", conn)
cmd.Parameters.AddWithValue("@customer_id", customer_id)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(li.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Public Function getUpdateCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
Return (" UPDATE tblMSECustomers SET " & str & " WHERE customer_id=@customer_id")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
Public Function getInsertCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
Dim values As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "],"
values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
values = values.Substring(0, values.Length - 1) 'wg. ','
Return (" INSERT INTO tblMSECustomers (" & str & ") VALUES(" & values & ") ")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
End Class