Skip to content

Beispiel IngramMicro Artikelimport

Imports``Microsoft.VisualBasic

Imports``System

Imports``System.Collections.Generic

Imports``System.Linq

Imports``Styletronix.AuftragsverwaltungV2.Common

Imports``Styletronix.AuftragsverwaltungV2

Imports``Styletronix.AuftragsverwaltungV2.IPC

Imports``Styletronix

Imports``Styletronix.Threading.Thread\_Manager

Namespace``LagerstandAbfrage

Public``Class``DynamicCode

Implements``IPC.IPluginDetails

Implements``IPC.IArtikelsuche

Implements``IPC.ICommonPlugIn

#Region``"Benutzereinstellungen"

Private``DownloadURL =``"http://www.ingrammicro.de/cgi-bin/scripts/get\_PL.pl"

Private``Kundennummer``As``String``=``"xxxxxx"``'Hier Ihre Kundennummer eintragen

Private``Kennwort``As``String``=``"xxxxxx"``'Hier Ihr Kennwort eintragen

Private``Folder``As``String``= IO.Path.GetDirectoryName(``My``.Computer.FileSystem.SpecialDirectories.AllUsersApplicationData) &``"\\"``& Styletronix.Utils.Settings.DB\_GUID &``"\\Temp"

Private``PlugInKennung``As``String``=``"IngramMicro"

Dim``ConnectionString``As``String``=``"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="``& Folder &``";Extended Properties=dBase III"

#End``Region

#Region``"Deklarationen"

Private``\_Host``As``Object

Private``RunningUserTokens``As``New``List(``Of``Object``)

#End``Region

#Region``"PluginDetails"

Public``ReadOnly``Property``Plugin\_Company``As``String``Implements``IPC.IPluginDetails.Plugin\_Company

Get

Return``"Styletronix.net"

End``Get

End``Property

Public``ReadOnly``Property``Plugin\_Description``As``String``Implements``IPC.IPluginDetails.Plugin\_Description

Get

Return``"Artikelimport aus einer lokalen dBase Artikeldatenbank von IngramMicro"

End``Get

End``Property

Public``ReadOnly``Property``Plugin\_Icon``As``System.Drawing.Image``Implements``IPC.IPluginDetails.Plugin\_Icon

Get

Return``Nothing

End``Get

End``Property

Public``ReadOnly``Property``Plugin\_Name``As``Object``Implements``IPC.IPluginDetails.Plugin\_Name

Get

Return``"Artikelabfrage - IngramMicro dBase Artikeldatenbank"

End``Get

End``Property

Public``ReadOnly``Property``Plugin\_Version``As``System.Version``Implements``IPC.IPluginDetails.Plugin\_Version

Get

Return``New``Version(1, 0, 0)

End``Get

End``Property

#End``Region

#Region``"IArtikelsuche"

Public``Event``ArtikelSucheCompleted(sender``As``Object``, e``As``AuftragsverwaltungV2.IPC.IArtikelsuche.ArtikelSucheCompletedEventArgs)``Implements``AuftragsverwaltungV2.IPC.IArtikelsuche.ArtikelSucheCompleted

Public``Event``ArtikelSuchePartialResult(sender``As``Object``, e``As``AuftragsverwaltungV2.IPC.IArtikelsuche.ArtikelSucheCompletedEventArgs)``Implements``AuftragsverwaltungV2.IPC.IArtikelsuche.ArtikelSuchePartialResult

Public``Sub``BeginArtikelSuche(Artikelnummer``As``String``, userToken``As``Object``)``Implements``AuftragsverwaltungV2.IPC.IArtikelsuche.BeginArtikelSuche

Try

RunningUserTokens.Add(userToken)

Dim``dBaseConnection``As``New``System.Data.OleDb.OleDbConnection(ConnectionString)

dBaseConnection.Open()

Artikelnummer = Artikelnummer.ToUpper

Dim``dBaseCommand``As``New``System.Data.OleDb.OleDbCommand(``String``.Format(``"SELECT \* FROM mac\_dbf WHERE UCASE(ARTIKEL\_Nr) Like '{0}' OR UCASE(HSTNUMMER) LIKE '{0}' OR UCASE(EANCODE) LIKE '{0}' OR UCASE(EANCODE) LIKE '0{0}'"``, Artikelnummer), dBaseConnection)

Dim``dBaseDataReader``As``System.Data.OleDb.OleDbDataReader = dBaseCommand.ExecuteReader(System.Data.CommandBehavior.Default)

Do``While``dBaseDataReader.Read

If``Not``RunningUserTokens.Contains(userToken)``Then``GoTo``ende

Dim``art``As``New``tbl\_Artikel

art.Artikelnummer3 = dBaseDataReader(``"ARTIKEL\_Nr"``).ToString

art.Gruppe1 = dBaseDataReader(``"GRUPPE1"``).ToString

art.Gruppe2 = dBaseDataReader(``"GRUPPE2"``).ToString

art.Gruppe3 = dBaseDataReader(``"GRUPPE3"``).ToString

art.Artikelnummer2 = dBaseDataReader(``"HSTNUMMER"``).ToString

art.Artikelnummer = dBaseDataReader(``"EANCODE"``).ToString

If``art.Artikelnummer.Length = 13``And``art.Artikelnummer.StartsWith(``"0"``)``Then

art.Artikelnummer = art.Artikelnummer.Remove(0, 1)

End``If

art.Artikelnummer4 = dBaseDataReader(``"CATALOGUEI"``).ToString

art.VK = dBaseDataReader(``"EVP"``).ToString

art.EK = dBaseDataReader(``"HEK"``).ToString

art.Name = dBaseDataReader(``"HERSTELLER"``).ToString &``" "``& dBaseDataReader(``"ARTIKEL1"``).ToString & vbCrLf & dBaseDataReader(``"ARTIKEL2"``).ToString

If``String``.IsNullOrWhitespace(art.Artikelnummer)``Then``art.Artikelnummer = art.Artikelnummer3

'Bild herunterladen

Dim``imgURL = dBaseDataReader(``"PICTUREFIL"``).ToString

If``art.Thumb``Is``Nothing``AndAlso``Not``String``.IsNullOrWhiteSpace(imgURL)``Then

imgURL =``"http://ec.ingrammicro.de/jpg/"``& imgURL

Try

Dim``img = Styletronix.Imaging.Utils.GetImageFromURL(imgURL)

If``Not``img``Is``Nothing``Then

art.Bild = Styletronix.Imaging.Utils.GetImageFromBinary(img)

End``If

Catch``ex``As``Exception

End``Try

End``If

Dim``ArtikelText =``String``.Format(``"{1}{0}{2}"``, vbCrLf, art.Artikelnummer, art.Name)

Dim``args``As``New``Styletronix.AuftragsverwaltungV2.IPC.IArtikelsuche.ArtikelSucheCompletedEventArgs

args.PlugInKennung = PlugInKennung

args.userToken = userToken

args.Text = ArtikelText

args.ArtikelDetails = art

RaiseEvent``ArtikelSuchePartialResult(``Me``, args)

Loop

ende:

dBaseConnection.Close()

Dim``args2``As``New``Styletronix.AuftragsverwaltungV2.IPC.IArtikelsuche.ArtikelSucheCompletedEventArgs

args2.PlugInKennung = PlugInKennung

args2.userToken = userToken

RaiseEvent``ArtikelSucheCompleted(``Me``, args2)

Try

If``Me``.RunningUserTokens.Contains(userToken)``Then``Me``.RunningUserTokens.Remove(userToken)

Catch``ex``As``Exception

End``Try

Catch``ex``As``Exception

MsgBox(ex.ToString, MsgBoxStyle.OkOnly,``Me``.Plugin\_Name)

End``Try

End``Sub

Public``Sub``CancelArtikelSuche(userToken``As``Object``)``Implements``AuftragsverwaltungV2.IPC.IArtikelsuche.CancelArtikelSuche

Try

If``Me``.RunningUserTokens.Contains(userToken)``Then``Me``.RunningUserTokens.Remove(userToken)

Catch``ex``As``Exception

End``Try

End``Sub

Public``Function``GetArtikelSucheStatus(userToken``As``Object``)``As``AuftragsverwaltungV2.IPC.IArtikelsuche.ArtikelSucheStatusResult``Implements``AuftragsverwaltungV2.IPC.IArtikelsuche.GetArtikelSucheStatus

If``Me``.RunningUserTokens.Contains(userToken)``Then

Return``IArtikelsuche.ArtikelSucheStatusResult.Running

Else

Return``IArtikelsuche.ArtikelSucheStatusResult.Completed

End``If

End``Function

#End``Region

#Region``"ICommonPlugIn"

Public``Sub``Initialize(Host``As``Object``)``Implements``AuftragsverwaltungV2.IPC.ICommonPlugIn.Initialize

Me``.\_Host = Host

If``Not``IO.Directory.Exists(``Me``.Folder)``Then``IO.Directory.CreateDirectory(``Me``.Folder)

Dim``Vorbereitung``As``New``DatenbankVorbereitung

Vorbereitung.DownloadURL =``Me``.DownloadURL

Vorbereitung.Kennwort =``Me``.Kennwort

Vorbereitung.Kundennummer =``Me``.Kundennummer

Vorbereitung.Folder =``Me``.Folder

Styletronix.Threading.Thread\_Manager.Instance.AddThread(Vorbereitung)

End``Sub

Public``ReadOnly``Property``Plugin\_HasConfigMenu``As``Boolean``Implements``AuftragsverwaltungV2.IPC.ICommonPlugIn.Plugin\_HasConfigMenu

Get

Return``False

End``Get

End``Property

Public``Sub``ShowConfigMenu()``Implements``AuftragsverwaltungV2.IPC.ICommonPlugIn.ShowConfigMenu

Throw``New``NotImplementedException

End``Sub

Public``Function``ShutDown()``As``Boolean``Implements``AuftragsverwaltungV2.IPC.ICommonPlugIn.ShutDown

Return``True

End``Function

Public``Function``ShutDownRequest()``As``AuftragsverwaltungV2.IPC.ICommonPlugIn.Shutdown\_Result``Implements``AuftragsverwaltungV2.IPC.ICommonPlugIn.ShutDownRequest

Dim``ret``As``New``AuftragsverwaltungV2.IPC.ICommonPlugIn.Shutdown\_Result

ret.Cancel =``False

Return``ret

End``Function

#End``Region

Private``Class``DatenbankVorbereitung

Implements``Styletronix.Threading.Thread\_Manager.IThread

Public``Folder``As``String

Public``DownloadURL``As``String

Public``Kundennummer``As``String

Public``Kennwort``As``String

Public``ReadOnly``Property``AllowCancel``As``Boolean``Implements``Styletronix.Threading.Thread\_Manager.IThread.AllowCancel

Get

Return``False

End``Get

End``Property

Private``\_BarSubItem``As``DevExpress.XtraBars.BarSubItem

Public``Property``BarSubItem``As``DevExpress.XtraBars.BarSubItem``Implements``Styletronix.Threading.Thread\_Manager.IThread.BarSubItem

Get

Return``Me``.\_BarSubItem

End``Get

Set``(value``As``DevExpress.XtraBars.BarSubItem)

Me``.\_BarSubItem = value

End``Set

End``Property

Public``Sub``Cancel()``Implements``Styletronix.Threading.Thread\_Manager.IThread.Cancel

Throw``New``NotImplementedException

End``Sub

Public``ReadOnly``Property``Caption``As``String``Implements``Styletronix.Threading.Thread\_Manager.IThread.Caption

Get

Return``"IngramMicro DB Download"

End``Get

End``Property

Public``Sub``DoWork()``Implements``Styletronix.Threading.Thread\_Manager.IThread.DoWork

Try

RaiseEvent``Thread\_Progress\_Changed(``Me``, 0,``"Datei herunterladen..."``)

Dim``DataStream = DownloadFile(DownloadURL, Kundennummer, Kennwort)

RaiseEvent``Thread\_Progress\_Changed(``Me``, 80,``"Temporärer Ordner vorbereiten..."``)

Dim``TempFolder =``My``.Computer.FileSystem.SpecialDirectories.Temp &``"\\AuftrV2\_IMdb"

IO.Directory.CreateDirectory(Folder)

'Datei entpacken

RaiseEvent``Thread\_Progress\_Changed(``Me``, 90,``"Datenbank extrahieren..."``)

DataStream.Position = 0

ExtractFile(DataStream, Folder)

RaiseEvent``Thread\_Completed(``Me``,``Nothing``)

Catch``ex``As``Exception

RaiseEvent``Thread\_Completed(``Me``, ex)

End``Try

End``Sub

Private``\_Thread``As``System.Threading.Thread

Public``Property``Thread``As``System.Threading.Thread``Implements``Styletronix.Threading.Thread\_Manager.IThread.Thread

Get

Return``Me``.\_Thread

End``Get

Set``(value``As``System.Threading.Thread)

Me``.\_Thread = value

End``Set

End``Property

Public``Event``Thread\_Completed(sender``As``Object``, Result``As``Object``)``Implements``Styletronix.Threading.Thread\_Manager.IThread.Thread\_Completed

Public``Event``Thread\_Log\_NewEntry(sender``As``Object``, Caption``As``String``, Message``As``String``, Exception``As``Object``, Status``As``System.Diagnostics.EventLogEntryType)``Implements``Styletronix.Threading.Thread\_Manager.IThread.Thread\_Log\_NewEntry

Public``Event``Thread\_Progress\_Changed(sender``As``Object``, Progress``As``Integer``, StatusText``As``String``)``Implements``Styletronix.Threading.Thread\_Manager.IThread.Thread\_Progress\_Changed

'Funktion zum Herunterladen von Dateien von einem Server per HTTP / HTTPs

Private``Shared``Function``DownloadFile(``ByVal``URL``As``String``,``ByVal``Benutzer``As``String``,``ByVal``Kennwort``As``String``)``As``IO.MemoryStream

Dim``wc``As``New``Net.WebClient

wc.Credentials =``New``System.Net.NetworkCredential(Benutzer, Kennwort)

Dim``data``As``Byte``() = wc.DownloadData(URL)

Dim``DataStream``As``New``IO.MemoryStream

DataStream.Write(data, 0, data.Length)

Return``DataStream

End``Function

'Funktion zum Extrahieren von Dateien aus ZIP-Archiv

Private``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.ZipEntry

objEntry = strmZipInputStream.GetNextEntry()

Do``While``Not``IsNothing(objEntry)

If``objEntry.IsFile``Then

Dim``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``Byte

Dim``size = strmZipInputStream.Read(buff, 0, buff.Length)

Dim``pos``As``Int64 = 0

Do``While``size > 0

file.Write(buff, 0, size)

size = strmZipInputStream.Read(buff, 0, buff.Length)

pos += size

Loop

file.Close()

End``If

objEntry = strmZipInputStream.GetNextEntry()

Loop

strmZipInputStream.Close()

End``Sub

End``Class

End``Class

End``Namespace

  • Ursprungsdatei: beispiel_ingrammicro_artikelim.htm