Beispiel IngramMicro Artikelimport
Beispiel IngramMicro Artikelimport
Section titled “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
Quelle
Section titled “Quelle”- Ursprungsdatei: beispiel_ingrammicro_artikelim.htm