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 SQL As New SQL Dim apiSettingsloaded As Boolean = False Sub New(program As String) VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() API = SQL.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & program & "' and api_productive ='" & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN") If API.Rows.Count = 0 Then MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!") Else apiSettingsloaded = True API_STRING = API.Rows(0).Item("api_url") End If End Sub Public Function 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) As String Try Dim returnText As String = "" Dim failureText As String = "" Dim success As Boolean 'rest.DebugMode = True rest.VerboseLogging = True 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 = 500000 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 <> 200) Then Debug.WriteLine(rest.ResponseHeader) Return "rest.LastErrorText" End If Debug.WriteLine(responseJson) '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""}]}" Dim json As New Chilkat.JsonObject success = json.Load(responseJson) If (success <> True) Then Debug.WriteLine(json.LastErrorText) End If Debug.WriteLine(json) 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" End If 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 getTransactionsFromToDate(jwt As String, dt As DataTable, start_date As Date, end_date As Date) As String Try Dim returnText As String = "" Dim failureText As String = "" Dim success As Boolean 'rest.DebugMode = True rest.VerboseLogging = True 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 = 500000 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 <> 200) Then Debug.WriteLine(rest.ResponseHeader) Return rest.LastErrorText End If Debug.WriteLine(responseJson) '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""}]}" Dim json As New Chilkat.JsonObject success = json.Load(responseJson) If (success <> True) Then Debug.WriteLine(json.LastErrorText) End If Debug.WriteLine(json) 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" End If 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 getBilledTransactionsFromInvoiceID(jwt As String, dt As DataTable, invoiceID As String) As String Try Dim returnText As String = "" Dim failureText As String = "" Dim success As Boolean 'rest.DebugMode = True rest.VerboseLogging = True 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("invoice_id", invoiceID) rest.AddHeader("X-API-Key", jwt) rest.IdleTimeoutMs = 500000 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 <> 200) Then Debug.WriteLine(rest.ResponseHeader) Return "rest.LastErrorText" End If Debug.WriteLine(responseJson) '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""}]}" Dim json As New Chilkat.JsonObject success = json.Load(responseJson) If (success <> True) Then Debug.WriteLine(json.LastErrorText) End If Debug.WriteLine(json) Dim transactions As New Chilkat.JsonArray transactions = json.ArrayOf("settlements") 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" End If Dim j As Integer = 0 dt.Columns.Clear() If dt IsNot Nothing And Not dt.Columns.Contains("transaction_id") Then dt.Columns.Add("transaction_id", GetType(String)) 'dt.Columns.Add("purchase_datetime", GetType(DateTime)) 'dt.Columns.Add("partner_haulier_id", GetType(Integer)) 'dt.Columns.Add("transaction_net_amount", GetType(String)) 'dt.Columns.Add("transaction_gross_amount", GetType(String)) 'dt.Columns.Add("msts_fee_amount", GetType(String)) 'dt.Columns.Add("msts_vat_amount", GetType(String)) 'dt.Columns.Add("total_gross_amount", 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)) While j < num Dim transaction As Chilkat.JsonObject = transactions.ObjectAt(j) Dim R As DataRow = dt.NewRow R("transaction_id") = transaction.StringOf("transaction_id") 'R("purchase_datetime") = transaction.StringOf("purchase_datetime") 'R("partner_haulier_id") = transaction.IntOf("partner_haulier_id") 'R("transaction_net_amount") = transaction.IntOf("transaction_net_amount") 'R("transaction_gross_amount") = transaction.StringOf("transaction_gross_amount") 'R("msts_fee_amount") = transaction.StringOf("msts_fee_amount") 'R("msts_vat_amount") = transaction.StringOf("msts_vat_amount") 'R("total_gross_amount") = transaction.StringOf("total_gross_amount") R("invoice_number") = transaction.StringOf("invoice_number") R("invoice_date") = transaction.StringOf("invoice_date") R("specification_page_id") = transaction.StringOf("specification_page_id") R("specification_page_name") = transaction.StringOf("specification_page_name") R("transaction_debit_or_credit") = transaction.StringOf("transaction_debit_or_credit") R("original_transaction_id") = IIf(transaction.StringOf("original_transaction_id") <> "null", transaction.StringOf("original_transaction_id"), "") R("original_invoice_number") = IIf(transaction.StringOf("original_invoice_number") <> "null", transaction.StringOf("original_invoice_number"), DBNull.Value) R("original_invoice_date") = IIf(transaction.StringOf("original_invoice_date") <> "null", transaction.StringOf("original_invoice_date"), "") R("credit_comment") = IIf(transaction.StringOf("credit_comment") <> "null", transaction.StringOf("credit_comment"), "") Dim trans = New cMSETransactions(R("transaction_id")) trans.invoice_number = R("invoice_number") 'trans.invoice_date = CDate(R("invoice_date")) 'trans.specification_page_id = R("specification_page_id") 'trans.specification_page_name = R("specification_page_name") 'trans.transaction_debit_or_credit = R("transaction_debit_or_credit") 'trans.original_transaction_id = IIf(R("original_transaction_id") <> "", R("original_transaction_id"), "") 'trans.original_invoice_number = IIf(Not IsDBNull(R("original_invoice_number")), R("original_invoice_number"), "") 'trans.credit_comment = IIf(R("credit_comment") <> "", R("credit_comment"), "") 'trans.partner_haulier_id = R("partner_haulier_id") 'trans.purchase_datetime = R("purchase_datetime") 'trans.transaction_net_amount = CDbl(R("transaction_net_amount")) 'trans.transaction_gross_amount = CDbl(R("transaction_gross_amount")) 'trans.msts_fee_amount = CDbl(R("msts_fee_amount")) 'trans.msts_vat_amount = CDbl(R("msts_vat_amount")) 'trans.total_gross_amount = CDbl(R("total_gross_amount")) trans.invoice_number = R("invoice_number") trans.invoice_date = CDate(R("invoice_date")) trans.specification_page_id = R("specification_page_id") trans.specification_page_name = R("specification_page_name") trans.transaction_debit_or_credit = R("transaction_debit_or_credit") trans.original_transaction_id = IIf(R("original_transaction_id") <> "", R("original_transaction_id"), "") trans.original_invoice_number = IIf(Not IsDBNull(R("original_invoice_number")), R("original_invoice_number"), "") If (R("original_invoice_date") <> "" AndAlso IsDate(R("original_invoice_date"))) Then trans.original_invoice_date = CDate(R("original_invoice_date")) Else trans.original_invoice_date = DBNull.Value End If trans.credit_comment = IIf(R("credit_comment") <> "", R("credit_comment"), "") trans.SAVE() 'Property msts_fee_amount As Object = Nothing 'Property msts_vat_amount As Object = Nothing 'Property total_gross_amount 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 'Property batch_seq_nr As Object = Nothing 'R("entry_point_name") = transaction.StringOf("entry_point_name") 'R("entry_datetime") = transaction.DateOf("entry_datetime", New Chilkat.CkDateTime) 'R("exit_point_name") = transaction.StringOf("exit_point_name") 'R("exit_datetime") = transaction.DateOf("exit_datetime", New Chilkat.CkDateTime) 'R("device_product_type") = transaction.StringOf("device_product_type") '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.IntOf("vehicle_country") 'R("original_currency") = transaction.StringOf("original_currency") 'R("original_net_amount") = transaction.StringOf("original_net_amount") 'R("original_gross_amount") = transaction.IntOf("original_gross_amount") 'R("original_currency") = transaction.StringOf("original_currency") 'R("original_vat_percentage") = transaction.BoolOf("original_vat_percentage") 'R("exempt_amount") = transaction.StringOf("exempt_amount") dt.Rows.Add(R) j = j + 1 End While 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 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.VerboseLogging = True 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 = 500000 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 <> 200) Then Debug.WriteLine(rest.ResponseHeader) Return "rest.LastErrorText" End If Debug.WriteLine(responseJson) Dim json As New Chilkat.JsonObject success = json.Load(responseJson) If (success <> True) Then Debug.WriteLine(json.LastErrorText) End If 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" 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(String)) dt.Columns.Add("total_vat_amount_euro", GetType(String)) 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") = invoice.StringOf("name") R("url") = invoice.StringOf("url") R("total_amount_euro") = invoice.StringOf("total_amount_euro") R("total_vat_amount_euro") = invoice.StringOf("total_vat_amount_euro") R("msts_vat_number") = invoice.StringOf("msts_vat_number") R("invoice_id") = invoice.StringOf("invoice_id") R("invoice_date") = invoice.StringOf("invoice_date") Dim inv As New cMSEInvoices() inv.name = R("name") inv.total_amount_euro = IIf(R("total_amount_euro") = "null", 0, R("total_amount_euro")) inv.total_vat_amount_euro = IIf(R("total_vat_amount_euro") = "null", 0, R("total_vat_amount_euro")) inv.msts_vat_number = IIf(R("msts_vat_number") = "null", "", R("msts_vat_number")) inv.invoice_id = R("invoice_id") inv.invoice_date = CDate(R("invoice_date")) inv.SAVE() dt.Rows.Add(R) 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"), "\\fmzoll\f\FMZoll\MSE\TESTRECHNUNGEN", 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) 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_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)) While j < num Dim transaction As Chilkat.JsonObject = transactions.ObjectAt(j) Dim purchaseDate, entryDate, exitDate, loadingDate As New Chilkat.CkDateTime Dim getAsLocal As Boolean = False Dim dateTime As New Chilkat.CkDateTime 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") transaction.DateOf("purchase_datetime", purchaseDate) R("purchase_datetime") = purchaseDate.GetAsTimestamp(getAsLocal) R("entry_point_name") = transaction.StringOf("entry_point_name") transaction.DateOf("entry_datetime", entryDate) R("entry_datetime") = entryDate.GetAsTimestamp(getAsLocal) R("exit_point_name") = transaction.StringOf("exit_point_name") transaction.DateOf("exit_datetime", exitDate) R("exit_datetime") = exitDate.GetAsTimestamp(getAsLocal) R("device_product_type") = transaction.StringOf("device_product_type") 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") = IIf(transaction.StringOf("vehicle_country") = "null", "", transaction.StringOf("vehicle_country")) R("original_currency") = transaction.StringOf("original_currency") R("original_net_amount") = CDbl(transaction.StringOf("original_net_amount")) R("original_gross_amount") = CDbl(transaction.StringOf("original_gross_amount")) R("original_vat_percentage") = CDbl(IIf(transaction.StringOf("original_vat_percentage") = "null", 0, transaction.StringOf("original_vat_percentage"))) R("transaction_net_amount") = CDbl(transaction.StringOf("transaction_net_amount")) R("transaction_gross_amount") = CDbl(transaction.StringOf("transaction_gross_amount")) R("exempt_amount") = CDbl(transaction.StringOf("exempt_amount")) R("msts_fee_amount") = CDbl(transaction.StringOf("msts_fee_amount")) R("msts_vat_amount") = CDbl(transaction.StringOf("msts_vat_amount")) R("msts_vat_percentage") = CDbl(transaction.StringOf("msts_vat_percentage")) R("total_gross_amount") = CDbl(transaction.StringOf("total_gross_amount")) R("transaction_status") = transaction.StringOf("transaction_status") transaction.DateOf("loading_date", loadingDate) R("loading_date") = CDate(loadingDate.GetAsTimestamp(getAsLocal)) R("batch_seq_nr") = transaction.StringOf("batch_seq_nr") 'R("distance_km") = transaction.StringOf("distance_km") If CDate(R("purchase_datetime")) >= "01.07.2024" Then Dim trans As New cMSETransactions() trans.transaction_id = R("transaction_id") trans.controller_id = receiver trans.partner_haulier_id = R("partner_haulier_id") trans.supplier_name = R("supplier_name") trans.transaction_country = R("transaction_country") trans.transaction_domain = R("transaction_domain") trans.purchase_datetime = purchaseDate.GetAsDateTime(getAsLocal) trans.entry_point_name = R("entry_point_name") trans.entry_datetime = entryDate.GetAsDateTime(getAsLocal) trans.exit_point_name = R("exit_point_name") trans.exit_datetime = exitDate.GetAsDateTime(getAsLocal) trans.device_product_type = R("device_product_type") trans.device_product_number = R("device_product_number") trans.transaction_product_id = R("transaction_product_id") trans.transaction_product_name = R("transaction_product_name") trans.license_plate_number = R("license_plate_number") trans.vehicle_country = R("vehicle_country") trans.original_currency = R("original_currency") trans.original_net_amount = R("original_net_amount") trans.original_gross_amount = R("original_gross_amount") trans.original_vat_percentage = R("original_vat_percentage") trans.transaction_net_amount = CDbl(R("transaction_net_amount")) trans.transaction_gross_amount = CDbl(R("transaction_gross_amount")) trans.msts_fee_amount = CDbl(R("msts_fee_amount")) trans.msts_vat_amount = CDbl(R("msts_vat_amount")) trans.total_gross_amount = CDbl(R("total_gross_amount")) trans.transaction_status = R("transaction_status") trans.loading_date = CDate(loadingDate.GetAsDateTime(getAsLocal)) trans.batch_seq_nr = R("batch_seq_nr") 'trans.distance_km = CDbl(R("distance_km")) trans.SAVE() End If dt.Rows.Add(R) j = j + 1 End While dt = dt.DefaultView.ToTable() End If 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 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("rmc_id", rmc_id)) 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)) 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_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 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("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_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("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 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") 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