IngramMicro EOL
IngramMicro EOL
Section titled “IngramMicro EOL”Beschreibung
Section titled “Beschreibung”Das folgende Skript wird über die Funktion “erweiterter Im-/ Export” ausgeführt und importiert die EOL Liste von IngramMicro in die Auftragsverwaltung. Alle Artikel die in der EOL Liste enthalten sind, werden als Auslaufartikel gekennzeichnet.
Voraussetzung
Section titled “Voraussetzung”Auftragsverwaltung ab Version 11.12.1
Ablauf des Skripts
Section titled “Ablauf des Skripts”- Automatischer Download der Datenbank bei IM
- Entpacken der Datenbank und einlesen der Artikel
- Suchen vorhandener Artikel und markieren als “Auslauf Artikel”
- Bereinigung der heruntergeladenen Dateien
Installation
Section titled “Installation”- Passen Sie die Parameter “<IhreKDNr>” und “<IhrKennwort>” an.
- Öffnen Sie den Skript über die erweiterte Im- und Export Funktion
Skript
Section titled “Skript”Imports Microsoft.VisualBasicImports SystemImports System.Collections.GenericImports System.LinqImports Styletronix.AuftragsverwaltungV2.CommonImports Styletronix.AuftragsverwaltungV2Namespace AdvancedImportClass DynamicCode'Funktion, die beim start des Skripts aufgerufen wird.Public Shared Sub DoWork(ByRef e As Styletronix.AuftragsverwaltungV2.ImportAssistent.frm_AdvancedImport.ScriptParams)'ParameterDim DownloadURL = "http://www.ingrammicro.de/cgi-bin/scripts/get_file.pl?NAME=EOL.zip"Dim Kundennummer As String = "<IhreKDNr>"Dim Kennwort As String = "<IhrKennwort>"'Datei herunterladene.ProgressDelegate.Invoke(0, "Datei herunterladen...")Dim DataStream = DownloadFile(DownloadURL, Kundennummer, Kennwort)'Temprärordner bereinigen und erstellene.ProgressDelegate.Invoke(0, "Temporärer Ordner vorbereiten...")Dim TempFolder = My.Computer.FileSystem.SpecialDirectories.Temp & "\AuftrV2_IMdb"If IO.Directory.Exists(TempFolder) Then IO.Directory.Delete(TempFolder, True)IO.Directory.CreateDirectory(TempFolder)'Datei entpackene.ProgressDelegate.Invoke(0, "Daten extrahieren...")DataStream.Position = 0ExtractFile(DataStream, TempFolder)'Verbindung zur Datenbank der Auftragsverwaltung herstellenDim dc As New DC_AllgemeinDataContext(Einstellungen.SQL_Verbindungszeichenfolge)'Textdatei lesenDim EOLStrings As String() = IO.File.ReadAllLines(TempFolder & "\EOL.txt")Dim Anzahl As int64 = EOLStrings.lengthDim IsFirstRow As Boolean = TrueDim count As int64For Each row As String In EOLStringsIf IsFirstRow Then'Überspringe erste Zeile mit ÜberschriftIsFirstRow = FalseElse'Fortschritt anzeigencount += 1Dim Progress As int64 = count / Anzahl * 100e.ProgressDelegate.Invoke(Progress, "Prüfe Artikel...")Dim Artikelnummer As String = Mid(row, 1, 8).TrimDim art As Common.tbl_Artikel = (From a In dc.tbl_Artikel Where a.Artikelnummer = Artikelnummer).FirstOrDefaultIf Not art Is Nothing ThenIf art.IstAuslaufartikel = False Thene.LogMessageDelegate.Invoke("Artikel EOL gesetzt: " & Artikelnummer)art.IstAuslaufartikel = Truedc.SubmitChanges()End IfEnd IfEnd If'Auf Abbruch durch Benutzer reagierenIf e.GetCancelDelgate.Invoke Thene.LogMessageDelegate.Invoke("Abbruch durch Benutzer.")Exit ForEnd IfNext'Datenbankverbindungen schließene.LogMessageDelegate.Invoke("Verbindung zu Datenbanken beenden...")dc.Dispose()'Temporärdateien löschene.LogMessageDelegate.Invoke("Temporäre Daten löschen...")IO.Directory.Delete(TempFolder, True)e.LogMessageDelegate.Invoke("Beendet")End Sub'Funktion zum Herunterladen von Dateien von einem Server per HTTP / HTTPsPrivate Shared Function DownloadFile(ByVal URL As String, ByVal Benutzer As String, ByVal Kennwort As String) As IO.MemoryStreamDim wc As New Net.WebClientwc.Credentials = New System.Net.NetworkCredential(Benutzer, Kennwort)Dim data As Byte() = wc.DownloadData(URL)Dim DataStream As New IO.MemoryStreamDataStream.Write(data, 0, data.Length)Return DataStreamEnd Function'Funktion zum Herunterladen von Dateien von einem Server per HTTP / HTTPsPrivate Shared Sub DownloadFile(ByVal URL As String, ByVal TargetFile As String)Dim wc As New Net.WebClientDim data As Byte() = wc.DownloadData(URL)Dim oFileStream = New System.IO.FileStream(TargetFile, System.IO.FileMode.Create)oFileStream.Write(data, 0, data.Length)oFileStream.Close()End Sub'Funktion zum Extrahieren von Dateien aus ZIP-ArchivPrivate Shared Sub ExtractFile(ByRef DataStream As IO.MemoryStream, ByVal TargetFolder As String)Dim strmZipInputStream = New ICSharpCode.SharpZipLib.Zip.ZipInputStream(DataStream)Dim objEntry As ICSharpCode.SharpZipLib.Zip.ZipEntryobjEntry = strmZipInputStream.GetNextEntry()Do While Not IsNothing(objEntry)If objEntry.IsFile ThenDim TargetName = IO.Path.Combine(TargetFolder, objEntry.Name)Dim Folder = IO.Path.GetDirectoryName(TargetName)If Not IO.Directory.Exists(Folder) Then IO.Directory.CreateDirectory(Folder)If IO.File.Exists(TargetName) Then IO.File.Delete(TargetName)Dim file = New IO.FileStream(TargetName, IO.FileMode.Create)Dim buff(2048) As ByteDim size = strmZipInputStream.Read(buff, 0, buff.Length)Dim pos As Int64 = 0Do While size > 0file.Write(buff, 0, size)size = strmZipInputStream.Read(buff, 0, buff.Length)pos += sizeLoopfile.Close()End IfobjEntry = strmZipInputStream.GetNextEntry()LoopstrmZipInputStream.Close()End SubEnd ClassEnd NamespaceQuelle
Section titled “Quelle”- Ursprungsdatei: ingrammicro_eol.htm