Automatik-Skript Lager

Das Automatik-Skript Lager dient dazu, den Lagerbestand aller Artikel eines Automatik-Lagers zu bestimmen.

D.h. Das Skript wird für jedem einzelnen Artikel in der Artikelverwaltung und für jedes einzelne Automatik-Lager aufgerufen. So können Sie z.B. festlegen:

Wenn der Artikel einen VK über 5,-- Euro besitzt und einen Lagerbestand von > 5 Stück in unserem Lager xyz besitzt, dann erscheint dieser Artikel im Automatik-Lager abc.

Dies ist z.B. dann nützlich, wenn Sie einen Online-Shop oder ähnliches mit Artikeln füllen möchten.

Skript

Die Parameter des Skripts

zaehler

Diese Variable beginnt bei 1 und wird bei jeder weiteren zu berechenden Artikel um 1 erhöht.

Die können diese Variable verwenden um z.B. zu Testzwecken nur einen Artikel im Lager aufzunehmen.

y42Artikel

Das Objekt y42Artikel repräsentiert den Artikel-Datensatz, wie er sich aktuell innerhalb des Systems befindet. Es wird "rein zur Information" an das Skript übergeben.

Den Aufbau des Objekts entnehmen Sie bitte folgenden link.

Im Skript zur Verfügung stehende Befehle

Neben den "normalen" C#-Befehlen stehen Ihnen folgende weitere Befehle zur Verfügung:

Log(string text)

Schreibt den übergebenen Text in den Log. Sollte am Ende des Vorgangs mindestens ein Zeichen im Log stehen, erhalten die Empfänger des Monitorings eine Meldung vom yanis42-System. In dieser Nachricht steht dann der Log.

decimal? LagerBestand(lagerId)

Liefert den Bestand des Artikels innerhalb des übergebenen Lagers. Also z.B.

// Den Bestand des Artikels aus Lager mit der Id=7 übernehmen
var bestand = LagerBestand(7);

Die Id des Lagers wird Ihnen im Bearbeitungs-Dialog der Lager-Verwaltung angezeigt.

decimal? Preis(preisListenId, anzahl)

Liefert den Preis des Artikels innerhalb der übergebenen Preisliste (mit der übergebenen Anzahl).

Also z.B.

// Den Preis des Artikels aus der Preisliste mit der Id=1 übernehmen
var preis = Preis(1);

Die Id der Preisliste wird Ihnen im Bearbeitungs-Dialog der Preislisten-Verwaltung angezeigt.

Die Anzahl entspricht der Anzahl, für die dieser (Staffel-)Preis Gültigkeit besitzt. Dort übergeben Sie in der Regel den Inhalt der "übergeordneten" Variablen anzahl - oder Sie lassen den Wert weg, dann ist der Wert = 1.

decimal? ReferenzPreis(preisListenId, anzahl)

Liefert den Referenz-Preis des Artikels innerhalb der übergebenen Preisliste mit der übergebenen Anzahl.

Also z.B.

// Den Referenz-Preis des Artikels aus der Preisliste mit der Id=1 übernehmen
var referenzPreis = ReferenzPreis(1);

Die Id der Preisliste wird Ihnen im Bearbeitungs-Dialog der Preislisten-Verwaltung angezeigt.

Die Anzahl entspricht der Anzahl, für die dieser (Staffel-)Preis Gültigkeit besitzt. Dort übergeben Sie in der Regel den Inhalt der "übergeordneten" Variablen anzahl - oder Sie lassen den Wert weg, dann ist der Wert = 1.

decimal Rabatt(preisListenId, anzahl)

Liefert den Rabatt des Artikels innerhalb der übergebenen Preisliste mit der übergebenen Anzahl.

Also z.B.

// Den Rabatt des Artikels aus der Preisliste mit der Id=1 übernehmen
var preis = preis - Rabatt(1,1);

Die Id der Preisliste wird Ihnen im Bearbeitungs-Dialog der Preislisten-Verwaltung angezeigt.

Die Anzahl entspricht der Anzahl, für die dieser (Staffel-)Preis Gültigkeit besitzt. Dort übergeben Sie in der Regel den Inhalt der "übergeordneten" Variablen anzahl.

decimal OffeneBestellungen()

Liefert die Anzahl der Artikel zurück, für die noch eine Bestellung vorliegt, die noch nicht im Lager der Warenwirtschaft verarbeitet wurde.

Also z.B.

// Die noch nicht bearbeiteten Bestände abziehen
var bestand = bestand - OffeneBestellungen();
Vergessen Sie bitte **niemals** die offenen Bestellungen vom Bestand Ihren Warenwirtschafts-Lagers abzuziehen.
Dies wird sonst dazu führen, dass Sie **nicht mehr verfügbare** Artikel verkaufen.

Die Rückgabe des Skripts

Der von Ihnen berechnete Parameter bestand wird dem yanis42-System übergeben. Er bestimmt den Bestand des übergebenen Artikels im jeweiligen Lager.


Sollten Sie `null` zurück geben, so wird der aktuelle Datensatz **nicht in das Lager aufgenommen**. So können Sie z.B. verhindern, dass manche Artikel im Lager enthalten sind.<br>
Sollten Sie stattdessen `0` zurück geben, so ist der Artikel im Lager **enthalten** und hat einen Bestand von 0.<br>
Dies stellt z.B. dann einen Unterschied dar, wenn es sich bei dem berechneten Lager um einen Online-Shop handelt. Artikel mit einem Bestand von 0 sind dort z.B. enthalten (und damit auch sichtbar), können aber z.B. nicht bestellt werden. Artikel **ohne Bestand** hingegen erscheinen nicht im Shop.
Damit die **Automatik-Lager** berechnet werden können, ist es zwingend notwendig, dass das **yanis42-Modul** [System-Dienste](/yanis42/systemdienste) innerhalb Ihres **yanis42-Systems** installiert wurde.<br>
Dies übernimmt die Installation des [yanis42 Grundsystems](/yanis42/yanis42-grundsystem) für Sie.