Asfinag_Datenaustausch
This commit is contained in:
@@ -4,6 +4,10 @@ Imports System.Xml
|
||||
Imports Renci.SshNet
|
||||
Imports System.Net
|
||||
Imports System.Text
|
||||
Imports System.ComponentModel
|
||||
Imports RoutineManager.cAsfinag
|
||||
Imports DocumentFormat.OpenXml.Drawing.Charts
|
||||
Imports DocumentFormat.OpenXml.VariantTypes
|
||||
|
||||
Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
Dim cntDatenEingelesen As Integer = 0
|
||||
@@ -19,22 +23,23 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
Dim PARTNERSYSTEM = "ASFINAG"
|
||||
Dim SERVER_Path = ""
|
||||
Dim SERVER_Path_TEST = ""
|
||||
' Dim BOX_VERSION = "8.8"
|
||||
Dim FileType As String
|
||||
|
||||
Dim Dateiname = ""
|
||||
|
||||
Sub New()
|
||||
Sub New(FileType)
|
||||
|
||||
' Dieser Aufruf ist für den Designer erforderlich.
|
||||
InitializeComponent()
|
||||
|
||||
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
||||
|
||||
Me.FileType = FileType
|
||||
End Sub
|
||||
Sub New(allowClose) 'autostart
|
||||
Sub New(FileType, allowClose) 'autostart
|
||||
|
||||
' Dieser Aufruf ist für den Designer erforderlich.
|
||||
InitializeComponent()
|
||||
FileType = FileType
|
||||
Me.allowClose = allowClose
|
||||
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
||||
|
||||
@@ -52,6 +57,8 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
If Not IO.Directory.Exists(ZIEL_PFAD) Then IO.Directory.CreateDirectory(ZIEL_PFAD)
|
||||
If Not IO.Directory.Exists(ERROR_PFAD) Then IO.Directory.CreateDirectory(ERROR_PFAD)
|
||||
|
||||
|
||||
|
||||
'Me.BOX_VERSION = NCTSTR_Worker.cDY_Paramter.GET_PARAM_ByName("BOX_VERSION", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
|
||||
|
||||
End Sub
|
||||
@@ -59,17 +66,28 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
|
||||
Private Sub frmDYNachrichtenVerarbeitung_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
initPfade()
|
||||
For Each d In System.IO.Directory.GetFiles(VERARBEITUNGS_PFAD)
|
||||
ListBox3.Items.Add(frmStartOptions.cut_file(d))
|
||||
Me.Refresh()
|
||||
Next
|
||||
|
||||
If FileType <> "" Then
|
||||
|
||||
Label2.Text &= " " & FileType
|
||||
|
||||
For Each d In System.IO.Directory.GetFiles(VERARBEITUNGS_PFAD)
|
||||
Dim filename = frmStartOptions.cut_file(d)
|
||||
If filename.ToLower.Contains(FileType) Then
|
||||
ListBox3.Items.Add(filename)
|
||||
End If
|
||||
|
||||
Me.Refresh()
|
||||
Next
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
||||
Me.Enabled = False
|
||||
Try
|
||||
Label9.Visible = True
|
||||
Dim cnt = getNachrichtenDatenFromAsfinagServices()
|
||||
Dim cnt = getNachrichtenDatenFromFTP()
|
||||
Label9.Text = cnt & " Datensätze empfangen."
|
||||
|
||||
Catch ex As Exception
|
||||
@@ -99,7 +117,7 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
End Sub
|
||||
|
||||
|
||||
Function getNachrichtenDatenFromAsfinagServices() As Integer
|
||||
Function getNachrichtenDatenFromFTP() As Integer
|
||||
Dim cnt = 0
|
||||
Try
|
||||
Dim SERVER_Path = ""
|
||||
@@ -125,9 +143,16 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
If IO.File.Exists(zielPfad) Then IO.File.Delete(f)
|
||||
End If
|
||||
|
||||
ListBox3.Items.Add(frmStartOptions.cut_file((New FileInfo(zielPfad)).Name)) 'zur Liste hinzufügen
|
||||
Dim filename = frmStartOptions.cut_file((New FileInfo(zielPfad)).Name)
|
||||
If filename.ToLower.Contains(FileType) Then
|
||||
ListBox3.Items.Add(filename)
|
||||
cnt += 1
|
||||
End If
|
||||
|
||||
|
||||
'ListBox3.Items.Add(frmStartOptions.cut_file((New FileInfo(zielPfad)).Name)) 'zur Liste hinzufügen
|
||||
|
||||
|
||||
cnt += 1
|
||||
End If
|
||||
Next
|
||||
|
||||
@@ -142,7 +167,7 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
End Function
|
||||
|
||||
|
||||
Function getNachrichtenDatenFromMAVIServices_ALTERNATIV() As Integer
|
||||
Function getNachrichtenDatenFromAsfinag_ALTERNATIV() As Integer
|
||||
Dim cnt = 0
|
||||
Try
|
||||
For Each f In IO.Directory.GetFiles(ASFINAG_PFAD)
|
||||
@@ -260,7 +285,7 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
|
||||
Sub DatenEinlesen()
|
||||
|
||||
VERAG_PROG_ALLGEMEIN.cAllgemein.ERR_OP_GLOBAL = VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL
|
||||
VERAG_PROG_ALLGEMEIN.cAllgemein.ERR_OP_GLOBAL = VERAG_PROG_ALLGEMEIN.ERROR_OP.SHOW
|
||||
|
||||
If ListBox3.Items.Count = 0 Then
|
||||
Label6.Text = "Keine Daten zum Einlesen vorhanden."
|
||||
@@ -269,142 +294,81 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
End If
|
||||
|
||||
|
||||
For NACHRICHTENTYP = 1 To 10 'Nach Nachrichtentyp abarbeteiten
|
||||
For Each d In System.IO.Directory.GetFiles(VERARBEITUNGS_PFAD)
|
||||
|
||||
For Each d In System.IO.Directory.GetFiles(VERARBEITUNGS_PFAD)
|
||||
Try
|
||||
Dateiname = d
|
||||
cWorker_NCTS.Dateiname = d
|
||||
If IO.File.Exists(d) Then
|
||||
Dim found = False
|
||||
Dim nr_id As Integer = -1
|
||||
Dim fi As FileInfo = New FileInfo(d)
|
||||
If Not fi.Name.StartsWith(".") Then
|
||||
|
||||
Dim alreadyMoved = False
|
||||
|
||||
Dim NACHRICHTENTYP_notfound = False
|
||||
|
||||
If fi.Extension.ToLower = ".xml" Then
|
||||
Dim xmlWriterSettings As XmlWriterSettings = New XmlWriterSettings With {.Encoding = System.Text.Encoding.UTF8, .CheckCharacters = True}
|
||||
|
||||
Dim doc As New XmlDocument()
|
||||
Dim XML_Code = System.IO.File.ReadAllText(d, System.Text.UTF8Encoding.Default)
|
||||
|
||||
doc.LoadXml(SanitizeXmlString(XML_Code))
|
||||
Dim VERSION As String = ""
|
||||
|
||||
'------------------------------------------------------------------------------------------------------------------------------
|
||||
' eZOLL
|
||||
'------------------------------------------------------------------------------------------------------------------------------
|
||||
Try
|
||||
Dim correctFile As Boolean = False
|
||||
For Each i In ListBox3.Items
|
||||
Dim fileName As FileInfo = New FileInfo(d)
|
||||
If Equals(fileName.Name, i) Then
|
||||
correctFile = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
|
||||
'------------------------------------------
|
||||
'------------------ Anmeldung ------------------
|
||||
'------------------------------------------
|
||||
'MAVI: CC015B - Versandanmeldung Final
|
||||
|
||||
Select Case NACHRICHTENTYP
|
||||
Case 1
|
||||
'NCTS: Versandanmeldung
|
||||
If Not found And cNCTSPartnerWorker.cMAVIGetMsgType.isTRNCTS_VersandanmeldungXML_CC015B(doc) Then
|
||||
If cMAVIWorker.readNCTS_VersandanmeldungXML_CC015B(PARTNERSYSTEM, Me, doc, nr_id, d) <> "" Then found = True
|
||||
End If
|
||||
|
||||
Case 2
|
||||
'NCTS: Versandanmeldung - Ergänzung GUID
|
||||
If Not found And cNCTSPartnerWorker.cMAVIGetMsgType.isTRNCTS_VersandanmeldungXML_CC015B_RES(doc) Then
|
||||
If cMAVIWorker.readNCTS_VersandanmeldungXML_CC015B_RES(PARTNERSYSTEM, Me, doc, nr_id) <> "" Then found = True
|
||||
End If
|
||||
Case 3
|
||||
'NCTS: BestätigungZoll
|
||||
If Not found And cNCTSPartnerWorker.cMAVIGetMsgType.isTRNCTS_BestaetigungZollXML_CC029B(doc) Then
|
||||
If cMAVIWorker.readNCTS_BestaetigungZollXML_CC029B(PARTNERSYSTEM, Me, doc, nr_id) <> "" Then found = True
|
||||
End If
|
||||
Case 4
|
||||
'NCTS: Guarantee
|
||||
If Not found And cNCTSPartnerWorker.cMAVIGetMsgType.isTRNCTS_BestaetigungZollXML_GUA_INF(doc) Then
|
||||
If cMAVIWorker.readNCTS_BestaetigungZollXML_GUA_INF(PARTNERSYSTEM, Me, doc, nr_id) <> "" Then found = True
|
||||
End If
|
||||
Case 5
|
||||
'NCTS: Ankunftsanzeige
|
||||
If Not found And cNCTSPartnerWorker.cMAVIGetMsgType.isTRNCTS_BestaetigungZollXML_ARR_INF(doc) Then
|
||||
If cMAVIWorker.readNCTS_BestaetigungZollXML_ARR_INF(PARTNERSYSTEM, Me, doc, nr_id) <> "" Then found = True
|
||||
End If
|
||||
|
||||
Case 6
|
||||
'NCTS: Erledigungsmitteilung
|
||||
If Not found And cNCTSPartnerWorker.cMAVIGetMsgType.isTRNCTS_ErledigungsmitteilungXML_CC045A(doc) Then
|
||||
If cMAVIWorker.readNCTS_ErledigungsmitteilungXML_CC045A(PARTNERSYSTEM, Me, doc, nr_id) <> "" Then found = True
|
||||
End If
|
||||
|
||||
Case 7
|
||||
'NCTS: Cancellation decision CC009A
|
||||
If Not found And cNCTSPartnerWorker.cMAVIGetMsgType.isTRNCTS_AbbruchXML_CC009A(doc) Then
|
||||
If cMAVIWorker.readNCTS_AbbruchXML_CC009A(PARTNERSYSTEM, Me, doc, nr_id) <> "" Then found = True
|
||||
End If
|
||||
Case 8
|
||||
'NCTS: Declaration rejected CC016A
|
||||
If Not found And cNCTSPartnerWorker.cMAVIGetMsgType.isTRNCTS_RueckweisungXML_CC016A(doc) Then
|
||||
If cMAVIWorker.readNCTS_RueckweisungXML_CC016A(PARTNERSYSTEM, Me, doc, nr_id) <> "" Then found = True
|
||||
End If
|
||||
Case 9
|
||||
'NCTS: No release for transit – type B CC051B
|
||||
If Not found And cNCTSPartnerWorker.cMAVIGetMsgType.isTRNCTS_KeineFreigabeXML_CC051B(doc) Then
|
||||
If cMAVIWorker.readNCTS_KeineFreigabeXML_CC051B(PARTNERSYSTEM, Me, doc, nr_id) <> "" Then found = True
|
||||
End If
|
||||
Dim found = False
|
||||
Dateiname = d
|
||||
If IO.File.Exists(d) And correctFile Then
|
||||
|
||||
|
||||
Case 10
|
||||
NACHRICHTENTYP_notfound = True ' alle nciht zu verarbeitenden
|
||||
End Select
|
||||
Dim nr_id As Integer = -1
|
||||
|
||||
Dim fi As FileInfo = New FileInfo(d)
|
||||
If Not fi.Name.StartsWith(".") Then
|
||||
|
||||
Dim alreadyMoved = False
|
||||
|
||||
Dim objFileRead As StreamReader = New StreamReader(d)
|
||||
|
||||
If objFileRead.Peek() = -1 Then
|
||||
|
||||
MsgBox("Datei hat keinen Inhalt!",
|
||||
MsgBoxStyle.Information,
|
||||
MsgBoxStyle.DefaultButton2 = MsgBoxStyle.OkOnly)
|
||||
Exit Sub
|
||||
|
||||
ElseIf FileType = "clf" Then
|
||||
|
||||
If readAndSaveCLF(objFileRead, fi) Then
|
||||
addDGVEinarbeitung(fi.Name, "OK")
|
||||
found = True
|
||||
End If
|
||||
|
||||
|
||||
Dim destPath = ""
|
||||
If found Then
|
||||
If Not IO.Directory.Exists(ZIEL_PFAD & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\") Then IO.Directory.CreateDirectory(ZIEL_PFAD & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\")
|
||||
frmStartOptions.moveFile(d, ZIEL_PFAD & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\", destPath)
|
||||
cntDatenEingelesen += 1
|
||||
Else
|
||||
If NACHRICHTENTYP_notfound Then
|
||||
frmStartOptions.moveFile(d, ERROR_PFAD, destPath) ' nciht gefunden, oder durch ERROR nicht eingearbt,.
|
||||
dsNichtErkannt += 1
|
||||
End If
|
||||
ElseIf FileType = "ttr" Then
|
||||
|
||||
If readAndSaveTTR(objFileRead, fi) Then
|
||||
addDGVEinarbeitung(fi.Name, "OK")
|
||||
found = True
|
||||
End If
|
||||
|
||||
If destPath <> "" And nr_id > 0 Then
|
||||
VERAG_PROG_ALLGEMEIN.cNCTS_TR_Nachrichten.updatePath(nr_id, destPath)
|
||||
End If
|
||||
End If
|
||||
|
||||
Me.Refresh()
|
||||
End If
|
||||
|
||||
If found Then
|
||||
If Not IO.Directory.Exists(ZIEL_PFAD & "\" & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\") Then IO.Directory.CreateDirectory(ZIEL_PFAD & "\" & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\")
|
||||
frmStartOptions.moveFile(d, ZIEL_PFAD & "\" & Now.ToString("yyyyMMdd") & "\", VERARBEITUNGS_PFAD)
|
||||
cntDatenEingelesen += 1
|
||||
Else
|
||||
If Not found Then
|
||||
frmStartOptions.moveFile(d, ERROR_PFAD, VERARBEITUNGS_PFAD) ' nciht gefunden, oder durch ERROR nicht eingearbt,.
|
||||
dsNichtErkannt += 1
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
End Try
|
||||
Next
|
||||
Me.Refresh()
|
||||
|
||||
End If
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
End Try
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Function getString(doc As XmlDocument) As Boolean
|
||||
If doc.HasChildNodes Then
|
||||
' If doc.GetElementsByTagName("DakosyMessageInternal").Count > 0 Then
|
||||
Dim sw = New StringWriter()
|
||||
Dim xw = New XmlTextWriter(sw)
|
||||
doc.WriteTo(xw)
|
||||
Dim XmlString = sw.ToString()
|
||||
End If
|
||||
Return False
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
|
||||
Me.Close()
|
||||
End Sub
|
||||
@@ -424,127 +388,362 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
End Sub
|
||||
|
||||
|
||||
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 lngPKLine As Long = 0
|
||||
Dim lngRecordCount As Long
|
||||
|
||||
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 = Now()
|
||||
'.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"
|
||||
' Meldung bei nicht vorhandenen Haeder.
|
||||
If Not booHeaderVorhanden Then
|
||||
MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.")
|
||||
objFileRead.Close()
|
||||
Return False
|
||||
End If
|
||||
|
||||
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))
|
||||
.SAVE()
|
||||
End With
|
||||
'CardNumber prüfen.
|
||||
If (Right(clfBody.cardNumber, 1)) <> cAsfinag.fktMod10Prüfziffer(Left(clfBody.cardNumber, Len(clfBody.cardNumber) - 1)) Then
|
||||
booPrüfziffernfehler = True
|
||||
End If
|
||||
|
||||
|
||||
'strSQL = "SELECT * FROM CLFArchiv WHERE (OBUID = N'" & Trim(Mid(strZeile, 37, 18)) & "')"
|
||||
'rstCLFArchiv.Open strSQL, cnnASFINAG, adOpenStatic, adLockOptimistic, adCmdText
|
||||
|
||||
|
||||
Function readPLOSE_Detail(d As String) As String
|
||||
' Try
|
||||
' readPLOSE_Detail = ""
|
||||
' Dim KdnR = ""
|
||||
'With rstCLFArchiv
|
||||
' If .EOF Then
|
||||
' .AddNew
|
||||
' !OBUID = Trim(Mid(strZeile, 37, 18))
|
||||
' End If
|
||||
' !FileName = strPKFileName
|
||||
' !RecordType = Trim(Mid(strZeile, 1, 2))
|
||||
' !RunNumber = Trim(Mid(strZeile, 3, 8))
|
||||
' !CardNumber = Trim(Mid(strZeile, 11, 22))
|
||||
' !ValidTo = Trim(Mid(strZeile, 33, 4))
|
||||
' !KfzKennzeichen = Trim(Mid(strZeile, 55, 10))
|
||||
' !Nationalität = Trim(Mid(strZeile, 65, 3))
|
||||
' !Kategorie = Trim(Mid(strZeile, 68, 1))
|
||||
' !Schadstoffklasse = Trim(Mid(strZeile, 69, 2))
|
||||
' !Status = Trim(Mid(strZeile, 71, 2))
|
||||
' !DatumVertragsabschluss = DateSerial(Mid(strZeile, 73, 4), Mid(strZeile, 77, 2), Mid(strZeile, 79, 2))
|
||||
' .Update
|
||||
' .Close
|
||||
'End With
|
||||
|
||||
' Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(d, Encoding.UTF8)
|
||||
' MyReader.TextFieldType = FileIO.FieldType.Delimited
|
||||
' MyReader.SetDelimiters(";")
|
||||
' Dim currentRow As String()
|
||||
' 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
|
||||
|
||||
' Dim cnt = 0
|
||||
' If True Then
|
||||
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
|
||||
|
||||
' While Not MyReader.EndOfData
|
||||
' Try
|
||||
' currentRow = MyReader.ReadFields()
|
||||
booTrailerVorhanden = True
|
||||
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
|
||||
' Prüfsumme Anzahl der Sätze im File ohne Header und Trailer.
|
||||
If clfTrailer.recordCount <> (lngRecordCount) Then
|
||||
MsgBox("Record Count: " & clfTrailer.recordCount & vbCrLf & "Prüfsumme: " & (lngRecordCount) & vbCrLf)
|
||||
objFileRead.Close()
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
' If currentRow.Length > 24 Then
|
||||
' Dim PLOSE As New cNCTSPartnerWorker.cPLOSE
|
||||
' Meldung bei Prüfsummenfehler.
|
||||
If booPrüfziffernfehler Then
|
||||
MsgBox("Datei kann wegen Prüfsummenfehler nicht verarbeitet werden.")
|
||||
objFileRead.Close()
|
||||
' MsgBox strPrompt, , strPKFileName
|
||||
' ' Zurücksetzen der Transaktion.
|
||||
'cnnASFINAG.RollbackTrans
|
||||
' booInTransaktion = False
|
||||
End If
|
||||
Case Else
|
||||
' Andere RecordNumber überlesen.
|
||||
End Select
|
||||
|
||||
Loop
|
||||
|
||||
' PLOSE.plose_Datensatztyp = SQL.isleernothing(currentRow(0))
|
||||
' PLOSE.plose_KodexMautTankstelle = SQL.isleernothing(currentRow(1))
|
||||
' PLOSE.plose_BeschreibungMautTankstelle = SQL.isleernothing(currentRow(2))
|
||||
' PLOSE.plose_KodexEinfahrt = SQL.isleernothing(currentRow(3))
|
||||
' PLOSE.plose_BeschreibungEinfahrt = SQL.isleernothing(currentRow(4))
|
||||
' PLOSE.plose_KodexAusfahrt = SQL.isleernothing(currentRow(5))
|
||||
' PLOSE.plose_BeschreibungAusfahrt = SQL.isleernothing(currentRow(6))
|
||||
' PLOSE.plose_Kartenkodex = SQL.isleernothing(currentRow(7))
|
||||
' PLOSE.plose_Kontonummer = SQL.isleernothing(currentRow(8))
|
||||
' PLOSE.plose_NummerKarteGeraet = SQL.isleernothing(currentRow(9))
|
||||
' PLOSE.plose_Kennzeichen = SQL.isleernothing(currentRow(10))
|
||||
' PLOSE.plose_InterneNrFahrzeug = SQL.isleernothing(currentRow(11))
|
||||
' PLOSE.plose_POLSEKundennummer = SQL.isleernothing(currentRow(12))
|
||||
' PLOSE.plose_Firmenname = SQL.isleernothing(currentRow(13))
|
||||
' PLOSE.plose_DatumTransaktion = SQL.isleernothingDateFormatstring(currentRow(14))
|
||||
' PLOSE.plose_Produktbeschreibung = SQL.isleernothing(currentRow(15))
|
||||
' PLOSE.plose_Menge = SQL.isNullNothingDbl(currentRow(16))
|
||||
' PLOSE.plose_Preis = SQL.isNullNothingDbl(currentRow(17))
|
||||
' PLOSE.Einheitsrabatt = SQL.isleernothing(currentRow(18))
|
||||
' PLOSE.plose_NettobetragTransaktion = SQL.isNullNothingDbl(currentRow(19))
|
||||
' PLOSE.plose_MWSTBetrag = SQL.isNullNothingDbl(currentRow(20))
|
||||
' PLOSE.plose_BruttobetragTransaktion = SQL.isNullNothingDbl(currentRow(21))
|
||||
' PLOSE.plose_NettobetragWaehrungAbbuchung = SQL.isNullNothingDbl(currentRow(22))
|
||||
' PLOSE.plose_MWSTBetragWaehrungAbbuchung = SQL.isNullNothingDbl(currentRow(23))
|
||||
' PLOSE.plose_BruttobetragWaehrungAbbuchung = SQL.isNullNothingDbl(currentRow(24))
|
||||
' PLOSE.plose_WaehrungLandDiesntleistung = SQL.isleernothing(currentRow(25))
|
||||
' PLOSE.plose_WaehrungAbbuchung = SQL.isleernothing(currentRow(26))
|
||||
' PLOSE.plose_DokumentNrQuittungUhrzeit = SQL.isleernothing(currentRow(27))
|
||||
' PLOSE.plose_ArtTransaktion = SQL.isleernothing(currentRow(28))
|
||||
' PLOSE.plose_Fahrzeugklasse = SQL.isleernothing(currentRow(29))
|
||||
' PLOSE.plose_KlassenidentifikationEURO = SQL.isleernothing(currentRow(30))
|
||||
' PLOSE.plose_ProduktbeschreibungShort = SQL.isleernothing(currentRow(31))
|
||||
' PLOSE.plose_DokumentNrQuittungUhrzeit = SQL.isleernothing(currentRow(32))
|
||||
' PLOSE.plose_Geraetetyp = SQL.isleernothing(currentRow(33))
|
||||
' PLOSE.plose_ProduktCode = SQL.isleernothing(currentRow(34))
|
||||
' PLOSE.plose_ReferenzenBuchungMaut = SQL.isleernothing(currentRow(35))
|
||||
objFileRead.Close()
|
||||
|
||||
' ''''''''''''
|
||||
' If PLOSE.SAVE() Then
|
||||
Return True
|
||||
|
||||
' End If
|
||||
|
||||
' End If
|
||||
|
||||
' cnt += 1
|
||||
|
||||
' 'For Each currentField In currentRow
|
||||
' 'Next
|
||||
' Catch ex As Exception
|
||||
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
' End Try
|
||||
' End While
|
||||
|
||||
|
||||
' 'Label30.Text = (cnt + 1) & " / " & LineCount
|
||||
' 'Label31.Visible = True
|
||||
' readPLOSE_Detail = "Zeilen: " & cnt
|
||||
' Else
|
||||
' MsgBox("FEHLER beim Löschen der vorhandenen OP-Liste.")
|
||||
' End If
|
||||
' End Using
|
||||
|
||||
|
||||
|
||||
|
||||
' Try
|
||||
' ' System.IO.File.Delete(p)
|
||||
' Catch ex As Exception
|
||||
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
' End Try
|
||||
|
||||
' addDGVEinarbeitung("PLOSE: Detail" & KdnR, readPLOSE_Detail)
|
||||
|
||||
' ' End Using
|
||||
|
||||
' 'End If
|
||||
|
||||
' Catch ex As Exception
|
||||
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
' MsgBox(ex.StackTrace & ex.Message)
|
||||
' readPLOSE_Detail = ""
|
||||
' End Try
|
||||
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
|
||||
|
||||
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 ttrHeader As New cAsfinag.TTRHeader(fi.Name.ToString, ext)
|
||||
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"
|
||||
' Meldung bei nicht vorhandenen Haeder.
|
||||
If Not booHeaderVorhanden Then
|
||||
MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.")
|
||||
objFileRead.Close()
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Dim ttrBody As New cAsfinag.TTRBody(fi.Name, lngPKLine)
|
||||
|
||||
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))
|
||||
|
||||
' Bei den Checksummen wird unabhängig vom TransactionType immer der positive Betrag aufsummiert.
|
||||
dblCheckSumQuantity = dblCheckSumQuantity + ttrBody.productQuantity
|
||||
curCheckSumAmount = curCheckSumAmount + ttrBody.amountInclVAT
|
||||
' Bei TransactionType 03 .......Credit-Transaktion (negativ)
|
||||
|
||||
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
|
||||
|
||||
' CardNumber prüfen.
|
||||
If (Right(ttrBody.cardNumber, 1)) <> (fktMod10Prüfziffer(Left(ttrBody.cardNumber, Len(ttrBody.cardNumber) - 1))) Then
|
||||
booPrüfziffernfehler = True
|
||||
End If
|
||||
.SAVE()
|
||||
|
||||
End With
|
||||
|
||||
'strSQL = "SELECT * FROM CLFArchiv WHERE (OBUID = N'" & Trim(Mid(strZeile, 37, 18)) & "')"
|
||||
'rstCLFArchiv.Open strSQL, cnnASFINAG, adOpenStatic, adLockOptimistic, adCmdText
|
||||
|
||||
|
||||
'With rstCLFArchiv
|
||||
' If .EOF Then
|
||||
' .AddNew
|
||||
' !OBUID = Trim(Mid(strZeile, 37, 18))
|
||||
' End If
|
||||
' !FileName = strPKFileName
|
||||
' !RecordType = Trim(Mid(strZeile, 1, 2))
|
||||
' !RunNumber = Trim(Mid(strZeile, 3, 8))
|
||||
' !CardNumber = Trim(Mid(strZeile, 11, 22))
|
||||
' !ValidTo = Trim(Mid(strZeile, 33, 4))
|
||||
' !KfzKennzeichen = Trim(Mid(strZeile, 55, 10))
|
||||
' !Nationalität = Trim(Mid(strZeile, 65, 3))
|
||||
' !Kategorie = Trim(Mid(strZeile, 68, 1))
|
||||
' !Schadstoffklasse = Trim(Mid(strZeile, 69, 2))
|
||||
' !Status = Trim(Mid(strZeile, 71, 2))
|
||||
' !DatumVertragsabschluss = DateSerial(Mid(strZeile, 73, 4), Mid(strZeile, 77, 2), Mid(strZeile, 79, 2))
|
||||
' .Update
|
||||
' .Close
|
||||
'End With
|
||||
|
||||
' 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 ttrTrailer As New cAsfinag.TTRTrailer(fi.Name)
|
||||
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()
|
||||
|
||||
Dim strPrompt
|
||||
If ttrTrailer.recordCount <> lngRecordCount Then
|
||||
strPrompt = strPrompt & "Record Count: " & ttrTrailer.recordCount & vbCrLf &
|
||||
"Prüfsumme: " & lngRecordCount & vbCrLf
|
||||
End If
|
||||
' Prüfsumme Menge.
|
||||
If ttrTrailer.checksumProductQuantity <> dblCheckSumQuantity Then
|
||||
strPrompt = strPrompt & "Check Sum Quantity: " & ttrTrailer.checksumProductQuantity & vbCrLf &
|
||||
"Prüfsumme: " & dblCheckSumQuantity & vbCrLf
|
||||
End If
|
||||
' Prüfsumme Betrag.
|
||||
If ttrTrailer.checksumAmounntInclVAT <> Math.Round(curCheckSumAmount, 2) Then
|
||||
strPrompt = strPrompt & "Check Sum Amount: " & ttrTrailer.checksumAmounntInclVAT & vbCrLf &
|
||||
"Prüfsumme: " & curCheckSumAmount & vbCrLf
|
||||
End If
|
||||
|
||||
If strPrompt <> "" Then
|
||||
MsgBox(strPrompt)
|
||||
objFileRead.Close()
|
||||
Return False
|
||||
End If
|
||||
|
||||
End With
|
||||
' Prüfsumme Anzahl der Sätze im File ohne Header und Trailer.
|
||||
|
||||
If ttrTrailer.recordCount <> (lngRecordCount) Then
|
||||
MsgBox("Record Count: " & ttrTrailer.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
|
||||
' MsgBox strPrompt, , strPKFileName
|
||||
' ' Zurücksetzen der Transaktion.
|
||||
'cnnASFINAG.RollbackTrans
|
||||
' booInTransaktion = False
|
||||
End If
|
||||
Case Else
|
||||
' Andere RecordNumber überlesen.
|
||||
End Select
|
||||
|
||||
Loop
|
||||
|
||||
objFileRead.Close()
|
||||
|
||||
Return True
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
|
||||
Private Sub dgvEinarbeitung_SelectionChanged(sender As Object, e As EventArgs) Handles dgvEinarbeitung.SelectionChanged
|
||||
dgvEinarbeitung.ClearSelection()
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Private Sub frmTCNachrichtenVerarbeitung_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
||||
If allowClose Then
|
||||
Me.Refresh()
|
||||
@@ -561,5 +760,20 @@ Public Class frmAsfinag_NachrichtenVerabeitung
|
||||
Private Sub pnl_Paint(sender As Object, e As PaintEventArgs) Handles pnl.Paint
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public Shadows Function Right(ByVal sText As String,
|
||||
ByVal nLen As Integer) As String
|
||||
|
||||
If nLen > sText.Length Then nLen = sText.Length
|
||||
Return (sText.Substring(sText.Length - nLen))
|
||||
End Function
|
||||
|
||||
Public Shadows Function Left(ByVal sText As String,
|
||||
ByVal nLen As Integer) As String
|
||||
|
||||
If nLen > sText.Length Then nLen = sText.Length
|
||||
Return (sText.Substring(0, nLen))
|
||||
End Function
|
||||
End Class
|
||||
|
||||
|
||||
Reference in New Issue
Block a user