Interfaces

Navigation:  Skripts > Programmerweiterungen >

Interfaces

Previous pageReturn to chapter overviewNext page

Einführung

Dieses Interface wird für die Lagerstandabfrage von Artikeln benötigt. Wird im Kontextmenü eines Artikels die Liste "Lagerstand" aufgerufen, werden alle Skripts aus dem Autostart-Ordner nach diesem Interface durchsucht und die entsprechenden Funktionen aufgerufen. Das IRealtimeLagerstand Interface ist für erweiterte Lagerabfragen gedacht, die auch mehrere Lager gleichzeitig abfragen können. Sämtliche Asynchronen Vorgänge müssen im Skript selbst erstellt werden, da die Hauptanwendung sonst während der Abfrage nicht mehr reagiert.

 

Für einfache Abfragen ist das Interface Ilagerstandabfrage entwickelt worden.

 

Ablauf

1.Der Skript wird beim starten der Auftragsverwaltung kompiliert und verbleibt im Arbeitsspeicher bis die Anwendung beendet wird.
2.Ein User wählt einen Artikel aus und geht im Kontextmenü mit der Maus auf "Lagerstand"
3.Die Funktion BeginRequest() wird ausgeführt und die Artikeldaten wie Artikelnummer, Artikelnummer1-9 usw. werden als Artikeldaten übergeben. Zusätzlich wird noch eine ReferenzID übermittelt. Diese muss bei Rückmeldung der Ergebnisse mit ausgegeben werden um Anfrage und Rückmeldung zuordnen zu können.
4.Der Skript kann nun den Lagerstand oder auch mehrere Lagerstände laden und anschließend für jedes Lager das Ereignis RequestCompleted() aufrufen.
5.Jeder Aufruf des Ereignisses RequestCompleted() fügt eine neue Zeile in die Lagerliste ein. Einträge können einen Tag enthalten. Dieser ist nur für das Skript erforderlich, falls dieses auf die Lagerinfo_Clicked() Funktion reagieren möchte. Der Tag wird dabei zur Identifizierung des Eintrags verwendet.
6.Die Funktion CancelRequest() wird ausgeführt, sobald die Lagerliste ausgeblendet wird. Der Skript sollte dann keine weiteren Daten durch das Ereignis  RequestCompleted() liefern.

 

Wichtige Hinweise

Der Skript bleibt während der gesamten Laufzeit der Auftragsverwaltung aktiv.
Es können mehrere BeginRequest, CancelRequest oder Lagerinfo_Clicked Ereignisse parallel in beliebiger Reihenfolge auftreten. Anfragen für einzelne Artikel können anhand der ReferenzID unterschieden werden.
Die Funktion BeginRequest wird im Thread der Hauptanwendung ausgeführt. Die Anwendung wird also nicht reagieren, bis die Abfrage beendet ist. Aus diesem Grund sollte BeginRequest  verwendet werden, um einen Asynchronen Vorgang zu starten. Das Event RequestCompleted muss im Thread der Hauptanwendung ausgeführt werden. z.B. durch Verwendung von Host des ICommonPlugIn-Interface.

Host.Invoke(Sub()

RaiseEvent RequestCompleted …

End Sub)

 

Interface

Assembly: Styletronix.AuftragsverwaltungV2.IPC

 

Public Interface IRealtimeLagerstand

    Inherits ICommonPlugIn

 

    Structure LagerRequestArgs

        Dim Artikeldaten As Dictionary(Of String, String)

        Dim ReferenzID As Int64

    End Structure

 

    Structure LagerRequestResult

        Dim ReferenzID As Int64

        Dim Lagerstand As String

        Dim Lager As String

        Dim Datum As DateTime

        Dim Tag As Object

        Dim Ex As Exception

    End Structure

 

    Structure CancelRequestArgs

        Dim ReferenzID As Int64

    End Structure

 

    Structure LagerInfoClickedArgs

        Dim Lager As String

        Dim ReferenzID As Int64

    End Structure

 

    Structure BeginLagerRequestResult

        Dim Lager As List(Of String)

    End Structure

   

    Function BeginRequest(ByVal sender As Object, ByVal e As LagerRequestArgs) As BeginLagerRequestResult

    Sub CancelRequest(ByVal sender As Object, ByVal e As CancelRequestArgs)

    Sub Lagerinfo_Clicked(ByVal sender As Object, ByVal e As LagerInfoClickedArgs)

    ReadOnly Property ReferenzID As Int64

    Event RequestCompleted(ByVal sender As Object, ByVal e As LagerRequestResult)

End Interface

 

 

Mögliche Keys für Artikeldaten

Artikelnummer

Artikelnummer2

Artikelnummer3

Artikelnummer4

Artikelnummer5

Artikelnummer6

Artikelnummer7

Artikelnummer8

Artikelnummer9

GlobalID

Lagerplatz

Lieferant (Name aus Feld Name1)

Artikelnummer_Lieferant