Imports System.IO.File Imports System.Data.SqlClient Imports System.Data.SqlTypes Imports System.ComponentModel Imports System.IO Imports System.SystemException Imports System.Reflection ''' '''Steuermodul für EDKB01 ''' ''' '''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) ''' 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 '''Die Verarbeitung unterscheidet grundsätzlich zwei Verarbeitungstypen$EOL$ '''- INITIALLOAD$EOL$ '''- Tagesbetrieb ''' ''' '''Initialload$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$ '''Tagesbetrieb$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. ''' ''' 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" '''Prüfung der Datenanlieferung von AGI-COLD '''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 '''Bestimmt die Verabeitungsart '''HOST-Verarbeitung '''ZV-Verarbeitung '''UVM-Verarbeitung '''True=Prüfung OK$EOL$ '''False=Prüfung nicht OK 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" '''Verarbeitung von Initialloads$EOL$ ''' '''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$ ''' ''' '''HOST-Verarbeitung '''ZV-Verarbeitung '''UVM-Verarbeitung 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 '''Angelieferte Daten verarbeiten$EOL$ ''' '''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$ ''' ''' '''HOST-Verarbeitung '''ZV-Verarbeitung '''UVM-Verarbeitung 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 '''Daten aus den Datenbanken löschen$EOL$ ''' '''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 ''' '''HOST-Verarbeitung '''ZV-Verarbeitung '''UVM-Verarbeitung 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" '''Daten in die Tabelle EDOKA_HOST.dbo.host_dokument_Import '''einfügen '''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. ''' 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 '''Nachführen der Tabelle EDOKA_HOST.dbo._HOSTdokument '''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. 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 '''Löschen eines Datensatzes aus der Tabelle '''EODKA_HOST.dbo.Host_Dokument_Data '''Diese Methode löscht einen Datensatz aus dem '''HOST-Datenbestand. ''' '''Dokumentid 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" '''Daten in die Tabelle EDOKA_ZV.dbo.ZVBelege_Import einfügen '''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. ''' 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 '''Partnernr für ZV-Belege aus dem EDOKA-Bestand auslesen '''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$ ''' ''' '''VVNr des Datensatzes 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 '''Löschen eines Datensatzes aus der Tabelle '''EODKA_ZV.dbo.zvbelege_data '''Diese Methode löscht einen Datensatz aus dem ZV-Bestand ''' '''Dokumentid 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" '''Daten in die Tabelle EDOKA_UVM.dbo.UVMBelege_Import einfügen '''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. ''' 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 '''Löschen eines Datensatzes aus der Tabelle '''EODKA_UVM.dbo.uvmbelege_data '''Diese Methode löscht einen Datensatz aus dem UVM-Bestand ''' '''Dokumentid 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