Timas, Asfinag-Schnittstelle
This commit is contained in:
@@ -1,13 +1,18 @@
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Data.SqlTypes
|
||||
Imports System.Diagnostics.Eventing
|
||||
Imports System.IO
|
||||
Imports System.Reflection
|
||||
Imports System.Security.Cryptography
|
||||
Imports com.itextpdf.text.pdf
|
||||
Imports DocumentFormat.OpenXml.VariantTypes
|
||||
Imports RoutineManager.cAsfinag
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
Public Class cAsfinag
|
||||
|
||||
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
|
||||
Public Class CLFHeader
|
||||
|
||||
Property PKFileName As Object = Nothing
|
||||
@@ -154,6 +159,10 @@ Public Class cAsfinag
|
||||
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
|
||||
|
||||
@@ -180,7 +189,9 @@ Public Class cAsfinag
|
||||
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
|
||||
@@ -272,6 +283,148 @@ Public Class cAsfinag
|
||||
|
||||
|
||||
|
||||
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
|
||||
@@ -393,6 +546,7 @@ Public Class cAsfinag
|
||||
Public Class TTRHeader
|
||||
|
||||
Property PKFileName As Object = Nothing
|
||||
Property PKHistory As Integer
|
||||
Property recordType As Integer
|
||||
Property fileVersion As Integer
|
||||
Property fileNumber As Integer
|
||||
@@ -408,14 +562,16 @@ Public Class cAsfinag
|
||||
|
||||
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
|
||||
Sub New(PKFileName, filenummer)
|
||||
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))
|
||||
@@ -433,22 +589,32 @@ Public Class cAsfinag
|
||||
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) " &
|
||||
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 "
|
||||
" 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 ", conn)
|
||||
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()
|
||||
@@ -473,7 +639,7 @@ Public Class cAsfinag
|
||||
|
||||
|
||||
|
||||
Public Function getUpdateCmd() As String
|
||||
Public Function getUpdateCmd(Optional OldKHistory As Integer = Nothing) As String
|
||||
Try
|
||||
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
|
||||
|
||||
@@ -484,7 +650,12 @@ Public Class cAsfinag
|
||||
End If
|
||||
Next
|
||||
str = str.Substring(0, str.Length - 1) 'wg. ','
|
||||
Return (" UPDATE [TTRHeader] SET " & str & " WHERE PKFileName=@PKFileName AND filenumber = @filenumber")
|
||||
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)
|
||||
@@ -519,6 +690,7 @@ Public Class cAsfinag
|
||||
|
||||
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
|
||||
@@ -538,6 +710,7 @@ Public Class cAsfinag
|
||||
Property driverId As Integer
|
||||
Property receiptNumber As String
|
||||
Property OBUID As String
|
||||
Property abrechnungsdatum As Date
|
||||
|
||||
Public hasEntry = False
|
||||
|
||||
@@ -547,14 +720,16 @@ Public Class cAsfinag
|
||||
|
||||
End Sub
|
||||
|
||||
Sub New(PKFileName, PKLine)
|
||||
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))
|
||||
@@ -575,6 +750,7 @@ Public Class cAsfinag
|
||||
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
|
||||
@@ -582,11 +758,10 @@ Public Class cAsfinag
|
||||
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) " &
|
||||
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 "
|
||||
" BEGIN " & getInsertCmd() & " End " & " commit tran "
|
||||
|
||||
Return SQL.doSQLVarList(sqlstr, "ASFINAG", , list)
|
||||
End Function
|
||||
@@ -595,9 +770,10 @@ Public Class cAsfinag
|
||||
Try
|
||||
hasEntry = False
|
||||
Using conn As SqlConnection = SQL.GetNewOpenConnectionAsfinag()
|
||||
Using cmd As New SqlCommand("Select * FROM TTRBody WHERE PKFileName=@PKFileName AND PKLine = @PKLine ", conn)
|
||||
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()
|
||||
@@ -633,7 +809,7 @@ Public Class cAsfinag
|
||||
End If
|
||||
Next
|
||||
str = str.Substring(0, str.Length - 1) 'wg. ','
|
||||
Return (" UPDATE [TTRBody] SET " & str & " WHERE PKFileName=@PKFileName AND PKLine = @PKLine ")
|
||||
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)
|
||||
@@ -671,6 +847,7 @@ Public Class cAsfinag
|
||||
Public Class TTRTrailer
|
||||
|
||||
Property PKFileName As Object = Nothing
|
||||
Property PKHistory As Integer
|
||||
Property recordType As Integer
|
||||
Property fileVersion As Integer
|
||||
Property recordCount As Integer
|
||||
@@ -681,13 +858,15 @@ Public Class cAsfinag
|
||||
|
||||
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
|
||||
Sub New(PKFileName)
|
||||
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))
|
||||
@@ -700,7 +879,7 @@ Public Class cAsfinag
|
||||
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) " &
|
||||
Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM TTRTrailer WHERE PKFileName=@PKFileName AND PKHistory = @PKHistory) " &
|
||||
" BEGIN " & getUpdateCmd() & " End " &
|
||||
" Else " &
|
||||
" BEGIN " & getInsertCmd() & " End " &
|
||||
@@ -713,8 +892,9 @@ Public Class cAsfinag
|
||||
Try
|
||||
hasEntry = False
|
||||
Using conn As SqlConnection = SQL.GetNewOpenConnectionAsfinag()
|
||||
Using cmd As New SqlCommand("Select * FROM TTRTrailer WHERE PKFileName=@PKFileName", conn)
|
||||
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()
|
||||
@@ -855,60 +1035,25 @@ Public Class cAsfinag
|
||||
End Structure
|
||||
|
||||
|
||||
|
||||
' Private Type TWLHeader ' Format Muss von bis Kommentar
|
||||
' SortField As String * 3 ' N3 Y 1 3 "000"
|
||||
' RecordID As String * 2 ' N2 Y 4 5 "00"
|
||||
' FileName As String * 3 ' C3 Y 6 8 "TWL"
|
||||
' LiveTestIndicator As String * 1 ' C1 Y 9 9 "L" oder "T"
|
||||
' FileCreationDate As String * 8 ' N8 Y 10 17 YYYYMMDD
|
||||
' FileCreationTime As String * 4 ' N4 Y 18 21 HHMM (24hr)
|
||||
' RunNumber As String * 3 ' N3 Y 22 24 Laufende Nummer pro File-Type
|
||||
' SenderID As String * 2 ' C2 Y 25 26 "VG"
|
||||
' ReceiverID As String * 2 ' C2 Y 27 28 "EP"
|
||||
' Filler As String * 56 ' C56 Y 29 84 Leerzeichen
|
||||
'End Type
|
||||
|
||||
'Private Type TWLBody ' Format Muss von bis Kommentar
|
||||
' SortField As String * 3 ' N3 Y 1 3 "000"
|
||||
' RecordID As String * 2 ' N2 Y 4 5 "40"
|
||||
' ISOCountryCode As String * 3 ' N3 Y 6 8 "040" (Österreich)
|
||||
' CardNumber As String * 22 ' N22 Y 9 30 Komplette Tankkartennummer
|
||||
' ValidFrom As String * 8 ' N8 Y 31 38 YYYYMMDD
|
||||
' ValidTo As String * 8 ' N8 Y 39 46 YYYYMMDD
|
||||
' NewCardNumber As String * 22 ' N22 N 47 68 Tankkartennummer der Folge- oder Ersatzkarte
|
||||
' NewValidFrom As String * 8 ' N8 N 69 76 YYYYMMDD der Folge- oder Ersatzkarte
|
||||
' NewValidTo As String * 8 ' N8 N 77 84 YYYYMMDD der Folge- oder Ersatzkarte
|
||||
'End Type
|
||||
|
||||
'Private Type TWLTrailer ' Format Muss von bis Kommentar
|
||||
' SortField As String * 3 ' N3 Y 1 3 "999"
|
||||
' RecordID As String * 2 ' N2 Y 4 5 "99"
|
||||
' FileName As String * 3 ' C3 Y 6 8 "TWL"
|
||||
' RunNumber As String * 3 ' N3 Y 9 11 Gleiche Nr. wie im Header
|
||||
' RecordCount As String * 7 ' N7 Y 12 18 Anzahl der Sätze inkl. Header und Trailer
|
||||
' Filler As String * 66 ' C66 Y 19 84 Leerzeichen
|
||||
'End Type
|
||||
|
||||
|
||||
|
||||
Dim ASFINAG_PFAD, FTP_PFAD_TEST, FTP_PFAD
|
||||
Dim VERARBEITUNG_PFAD, ARCHIV_PFAD, BEREITSTELLUNG_PFAD, ERROR_PFAD, FTP_PFAD_TEST, FTP_PFAD
|
||||
Dim sw As StreamWriter
|
||||
Dim Dateiname = ""
|
||||
|
||||
Public Function initPFad()
|
||||
Public Function initExportPfade()
|
||||
|
||||
ASFINAG_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("BEREITSTELLUNGS_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
|
||||
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(ASFINAG_PFAD) Then IO.Directory.CreateDirectory(ASFINAG_PFAD)
|
||||
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"
|
||||
@@ -948,7 +1093,7 @@ Public Class cAsfinag
|
||||
preFilename = "TVGEP"
|
||||
End If
|
||||
|
||||
Dim strFile As String = ASFINAG_PFAD & "\" & preFilename & fileName & "." & currentFileNr
|
||||
Dim strFile As String = BEREITSTELLUNG_PFAD & "\" & preFilename & fileName & "." & currentFileNr
|
||||
|
||||
Try
|
||||
|
||||
@@ -1071,7 +1216,7 @@ Public Class cAsfinag
|
||||
preFilename = "TVGEP"
|
||||
End If
|
||||
|
||||
Dim strFile As String = ASFINAG_PFAD & "\" & preFilename & fileName & "." & currentFileNr
|
||||
Dim strFile As String = BEREITSTELLUNG_PFAD & "\" & preFilename & fileName & "." & currentFileNr
|
||||
|
||||
Try
|
||||
|
||||
@@ -1197,13 +1342,13 @@ Public Class cAsfinag
|
||||
|
||||
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
|
||||
|
||||
SERVER_Path = Me.FTP_PFAD_TEST
|
||||
SERVER_Path = FTP_PFAD_TEST
|
||||
Else
|
||||
|
||||
SERVER_Path = Me.FTP_PFAD
|
||||
SERVER_Path = FTP_PFAD
|
||||
End If
|
||||
|
||||
For Each f In IO.Directory.GetFiles(ASFINAG_PFAD)
|
||||
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
|
||||
@@ -1211,9 +1356,9 @@ Public Class cAsfinag
|
||||
'While IO.File.Exists(zielPfad)
|
||||
' zielPfad = SERVER_Path & "\" & Now.ToString("yyyyMMdd_HHmmss_") & fi.Name
|
||||
'End While
|
||||
IO.File.Copy(f, zielPfad & "\" & fi.Name)
|
||||
If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
|
||||
If IO.File.Exists(zielPfad) Then IO.File.Delete(f)
|
||||
IO.File.Copy(f, zielPfad & "\" & fi.Name, True)
|
||||
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM And IO.File.Exists(zielPfad & "\" & fi.Name) Then
|
||||
IO.File.Move(BEREITSTELLUNG_PFAD & "\" & fi.Name, ARCHIV_PFAD & "\" & fi.Name)
|
||||
End If
|
||||
cnt += 1
|
||||
End If
|
||||
@@ -1232,6 +1377,506 @@ Public Class cAsfinag
|
||||
|
||||
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.ToLower.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.ToLower.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))
|
||||
.abrechnungsdatum = SqlDateTime.Null
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user