668 lines
28 KiB
VB.net
668 lines
28 KiB
VB.net
Imports System.IO
|
|
Imports System.Globalization
|
|
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
|
|
Dim dsNichtErkannt As Integer = 0
|
|
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
|
Dim allowClose = False
|
|
' Dim DY_PFAD = "C:\Users\DEVELOPER1\Desktop\test\TEST\"
|
|
|
|
Dim ASFINAG_PFAD = "" '"C:\Users\DEVELOPER1\Desktop\test\TEST\Nachrichtendaten_Einarbeitung\"
|
|
Dim VERARBEITUNGS_PFAD = "" '"C:\Users\DEVELOPER1\Desktop\test\TEST\Nachrichtendaten_Einarbeitung\"
|
|
Dim ZIEL_PFAD = "" '"C:\Users\DEVELOPER1\Desktop\test\TEST\Nachrichtendaten_Ablage\"
|
|
Dim ERROR_PFAD = "" '"C:\Users\DEVELOPER1\Desktop\test\TEST\Nachrichtendaten_ERROR\"
|
|
Dim PARTNERSYSTEM = "ASFINAG"
|
|
Dim SERVER_Path = ""
|
|
Dim SERVER_Path_TEST = ""
|
|
Dim FileType As String
|
|
|
|
Dim Dateiname = ""
|
|
|
|
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(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.
|
|
|
|
End Sub
|
|
|
|
Sub initPfade()
|
|
Me.SERVER_Path = cAsfinag.Paramter.GET_PARAM_ByName("SERVER_Path_In", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
|
|
Me.SERVER_Path_TEST = cAsfinag.Paramter.GET_PARAM_ByName("SERVER_Path_In_Test", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
|
|
Me.ASFINAG_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("BEREITSTELLUNGS_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
|
|
Me.VERARBEITUNGS_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("VERARBEITUNGS_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
|
|
Me.ZIEL_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("ZIEL_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
|
|
Me.ERROR_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("ERROR_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
|
|
|
|
If Not IO.Directory.Exists(VERARBEITUNGS_PFAD) Then IO.Directory.CreateDirectory(VERARBEITUNGS_PFAD)
|
|
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
|
|
|
|
|
|
Private Sub frmDYNachrichtenVerarbeitung_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
initPfade()
|
|
|
|
If FileType <> "" Then
|
|
|
|
Label2.Text &= " " & FileType.ToUpper
|
|
|
|
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 = getNachrichtenDatenFromFTP()
|
|
Label9.Text = cnt & " Datensätze empfangen."
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
Me.Enabled = True
|
|
|
|
End Sub
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
|
Me.Enabled = False
|
|
Try
|
|
Label5.Visible = True
|
|
|
|
DatenEinlesen() '<<<<------------
|
|
|
|
If dsNichtErkannt > 0 Then
|
|
|
|
Label6.Text = dsNichtErkannt & " Datensätze nicht " & vbNewLine & "erkannt."
|
|
Label6.Visible = True
|
|
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
|
|
Me.Enabled = True
|
|
Label5.Text = cntDatenEingelesen & " Datensätze verarbeitet."
|
|
|
|
End Sub
|
|
|
|
|
|
Function getNachrichtenDatenFromFTP() As Integer
|
|
Dim cnt = 0
|
|
Try
|
|
Dim SERVERPath = ""
|
|
|
|
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
|
|
|
|
SERVERPath = Me.SERVER_Path '"\\ftps.verag.ag\FTP\MAVI\IN\"
|
|
Else
|
|
|
|
SERVERPath = Me.SERVER_Path_TEST '"\\ftps.verag.ag\FTP\MAVI\IN\"
|
|
End If
|
|
|
|
|
|
For Each f In IO.Directory.GetFiles(SERVER_Path)
|
|
Dim fi As New IO.FileInfo(f)
|
|
If fi.Name.ToLower.Contains(FileType) Then
|
|
If Not fi.Name.StartsWith(".") Then
|
|
Dim zielPfad = VERARBEITUNGS_PFAD & "\" & fi.Name
|
|
While IO.File.Exists(zielPfad)
|
|
zielPfad = VERARBEITUNGS_PFAD & "\" & Now.ToString("yyyyMMdd_HHmmss_") & fi.Name
|
|
End While
|
|
IO.File.Copy(f, zielPfad)
|
|
If Not 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
|
|
ListBox3.Items.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
|
|
|
|
|
|
|
|
Sub DatenEinlesen()
|
|
|
|
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."
|
|
Label6.Visible = True
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
For Each d In System.IO.Directory.GetFiles(VERARBEITUNGS_PFAD)
|
|
|
|
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
|
|
|
|
|
|
Dim found = False
|
|
Dateiname = d
|
|
If IO.File.Exists(d) And correctFile Then
|
|
|
|
|
|
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
|
|
Else
|
|
addDGVEinarbeitung(fi.Name, "Fehler")
|
|
End If
|
|
|
|
|
|
ElseIf FileType = "ttr" Then
|
|
|
|
If readAndSaveTTR(objFileRead, fi) Then
|
|
addDGVEinarbeitung(fi.Name, "OK")
|
|
found = True
|
|
Else
|
|
addDGVEinarbeitung(fi.Name, "Fehler")
|
|
End If
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
If found Then
|
|
If Not IO.Directory.Exists(ZIEL_PFAD & "\" & Now.Year & "\" & Now.ToString("MMdd") & "\") Then IO.Directory.CreateDirectory(ZIEL_PFAD & "\" & Now.Year & "\" & Now.ToString("MMdd") & "\")
|
|
frmStartOptions.moveFile(d, ZIEL_PFAD & "\" & Now.Year & "\" & Now.ToString("MMdd") & "\", 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
|
|
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
|
|
|
|
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
|
|
Me.Close()
|
|
End Sub
|
|
|
|
|
|
|
|
Sub addDGVEinarbeitung(art, BezugsNr)
|
|
dgvEinarbeitung.Rows.Add(art, BezugsNr)
|
|
Try
|
|
dgvEinarbeitung.FirstDisplayedScrollingRowIndex = dgvEinarbeitung.RowCount - 1
|
|
Catch ex As Exception
|
|
End Try
|
|
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
|
|
|
|
|
|
'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
|
|
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)
|
|
|
|
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
|
|
|
|
|
|
' 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
|
|
|
|
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
|
|
|
|
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()
|
|
|
|
Button2.PerformClick()
|
|
Button1.PerformClick()
|
|
|
|
System.Threading.Thread.Sleep(2000)
|
|
|
|
Me.Close()
|
|
End If
|
|
End Sub
|
|
|
|
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
|
|
|