Imports System.Data.SqlClient Imports System.IO Imports System.Reflection Imports VERAG_PROG_ALLGEMEIN Public Class cAsfinag Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Public Class CLFHeader Property PKFileName As Object = Nothing Property recordType As String Property fileVersion As Integer Property fileNumber As Integer Property indcator As Object = Nothing Property senderID As Object = Nothing Property receiverID As Object = Nothing Property fileCreationDate As DateTime Property fileCreationTime As DateTime Property ISOCountryCode As Object = Nothing Property creationName As Object = Nothing Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(PKFileName, fileNumber) Me.PKFileName = PKFileName Me.fileNumber = fileNumber LOAD() End Sub Sub New() 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("PKFileName", PKFileName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileNumber", fileNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("recordType", recordType)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileVersion", fileVersion)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("indcator", indcator)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("senderID", senderID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("receiverID", receiverID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileCreationDate", fileCreationDate)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileCreationTime", fileCreationTime)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ISOCountryCode", ISOCountryCode)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("creationName", creationName)) 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 CLFHeader WHERE PKFileName=@PKFileName AND fileNumber = @fileNumber) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "ASFINAG", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAsfinag() Using cmd As New SqlCommand("Select * FROM CLFHeader WHERE PKFileName=@PKFileName AND fileNumber = @fileNumber", conn) cmd.Parameters.AddWithValue("@PKFileName", PKFileName) cmd.Parameters.AddWithValue("@filenumber", fileNumber) 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 MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 [CLFHeader] SET " & str & " WHERE PKFileName=@PKFileName ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 CLFHeader (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class CLFBody Property PKFileName As Object = Nothing Property RecordType As String Property fileVersion As Integer Property fileNumber As Integer Property cardNumber As String Property validTo As Integer Property OBUID As Object = Nothing Property vehicleLicensePlate As Object = Nothing Property nationality As Object = Nothing Property vehicleCategory As Object = Nothing Property emissionCategory As Object = Nothing Property status As Object = Nothing Property contractDate As Object = Nothing Property PKLine As Long Property engineCharacteristics As Integer Property CO2EmissionsClass As Integer Property contractType As Integer Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(PKFileName, PKLine) Me.PKFileName = PKFileName Me.PKLine = PKLine 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("PKFileName", PKFileName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PKLine", PKLine)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RecordType", RecordType)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileVersion", fileVersion)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileNumber", fileNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cardNumber", cardNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("validTo", validTo)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OBUID", OBUID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("vehicleLicensePlate", vehicleLicensePlate)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("nationality", nationality)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("vehicleCategory", vehicleCategory)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("emissionCategory", emissionCategory)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("status", status)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("contractDate", contractDate)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("engineCharacteristics", engineCharacteristics)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("CO2EmissionsClass", CO2EmissionsClass)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("contractType", contractType)) 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 CLFBody WHERE PKFileName=@PKFileName AND PKLine = @PKLine) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "ASFINAG", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAsfinag() Using cmd As New SqlCommand("Select * FROM CLFBody WHERE PKFileName=@PKFileName AND PKLine = @PKLine ", conn) cmd.Parameters.AddWithValue("@PKFileName", PKFileName) cmd.Parameters.AddWithValue("@PKLine", PKLine) 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 MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 [CLFBody] SET " & str & " WHERE PKFileName=@PKFileName AND PKLine = @PKLine ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 CLFBody (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class CLFArchiv Property PKFileName As Object = Nothing Property RecordType As String Property fileVersion As Integer Property fileNumber As Integer Property cardNumber As String Property validTo As Integer Property OBUID As Object = Nothing Property vehicleLicensePlate As Object = Nothing Property nationality As Object = Nothing Property vehicleCategory As Object = Nothing Property emissionCategory As Object = Nothing Property status As Object = Nothing Property contractDate As Object = Nothing Property PKLine As Long Property engineCharacteristics As Integer Property CO2EmissionsClass As Integer Property contractType As Integer Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(PKFileName, OBUID) Me.PKFileName = PKFileName Me.OBUID = OBUID 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("PKFileName", PKFileName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PKLine", PKLine)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RecordType", RecordType)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileVersion", fileVersion)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileNumber", fileNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cardNumber", cardNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("validTo", validTo)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OBUID", OBUID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("vehicleLicensePlate", vehicleLicensePlate)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("nationality", nationality)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("vehicleCategory", vehicleCategory)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("emissionCategory", emissionCategory)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("status", status)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("contractDate", contractDate)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("engineCharacteristics", engineCharacteristics)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("CO2EmissionsClass", CO2EmissionsClass)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("contractType", contractType)) 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 CLFArchiv WHERE PKFileName=@PKFileName AND OBUID = @OBUID) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "ASFINAG", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAsfinag() Using cmd As New SqlCommand("Select * FROM CLFArchiv WHERE PKFileName=@PKFileName AND OBUID = @OBUID ", conn) cmd.Parameters.AddWithValue("@PKFileName", PKFileName) cmd.Parameters.AddWithValue("@OBUID", OBUID) 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 MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 [CLFArchiv] SET " & str & " WHERE PKFileName=@PKFileName AND OBUID = @OBUID ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 CLFArchiv (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class CLFTrailer Property PKFileName As Object = Nothing Property recordType As String Property fileVersion As Integer Property fileNumber As Integer Property recordCount As Integer Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(PKFileName) Me.PKFileName = PKFileName 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("PKFileName", PKFileName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("recordType", recordType)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileVersion", fileVersion)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileNumber", fileNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("recordCount", recordCount)) 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 CLFTrailer WHERE PKFileName=@PKFileName) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "ASFINAG", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAsfinag() Using cmd As New SqlCommand("Select * FROM CLFTrailer WHERE PKFileName=@PKFileName", conn) cmd.Parameters.AddWithValue("@PKFileName", PKFileName) 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 MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 [CLFTrailer] SET " & str & " WHERE PKFileName=@PKFileName") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 CLFTrailer (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class TTRHeader Property PKFileName As Object = Nothing Property PKHistory As Integer Property recordType As Integer Property fileVersion As Integer Property fileNumber As Integer Property senderID As Object = Nothing Property receiverID As Object = Nothing Property fileCreationDate As DateTime Property fileCreationTime As DateTime Property ISOCountryCode As Object = Nothing Property description As Object = Nothing Property currencyCode As Object = Nothing Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(PKFileName, filenummer, PKHistory) Me.PKFileName = PKFileName Me.fileNumber = filenummer Me.PKHistory = PKHistory 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("PKFileName", PKFileName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PKHistory", PKHistory)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("recordType", recordType)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileVersion", fileVersion)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileNumber", fileNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("senderID", senderID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("receiverID", receiverID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileCreationDate", fileCreationDate)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileCreationTime", fileCreationTime)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ISOCountryCode", ISOCountryCode)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("description", description)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("currencyCode", currencyCode)) 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 TTRHeader WHERE PKFileName=@PKFileName AND fileNumber = @fileNumber AND PKHistory = @PKHistory) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "ASFINAG", , list) End Function Public Function UPDATE(OldKHistory As Integer) As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN" & getUpdateCmd(OldKHistory) & " commit tran " Return SQL.doSQLVarList(sqlstr, "ASFINAG", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAsfinag() Using cmd As New SqlCommand("Select * FROM TTRHeader WHERE PKFileName=@PKFileName AND fileNumber = @fileNumber AND PKHistory = @PKHistory ", conn) cmd.Parameters.AddWithValue("@PKFileName", PKFileName) cmd.Parameters.AddWithValue("@fileNumber", fileNumber) cmd.Parameters.AddWithValue("@PKHistory", PKHistory) 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 MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Function getUpdateCmd(Optional OldKHistory As Integer = Nothing) 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. ',' If OldKHistory >= 0 Then Return " UPDATE [TTRHeader] SET " & str & " WHERE PKFileName=@PKFileName AND filenumber = @filenumber AND PKHistory = " & OldKHistory Else Return " UPDATE [TTRHeader] SET " & str & " WHERE PKFileName=@PKFileName AND filenumber = @filenumber" End If Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 TTRHeader (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class TTRBody Property PKFileName As Object = Nothing Property recordType As Integer Property PKHistory As Integer Property fileVersion As Integer Property siteId As String Property fileNumber As Integer Property cardNumber As String Property fileCreationDate As Date Property deliveryNoteNumber As Integer Property deliveryDate As Date Property deliveryTime As Date Property transactionType As Integer Property productCode As Integer Property productQuantity As Double Property amountInclVAT As Double Property VATrate As Double Property VATamount As Double Property PKLine As Integer Property km As Integer Property driverId As Integer Property receiptNumber As String Property OBUID As String Property abrechnungsdatum As Object = Nothing Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New() End Sub Sub New(PKFileName, PKLine, PKHistory) Me.PKFileName = PKFileName Me.PKLine = PKLine Me.PKHistory = PKHistory 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("PKFileName", PKFileName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PKHistory", PKHistory)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PKLine", PKLine)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileVersion", fileVersion)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("recordType", recordType)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("siteId", siteId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileNumber", fileNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileCreationDate", fileCreationDate)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("deliveryNoteNumber", deliveryNoteNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cardNumber", cardNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("deliveryDate", deliveryDate)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("deliveryTime", deliveryTime)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("transactionType", transactionType)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("productCode", productCode)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("km", km)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("driverId", driverId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("productQuantity", productQuantity)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("amountInclVAT", amountInclVAT)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VATrate", VATrate)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VATamount", VATamount)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("receiptNumber", receiptNumber)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OBUID", OBUID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("abrechnungsdatum", abrechnungsdatum)) 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 TTRBody WHERE PKFileName=@PKFileName AND PKLine = @PKLine AND PKHistory = @PKHistory) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "ASFINAG", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAsfinag() Using cmd As New SqlCommand("Select * FROM TTRBody WHERE PKFileName=@PKFileName AND PKLine = @PKLine AND PKHistory = @PKHistory ", conn) cmd.Parameters.AddWithValue("@PKFileName", PKFileName) cmd.Parameters.AddWithValue("@PKLine", PKLine) cmd.Parameters.AddWithValue("@PKHistory", PKHistory) 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 MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 [TTRBody] SET " & str & " WHERE PKFileName=@PKFileName AND PKLine = @PKLine AND PKHistory = @PKHistory") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 TTRBody (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class TTRTrailer Property PKFileName As Object = Nothing Property PKHistory As Integer Property recordType As Integer Property fileVersion As Integer Property recordCount As Integer Property checksumProductQuantity As Double Property checksumAmounntInclVAT As Double Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(PKFileName, PKHistory) Me.PKFileName = PKFileName Me.PKHistory = PKHistory 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("PKFileName", PKFileName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PKHistory", PKHistory)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("recordType", recordType)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fileVersion", fileVersion)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("recordCount", recordCount)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("checksumProductQuantity", checksumProductQuantity)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("checksumAmounntInclVAT", checksumAmounntInclVAT)) 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 TTRTrailer WHERE PKFileName=@PKFileName AND PKHistory = @PKHistory) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "ASFINAG", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAsfinag() Using cmd As New SqlCommand("Select * FROM TTRTrailer WHERE PKFileName=@PKFileName AND PKHistory = @PKHistory", conn) cmd.Parameters.AddWithValue("@PKFileName", PKFileName) cmd.Parameters.AddWithValue("@PKHistory", PKHistory) 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 MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 [TTRTrailer] SET " & str & " WHERE PKFileName=@PKFileName") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) 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 TTRTrailer (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class Paramter Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL Shared Function GET_PARAM_ByName(tcParam_name, TESTSYSTEM) As String Return SQL.getValueTxtBySql("SELECT TOP 1 [Param_value] FROM [tblPartnersystem_Paramter] WHERE Param_system='ASFINAG' AND [Param_name]='" & tcParam_name & "'", , , SQL.GetNewOpenConnectionFMZOLL_SYSTEM(TESTSYSTEM)) End Function End Class Shared Function fktMod10Prüfziffer(strNummer As String) As String ' Der Funktion wird im Feld strNummer der Wert ohne Prüfziffer übergeben. ' Die Funktion berechnet und liefert die Prüfziffer zurück. Dim intIX As Integer Dim intZSum As Integer Dim intSum As Integer Dim boo1 As Boolean For intIX = Len(strNummer) To 1 Step -1 intZSum = IIf(boo1, Mid(strNummer, intIX, 1) * 1, Mid(strNummer, intIX, 1) * 2) If intZSum < 10 Then intSum = intSum + intZSum Else intSum = intSum + ((intZSum Mod 10) + ((intZSum - (intZSum Mod 10)) / 10)) End If boo1 = Not boo1 Next intIX fktMod10Prüfziffer = CStr((10 - (intSum Mod 10)) Mod 10) End Function Public Class Exportist Structure Header ' Format Muss von bis Kommentar Dim SortField As String ' N3 Y 1 3 "000" Dim RecordID As String ' N2 Y 4 5 "00" Dim FileName As String ' C3 Y 6 8 "TBL" Dim LiveTestIndicator As String ' C1 Y 9 9 "L" oder "T" Dim FileCreationDate As String ' N8 Y 10 17 YYYYMMDD Dim FileCreationTime As String ' N4 Y 18 21 HHMM (24hr) Dim RunNumber As String ' N3 Y 22 24 Laufende Nummer pro File-Type Dim SenderID As String ' C2 Y 25 26 "VG" Dim ReceiverID As String ' C2 Y 27 28 "EP" Dim Filler As String ' C3 Y 29 31 Leerzeichen End Structure Structure Body ' Format Muss von bis Kommentar Dim SortField As String ' N3 Y 1 3 "000" Dim RecordID As String ' N2 Y 4 5 "50" Dim ISOCountryCode As String ' N3 Y 6 8 "040" (Österreich) Dim CardNumber As String ' C22 Y 9 30 Komplette Tankkartennummer 'onlyBlacklist Dim StopType As String ' N1 Y 31 31 "3" Stopped for Post-Pay 'only Whitelist Dim ValidFrom As String ' N8 Y 31 38 YYYYMMDD Dim ValidTo As String ' N8 Y 39 46 YYYYMMDD Dim NewCardNumber As String ' N22 N 47 68 Tankkartennummer der Folge- oder Ersatzkarte Dim NewValidFrom As String ' N8 N 69 76 YYYYMMDD der Folge- oder Ersatzkarte Dim NewValidTo As String End Structure Private Structure Trailer ' Format Muss von bis Kommentar Dim SortField As String ' N3 Y 1 3 "999" Dim RecordID As String ' N2 Y 4 5 "99" Dim FileName As String ' C3 Y 6 8 "TBL" Dim RunNumber As String ' N3 Y 9 11 Gleiche Nr. wie im Header Dim RecordCount As String ' N7 Y 12 18 Anzahl der Sätze inkl. Header und Trailer Dim Filler As String ' C13 Y 19 31 Leerzeichen End Structure Dim VERARBEITUNG_PFAD, ARCHIV_PFAD, BEREITSTELLUNG_PFAD, ERROR_PFAD, FTP_PFAD_TEST, FTP_PFAD Dim sw As StreamWriter Dim Dateiname = "" Public Function initExportPfade() ERROR_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("ERROR_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) BEREITSTELLUNG_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("BEREITSTELLUNG_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) ARCHIV_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("ARCHIV_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) VERARBEITUNG_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("VERARBEITUNG_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) FTP_PFAD_TEST = cAsfinag.Paramter.GET_PARAM_ByName("SERVER_Path_Out_Test", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) FTP_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("SERVER_Path_Out", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) If Not IO.Directory.Exists(VERARBEITUNG_PFAD) Then IO.Directory.CreateDirectory(VERARBEITUNG_PFAD) If Not IO.Directory.Exists(FTP_PFAD_TEST) Then IO.Directory.CreateDirectory(FTP_PFAD_TEST) End Function Public Function exportiereBlackList() As Boolean Dim fileName = "TBL" Dim sucess = False Dim Header As Header Dim Body As Body Dim Trailer As Trailer Dim intRunNumber As Integer = 1 Dim lngAnzahlSätze As Long Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL 'qryExportiereBlackList Dim sqlstr As String = " SELECT Kreditkarten.KartenNr AS CardNumber, Kreditkarten.Kartensperre AS StopType FROM Kreditkarten LEFT JOIN Kreditkarten AS Kreditkarten_1 ON Kreditkarten.NeueKartenNr = Kreditkarten_1.KartenNr WHERE Kreditkarten.Kartensperre > 0 AND ((Kreditkarten.Kartensperrdatum)<=GETDATE()) AND ((Left([Kreditkarten].[KartenNr],6))='990001') AND [Kreditkarten].[Kartenfreischaltungsdatum] <= GETDATE() And [Kreditkarten].[Kartenfreischaltungsdatum] <> '' AND DateAdd(DAY, -1, DateAdd(MONTH,1,DATEFROMPARTS(2000 + [Kreditkarten].[Kartenablaufjahr],[Kreditkarten].[Kartenablaufmonat],1))) >= GETDATE() AND DateAdd(DAY, -1, DateAdd(MONTH,1,DATEFROMPARTS(2000 + [Kreditkarten].[Kartenablaufjahr],[Kreditkarten].[Kartenablaufmonat],1))) <> '' AND (Kreditkarten_1.Kartenfreischaltungsdatum) Is Null Or (Kreditkarten_1.Kartenfreischaltungsdatum) > GETDATE() ORDER BY Kreditkarten.KartenNr" Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL") 'qry_ASFINAG_FileInfo_TBL Dim currentFileNr As Integer = SQL.getValueTxtBySql("SELECT fileVersion FROM [FileINfo] where [filename]='" & fileName & "'", "ASFINAG") If currentFileNr = 999 Then currentFileNr = 0 currentFileNr = currentFileNr + 1 Dim preFilename As String = "" If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then preFilename = "LVGEP" Else preFilename = "TVGEP" End If Dim strFile As String = BEREITSTELLUNG_PFAD & "\" & preFilename & fileName & "." & currentFileNr Try 'Dim fileExists As Boolean = File.Exists(ASFINAG_PFAD & "\" & strFile) Using sw As New StreamWriter(File.Open(strFile, FileMode.OpenOrCreate)) With Header .SortField = "000" .RecordID = "00" .FileName = fileName .LiveTestIndicator = "L" 'T für Testfile, L Livesystem .FileCreationDate = Today.ToString("yyyymmdd") .FileCreationTime = Now().ToString("hhmm") .RunNumber = Format(currentFileNr, "000") .SenderID = "VG" .ReceiverID = "EP" .Filler = New String(" ", 3) sw.Write(Header.SortField) sw.Write(Header.RecordID) sw.Write(Header.FileName) sw.Write(Header.LiveTestIndicator) sw.Write(Header.FileCreationDate) sw.Write(Header.FileCreationTime) sw.Write(Header.RunNumber) sw.Write(Header.SenderID) sw.Write(Header.ReceiverID) sw.Write(Header.Filler) sw.WriteLine() End With lngAnzahlSätze = 1 For Each row As DataRow In dt.Rows lngAnzahlSätze = lngAnzahlSätze + 1 With Body .SortField = "000" .RecordID = "50" .ISOCountryCode = "040" .CardNumber = row.Item("CardNumber") + New String(" ", 22 - Len(row.Item("CardNumber"))) .StopType = row.Item("StopType") sw.Write(Body.SortField) sw.Write(Body.RecordID) sw.Write(Body.ISOCountryCode) sw.Write(Body.CardNumber) sw.Write(Body.StopType) sw.WriteLine() End With Next lngAnzahlSätze = lngAnzahlSätze + 1 With Trailer .SortField = "999" .RecordID = "99" .FileName = "TBL" .RunNumber = Format(currentFileNr, "000") .RecordCount = Format(lngAnzahlSätze, "0000000") .Filler = New String(" ", 13) sw.Write(Trailer.SortField) sw.Write(Trailer.RecordID) sw.Write(Trailer.FileName) sw.Write(Trailer.RunNumber) sw.Write(Trailer.RecordCount) sw.Write(Trailer.Filler) sw.WriteLine() End With sw.Close() SQL.doSQL("UPDATE [dbo].[FileINfo] SET FileVersion=" & currentFileNr & " WHERE [filename]='" & fileName & "'", "ASFINAG") MsgBox("Files uploaded: " & uploadListToFTP(fileName)) Return True End Using Catch ex As Exception MsgBox(ex.Message) End Try End Function Public Function exportiereWhiteList() As Boolean Dim fileName = "TWL" Dim sucess = False Dim Header As Header Dim Body As Body Dim Trailer As Trailer Dim intRunNumber As Integer = 1 Dim lngAnzahlSätze As Long Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL 'qryExportiereWhiteList Dim sqlstr As String = " SELECT Kreditkarten.KartenNr AS CardNumber, CONVERT(varchar, [Kreditkarten].[Kartenfreischaltungsdatum],112) AS ValidFrom, CONVERT(varchar,DateAdd(DAY, -1, DateAdd(MONTH,1,DATEFROMPARTS(2000 + [Kreditkarten].[Kartenablaufjahr],[Kreditkarten].[Kartenablaufmonat],1))),112) AS ValidTo, Kreditkarten_1.KartenNr AS NewCardNumber, IIf(Not IsNull(Kreditkarten_1.KartenNr,0) <> 0 ,CONVERT(varchar,[Kreditkarten_1].[Kartenfreischaltungsdatum],112),'') AS NewValidFrom, IIf(Not IsNull(Kreditkarten_1.KartenNr,0) <> 0,CONVERT(varchar, DateAdd(DAY, -1, DateAdd(MONTH,1,DATEFROMPARTS(2000 + [Kreditkarten].[Kartenablaufjahr],[Kreditkarten].[Kartenablaufmonat],1))),112),'') AS NewValidTo, Kreditkarten.NeueKartenNrGemeldet FROM Kreditkarten AS Kreditkarten_1 RIGHT JOIN Kreditkarten ON Kreditkarten_1.KartenNr = Kreditkarten.NeueKartenNr WHERE (([Kreditkarten].[Kartenfreischaltungsdatum])<= GETDATE() And ([Kreditkarten].[Kartenfreischaltungsdatum] <>'') AND DateAdd(DAY, -1, DateAdd(MONTH,1,DATEFROMPARTS(2000 + [Kreditkarten].[Kartenablaufjahr],[Kreditkarten].[Kartenablaufmonat],1))) >= GETDATE() AND ((Kreditkarten_1.KartenNr) Is Null)) OR (((Kreditkarten_1.KartenNr) Is Not Null) AND ((Kreditkarten.NeueKartenNrGemeldet)= 0)) ORDER BY Kreditkarten.KartenNr, [Kreditkarten].[Kartenfreischaltungsdatum], CONVERT(varchar, DateAdd(DAY, -1, DateAdd(MONTH,1,DATEFROMPARTS(2000 + [Kreditkarten].[Kartenablaufjahr],[Kreditkarten].[Kartenablaufmonat],1)))) " Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL") 'qry_ASFINAG_FileInfo_TWL Dim currentFileNr As Integer = SQL.getValueTxtBySql("SELECT fileVersion FROM [FileINfo] where [filename]='" & fileName & "'", "ASFINAG") If currentFileNr = 999 Then currentFileNr = 0 currentFileNr = currentFileNr + 1 Dim preFilename As String = "" If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then preFilename = "LVGEP" Else preFilename = "TVGEP" End If Dim strFile As String = BEREITSTELLUNG_PFAD & "\" & preFilename & fileName & "." & currentFileNr Try Using sw As New StreamWriter(File.Open(strFile, FileMode.OpenOrCreate)) With Header .SortField = "000" .RecordID = "00" .FileName = fileName .LiveTestIndicator = "L" 'T für Testfile, L Livesystem .FileCreationDate = Today.ToString("yyyymmdd") .FileCreationTime = Now().ToString("hhmm") .RunNumber = Format(currentFileNr, "000") .SenderID = "VG" .ReceiverID = "EP" .Filler = New String(" ", 56) sw.Write(Header.SortField) sw.Write(Header.RecordID) sw.Write(Header.FileName) sw.Write(Header.LiveTestIndicator) sw.Write(Header.FileCreationDate) sw.Write(Header.FileCreationTime) sw.Write(Header.RunNumber) sw.Write(Header.SenderID) sw.Write(Header.ReceiverID) sw.Write(Header.Filler) sw.WriteLine() End With lngAnzahlSätze = 1 For Each row As DataRow In dt.Rows lngAnzahlSätze = lngAnzahlSätze + 1 With Body If Not IsDBNull(row.Item("NewCardNumber")) Then If Not row.Item("NeueKartenNrGemeldet") Then lngAnzahlSätze = lngAnzahlSätze + 1 .SortField = "000" .RecordID = "40" .ISOCountryCode = "040" .CardNumber = row.Item("CardNumber") + New String(" ", 22 - Len(row.Item("CardNumber"))) .ValidFrom = row.Item("ValidFrom") .ValidTo = row.Item("ValidTo") .NewCardNumber = row.Item("NewCardNumber") + New String(" ", 22 - Len(row.Item("NewCardNumber"))) .NewValidFrom = row.Item("NewValidFrom") .NewValidTo = row.Item("NewValidTo") sw.Write(.SortField) sw.Write(.RecordID) sw.Write(.ISOCountryCode) sw.Write(.CardNumber) sw.Write(.ValidFrom) sw.Write(.ValidTo) sw.Write(.NewCardNumber) sw.Write(.NewValidFrom) sw.Write(.NewValidTo) sw.WriteLine() row.Item("NeueKartenNrGemeldet") = True End If Else lngAnzahlSätze = lngAnzahlSätze + 1 .SortField = "000" .RecordID = "40" .ISOCountryCode = "040" .CardNumber = row.Item("CardNumber") + New String(" ", 22 - Len(row.Item("CardNumber"))) .ValidFrom = row.Item("ValidFrom") .ValidTo = row.Item("ValidTo") .NewCardNumber = "0000000000000000000000" .NewValidFrom = "00000000" .NewValidTo = "00000000" sw.Write(.SortField) sw.Write(.RecordID) sw.Write(.ISOCountryCode) sw.Write(.CardNumber) sw.Write(.ValidFrom) sw.Write(.ValidTo) sw.Write(.NewCardNumber) sw.Write(.NewValidFrom) sw.Write(.NewValidTo) sw.WriteLine() End If End With Next lngAnzahlSätze = lngAnzahlSätze + 1 With Trailer .SortField = "999" .RecordID = "99" .FileName = "TBL" .RunNumber = Format(currentFileNr, "000") .RecordCount = Format(lngAnzahlSätze, "0000000") .Filler = New String(" ", 13) sw.Write(Trailer.SortField) sw.Write(Trailer.RecordID) sw.Write(Trailer.FileName) sw.Write(Trailer.RunNumber) sw.Write(Trailer.RecordCount) sw.Write(Trailer.Filler) sw.WriteLine() End With sw.Close() SQL.doSQL("UPDATE [dbo].[FileINfo] SET FileVersion=" & currentFileNr & " WHERE [filename]='" & fileName & "'", "ASFINAG") MsgBox("Files uploaded: " & uploadListToFTP(fileName)) Return True End Using Catch ex As Exception MsgBox(ex.Message) End Try End Function Public Function uploadListToFTP(filename As String) As Integer Dim cnt = 0 Try Dim SERVER_Path = "" If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then SERVER_Path = FTP_PFAD_TEST Else SERVER_Path = FTP_PFAD End If For Each f In IO.Directory.GetFiles(BEREITSTELLUNG_PFAD) Dim fi As New IO.FileInfo(f) If Not fi.Name.StartsWith(".") AndAlso fi.Name.Contains(filename) Then Dim zielPfad = SERVER_Path 'While IO.File.Exists(zielPfad) ' zielPfad = SERVER_Path & "\" & Now.ToString("yyyyMMdd_HHmmss_") & fi.Name 'End While IO.File.Copy(f, zielPfad & "\" & fi.Name, True) If IO.File.Exists(zielPfad & "\" & fi.Name) Then If Not IO.Directory.Exists(ARCHIV_PFAD & "\" & Now.Year & "\" & filename & "\") Then IO.Directory.CreateDirectory(ARCHIV_PFAD & "\" & Now.Year & "\" & filename & "\") IO.File.Move(BEREITSTELLUNG_PFAD & "\" & fi.Name, ARCHIV_PFAD & "\" & Now.Year & "\" & filename & "\" & fi.Name) End If cnt += 1 End If Next Return cnt Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return cnt End Function End Class Public VERARBEITUNG_PFAD Public ARCHIV_PFAD Public BEREITSTELLUNG_PFAD Public ERROR_PFAD Public FTP_PFAD_TEST Public FTP_PFAD Dim Dateiname = "" Public Function initImportPfade() ERROR_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("ERROR_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) BEREITSTELLUNG_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("BEREITSTELLUNG_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) ARCHIV_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("ARCHIV_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) VERARBEITUNG_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("VERARBEITUNG_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) FTP_PFAD_TEST = cAsfinag.Paramter.GET_PARAM_ByName("SERVER_Path_In_Test", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) FTP_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("SERVER_Path_In", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) If Not IO.Directory.Exists(VERARBEITUNG_PFAD) Then IO.Directory.CreateDirectory(VERARBEITUNG_PFAD) If Not IO.Directory.Exists(FTP_PFAD_TEST) Then IO.Directory.CreateDirectory(FTP_PFAD_TEST) End Function Function getNachrichtenDatenFromFTP(ByRef filenameList As List(Of String), ByVal fileType As String) As Integer Dim cnt = 0 Try Dim SERVERPath = "" If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then SERVERPath = Me.FTP_PFAD_TEST Else SERVERPath = Me.FTP_PFAD End If For Each f In IO.Directory.GetFiles(SERVERPath) Dim fi As New IO.FileInfo(f) If fi.Name.ToUpper.Contains(fileType) Then If Not fi.Name.StartsWith(".") Then Dim zielPfad = VERARBEITUNG_PFAD & "\" & fi.Name While IO.File.Exists(zielPfad) zielPfad = VERARBEITUNG_PFAD & "\" & "DOPPELT" & "\" & fi.Name.Replace(fi.Extension, "") & fi.Extension & Now.ToString("_yyyyMMdd_HHmmss") End While IO.File.Copy(f, zielPfad) If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then If IO.File.Exists(zielPfad) Then IO.File.Delete(f) End If Dim filename = frmStartOptions.cut_file((New FileInfo(zielPfad)).Name) If filename.ToUpper.Contains(fileType) Then filenameList.Add(filename) cnt += 1 End If End If End If Next Return cnt Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return cnt End Function Public Function readAndSaveCLF(objFileRead As StreamReader, fi As FileInfo) As Boolean Dim booHeaderVorhanden = False Dim booPrüfziffernfehler = False Dim booInTransaktion = False Dim booTrailerVorhanden = False Dim lngRecordCount As Long 'Datei auf Fehler prüfen! Do While (objFileRead.Peek() > -1) Dim strZeile = objFileRead.ReadLine() lngRecordCount = lngRecordCount + 1 Select Case Mid(strZeile, 1, 2) Case "10" booHeaderVorhanden = True Case "20" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If 'CardNumber prüfen. If (Right(Trim(Mid(strZeile, 9, 22)), 1)) <> cAsfinag.fktMod10Prüfziffer(Left(Trim(Mid(strZeile, 9, 22)), Len(Trim(Mid(strZeile, 9, 22))) - 1)) Then booPrüfziffernfehler = True End If ' Meldung bei Prüfziffernfehler. If booPrüfziffernfehler Then MsgBox("Prüfziffernfehler in Zeile " & CStr(lngRecordCount) & vbCrLf & "Datei kann nicht verarbeitet werden. " & vbNewLine & " " & fi.Name.ToString) booInTransaktion = False Return False End If Case "90" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If booTrailerVorhanden = True Dim clfTrailer As New cAsfinag.CLFTrailer(fi.Name) ' Prüfsumme Anzahl der Sätze im File ohne Header und Trailer. If Trim(Mid(strZeile, 9, 7)) <> (lngRecordCount) Then MsgBox("Fehler: " & vbNewLine & "Prüfsumme in der Datei stimmt nicht mit der Zeilenanzahl der Datei überein! " & vbNewLine & "Record Count: " & Trim(Mid(strZeile, 9, 7)) & vbCrLf & "Prüfsumme: " & (lngRecordCount) & vbCrLf) objFileRead.Close() Return False End If ' Meldung bei Prüfsummenfehler. If booPrüfziffernfehler Then MsgBox("Datei kann wegen Prüfsummenfehler nicht verarbeitet werden.") objFileRead.Close() End If Case Else End Select Loop Dim lngPKLine As Long = 0 lngRecordCount = 0 'gleicher PKFileName wird nun aus CLFHeader gelöscht. CASCADE löscht dann zugehörige CLFBody und CLFTrailer (muss noch eingebaut werden). SQL.doSQL("delete FROM CLFHeader WHERE (PKHistory = 0) AND (PKFileName = N'" & fi.Name.ToString & "')", "ASFINAG") SQL.doSQL("UPDATE CLF SET PKFileName = '" & fi.Name.ToString & "'", "ASFINAG") objFileRead.DiscardBufferedData() objFileRead.BaseStream.Seek(0, System.IO.SeekOrigin.Begin) Do While (objFileRead.Peek() > -1) Dim strZeile = objFileRead.ReadLine() lngRecordCount = lngRecordCount + 1 Select Case Mid(strZeile, 1, 2) Case "10" booHeaderVorhanden = True Dim ext = CInt(fi.Extension.Remove(0, 1)) Dim clfHeader As New cAsfinag.CLFHeader(fi.Name.ToString, ext) With clfHeader .PKFileName = fi.Name .recordType = Mid(strZeile, 1, 2) .fileVersion = Mid(strZeile, 3, 2) .indcator = Trim(Mid(strZeile, 9, 1)) .senderID = Trim(Mid(strZeile, 10, 6)) .receiverID = Trim(Mid(strZeile, 16, 6)) .fileCreationDate = DateSerial(Mid(strZeile, 22, 4), Mid(strZeile, 26, 2), Mid(strZeile, 28, 2)) .fileCreationTime = DateSerial(Mid(strZeile, 22, 4), Mid(strZeile, 26, 2), Mid(strZeile, 28, 2)) & " " & TimeSerial(Mid(strZeile, 30, 2), Mid(strZeile, 32, 2), 0) '.fileCreationTime = DateSerial(Mid(strZeile, 22, 4), Mid(strZeile, 26, 2), Mid(strZeile, 28, 2)) & " " & TimeSerial(Mid(strZeile, 30, 2), Mid(strZeile, 32, 2), Mid(strZeile, 34, 2)) .ISOCountryCode = Trim(Mid(strZeile, 62, 3)) .SAVE() End With Case "20" Dim clfBody As New cAsfinag.CLFBody(fi.Name, lngPKLine) With clfBody .PKFileName = fi.Name lngPKLine = lngPKLine + 1 .RecordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) .fileNumber = Trim(Mid(strZeile, 5, 3)) .cardNumber = Trim(Mid(strZeile, 9, 22)) .validTo = Trim(Mid(strZeile, 31, 4)) .OBUID = Trim(Mid(strZeile, 35, 18)) .vehicleLicensePlate = Trim(Mid(strZeile, 53, 10)) .nationality = Trim(Mid(strZeile, 63, 3)) .vehicleCategory = Trim(Mid(strZeile, 66, 1)) .emissionCategory = Trim(Mid(strZeile, 67, 2)) .status = Trim(Mid(strZeile, 69, 2)) .contractDate = DateSerial(Mid(strZeile, 71, 4), Mid(strZeile, 75, 2), Mid(strZeile, 77, 2)) .engineCharacteristics = Trim(Mid(strZeile, 79, 3)) .CO2EmissionsClass = Trim(Mid(strZeile, 82, 1)) .contractType = Trim(Mid(strZeile, 83, 1)) .SAVE() End With Dim strSQLASFINAG = "SELECT * FROM CLFArchiv WHERE OBUID = N'" & Trim(Mid(strZeile, 35, 18)) & "'" Dim dtAsfinag As DataTable = SQL.loadDgvBySql_Param(strSQLASFINAG, "ASFINAG") Dim clfArchiv As New cAsfinag.CLFArchiv(fi.Name, Trim(Mid(strZeile, 35, 18))) If dtAsfinag.Rows.Count = 0 Then With clfArchiv .PKFileName = fi.Name .RecordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) .fileNumber = Trim(Mid(strZeile, 5, 3)) .cardNumber = Trim(Mid(strZeile, 9, 22)) .validTo = Trim(Mid(strZeile, 31, 4)) .OBUID = Trim(Mid(strZeile, 35, 18)) .vehicleLicensePlate = Trim(Mid(strZeile, 53, 10)) .nationality = Trim(Mid(strZeile, 63, 3)) .vehicleCategory = Trim(Mid(strZeile, 66, 1)) .emissionCategory = Trim(Mid(strZeile, 67, 2)) .status = Trim(Mid(strZeile, 69, 2)) .contractDate = DateSerial(Mid(strZeile, 71, 4), Mid(strZeile, 75, 2), Mid(strZeile, 77, 2)) .engineCharacteristics = Trim(Mid(strZeile, 79, 3)) .CO2EmissionsClass = Trim(Mid(strZeile, 82, 1)) .contractType = Trim(Mid(strZeile, 83, 1)) .SAVE() End With End If For Each r As DataRow In dtAsfinag.Rows clfArchiv = New cAsfinag.CLFArchiv(r.Item("PKFileName"), r.Item("OBUID")) With clfArchiv .PKFileName = fi.Name .RecordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) .fileNumber = Trim(Mid(strZeile, 5, 3)) .cardNumber = Trim(Mid(strZeile, 9, 22)) .validTo = Trim(Mid(strZeile, 31, 4)) .OBUID = Trim(Mid(strZeile, 35, 18)) .vehicleLicensePlate = Trim(Mid(strZeile, 53, 10)) .nationality = Trim(Mid(strZeile, 63, 3)) .vehicleCategory = Trim(Mid(strZeile, 66, 1)) .emissionCategory = Trim(Mid(strZeile, 67, 2)) .status = Trim(Mid(strZeile, 69, 2)) .contractDate = DateSerial(Mid(strZeile, 71, 4), Mid(strZeile, 75, 2), Mid(strZeile, 77, 2)) .engineCharacteristics = Trim(Mid(strZeile, 79, 3)) .CO2EmissionsClass = Trim(Mid(strZeile, 82, 1)) .contractType = Trim(Mid(strZeile, 83, 1)) .SAVE() End With Next Case "90" Dim clfTrailer As New cAsfinag.CLFTrailer(fi.Name) With clfTrailer .PKFileName = fi.Name .recordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) .fileNumber = Trim(Mid(strZeile, 5, 4)) .recordCount = Trim(Mid(strZeile, 9, 7)) .SAVE() End With Case Else ' Andere RecordNumber überlesen. End Select Loop objFileRead.Close() Return True End Function Public Function readAndSaveTTR(objFileRead As StreamReader, fi As FileInfo) As Boolean Dim booHeaderVorhanden = False Dim booPrüfziffernfehler = False Dim booInTransaktion = False Dim booTrailerVorhanden = False Dim dblCheckSumQuantity As Double Dim curCheckSumAmount As Double Dim lngPKLine As Long = 0 Dim lngRecordCount As Long 'Datei auf Fehler prüfen Do While (objFileRead.Peek() > -1) Dim strZeile = objFileRead.ReadLine() lngRecordCount = lngRecordCount + 1 Select Case Mid(strZeile, 1, 2) Case "10" booHeaderVorhanden = True Case "20" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If ' Bei den Checksummen wird unabhängig vom TransactionType immer der positive Betrag aufsummiert. dblCheckSumQuantity = dblCheckSumQuantity + Trim(Mid(strZeile, 94, 6)) / 100 curCheckSumAmount = curCheckSumAmount + Trim(Mid(strZeile, 100, 10)) / 100 If (Right(Trim(Mid(strZeile, 43, 22)), 1)) <> (fktMod10Prüfziffer(Left(Trim(Mid(strZeile, 43, 22)), Len(Trim(Mid(strZeile, 43, 22))) - 1))) Then booPrüfziffernfehler = True End If ' Meldung bei Prüfziffernfehler. If booPrüfziffernfehler Then MsgBox("Prüfziffernfehler in Zeile " & CStr(lngRecordCount) & vbCrLf & "Datei kann nicht verarbeitet werden. " & vbNewLine & " " & fi.Name.ToString) booInTransaktion = False objFileRead.Close() Return False End If Case "90" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If booTrailerVorhanden = True Dim strPrompt Dim recordCount = Trim(Mid(strZeile, 5, 9)) If recordCount <> lngRecordCount Then strPrompt = strPrompt & "Record Count: " & recordCount & vbCrLf & "Prüfsumme: " & lngRecordCount & vbCrLf End If ' Prüfsumme Menge. Dim checksumProductQuantity = Trim(Mid(strZeile, 14, 15)) / 100 If checksumProductQuantity <> dblCheckSumQuantity Then strPrompt = strPrompt & "Check Sum Quantity: " & checksumProductQuantity & vbCrLf & "Prüfsumme: " & dblCheckSumQuantity & vbCrLf End If ' Prüfsumme Betrag. Dim checksumAmounntInclVAT = Trim(Mid(strZeile, 29, 15)) / 100 If checksumAmounntInclVAT <> Math.Round(curCheckSumAmount, 2) Then strPrompt = strPrompt & "Check Sum Amount: " & checksumAmounntInclVAT & vbCrLf & "Prüfsumme: " & curCheckSumAmount & vbCrLf End If If strPrompt <> "" Then MsgBox(strPrompt) objFileRead.Close() Return False End If ' Prüfsumme Anzahl der Sätze im File ohne Header und Trailer. If recordCount <> (lngRecordCount) Then MsgBox("Record Count: " & recordCount & vbCrLf & "Prüfsumme: " & (lngRecordCount) & vbCrLf) objFileRead.Close() Return False End If ' Meldung bei Prüfsummenfehler. If booPrüfziffernfehler Then MsgBox("Datei kann wegen Prüfsummenfehler nicht verarbeitet werden.") objFileRead.Close() Return False End If Case Else ' Andere RecordNumber überlesen. End Select Loop objFileRead.DiscardBufferedData() objFileRead.BaseStream.Seek(0, System.IO.SeekOrigin.Begin) lngPKLine = 0 lngRecordCount = 0 ' ----------------------------------------------------------------------------------- ' Wenn der FileName schon in der Tabelle TTRHeader existiert, die Einträge in der History verschieben. ' Die Tabellen TTRBody und TTRTrailer werden über CASCADE aktualisiert. Dim SQLTTRHeader = "SELECT PKHistory, PKFileName, fileNumber FROM TTRHeader WHERE (PKHistory = 0) And (PKFileName = N'" & fi.Name.ToString & "') And (fileNumber = " & fi.Extension.Remove(0, 1) & ") " Dim dtTTRHeader As DataTable = SQL.loadDgvBySql_Param(SQLTTRHeader, "ASFINAG") If dtTTRHeader.Rows.Count > 0 Then Dim hisorty = SQL.getValueTxtBySql("SELECT PKHistory FROM TTRHeader WHERE (PKFileName = N'" & fi.Name.ToString & "') ORDER BY PKHistory DESC", "ASFINAG") hisorty = hisorty + 1 For Each row As DataRow In dtTTRHeader.Rows Dim ttrHeaderArchiv As New cAsfinag.TTRHeader(row.Item("PKFileName"), row.Item("fileNumber"), "0") ttrHeaderArchiv.PKHistory = hisorty ttrHeaderArchiv.UPDATE("0") Next End If ' ----------------------------------------------------------------------------------- Do While (objFileRead.Peek() > -1) Dim strZeile = objFileRead.ReadLine() lngRecordCount = lngRecordCount + 1 Select Case Mid(strZeile, 1, 2) Case "10" Dim ext = CInt(fi.Extension.Remove(0, 1)) Dim ttrHeader As New cAsfinag.TTRHeader(fi.Name.ToString, ext, "0") With ttrHeader .PKFileName = fi.Name .recordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) .senderID = Trim(Mid(strZeile, 5, 6)) .receiverID = Trim(Mid(strZeile, 11, 6)) .fileCreationDate = DateSerial(Mid(strZeile, 17, 4), Mid(strZeile, 21, 2), Mid(strZeile, 23, 2)) .fileCreationTime = DateSerial(Mid(strZeile, 17, 4), Mid(strZeile, 21, 2), Mid(strZeile, 23, 2)) & " " & TimeSerial(Mid(strZeile, 25, 2), Mid(strZeile, 27, 2), 0) .fileNumber = Trim(Mid(strZeile, 29, 4)) .currencyCode = Trim(Mid(strZeile, 33, 3)) .description = IIf(Trim(Mid(strZeile, 36, 25)) = "", Nothing, Trim(Mid(strZeile, 36, 25))) .ISOCountryCode = Trim(Mid(strZeile, 61, 3)) .SAVE() End With Case "20" Dim ttrBody As New cAsfinag.TTRBody(fi.Name, lngPKLine, "0") With ttrBody .PKFileName = fi.Name .recordType = Trim(Mid(strZeile, 1, 2)) lngPKLine = lngPKLine + 1 .PKLine = lngPKLine .fileVersion = Trim(Mid(strZeile, 3, 2)) .siteId = IIf(Trim(Mid(strZeile, 7, 15)) = "", Nothing, Trim(Mid(strZeile, 7, 15))) .fileNumber = Trim(Mid(strZeile, 22, 4)) .fileCreationDate = DateSerial(Mid(strZeile, 26, 4), Mid(strZeile, 30, 2), Mid(strZeile, 32, 2)) .deliveryNoteNumber = IIf(Trim(Mid(strZeile, 35, 8)) = "", Nothing, Trim(Mid(strZeile, 35, 8))) .cardNumber = Trim(Mid(strZeile, 43, 22)) .deliveryDate = DateSerial(Mid(strZeile, 65, 4), Mid(strZeile, 69, 2), Mid(strZeile, 71, 2)) .deliveryTime = IIf(Trim(Mid(strZeile, 73, 4)) = "", Nothing, DateSerial(Mid(strZeile, 65, 4), Mid(strZeile, 69, 2), Mid(strZeile, 71, 2)) & " " & TimeSerial(Mid(strZeile, 73, 2), Mid(strZeile, 75, 2), 0)) .transactionType = Trim(Mid(strZeile, 77, 2)) .productCode = Trim(Mid(strZeile, 79, 4)) .km = IIf(Trim(Mid(strZeile, 83, 7)) = "", Nothing, Trim(Mid(strZeile, 83, 7))) .driverId = IIf(Trim(Mid(strZeile, 90, 4)) = "", Nothing, Trim(Mid(strZeile, 90, 4))) .productQuantity = Trim(Mid(strZeile, 94, 6)) / 100 .amountInclVAT = Trim(Mid(strZeile, 100, 10)) / 100 .VATrate = Trim(Mid(strZeile, 155, 4)) / 100 .VATamount = Trim(Mid(strZeile, 159, 10)) / 100 .OBUID = Trim(Mid(strZeile, 130, 25)) .receiptNumber = Trim(Mid(strZeile, 110, 20)) If ttrBody.transactionType = 3 Then ' Vorzeichenänderung ttrBody.km = 0 - ttrBody.km ttrBody.productQuantity = 0 - ttrBody.productQuantity ttrBody.amountInclVAT = 0 - ttrBody.amountInclVAT ttrBody.VATamount = 0 - ttrBody.VATamount End If .SAVE() End With Case "90" Dim ttrTrailer As New cAsfinag.TTRTrailer(fi.Name, "0") With ttrTrailer .PKFileName = fi.Name .recordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) '.fileNumber = Trim(Mid(strZeile, 5, 4)) .recordCount = Trim(Mid(strZeile, 5, 9)) .checksumProductQuantity = Trim(Mid(strZeile, 14, 15)) / 100 .checksumAmounntInclVAT = Trim(Mid(strZeile, 29, 15)) / 100 .SAVE() End With Case Else ' Andere RecordNumber überlesen. End Select Loop objFileRead.Close() Return True End Function End Class