IngramMicro Zubehör
IngramMicro Zubehör
Section titled “IngramMicro Zubehör”Beschreibung
Section titled “Beschreibung”Das folgende Skript wird über die Funktion “erweiterter Im-/ Export” ausgeführt und importiert die Zubehör - Liste von IngramMicro in die Auftragsverwaltung. Allen Artikeln wird dadurch das entsprechende Zubehör zugeordnet. Führen Sie vor dem Import der Zubehörliste den Import der Artikel durch.
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 hinzufügen des passenden Zubehörs.
- 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 Kundennummer As String = "<IhreKdNr>"Dim Kennwort As String = "<IhrKennwort>"'Temprärordner bereinigen und neu erstellenDim TempFolder = My.Computer.FileSystem.SpecialDirectories.Temp & "\AuftrV2_IMdb"e.ProgressDelegate.Invoke(0, "Temporärer Ordner vorbereiten... (" & TempFolder & ")")If IO.Directory.Exists(TempFolder) Then IO.Directory.Delete(TempFolder, True)IO.Directory.CreateDirectory(TempFolder)'Datei herunterladenDim DownloadURL = "http://www.ingrammicro.de/cgi-bin/scripts/get_file.pl?NAME=ZUBEHOER.zip"e.ProgressDelegate.Invoke(0, "Datei herunterladen... (" & DownloadURL & ")")Dim DataStream = DownloadFile(DownloadURL, Kundennummer, Kennwort)'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 & "\ZUBEHOER.txt")Dim Anzahl As int64 = EOLStrings.lengthDim IsFirstRow As Boolean = TrueDim count As int64Dim artID1 As Int64Dim artID2 As Int64Dim LastArtikelNr As String = ""For 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...")'Nummer splittenDim Nummern As String() = row.Split(vbTab)Dim Artikelnummer As String = Nummern(0).TrimDim ZubehörNummer As String = Nummern(1).Trim'Artikel IDs suchen'Vermeide mehrfaches abrufen des Stammartikels bei aufeinanderfolgendem Vorkommen in der ListeIf Not LastArtikelNr = Artikelnummer ThenartID1 = (From a In dc.tbl_Artikel Where a.Artikelnummer = Artikelnummer Select a.ID).FirstOrDefaultLastArtikelNr = ArtikelnummerEnd IfartID2 = (From a In dc.tbl_Artikel Where a.Artikelnummer = ZubehörNummer Select a.ID).FirstOrDefaultIf artID1 > 0 And artID2 > 0 Then'Auf vorhandes Zubehör prüfenDim Zubehör = (From a In dc.tbl_Artikel_Zubehörs Where a.ArtikelID = artID1 And a.Artikel2ID = artID2).FirstOrDefault'Neues Zubehör hinzufügenIf Zubehör Is Nothing Then'e.LogMessageDelegate.Invoke("Neues Zubehör: " & Artikelnummer & " | " & ZubehörNummer )Dim Zubeh = New tbl_Artikel_Zubehör With {.ArtikelID = artID1, _.Artikel2ID = artID2}dc.tbl_Artikel_Zubehörs.InsertOnSubmit(Zubeh)dc.SubmitChanges()End If'else'e.LogMessageDelegate.Invoke("Artikel nicht gefunden: " & Artikelnummer & " | " & ZubehörNummer )End 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_zubehoer.htm