You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1520 lines
69 KiB

Imports System.IO.File
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.ComponentModel
Imports System.IO
Imports System.SystemException
Imports System.Reflection
'''<summary>
'''Steuermodul für EDKB01
'''</summary>
'''<remarks>
'''Das Module1 ist das Steuermodul für die gesamte EDKB01-Verabeitung.
'''Folgende Parameter werden als Kommandozeilen-Parameter übergeben:
'''1: Verzeichnis in dem die Datei Parameters.cfg gespeichert ist
'''2: Verarbeitungsart (HOST, ZV oder UVM)
'''3: INITIALLOAD (Nur im Falle einer Initialload-Verarbeitung)
'''4: Verzeichnis in dem die Initialload-Dateien für die Entsprechende Verarbeitung (vgl. Parameter 2) gespeichert sind$EOL$
'''(Nur im Falle einer Initialload-Verarbeitung)
'''</remarks>
Module Module1
'Deklarationen
Dim args As String() = Environment.GetCommandLineArgs()
Dim initialload As Boolean
Dim hostdata As New edokadb.clsHost_dokument_import()
Dim zvdata As New edokadb.clsZVBelege_import()
Dim uvmdata As New edokadb.clsUvm_import()
Dim bldata As New edokadb.clsEDEX_BL_Hostdokument
'1=Host, 2=ZV, 3=UVM
Dim Verarbeitungsart As Integer = 0
Dim s As String
Dim zz As Long
Dim zzz As Long
Dim zzzz As Long
Dim log As New clsLog
Public m_Log As bms.Logging
Dim Filename As String
Dim Dokumentid As String
Dim d1 As DateTime
Dim d2 As DateTime
Dim d3 As DateTime
Dim FileSizeO As Long
Dim FileSizeD As Long
Dim TotalImport As Long
Dim TotalDelete As Long
Dim TotalDokumente As Long
Dim TotalDokumenteHost As Long
Dim TotalDokumenteZV As Long
Dim TotalDokumenteUVM As Long
Dim TotalDokumenteBL As Long
Dim TotalDokumenteAZV As Long
Dim InsertCounter As Long = 0
Dim InsertHost As Integer
Dim InsertZV As Integer
Dim InsertUVM As Integer
Dim InsertBL As Integer
Dim InsertAZV As Integer
Dim Ret As String
Dim db_conn As EDOKA.DB_Connection()
Sub Main()
Try
Dim m_log1 As New bms.Logging(3, Common.Common.JobType.WatchJob)
m_Log = m_log1
m_Log.Start()
Catch ex As Exception
WirteLog("BMS-Connection / XML: " + ex.Message, ApplicationPath() + "Error.txt")
Exit Sub
End Try
Try
If CheckArg() = False Then
Exit Sub
End If
Dim db_conn As New EDOKA.DB_Connection
Select Case args(2)
Case "HOST"
Verarbeitungsart = 1
log.Startlog(4)
m_Log.Log("EDKB01: Start COLD-HOST-Import")
Verarbeiten()
m_Log.Log("EDKB01: Ende COLD-HOST-Import")
log.InsertJournale("Ende COLD-HOST-Import")
log.StopLog(4)
Case "ZV"
Verarbeitungsart = 2
log.Startlog(4)
m_Log.Log("EDKB01: Start ZV-Import")
Verarbeiten()
m_Log.Log("EDKB01: Ende ZV-Import ")
log.InsertJournale("Ende COLD-ZV-Import")
log.StopLog(4)
Case "UVM"
Verarbeitungsart = 3
m_Log.Log("EDKB01: Start UVM-Import")
log.Startlog(4)
Verarbeiten()
m_Log.Log("EDKB01: Ende UVM-Import")
log.InsertJournale("Ende COLD-UVM-Import")
log.StopLog(4)
Case "BL"
Verarbeitungsart = 4
m_Log.Log("EDKB01: Start Banklagernd-Import")
log.Startlog(4)
Verarbeiten()
m_Log.Log("EDKB01: Ende Banklagernd-Import")
log.InsertJournale("Ende COLD-Banklagernd-Import")
log.StopLog(4)
Case "AZV" 'BUD - 24.07.2006 - Multiwährungsaufträge
Verarbeitungsart = 5
m_Log.Log("EDKB01: Start AZV-Import")
log.Startlog(4)
Verarbeiten()
m_Log.Log("EDKB01: Ende AZV-Import")
log.InsertJournale("Ende AZV-Import")
log.StopLog(4)
'Case "END"
' log.Startlog(4)
' m_Log.Log("Start Dateiumbenennen")
' Ret = Params.Loadparameters
' Files_Rename(4)
' m_Log.Log("Ende Dateiumbenennen")
' log.StopLog(4)
Case Else
m_Log.Log("EDKB01: Ungültiger Parameter: " & args(2), Common.Common.JournalEntryType.Error)
End Select
m_Log.Ende()
Catch ex As Exception
m_Log.Log("EDKB01: Allgemeiner Fehler: " & ex.Message, Common.Common.JournalEntryType.Error)
m_Log.Ende()
End Try
End Sub
Private Sub korr_zv()
Console.WriteLine(Now)
Dim d As New DataTable
zvdata.cpMainConnectionProvider = conn_zv
d = korrzv("", "", "", 0, 0)
Dim zz As Integer = 0
Dim zzz As Integer = 0
Dim ii As Integer = 0
Dim i As Integer
i = 100000000
Dim BETRAG As Double
For i = 0 To d.Rows.Count - 1
Try
zz = zz + 1
If zz > 9999 Then
zzz = zzz + 1
zz = 1
Console.WriteLine(Trim(Str(ii)) + ": Anzahl: " + Trim(Str(zzz * 10000)) + " " + Now)
End If
BETRAG = d.Rows(i).Item("BTBET00") / 100
korrzv(d.Rows(i).Item("nrdot00"), d.Rows(i).Item("nrdoc00"), d.Rows(i).Item("nrauf00"), BETRAG, 1)
Catch
Console.WriteLine("Fehler: " + d.Rows(i).Item("btbet00"))
m_Log.Log("EDKB01: Fehler: " + d.Rows(i).Item("btbet00"), Common.Common.JournalEntryType.Warning)
End Try
Next
Console.WriteLine(Trim(Str(ii)) + ": " + Now)
End Sub
Private Function korrzv(ByVal nrdot00 As String, ByVal nrdoc00 As String, ByVal nrauf00 As String, ByVal betrag As Double, ByVal fnkt As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand
scmCmdToExecute.Connection = conn_zv.scoDBConnection
scmCmdToExecute.CommandText = "dbo.sp_korr_betrag"
scmCmdToExecute.Parameters.Add(New SqlParameter("@nrdot00", SqlDbType.VarChar, 36, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nrdot00))
scmCmdToExecute.Parameters.Add(New SqlParameter("@nrdoc00", SqlDbType.VarChar, 36, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nrdoc00))
scmCmdToExecute.Parameters.Add(New SqlParameter("@nrauf00", SqlDbType.VarChar, 36, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nrauf00))
scmCmdToExecute.Parameters.Add(New SqlParameter("@betrag", SqlDbType.Float, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, betrag))
scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, fnkt))
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.Connection = conn_zv.scoDBConnection
Try
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
m_Log.Log("EDKB01: Fehler: " & ex.Message, Common.Common.JournalEntryType.Error)
' Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Return Nothing
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>Die Verarbeitung unterscheidet grundsätzlich zwei Verarbeitungstypen$EOL$
'''- INITIALLOAD$EOL$
'''- Tagesbetrieb
'''</summary>
'''<remarks>
'''<b>Initialload</b>$EOL$
'''Bei der Initialload-Verarbeitung werden Alle Dateien aus dem Verzeichnis, welches als
'''4-ter Parameter beim Programmaufruf angegeben wurde ausgelesn und verarbeitet.$EOL$$EOL$
'''<b>Tagesbetrieb</b>$EOL$
'''Beim Tagesbetrieb werden die gelieferten Dateien ausgelesn und in den entsprechenden
'''Datenbanken eingefügt.$EOL$
'''Zusätzlich werden allfällige Dokumente, welche gelöscht werden müssen, aus den
'''entsprechenden Datenbanken gelöscht. Die zu löschenden Datensätze werden in den
'''Dateien *.del von AGI-COLD geliefert.
'''</remarks>
'''<returns></returns>
Private Function Verarbeiten() As Boolean
' Prüfung, ob Initialload
Try
If UCase(args(3)) = "INITIALLOAD" Then initialload = True Else initialload = False
Catch
End Try
'Parameter laden
Ret = Params.Loadparameters
If Ret <> "" Then
m_Log.Log("EDKB01: Fehler: Datei c:\prg\edoka\edkb01\parameters.cfg ist nicht vorhanden oder ungültig" + Ret, Common.Common.JournalEntryType.Error)
Return False
Exit Function
End If
'Zähler initialisieren
zz = 0
zzz = 0
zzzz = 0
' Initialload durchführen
If initialload Then
initialload_verarbeiten(Verarbeitungsart)
Exit Function
End If
'OK-File überprüfen
If Not Check_OK_File(Verarbeitungsart) Then
Return False
Exit Function
End If
Try
conn_edoka.CloseConnection(True)
Catch
End Try
Select Case Verarbeitungsart
Case 1
'Dokument-Import
log.InsertJournale("Start Host-Dokumente laden")
Try
If Not Daten_Import(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: Fehler: Modul1 Verarbeiten: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Dokumente Löschen
Try
If Not Delete_Daten(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: Fehler: Modul1 Verarbeiten: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Bearbeitete Dateien umbenennen
Files_Rename(Verarbeitungsart)
Return True
Case 2
log.InsertJournale("Start ZV-Dokumente laden")
'Dokument-Import
Try
If Not Daten_Import(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: Fehler: Modul1 Verarbeiten: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Dokumente Löschen
Try
If Not Delete_Daten(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: Fehler: Modul1 Verarbeiten: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Bearbeitete Dateien umbenennen
Files_Rename(Verarbeitungsart)
Return True
Case 3
log.InsertJournale("Start UVM-Dokumente laden")
'Dokument-Import
Try
If Not Daten_Import(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: Fehler: Modul1 Verarbeiten: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Dokumente Löschen
Try
If Not Delete_Daten(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: Fehler: Modul1 Verarbeiten: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Bearbeitete Dateien umbenennen
Files_Rename(Verarbeitungsart)
Return True
Case 4
log.InsertJournale("Start BL-Dokumente laden")
'Dokument-Import
Try
If Not Daten_Import(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: Fehler: Modul1 Verarbeiten: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Dokumente Löschen
Try
If Not Delete_Daten(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: Fehler: Modul1 Verarbeiten: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Bearbeitete Dateien umbenennen
Files_Rename(Verarbeitungsart)
Return True
Case 5 'BUD - 24.07.2006
log.InsertJournale("Start AZV-Dokumente laden")
'Dokument-Import
Try
If Not Daten_Import(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: ehler: Modul1 Verarbeiten Case 5: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Dokumente Löschen
Try
If Not Delete_Daten(Verarbeitungsart) Then
Return False
Exit Function
End If
Catch ex As Exception
m_Log.Log("EDKB01: ehler: Modul1 Verarbeiten Case 5: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
'Bearbeitete Dateien umbenennen
Files_Rename(Verarbeitungsart)
Return True
End Select
End Function
#Region "Plausibilisierungen"
'''<summary>Prüfung der Datenanlieferung von AGI-COLD</summary>
'''<remarks>Abhängig von der Verarbeitungsart (HSOT,ZV, UVM) wird in der Datei
'''HOSTINDEX.OK folgendes geprüft:$EOL$
'''Zeile 1: 0 = Datenlieferung OK, ungleich 0 Datenlieferung nicht OK und
'''Programmabgruch$EOL$
'''Zeile 2: Anzahl angelieferte Dokumentinformationen für HSOT$EOL$
'''Zeile 3: Anzahl angelieferte Dokumentinformationen für ZV$EOL$
'''Zeile 4: Anzahl angelieferte Dokumentinformationen für UVM</remarks>
'''<param name="verarbeitunsgart">Bestimmt die Verabeitungsart</param>
'''<set param="verarbeitunsgart" const="" value="HOST">HOST-Verarbeitung</set>
'''<set param="verarbeitunsgart" const="" value="ZV">ZV-Verarbeitung</set>
'''<set param="verarbeitunsgart" const="" value="UVM">UVM-Verarbeitung</set>
'''<returns>True=Prüfung OK$EOL$
'''False=Prüfung nicht OK</returns>
Private Function Check_OK_File(ByVal verarbeitunsgart As Integer) As Boolean
If Not IO.File.Exists(Params.Filepfad + "hostindex.ok") Then
m_Log.Log("EDKB01: ehler: Datei " + Params.Filepfad + "Hostindex.ok ist nicht vorhanden.", Common.Common.JournalEntryType.Error)
Return False
Exit Function
End If
Try
FileOpen(1, Params.Filepfad + "hostindex.ok", OpenMode.Input)
'Prüfung Returncolde
s = LineInput(1)
If s <> "0" Then
FileClose(1)
m_Log.Log("EDKB01: ehler: Datei " + Params.Filepfad + "Hostindex.ok beinhaltet einen Wert <> 0", Common.Common.JournalEntryType.Error)
Return False
Exit Function
End If
'Lesen der zweiten Zeile - Anzahl Dokumente HOST
Try
s = LineInput(1)
TotalDokumenteHost = Val(s)
Catch
m_Log.Log("EDKB01: ehler: Datei " + Params.Filepfad + "Hostindex.ok beinhaltet keine Anzahl der gelieferten HOST Dokumente", Common.Common.JournalEntryType.Error)
Return False
Exit Function
End Try
'Lesen der dritten Zeile - Anzahl Dokumente zv
Try
s = LineInput(1)
TotalDokumenteZV = Val(s)
Catch
m_Log.Log("EDKB01: ehler: Datei " + Params.Filepfad + "Hostindex.ok beinhaltet keine Anzahl der gelieferten ZV Dokumente", Common.Common.JournalEntryType.Error)
Return False
Exit Function
End Try
'Lesen der vierten Zeile - Anzahl Dokumente UVM
Try
s = LineInput(1)
TotalDokumenteUVM = Val(s)
Catch
m_Log.Log("EDKB01: ehler: Datei " + Params.Filepfad + "Hostindex.ok beinhaltet keine Anzahl der gelieferten UVM Dokumente", Common.Common.JournalEntryType.Error)
Return False
Exit Function
End Try
'Lesen der fünften Zeile - Anzahl Dokumente BL
Try
s = LineInput(1)
TotalDokumenteBL = Val(s)
Catch
TotalDokumenteBL = 0
m_Log.Log("EDKB01: ehler: Datei " + Params.Filepfad + "Hostindex.ok beinhaltet keine Anzahl der gelieferten BL Dokumente", Common.Common.JournalEntryType.Warning)
End Try
'If Verarbeitungsart >= 5 Then
'Lesen der sechsten Zeile - Anzahl Dokumente azv
'BUD - 26.07.2006
Try
s = LineInput(1)
TotalDokumenteAZV = Val(s)
Catch
If Verarbeitungsart = 5 Then
m_Log.Log("EDKB01: ehler: Datei " + Params.Filepfad + "Hostindex.ok beinhaltet keine Anzahl der gelieferten AZV Dokumente", Common.Common.JournalEntryType.Error)
Return False
Exit Function
End If
TotalDokumenteAZV = 0
m_Log.Log("EDKB01: ehler: Datei " + Params.Filepfad + "Hostindex.ok beinhaltet keine Anzahl der gelieferten AZV Dokumente", Common.Common.JournalEntryType.Warning)
End Try
'End If
Try 'Sorry - BUD
FileClose(1)
Catch
End Try
Catch
Return False
Exit Function
End Try
Return True
End Function
#End Region
#Region "Host"
'''<summary>Verarbeitung von Initialloads$EOL$
'''</summary>
'''<remarks>Je nach Verarbeitungsart wird die entsprechende Datenbankverbindung
'''geöffnet und anschliessend alle Dateien gem. Kommandozeilen-Parameter 4
'''sequentiell abgearbeitet.$EOL$
'''$EOL$
'''Das Einfügung in die entsprechende Datenbank (HOST, ZV, UVM) wird mit den
'''Methoden insert_data_host, insert_data_uvm oder insert_data_zv.$EOL$
'''$EOL$
'''$EOL$
'''Nach 10000 verarbeiteten Datensätzen wird ein Journaleintrag über den
'''Fortschritt der Verarbeitung geschrieben.$EOL$
'''</remarks>
'''<param name="verarbeitungsart"></param>
'''<set param="verarbeitungsart" const="" value="HOST">HOST-Verarbeitung</set>
'''<set param="verarbeitungsart" const="" value="ZV">ZV-Verarbeitung</set>
'''<set param="verarbeitungsart" const="" value="UVM">UVM-Verarbeitung</set>
Private Sub initialload_verarbeiten(ByVal verarbeitungsart As Integer)
'Initialload-Verarbeitung
InsertCounter = 0
d1 = Now
Dim di As New IO.DirectoryInfo(args(4))
Dim diar1 As IO.FileInfo() = di.GetFiles()
Dim dra As IO.FileInfo
For Each dra In diar1
Select Case verarbeitungsart
Case 1
log.InsertJournale("Start Initialload HOST-Dokumente")
Globals.conn_edoka.OpenConnection()
hostdata.cpMainConnectionProvider = Globals.conn_edoka
Case 2
log.InsertJournale("Start Initialload ZV-Belege")
Globals.conn_zv.OpenConnection()
zvdata.cpMainConnectionProvider = Globals.conn_zv
Case 3
log.InsertJournale("Start Initialload UVM-Belege")
Globals.conn_uvm.OpenConnection()
uvmdata.cpMainConnectionProvider = Globals.conn_uvm
Case Else
End Select
log.InsertJournale(dra.FullName)
FileOpen(1, dra.FullName, OpenMode.Input)
Do While Not EOF(1)
s = LineInput(1)
Select Case verarbeitungsart
Case 1
insert_data_host(s)
Case 2
insert_data_zv(s)
Case 3
insert_data_uvm(s)
End Select
zz = zz + 1
If zz > 9999 Then
zzz = zzz + 1
zz = 0
log.InsertJournale(Now + Str(zzz * 10000))
End If
Loop
FileClose(1)
Select Case verarbeitungsart
Case 1
Globals.conn_edoka.CloseConnection(True)
Case 2
Globals.conn_zv.CloseConnection(True)
Case 3
Globals.conn_uvm.CloseConnection(True)
End Select
log.InsertJournale("Ende: " + dra.FullName + ":" + Str(InsertCounter))
InsertCounter = 0
log.InsertJournale("Ende " + dra.FullName + ":" + Str((zzz * 10000) + zz))
zzzz = zzzz + ((zzz * 10000) + zz)
log.InsertJournale("Total Dokumente:" + Str(zzzz))
d2 = Now
log.InsertJournale("Zeit in Minuten: " + Str(DateDiff(DateInterval.Minute, d1, d2)))
log.InsertJournale("--------------")
zz = 0
zzz = 0
Next
log.InsertJournale("Ende Initialload - Anzahl Dokumente: " + Str(zzzz))
d2 = Now
log.InsertJournale("Zeit in Minuten: " + Str(DateDiff(DateInterval.Minute, d1, d2)))
Exit Sub
End Sub
'''<summary>Angelieferte Daten verarbeiten$EOL$
'''</summary>
'''<remarks>Je nach Verarbeitungsart wird die entsprechende Datenbankverbindung
'''geöffnet und anschliessend die Dateien abhängig von der Verarbeitungsart
'''abgearbeitet:$EOL$
'''$EOL$
'''Die Input-Dateien sind:$EOL$
'''HOST: Hostindex.txt$EOL$
'''ZV. ZVIndex.txt$EOL$
'''UVM: UVMIndex.txt$EOL$
'''$EOL$
'''Das Einfügung in die entsprechende Datenbank (HOST, ZV, UVM) wird mit den
'''Methoden insert_data_host, insert_data_uvm oder insert_data_zv.$EOL$
'''$EOL$
'''$EOL$
'''Nach 10000 verarbeiteten Datensätzen wird ein Journaleintrag über den
'''Fortschritt der Verarbeitung geschrieben.$EOL$
'''</remarks>
'''<param name="verarbeitungsart"></param>
'''<set param="verarbeitungsart" const="" value="HOST">HOST-Verarbeitung</set>
'''<set param="verarbeitungsart" const="" value="ZV">ZV-Verarbeitung</set>
'''<set param="verarbeitungsart" const="" value="UVM">UVM-Verarbeitung</set>
Private Function Daten_Import(ByVal verarbeitungsart As Integer) As Boolean
InsertCounter = 0
'Prüfung, ob txt-Datei mit HOST-Dokumenten vorhanden ist
Dim Filename As String = ""
Select Case verarbeitungsart
Case 1
Filename = Params.Filepfad + "Hostindex.txt"
TotalDokumente = TotalDokumenteHost
Case 2
Filename = Params.Filepfad + "ZVindex.txt"
TotalDokumente = TotalDokumenteZV
Case 3
Filename = Params.Filepfad + "UVMindex.txt"
TotalDokumente = TotalDokumenteUVM
Case 4
Filename = Params.Filepfad + "BLindex.txt"
TotalDokumente = TotalDokumenteBL
Case 5 'BUD - 24.07.2006
Filename = Params.Filepfad + "AZVindex.txt"
TotalDokumente = TotalDokumenteAZV
End Select
If Not IO.File.Exists(Filename) Then
m_Log.Log("EDKB01: ehler: Datei " + Filename + " ist nicht vorhanden", Common.Common.JournalEntryType.Error)
Return False
Exit Function
End If
Select Case verarbeitungsart
Case 1
Globals.conn_edoka.OpenConnection()
hostdata.cpMainConnectionProvider = Globals.conn_edoka
Case 2
Globals.conn_zv.OpenConnection()
zvdata.cpMainConnectionProvider = Globals.conn_zv
Case 3
Globals.conn_uvm.OpenConnection()
uvmdata.cpMainConnectionProvider = Globals.conn_uvm
Case 4
Globals.conn_bl.OpenConnection()
bldata.cpMainConnectionProvider = Globals.conn_bl
Case 5 'BUD - 24.07.2006
Globals.conn_zv.OpenConnection()
zvdata.cpMainConnectionProvider = Globals.conn_zv
Case Else
End Select
'Verarbeitung Host-Dokument-Import
Try
FileOpen(1, Filename, OpenMode.Input)
Dim pFile As New System.IO.FileInfo(Filename)
FileSizeO = pFile.Length
FileSizeD = 0
TotalImport = 0
Do While Not EOF(1)
s = LineInput(1)
FileSizeD = FileSizeD + Len(s) + 2
Select Case verarbeitungsart
Case 1
insert_data_host(s)
Case 2
insert_data_zv(s)
Case 3
insert_data_uvm(s)
Case 4
insert_data_bl(s)
Case 5 'BUD - 24.07.2006
insert_data_zv(s)
End Select
TotalImport = TotalImport + 1
zz = zz + 1
If zz > 9999 Then
zzz = zzz + 1
zz = 0
Console.WriteLine(Now + Str(zzz * 10000))
m_Log.Log(Now + Str(zzz * 10000), Common.Common.JournalEntryType.Information)
End If
Loop
FileClose(1)
Select Case verarbeitungsart
Case 1
s = "HOST'"
InsertHost = InsertCounter
Case 2
s = "ZV"
InsertZV = InsertCounter
Case 3
s = "UVM"
InsertUVM = InsertCounter
Case 4
s = "BL"
InsertBL = InsertCounter
Case 5 'BUD - 24.07.2006
s = "AZV"
InsertAZV = InsertCounter
End Select
Dim Message As String
If FileSizeO <> FileSizeD Then
Message = "1: " + s + "-Dateiimport beendet - Anzahl Dokumente: " + Str(TotalImport) + " Anzahl Bytes Original: " + Str(FileSizeO) + " Anzahl Bytes verarbeitet: " + Str(FileSizeD)
m_Log.Log(Message, Common.Common.JournalEntryType.Error)
log.InsertJournale(Message)
Return False
Else
If InsertCounter <> TotalDokumente Then
m_Log.Log("Anzahl Dokumente eingelesen: " + Str(InsertCounter) + vbCrLf + "Anzahl von COLD gemeldet : " + Str(TotalDokumente), Common.Common.JournalEntryType.Information)
MEssage = "1: " + s + "-Dateiimport fehlerhaft beendet - Anzahl Dokumente: " + Str(InsertCounter) + " Anzahl Bytes Original: " + Str(FileSizeO) + " Anzahl von COLD gemeldet: " + Str(TotalDokumente)
log.InsertJournale(Message)
m_Log.Log(Message, Common.Common.JournalEntryType.Error)
Return False
End If
Message = "0: " + s + "-Dateiimport beendet - Anzahl Dokumente: " + Str(TotalImport) + " Verarbeitete Bytes: Input:" + Str(FileSizeO) + " Output:" + Str(FileSizeD)
log.InsertJournale(Message)
m_Log.Log(Message, Common.Common.JournalEntryType.Information)
'Sendmail(Params.MailAdresseOK, 0)
End If
Return True
Catch ex As Exception
m_Log.Log("Verarbeitung abgebrochen. Fehler bei Import: " + Get_ApplName(verarbeitungsart) + " Originalfile: " + Str(FileSizeO) + " verarbeitet: " + Str(FileSizeD) + vbNewLine + ex.Message + ex.StackTrace, Common.Common.JournalEntryType.Error)
Return False
Finally
End Try
End Function
Private Function Get_ApplName(ByVal verarbeitungsart As Integer) As String
Select Case verarbeitungsart
Case 1
Get_ApplName = "HOST"
Case 2
Get_ApplName = "ZV"
Case 3
Get_ApplName = "UVM"
Case 4
Get_ApplName = "BL"
Case 5
Get_ApplName = "AZV"
Case Else
Get_ApplName = "-kein ApplName-"
End Select
End Function
'''<summary>Daten aus den Datenbanken löschen$EOL$
'''</summary>
'''<remarks>Je nach Verarbeitungsart wird die entsprechende Datenbankverbindung
'''geöffnet und anschliessend die Dateien abhängig von der Verarbeitungsart
'''abgearbeitet:$EOL$
'''$EOL$
'''Die Input-Dateien sind:$EOL$
'''HOST: Hostindex.del$EOL$
'''ZV. ZVIndex.del$EOL$
'''UVM: UVMIndex.del$EOL$
'''$EOL$
'''Das löschen der Daten erfolgt mittels den Methoden$EOL$
'''delete_data_host, delete_data_zv oder delete_data_uvm</remarks>
'''<param name="verarbeitungsart"></param>
'''<set param="verarbeitungsart" const="" value="HOST">HOST-Verarbeitung</set>
'''<set param="verarbeitungsart" const="" value="ZV">ZV-Verarbeitung</set>
'''<set param="verarbeitungsart" const="" value="UVM">UVM-Verarbeitung</set>
Private Function Delete_Daten(ByVal verarbeitungsart As Integer) As Boolean
Select Case verarbeitungsart
Case 1
log.InsertJournale("Start gelöschte Host-Dokumente")
Case 2
log.InsertJournale("Start gelöschte ZV-Dokumente")
Case 3
log.InsertJournale("Start gelöschte UVM-Dokumente")
End Select
'Prüfung, ob del-Datei mit HOST-Dokumenten vorhanden ist
TotalDelete = 0
Dim Filename As String = ""
Select Case verarbeitungsart
Case 1
Filename = Params.Filepfad + "Hostindex.del"
Case 2
Filename = Params.Filepfad + "ZVindex.del"
Case 3
Filename = Params.Filepfad + "UVMindex.del"
End Select
If Not IO.File.Exists(Filename) Then
Return True
Exit Function
log.InsertJournale("Löschen beendet: " & Str(TotalDelete) & " Dokumente gelöscht")
End If
Try
zz = 0
FileOpen(1, Filename, OpenMode.Input)
Do While Not EOF(1)
s = LineInput(1)
TotalDelete = TotalDelete + 1
Select Case verarbeitungsart
Case 1
delete_data_host(s)
Case 2
delete_data_zv(s)
Case 3
delete_data_uvm(s)
End Select
delete_data_host(s)
zz = zz + 1
If zz > 9999 Then
zzz = zzz + 1
zz = 0
Console.WriteLine(Now + Str(zzz * 10000))
End If
Loop
FileClose(1)
log.InsertJournale("Löschen beendet: " & Str(TotalDelete) & " Dokumente gelöscht")
m_Log.Log("Löschen beendet: " & Str(TotalDelete) & " Dokumente gelöscht", Common.Common.JournalEntryType.Information)
Return True
Catch
m_Log.Log("EDKB01: ehler Anzahl Dateien eingelesen und gelöscht: " + Str(TotalDelete), Common.Common.JournalEntryType.Error)
Return False
End Try
End Function
#Region "Host"
'''<summary>Daten in die Tabelle EDOKA_HOST.dbo.host_dokument_Import
'''einfügen</summary>
'''<remarks>Die zu verarbeitende Zeile (Parameter s) wird mittels Trennzeichen "}"
'''aufgesplittet, damit die einzelnen Attributwerte ausgelesen werden können.$EOL$
'''$EOL$
'''Anschliessend werden die Werte den einzelenen Datenbankfeldern zugewiesen und
'''der Datensatz in die Datenbank eingefügt.</remarks>
'''<param name="s"></param>
Private Sub insert_data_host(ByVal s As String)
'Daten der Text-Datei aufsplitten und in die Datenbank einfügen
Dim splits() As String
splits = Split(s, "{", -1, CompareMethod.Text)
'|************************************************************************************************************************************
'| Neues Index-File
Try
hostdata.sMailingProduct = New SqlString(Trim(CType(sstring(splits(1)), String))) ' => Neu (Mapping)
hostdata.sMailingProductBezeichnung = New SqlString(Trim(CType(sstring(splits(2)), String))) ' => Neu
hostdata.sPartnernr_inhaber = New SqlString(Trim(CType(sstring(splits(3)), String)))
hostdata.sPartnernr_zusteller = New SqlString(Trim(CType(sstring(splits(4)), String)))
hostdata.sVvextern1 = New SqlString(Trim(CType(sstring(splits(5)), String)))
hostdata.sVvextern2 = New SqlString(Trim(CType(sstring(splits(6)), String)))
hostdata.sPartnername_inhaber = New SqlString(Trim(CType(sstring(splits(7)), String)))
hostdata.sPartnername_zusteller = New SqlString(Trim(CType(sstring(splits(8)), String)))
' Valutadatum = Erstellungsdatum
hostdata.sValutadatum = New SqlString(CType(Format(CDate(Trim(sstring(splits(9)))), "yyyyMMdd"), String))
' Valutadatum1 = Valutadatum
hostdata.sValutadatum1 = New SqlString(CType(Format(CDate(Trim(sstring(splits(10)))), "yyyyMMdd"), String))
hostdata.sValorennr = New SqlString(Trim(CType(sstring(splits(11)), String)))
hostdata.sEx = New SqlString(Trim(CType(sstring(splits(12)), String)))
hostdata.sDokumentid = New SqlString(Trim(CType(sstring(splits(13)), String)))
hostdata.sAnzahlseiten = New SqlString(Trim(CType(sstring(splits(14)), String)))
hostdata.sNachvollziehbarkeit = New SqlString(Trim(CType(sstring(splits(15)), String)))
hostdata.sMetatype = New SqlString(Trim(CType(sstring(splits(16)), String))) ' => Neu
hostdata.sOrdertype1 = New SqlString(Trim(CType(sstring(splits(17)), String))) ' => Neu
hostdata.sTransactnr = New SqlString(Trim(CType(sstring(splits(18)), String))) ' => Neu
hostdata.sManr = New SqlString(Trim(CType(sstring(splits(19)), String))) ' => Neu
hostdata.sBetreffzeile = New SqlString(Trim(CType(sstring(splits(20)), String))) ' => Wurde bis jetzt nicht angezeit in EDOKA
hostdata.sXomaDocID = New SqlString(Trim(CType(sstring(splits(21)), String))) ' => Neu
hostdata.sArchivdatum = New SqlString(Trim(CType(sstring(splits(22)), String)))
hostdata.sLoadid = New SqlString(Trim(CType(sstring(splits(23)), String)))
'Alte Felder nicht mehr im neuen Index-File...
hostdata.sReferenzzeile1 = New SqlString("")
hostdata.sReferenzzeile2 = New SqlString("")
hostdata.sStandamdatum = New SqlString("")
hostdata.sDokumenttypnr = hostdata.sMailingProduct
Catch ex As Exception
m_Log.Log(ex.Message, Common.Common.JournalEntryType.Error)
End Try
'| Ende neues Index-File
'|************************************************************************************************************************************
'hostdata.sDokumenttypnr = New SqlString(CType(sstring(splits(1)), String))
'hostdata.sPartnernr_inhaber = New SqlString(CType(sstring(splits(3)), String))
'hostdata.sPartnernr_zusteller = New SqlString(CType(sstring(splits(4)), String))
'hostdata.sVvextern1 = New SqlString(CType(sstring(splits(5)), String))
'hostdata.sVvextern2 = New SqlString(CType(sstring(splits(6)), String))
'hostdata.sPartnername_inhaber = New SqlString(CType(sstring(splits(7)), String))
'hostdata.sPartnername_zusteller = New SqlString(CType(sstring(splits(8)), String))
'hostdata.sReferenzzeile1 = New SqlString(CType(sstring(splits(9)), String))
'hostdata.sReferenzzeile2 = New SqlString(CType(sstring(splits(10)), String))
'hostdata.sValutadatum = New SqlString(CType(sstring(splits(11)), String))
'hostdata.sValutadatum1 = New SqlString(CType(sstring(splits(12)), String))
'hostdata.sStandamdatum = New SqlString(CType(sstring(splits(13)), String))
Try
Dim tmpvalor As String = ""
Dim xvalor As String = ""
Dim xisin As String = ""
Dim x As String = ""
hostdata.sValorennr = New SqlString(CType("", String))
hostdata.sIsinnr = New SqlString(CType("", String))
tmpvalor = sstring(splits(11))
If tmpvalor.Length < 12 Then
hostdata.sValorennr = New SqlString(CType(tmpvalor, String))
Else
xvalor = Left(tmpvalor, Len(tmpvalor) - 12)
xisin = Right(tmpvalor, 12)
x = Left(xisin, 1)
If x <> "1" And x <> "2" And x <> "3" And x <> "4" And x <> "5" And x <> "6" And x <> "7" And x <> "8" And x <> "9" And x <> "0" Then
hostdata.sValorennr = New SqlString(CType(xvalor, String))
hostdata.sIsinnr = New SqlString(CType(xisin, String))
Else
hostdata.sValorennr = New SqlString(CType(tmpvalor, String))
End If
End If
Catch
hostdata.sValorennr = New SqlString(CType(sstring(splits(11)), String))
End Try
hostdata.daInserttimestamp = New SqlDateTime(CType(Now, DateTime))
Dokumentid = hostdata.sDokumentid.Value & " Partner: " & hostdata.sPartnername_inhaber.Value
Try
hostdata.Insert()
InsertCounter = InsertCounter + 1
update_hostdokument()
Catch ex As Exception
m_Log.Log("HOST Import: " & ex.Message, Common.Common.JournalEntryType.Error)
m_Log.Log("HOST_Import: " & ex.Message & " Dokumentid: " & Dokumentid, Common.Common.JournalEntryType.Error)
End Try
'Console.WriteLine(hostdata.sValorennr.Value + " " + hostdata.sIsinnr.Value)
End Sub
'''<summary>Nachführen der Tabelle EDOKA_HOST.dbo._HOSTdokument</summary>
'''<remarks>Diese Funktion ergänzt die Tabelle EDOKA_HOST.dbo._HOSTDokument mit den
'''zuvor eingefügten Daten.$EOL$
'''$EOL$
'''Ist in der Tabelle bereits ein Datensatz vorhanden (Partnernr_Inhaber,
'''Dokumenttypnr), werden nunr die Datumsfelder (Valuta-Min/Max und
'''Archivdatum-Min/Max) ergänzt.$EOL$
'''$EOL$
'''Ist noch kein Datensatz für den Partner und Dokumenttyp vorhanden, wird ein
'''neuer Datensatz erstellt.</remarks>
Private Sub update_hostdokument()
Dim hs As New edokadb.cls_host_dokument
Dim ts As DataTable
Dim upd As Boolean = False
hs.cpMainConnectionProvider = Globals.conn_edoka
hs.sPartnernr_inhaber = New SqlString(CType(hostdata.sPartnernr_inhaber.Value, String))
hs.sDokumenttypnr = New SqlString(CType(hostdata.sDokumenttypnr.Value, String))
ts = hs.SelectOne
If ts.Rows.Count > 0 Then
If hs.sDatumbis.Value < hostdata.sValutadatum.Value Then
hs.sDatumbis = New SqlString(CType(hostdata.sValutadatum1.Value, String))
upd = True
End If
If hs.sDatumvon.Value > hostdata.sValutadatum.Value Then
hs.sDatumvon = New SqlString(CType(hostdata.sValutadatum.Value, String))
upd = True
End If
If hs.sDatumbis1.Value < hostdata.sValutadatum1.Value Then
hs.sDatumbis1 = New SqlString(CType(hostdata.sValutadatum1.Value, String))
upd = True
End If
If hs.sDatumvon1.Value > hostdata.sValutadatum1.Value Then
hs.sDatumvon1 = New SqlString(CType(hostdata.sValutadatum1.Value, String))
upd = True
End If
If upd Then
hs.Update()
End If
Else
hs.sPartnernr_inhaber = New SqlString(CType(hostdata.sPartnernr_inhaber.Value, String))
hs.sDokumenttypnr = New SqlString(CType(hostdata.sDokumenttypnr.Value, String))
hs.sDatumbis = New SqlString(CType(hostdata.sValutadatum.Value, String))
hs.sDatumvon = New SqlString(CType(hostdata.sValutadatum.Value, String))
hs.sDatumbis1 = New SqlString(CType(hostdata.sValutadatum1.Value, String))
hs.sDatumvon1 = New SqlString(CType(hostdata.sValutadatum1.Value, String))
hs.Insert()
End If
End Sub
'''<summary>Löschen eines Datensatzes aus der Tabelle
'''EODKA_HOST.dbo.Host_Dokument_Data</summary>
'''<remarks>Diese Methode löscht einen Datensatz aus dem
'''HOST-Datenbestand.</remarks>
'''<param name="s"></param>
'''<set param="s" const="" value="S">Dokumentid</set>
Private Sub delete_data_host(ByVal s As String)
'Löschen von Host-Dokumenten
Try
hostdata.sDokumentid = New SqlString(s)
hostdata.SelectOne()
hostdata.Delete()
Catch
End Try
End Sub
#End Region
#Region "ZV"
'''<summary>Daten in die Tabelle EDOKA_ZV.dbo.ZVBelege_Import einfügen</summary>
'''<remarks>Die zu verarbeitende Zeile (Parameter s) wird mittels Trennzeichen "}"
'''aufgesplittet, damit die einzelnen Attributwerte ausgelesen werden können.$EOL$
'''$EOL$
'''Anschliessend werden die Werte den einzelenen Datenbankfeldern zugewiesen und
'''der Datensatz in die Datenbank eingefügt.</remarks>
'''<param name="s"></param>
Private Sub insert_data_zv(ByVal s As String)
Dim splits() As String
splits = Split(s, "{", -1, CompareMethod.Text)
zvdata.sNRDOT00 = New SqlString(CType(sstring(splits(1)), String))
zvdata.sBEEAD00 = New SqlString(CType(sstring(splits(2)), String))
zvdata.sCDVARC00 = New SqlString(CType(sstring(splits(3)), String))
zvdata.sNRREF00 = New SqlString(CType(sstring(splits(4)), String))
zvdata.sCDZAH00 = New SqlString(CType(sstring(splits(5)), String))
zvdata.sNRPCK00 = New SqlString(CType(sstring(splits(6)), String))
zvdata.sNRBCL00 = New SqlString(CType(sstring(splits(7)), String))
zvdata.sNEVVG01 = New SqlString(CType(sstring(splits(8)), String))
zvdata.sNRDOC00 = New SqlString(CType(sstring(splits(9)), String))
zvdata.sBESAD00 = New SqlString(CType(sstring(splits(10)), String))
zvdata.sDMVAL00 = New SqlString(CType(sstring(splits(11)), String))
zvdata.sCDWAEAI = New SqlString(CType(sstring(splits(12)), String))
zvdata.sBTBET00 = New SqlString(CType(sstring(splits(13)), String))
'Hutter 20040927
If sstring(splits(13)) = "" Then
zvdata.fBetrag = New SqlDouble(CType(0.0, Double))
Else
Dim x As Double
Try
x = Val(sstring(splits(13)))
x = x / 100
zvdata.fBetrag = New SqlDouble(CType(x, Double))
Catch
x = 0.0
zvdata.fBetrag = New SqlDouble(CType(x, Double))
End Try
End If
If sstring(splits(11)) = "" Then
zvdata.daValdat = New SqlDateTime(CType(sstring(splits(19)), DateTime))
Else
zvdata.daValdat = New SqlDateTime(CType(sstring(splits(11)), DateTime))
End If
'zvdata.sNRPAR00 = New SqlString(CType(get_nrpar00_from_vv(sstring(splits(16))), String))
'Anpassungen MNK - START
Dim tmpPartnerNr As String
tmpPartnerNr = sstring(splits(14))
While Len(tmpPartnerNr) < 9
tmpPartnerNr = "0" + tmpPartnerNr
End While
zvdata.sNRPAR00 = New SqlString(CType(tmpPartnerNr, String))
'Anpassungen MNK - ENDE
zvdata.sNEVVG02 = New SqlString(CType(sstring(splits(15)), String))
zvdata.sNEVVG00 = New SqlString(CType(sstring(splits(16)), String))
zvdata.sNRPOS00 = New SqlString(CType(sstring(splits(17)), String))
zvdata.sNRAUF00 = New SqlString(CType(sstring(splits(18)), String))
zvdata.sDMARC00 = New SqlString(CType(sstring(splits(19)), String))
zvdata.daInsertTimestamp = New SqlDateTime(CType(Now, DateTime))
Try
zvdata.Insert()
InsertCounter = InsertCounter + 1
Catch ex As Exception
log.InsertJournale("insert_data_zv: " & ex.Message & " Dokumentid: " & Dokumentid)
End Try
End Sub
'''<summary>Partnernr für ZV-Belege aus dem EDOKA-Bestand auslesen</summary>
'''<remarks>Im angelieferten ZV-Bestand sind keine Partnernr-vorhanden. Dazu muss
'''mit der angelieferten VVNr auf die Tabelle EDOKA.dbo.vv zugegriffen werden,
'''damit die Partnernr ausgelesen und dem Dokument zugewiesen werden kann.$EOL$
'''$EOL$
'''</remarks>
'''<param name="vvnr"></param>
'''<set param="vvnr" const="" value="VV-Nr">VVNr des Datensatzes</set>
Private Function get_nrpar00_from_vv(ByVal vvnr As String) As String
Dim scmCmdToExecute As SqlCommand = New SqlCommand
scmCmdToExecute.CommandText = "dbo.sp_get_nrpar00"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Parameters.Add(New SqlParameter("@nevvg00", SqlDbType.VarChar, 16, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, vvnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@nrpar00", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.Connection = Globals.conn_zv.scoDBConnection
'Try
' conn_edoka.OpenConnection()
'Catch
'End Try
Try
scmCmdToExecute.ExecuteNonQuery()
s = scmCmdToExecute.Parameters("@nrpar00").Value
s = Trim(s)
If s = "0" Then
Return ""
Else
'While Len(s) < 8
'Korrektur MNK -> Anzeige in Trefferliste klappt nicht mehr
While Len(s) < 9
s = "0" + s
End While
Return s
End If
Catch ex As Exception
Return ""
Finally
scmCmdToExecute.Dispose()
'conn_edoka.CloseConnection(True)
End Try
End Function
'''<summary>Löschen eines Datensatzes aus der Tabelle
'''EODKA_ZV.dbo.zvbelege_data</summary>
'''<remarks>Diese Methode löscht einen Datensatz aus dem ZV-Bestand</remarks>
'''<param name="s"></param>
'''<set param="s" const="" value="S">Dokumentid</set>
Private Sub delete_data_zv(ByVal s As String)
'Löschen von Host-Dokumenten
Try
zvdata.sNRDOC00 = New SqlString(s)
zvdata.SelectOne()
zvdata.Delete()
Catch
End Try
End Sub
#End Region
#Region "UVM"
'''<summary>Daten in die Tabelle EDOKA_UVM.dbo.UVMBelege_Import einfügen</summary>
'''<remarks>Die zu verarbeitende Zeile (Parameter s) wird mittels Trennzeichen "}"
'''aufgesplittet, damit die einzelnen Attributwerte ausgelesen werden können.$EOL$
'''$EOL$
'''Anschliessend werden die Werte den einzelenen Datenbankfeldern zugewiesen und
'''der Datensatz in die Datenbank eingefügt.</remarks>
'''<param name="s"></param>
Private Sub insert_data_uvm(ByVal s As String)
Dim splits() As String
splits = Split(s, "{", -1, CompareMethod.Text)
uvmdata.sNRDOT00 = New SqlString(CType(sstring(splits(1)), String))
uvmdata.sNRDOC00 = New SqlString(CType(sstring(splits(2)), String))
uvmdata.sNRPAR00 = New SqlString(CType(sstring(splits(3)), String))
uvmdata.sNRAUF00 = New SqlString(CType(sstring(splits(4)), String))
uvmdata.sDMERS00 = New SqlString(CType(sstring(splits(5)), String))
uvmdata.sDMARC00 = New SqlString(CType(sstring(splits(6)), String))
uvmdata.daInserttimestamp = New SqlDateTime(CType(Now, DateTime))
Try
uvmdata.Insert()
InsertCounter = InsertCounter + 1
Catch ex As Exception
log.InsertJournale("UVM_Import: " & ex.Message & " Dokumentid: " & Dokumentid)
End Try
End Sub
'''<summary>Löschen eines Datensatzes aus der Tabelle
'''EODKA_UVM.dbo.uvmbelege_data</summary>
'''<remarks>Diese Methode löscht einen Datensatz aus dem UVM-Bestand</remarks>
'''<param name="s"></param>
'''<set param="s" const="" value="S">Dokumentid</set>
Private Sub delete_data_uvm(ByVal s As String)
'Löschen von Host-Dokumenten
Try
uvmdata.sNRDOC00 = New SqlString(s)
zvdata.SelectOne()
zvdata.Delete()
Catch
End Try
End Sub
#End Region
#Region "BL"
Private Sub insert_data_bl(ByVal s As String)
'Daten der Text-Datei aufsplitten und in die Datenbank einfügen
Dim splits() As String
splits = Split(s, "{", -1, CompareMethod.Text)
'bldata.sPartnernr_inhaber = New SqlString(CType(sstring(splits(1)), String))
'bldata.sPartnername_inhaber = New SqlString(CType(sstring(splits(2)), String))
''DOKUMENBEZEICHNUNG EDOKA 3
'bldata.sDokumentid = New SqlString(CType(sstring(splits(4)), String))
''ARCHIVDATUM 5
'' Erstellungsdatum 6
'bldata.sDokumenttypnr = New SqlString(CType(sstring(splits(7)), String))
'' MailingProdukt Bezeichnung 8
'' MailingID 9
'' MetaTyp 10 (NEU)
'' OrderType 11 (Neu)
''Transactnr 12 (Neu)
''Dokumentstatus 13 (NEU)
''bldata.sStandamdatum = New SqlString(CType(sstring(splits(1)), String))
''bldata.sValutadatum = New SqlString(CType(sstring(splits(1)), String))
'bldata.sLoadid = New SqlString(CType(sstring(splits(8)), String))
bldata.sValutadatum = New SqlString(CType(Format(CDate(Trim(sstring(splits(1)))), "yyyyMMdd"), String))
bldata.sStandamdatum = New SqlString(CType(Format(CDate(Trim(sstring(splits(1)))), "yyyyMMdd"), String))
bldata.sPartnernr_inhaber = New SqlString(CType(Trim(sstring(splits(2))), String))
bldata.sPartnername_inhaber = New SqlString(CType(Trim(sstring(splits(3))), String))
bldata.sMailingProductID = New SqlString(CType(Trim(sstring(splits(4))), String))
bldata.sMailingProductBezeichnung = New SqlString(CType(Trim(sstring(splits(5))), String))
bldata.sDokumentid = New SqlString(CType(Trim(sstring(splits(6))), String))
bldata.sMetaType = New SqlString(CType(Trim(sstring(splits(7))), String))
bldata.sOrderType = New SqlString(CType(Trim(sstring(splits(8))), String))
bldata.sTransactnr = New SqlString(CType(Trim(sstring(splits(9))), String))
bldata.iBl_status = New SqlInt32(CType(0, Int32))
bldata.sLoadid = New SqlString(CType(Trim(sstring(splits(11))), String))
bldata.daInserttimestamp = New SqlDateTime(CType(Now, DateTime))
Try
bldata.Insert()
'check VI
Dim manr As Integer
manr = check_Vi(bldata.sPartnernr_inhaber.Value)
If manr > 0 Then
Send_KubeMail(manr, bldata.sDokumentid.Value)
End If
InsertCounter = InsertCounter + 1
Catch ex As Exception
log.InsertJournale("BL-Import: " & ex.Message & " Dokumentid: " & Dokumentid)
Console.WriteLine("BL-Import: " & ex.Message & " Dokumentid: " & Dokumentid)
End Try 'Console.WriteLine(hostdata.sValorennr.Value + " " + hostdata.sIsinnr.Value)
End Sub
Private Function check_Vi(ByVal nrpar00 As Integer) As Integer
Dim scmCmdToExecute As SqlCommand = New SqlCommand
scmCmdToExecute.Connection = conn_bl.scoDBConnection
scmCmdToExecute.CommandText = "dbo.sp_edex_bl_check_vipartner"
scmCmdToExecute.Parameters.Add(New SqlParameter("@nrPAR00", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nrpar00))
scmCmdToExecute.Parameters.Add(New SqlParameter("@OK", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.Parameters.Add(New SqlParameter("@MANR", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
sdaAdapter.Fill(dtToReturn)
If scmCmdToExecute.Parameters("@ok").Value = 0 Then
Return scmCmdToExecute.Parameters("@manr").Value
Else
Return 0
End If
Catch ex As Exception
MsgBox(ex.Message)
' Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Return 0
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
Private Function Send_KubeMail(ByVal empf As Integer, ByVal dokumentid As String) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand
scmCmdToExecute.CommandText = "dbo.SP_edex_bl_hdmail"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.Connection = Globals.conn_bl.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@empfaenger", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, empf))
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
#End Region
#End Region
#Region "Tools"
Public Sub renamefile(ByVal filename As String, ByVal NEWFILENAME As String)
'Verarbeitete Datein umbenennen
Try
FileSystem.Rename(filename, NEWFILENAME)
log.InsertJournale("EDOKA-Host-Dokumente: File umbenannt: " & filename & " - " & NEWFILENAME)
Catch ex As Exception
m_Log.Log("EDKB01: ehler: " & ex.Message, Common.Common.JournalEntryType.Error)
End Try
End Sub
Private Function sstring(ByVal s As String) As String
'String auseinander nehmen
Dim x As String
x = s
If Left(x, 1) = """" Then x = Right(s, Len(x) - 1)
While Right(x, 1) <> "}"
x = Left(x, Len(x) - 1)
End While
x = Left(x, Len(x) - 1)
If Right(x, 1) = """" Then x = Left(x, Len(x) - 1)
sstring = Trim(x)
End Function
Private Function sstring1(ByVal s As String) As String
'String auseinander nehmen
Dim x As String
x = s
If Left(x, 1) = """" Then x = Right(s, Len(x) - 1)
While Right(x, 1) <> "}"
x = Left(x, Len(x) - 1)
End While
x = Left(x, Len(x) - 1)
If Right(x, 1) = """" Then x = Left(x, Len(x) - 1)
sstring1 = Trim(x)
End Function
Private Sub Files_Rename(ByVal verArbeitungsArtNr As Integer)
Dim X As String
X = Format(Now, "yyyyMMddHHmmss")
Select Case verArbeitungsArtNr
Case 1
Try
renamefile(Params.Filepfad + "hostindex.txt", Params.Filepfad + X + "_hostindex.txt")
Catch
End Try
Case 2
Try
renamefile(Params.Filepfad + "zvindex.txt", Params.Filepfad + X + "_zvindex.txt")
Catch
End Try
Case 3
Try
renamefile(Params.Filepfad + "uvmindex.txt", Params.Filepfad + X + "_uvmindex.txt")
Catch
End Try
Case 4
Try
renamefile(Params.Filepfad + "BLindex.txt", Params.Filepfad + X + "_blindex.txt")
Catch
End Try
Case 5
Try
renamefile(Params.Filepfad + "azvindex.txt", Params.Filepfad + X + "_azvindex.txt")
Catch
End Try
Case 6
Try
renamefile(Params.Filepfad + "hostindex.ok", Params.Filepfad + X + "_hostindex.ok")
Catch
End Try
End Select
End Sub
Public Function Sendmail(ByVal email As String, ByVal msg As Integer) As Boolean
'Mails im Fehler- bzw. im OK-Fall versenden
Dim meldung As String = ""
Dim betreff As String = ""
Dim m_common As New Common.Common
Select Case msg
Case 0
betreff = "EDKB01 - Return 0: Verarbeitung ordnungsgemäss durchgeführt - " + Format(Now, "yyyyMMddHHmmss")
meldung = "Anzahl Dateien eingelesen und verarbeitet: " + Str(TotalImport) + vbCrLf + _
"Anzahl Dateien eingelesen und gelöscht : " + Str(TotalDelete) + vbCrLf + vbCrLf + _
"Dieses Mail wurde durch den Hob EDKB01 ausgelöst" + vbCrLf + _
"------------------------------------------------"
End Select
m_Log.Log("Mail: " + betreff, Common.Common.JournalEntryType.Information)
m_Log.Log("Mail: " + meldung, Common.Common.JournalEntryType.Information)
Try
m_common.SendMail(email, betreff, meldung)
Sendmail = True
Catch ex As Exception
Sendmail = False
m_Log.Log("EDKB01: ehler: Sendmail: " + ex.Message, Common.Common.JournalEntryType.Error)
End Try
End Function
'Public Function Sendmail(ByVal email As String, ByVal msg As Integer) As Boolean
' 'Mails im Fehler- bzw. im OK-Fall versenden
' Dim meldung As String
' Dim betreff As String
' Select Case msg
' Case -1
' betreff = "EDKB01 - Return 16: Fehler Datei parameters.cfg ist nicht vorhanden oder fehlerhaft / " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Die Verarbeitung EDKB01 wurde nicht ordnungsgemäss durchgeführt:" + vbCrLf + vbCrLf + _
' "Fehler: Datei c:\prg\edoka\edkb01\parameters.cfg ist nicht vorhanden oder ungültig" + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Job EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 0
' betreff = "EDKB01 - Return 16: Fehler Datei HostIndex.ok - nîcht vorhanden / " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Die Verarbeitung EDKB01 wurde nicht ordnungsgemäss durchgeführt:" + vbCrLf + vbCrLf + _
' "Fehler: Datei " + Params.Filepfad + "Hostindex.ok ist nicht vorhanden." + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Job EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 1
' betreff = "EDKB01 - Return 16: Fehler Datei HostIndex.ok - Wert <> 0 / " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Die Verarbeitung EDKB01 wurde nicht ordnungsgemäss durchgeführt:" + vbCrLf + vbCrLf + _
' "Fehler: Datei " + Params.Filepfad + "Hostindex.ok beinhaltet einen Wert <> 0" + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Job EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 2
' betreff = "EEDKB01 - Return 16: Fehler Datei HostIndex.txt - Datei nicht vorhanen / " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Die Verarbeitung EDKB01 wurde nicht ordnungsgemäss durchgeführt" + vbCrLf + vbCrLf + _
' "Fehler: Datei " + Params.Filepfad + "Hostindex.txt ist nicht vorhanden" + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Hob EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 3
' betreff = "EDKB01 - Return 16: Fehler Anzahl verarbeitete Bytes stimmt nicht - " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Anzahl Dateien eingelesen und verarbeitet: " + Str(TotalImport) + vbCrLf + vbCrLf + _
' "Originalfile: " + Str(FileSizeO) + " verarbeitet: " + Str(FileSizeD) + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Hob EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 4
' betreff = "EDKB01 - Return 16: Undefinierter Fehler Datei HostIndex.txt - Log konsultieren - " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Anzahl Dateien eingelesen und verarbeitet: " + Str(TotalImport) + vbCrLf + vbCrLf + _
' "Originalfile: " + Str(FileSizeO) + " verarbeitet: " + Str(FileSizeD) + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Hob EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 5
' betreff = "EDKB01 - Return 16: Undefinierter Fehler Datei HostIndex.del - Log konsultieren - " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Anzahl Dateien eingelesen und gelöscht: " + Str(TotalDelete) + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Hob EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 6
' betreff = "EDKB01 - Return 16: Fehler beim Dateien umbenennen - " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Anzahl Dateien eingelesen und verarbeitet: " + Str(TotalImport) + vbCrLf + _
' "Anzahl Dateien eingelesen und gelöscht : " + Str(TotalDelete) + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Hob EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 7
' betreff = "EDKB01 - Return 0: Verarbeitung ordnungsgemäss durchgeführt - " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Anzahl Dateien eingelesen und verarbeitet: " + Str(TotalImport) + vbCrLf + _
' "Anzahl Dateien eingelesen und gelöscht : " + Str(TotalDelete) + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Hob EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 8
' betreff = "EDKB01 - Return 16: Fehler Datei HostIndex.ok - Anzahl gelieferter Dokumente fehlt / " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Die Verarbeitung EDKB01 wurde nicht ordnungsgemäss durchgeführt:" + vbCrLf + vbCrLf + _
' "Fehler: Datei " + Params.Filepfad + "Hostindex.ok beinhaltet keine Anzahl der gelieferten Dokumente" + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Job EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' Case 9
' betreff = "EDKB01 - Return 16: Anzahl Dokumente nicht korrekt - " + Format(Now, "yyyyMMddHHmmss")
' meldung = "Anzahl eingelesene Dokumente stimmt nicht mit der gemeldeten Anzahl überein:" + vbCrLf + vbCrLf + _
' "Anzahl Dokumente eingelesen: " + Str(InsertCounter) + vbCrLf + _
' "Anzahl von COLD gemeldet : " + Str(TotalDokumente) + vbCrLf + vbCrLf + _
' "Dieses Mail wurde durch den Hob EDKB01 ausgelöst" + vbCrLf + _
' "------------------------------------------------"
' End Select
' log.InsertJournale(betreff)
' log.InsertJournale(meldung)
' Dim scmCmdToExecute As SqlCommand = New SqlCommand
' scmCmdToExecute.CommandText = "dbo.SP_SendMail"
' scmCmdToExecute.CommandType = CommandType.StoredProcedure
' Dim dtToReturn As DataTable = New DataTable
' scmCmdToExecute.Parameters.Add(New SqlParameter("@email", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, email))
' scmCmdToExecute.Parameters.Add(New SqlParameter("@betreff", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, betreff))
' scmCmdToExecute.Parameters.Add(New SqlParameter("@meldung", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, meldung))
' scmCmdToExecute.Connection = conn_edoka.scoDBConnection
' Try
' conn_edoka.OpenConnection()
' Catch
' End Try
' Sendmail = True
' Try
' scmCmdToExecute.ExecuteNonQuery()
' Catch ex As Exception
' Sendmail = False
' Finally
' scmCmdToExecute.Dispose()
' conn_edoka.CloseConnection(True)
' End Try
'End Function
'Private Function edkb01_status(ByVal fnkt As Integer, ByVal verarbeitungsart As Integer, ByVal status As Integer) As Integer
' Try
' Dim scmCmdToExecute As SqlCommand = New SqlCommand
' scmCmdToExecute.CommandText = "dbo.sp_edkb01_status"
' scmCmdToExecute.CommandType = CommandType.StoredProcedure
' scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, fnkt))
' scmCmdToExecute.Parameters.Add(New SqlParameter("@verarbeitungsart", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, verarbeitungsart))
' scmCmdToExecute.Parameters.Add(New SqlParameter("@setstatus", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, status))
' scmCmdToExecute.Parameters.Add(New SqlParameter("@status", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
' scmCmdToExecute.Connection = Globals.conn_journale.scoDBConnection
' conn_journale.OpenConnection()
' Try
' scmCmdToExecute.ExecuteNonQuery()
' Return scmCmdToExecute.Parameters("@status").Value
' Catch ex As Exception
' m_Log.Log("EDKB01: ehler in Funktion edkb01_status (1): " & ex.Message, Common.Common.JournalEntryType.Error)
' Return 1
' Finally
' scmCmdToExecute.Dispose()
' conn_journale.CloseConnection(True)
' End Try
' Catch ex As Exception
' m_Log.Log("EDKB01: ehler in Funktion edkb01_status (2): " & ex.Message, Common.Common.JournalEntryType.Error)
' End Try
'End Function
#End Region
#Region "Start Tools"
Private Sub WirteLog(ByVal stext As String, ByVal sPfad As String)
Try
Dim FiStr As FileStream = New FileStream(sPfad, FileMode.Append)
Dim StrWr As StreamWriter = New StreamWriter(FiStr)
StrWr.WriteLine("Fehler: " + Now())
StrWr.WriteLine("Fehlertext:" + stext)
StrWr.Close()
Catch ex As Exception
End Try
End Sub
Public Function ApplicationPath() As String
'Return Path.GetDirectoryName([Assembly].GetExecutingAssembly().Location)
Return Path.GetDirectoryName([Assembly].GetEntryAssembly().Location) + "\"
End Function
Private Function CheckArg() As Boolean
Try
If IsNothing(args(1)) Then
m_Log.Log("Pfad zu Config Dateien nicht übergeben.", Common.Common.JournalEntryType.Error)
m_Log.Ende()
End If
CheckArg = True
Catch ex As Exception
m_Log.Log("Pfad zu Config Dateien nicht übergeben.", Common.Common.JournalEntryType.Error)
m_Log.Ende()
CheckArg = False
End Try
End Function
#End Region
End Module