Imports System.ServiceModel.Configuration Imports Therefore.API Public Class cTherefore Shared Function saveFileTo_ImportFolder(Path As String, FilialeAbfertigungsNr As String, AvisoId As String, FirmaId As String, Optional deleteFileAfterImport As Boolean = False) FilialeAbfertigungsNr = FilialeAbfertigungsNr.Replace(";", " ") FilialeAbfertigungsNr = FilialeAbfertigungsNr.Replace("/", " ") FilialeAbfertigungsNr = FilialeAbfertigungsNr.Replace("-", " ") If FilialeAbfertigungsNr.Length > 30 Then FilialeAbfertigungsNr = FilialeAbfertigungsNr.ToString.Substring(0, 30) Select Case FirmaId Case 7 Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Atilla ab Juni 2011",, deleteFileAfterImport) Case 21, 22, 23 'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2021 UNISPED", "UNISPED\Import ab Jänner 2021 UNISPED DE", deleteFileAfterImport) 'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2021 UNISPED", "Import ab Jänner 2021 UNISPED DE", deleteFileAfterImport) Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2021 UNISPED_DE", "UNISPED Zollakten", deleteFileAfterImport) 'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, 394, 394, deleteFileAfterImport) Case 1, 11, 20, 17 ', 15 ' Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import an Jänner 2019", "Import ab Jänner 2019", deleteFileAfterImport) 'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2021", "Import ab Jänner 2021", deleteFileAfterImport) 'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2022", "Import ab Jänner 2022", deleteFileAfterImport) 'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2023", "Import ab Jänner 2023", deleteFileAfterImport) Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2024", "Import ab Jänner 2024", deleteFileAfterImport) ' Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2020", "Import ab Jänner 2020", deleteFileAfterImport) Case Else Return False End Select End Function Shared Function getFileFromFolderCat(Path As String, FilialeAbfertigungsNr As String, AvisoId As String, Category As String, Optional Category2 As String = "", Optional deleteFileAfterImport As Boolean = False) Try ' MsgBox("go: ") 'Dim SQL_VERAG As New VERAG_PROG_ALLGEMEIN.SQL 'Dim abfertNr = FilialeAbfertigungsNr 'Dim docid As String = "" 'Dim Filiale = FilialeAbfertigungsNr.Substring(0, 4) 'If Filiale = 4801 Then ' docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat17] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") 'ElseIf Filiale = 5601 Then ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat393] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat394] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") 'ElseIf Filiale = 5701 Then ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat395] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat397] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") 'Else ' docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].TheCat1083 WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat889] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat398] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat291] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat153] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat119] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat109] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat101] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat84] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat72] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat59] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat36] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat14] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat130] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' WAI ' If Not IsNumeric(docid) OrElse docid <= 0 Then docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat131] WHERE [String] LIKE '" & abfertNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON") ' SBG 'End If 'If IsNumeric(docid) AndAlso docid > 0 Then ' ' Process.Start("theviewer.exe -" & docid) ' ' Process.Start("C:\Program Files (x86)\Therefore\theviewer.exe -" & docid) ' Try ' Shell("C:\Program Files (x86)\Therefore\theviewer.exe -d" & docid) ' Catch ex As Exception ' Shell("C:\Program Files\Therefore\theviewer.exe -d" & docid) ' End Try 'Else ' MsgBox("Das Dokument konnte nicht gefunden werden.") 'End If If Category2 = "" Then Category2 = Category Dim SQL As New SQL ' 1. Connect to the Therefore™ Server Dim server As New TheServer server.Connect(TheClientType.CustomApplication) ' 2. Create a new Therefore™ Document Dim doc As New TheDocument() ' 3. Retrieve the document from the server to the inbox Dim inbox As String = Path Dim TableName = "" If IsNumeric(Category) Then TableName = "TheCat" & Category If SQL.getValueTxtBySql("SELECT count(*) FROM [TheCategory] WHERE TableName='" & TableName & "'", "SCANCANON",,, "") = 0 Then MsgBox("Therefore: Tabelle nicht gefunden: " & TableName) Return False End If Else TableName = SQL.getValueTxtBySql("SELECT TOP 1 [TableName] FROM [TheCategory] WHERE Title='" & Category & "'", "SCANCANON",,, "") End If Dim docNo As Integer = SQL.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM " & TableName & " WHERE [String] LIKE '" & FilialeAbfertigungsNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON",,, -1) ' MsgBox("docNo: " & docNo) Dim extractDir As String = Path & FilialeAbfertigungsNr & "\" If Not System.IO.Directory.Exists(extractDir) Then System.IO.Directory.CreateDirectory(extractDir) End If Dim filename As String = "" If docNo > 0 Then Dim folder = "" Dim VerionNo As Integer filename = doc.Retrieve(docNo, VerionNo, folder, server, False) ' 4. Extract all file streams to the specified directory Dim i As Integer For i = 0 To doc.StreamCount - 1 Step i + 1 Dim extractFile As String = doc.ExtractStream(i, extractDir) Console.WriteLine("File stream extracted to " + extractFile) Next Else 'Nicht gefunden, hier hinschreiben: Dim file As System.IO.StreamWriter file = My.Computer.FileSystem.OpenTextFileWriter(Path & "notfound.txt", True) file.WriteLine(FilialeAbfertigungsNr) file.Close() ' MsgBox(FilialeAbfertigungsNr) End If ' 8. Close Therefore™ document object doc.Close() Return True Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try Return False End Function Shared Function saveFileTo_ImportFolderCat(Path As String, FilialeAbfertigungsNr As String, AvisoId As String, Category As String, Optional Category2 As String = "", Optional deleteFileAfterImport As Boolean = False) Try If Category2 = "" Then Category2 = Category Dim SQL As New SQL ' 1. Connect to the Therefore™ Server Dim server As New TheServer server.Connect(TheClientType.CustomApplication) ' 2. Create a new Therefore™ Document Dim doc As New TheDocument() ' 3. Create temporary File 'Dim filename As String = "" 'doc.Create(filename) ' 4A. Set Therefore™ Category by Number ' doc.IndexData.SetCategory(5, server) ' or 4B. Set Therefore™ Category by Name doc.IndexData.SetCategory(Category2, server) ' 5. Add streams 'doc.AddStream("D:\\TestAll\\TestDocs\\Scsi.doc", "", 0) 'doc.AddStream("D:\\TestAll\\TestDocs\\TEST.xls", "", 0) ' 6. Set index data 'Dim indexData As TheIndexData = doc.IndexData 'indexData("String") = FilialeAbfertigungsNr 'indexData("Eingabedatum") = Now.ToShortDateString 'indexData("LKW_ID") = AvisoId 'MsgBox(doc.IndexData.Count) ' 7. Archive the document 'Dim docNo As Integer = doc.Archive(server, 0) 'Dim docNo As Integer = 0 'Dim filenameNEW As String = doc.Retrieve(docNo, "", server) Dim TableName = "" If IsNumeric(Category) Then TableName = "TheCat" & Category If SQL.getValueTxtBySql("SELECT count(*) FROM [TheCategory] WHERE TableName='" & TableName & "'", "SCANCANON",,, "") = 0 Then MsgBox("Therefore: Tabelle nicht gefunden: " & TableName) Return False End If Else TableName = SQL.getValueTxtBySql("SELECT TOP 1 [TableName] FROM [TheCategory] WHERE Title='" & Category & "'", "SCANCANON",,, "") End If Dim docNo As Integer = SQL.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM " & TableName & " WHERE [String] LIKE '" & FilialeAbfertigungsNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON",,, -1) ' MsgBox("docNo: " & docNo) Dim filename As String = "" If docNo <= 0 Then doc.Create(filename) doc.AddStream(Path, "", 0) Dim indexData As TheIndexData = doc.IndexData indexData("String") = FilialeAbfertigungsNr indexData("Eingabedatum") = Now.ToShortDateString indexData("LKW_ID") = AvisoId docNo = doc.Archive(server, 0) Else Dim folder = "" Dim VerionNo As Integer filename = doc.Retrieve(docNo, VerionNo, folder, server, False) Dim user As String = "" doc.CheckOut(server, False, user, VerionNo) doc.AddStream(Path, "", 0) doc.CheckIn(server) End If ' 8. Close Therefore™ document object doc.Close() ' 9. Delete the temporary file If deleteFileAfterImport Then System.IO.File.Delete(filename) ' 10. Optional: Print a success message on the console ' Console.WriteLine("Document successfully archived as " + docNo.ToString() + ".") Return True Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try Return False End Function 'Shared Function saveFileTo_ImportFolder2(Path As String, FilialeAbfertigungsNr As Integer, AvisoId As Integer) ' Try ' ' 1. Connect to the Therefore™ Server ' Dim server As New TheServer ' server.Connect(TheClientType.CustomApplication) ' ' 2. Create a new Therefore™ Document ' Dim doc As New TheDocument() ' ' 3. Create temporary File ' Dim filename As String = "" ' doc.Create(filename) ' ' 4A. Set Therefore™ Category by Number ' ' doc.IndexData.SetCategory(5, server) ' ' or 4B. Set Therefore™ Category by Name ' doc.IndexData.SetCategory("Import ab Jänner 2019", server) ' ' 5. Add streams ' 'doc.AddStream("D:\\TestAll\\TestDocs\\Scsi.doc", "", 0) ' 'doc.AddStream("D:\\TestAll\\TestDocs\\TEST.xls", "", 0) ' doc.AddStream(Path, "", 0) ' ' 6. Set index data ' ' MsgBox(doc.IndexData.Count) ' ' 7. Archive the document ' Dim docNo As Integer = doc.Archive(server, 0) ' MsgBox(docNo) ' ' 8. Close Therefore™ document object ' doc.Close() ' ' 9. Delete the temporary file ' System.IO.File.Delete(filename) ' ' 10. Optional: Print a success message on the console ' ' Console.WriteLine("Document successfully archived as " + docNo.ToString() + ".") ' Catch ex As Exception ' MsgBox(ex.Message & ex.StackTrace) ' End Try 'End Function End Class