Generiere Barcodes

Ereignisaktion - Kurzfassung

Zweck: Befüllt Barcode-Attribute von Positionen eines Allgemeinen Geschäftsobjekts mit Werten aus einem Nummernkreis. Optional wird dabei die Anzahl der Barcode-Attribute innerhalb einer Position mit der "Anzahl Packstücke" derselben Position synchronisiert, indem ggf. Barcode-Attribut hinzugefügt oder entfernt werden.

Siehe auch: Generiere Barcodes (Bestellung), Generiere Barcodes (Sendung)

images/download/attachments/78255453/image2021-8-10_10-29-40-version-1-modificationdate-1628584182624-api-v2.png

Hintergrund zu Barcode-Attributen

Auf der Positionsebene von Geschäftstransaktionsobjekten können über das "Barcode-Attribut" als Mehrfachattribut ggf. mehrere Attribut-Instanzen mit den Feldern "Barcode" (barcode) und "Barcode-Referenz" (barcodeReference) zugewiesen werden. Dieselbe Position kann also über mehrere Barcode-Werte verfügen.

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Innerhalb der Barcode-Attribut-Instanzen für eine bestimmte Position darf es keine Duplikate für den Wert im Feld "Barcode" geben, sonst scheitert das Speichern des Geschäftstransaktionsobjekts mit einem Fehler.
Dies gilt auch dann, wenn für mehrere Barcode-Attribut_Instanzen derselben Postion das "Barcode"-Feld leer ist.

Die Ereignisaktion Generiere Barcodes (Allgemeines Geschäftsobjekt) kann eingesetzt werden, um durch das Befüllen jedes leeren "Barcode"-Felds mit eindeutigen Werten aus einem Nummernkreis Eindeutigkeit der Barcodes zu wahren. Über eine Ereignisbehandlung, die auf die auslösenden Ereignisse "Erstellen" und/oder "Ändern" (s. Allgemein (Ereignisse)) reagiert, können beim Klick auf "Speichern" fehlende Barcodes noch rechtzeitig vor dem Abschluss der Transaktion ergänzt werden.

Die Ereignisaktion Generiere Barcodes (Allgemeines Geschäftsobjekt) erzeugt über einen bestimmten Nummernkreistyp (s. Nummernkreise) Barcodes, um diese "leeren" Instanzen von Barcode-Attributen von relevanten Positionen eines Bezugsobjekts vom Typ Allgemeines Geschäftsobjekt als "Barcode" (barcode) zuzuweisen.

Relevante Positionen können alternativ mit einer der folgenden Methoden definiert werden:

  • Der Parameter Positionen erlaubt eine explizite Definition der relevanten Positionen über einen Wertauflöser, der eine Liste von Positionen liefert (z. B. Direkte Positionen und/oder Regel-Listen Resolver).

  • Der Parameter Positionstypen definiert per Mehrfachauswahl einen oder mehrere Positionstypen (s. Positionstyp). Sämtliche Positionen, die einem ausgewählten Positionstyp angehören, gelten pauschal als relevante Positionen.

  • Liegen für keinen dieser Parameter Angaben vor, gelten pauschal sämtliche Positionen mit dem Positionstyp "Standard" (DEFAULT) als relevant.

Alle relevanten Positionen werden nach dem folgenden Schema verarbeitet:

  1. Ist die Option Mit Anzahl Packstücke synchronisieren in der Ereignisaktion Generiere Barcodes (Allgemeines Geschäftsobjekt) ausgewählt, wird die Anzahl der Barcode-Attribut-Instanzen innerhalb der Position auf die "Anzahl Packstücke" (numberOfPackages) abgestimmt:

    1. Enthält die Position aktuell mehr Barcode-Attribut-Instanzen als das Feld "Anzahl Packstücke" angibt, dann werden "überzählige" Instanzen des Barcode-Attributs am Ende der Liste entfernt. Ob diesen bereits Barcodes zugewiesen sind, spielt dabei keine Rolle.

    2. Enthält die Position aktuell weniger Barcode-Attribut-Instanzen als das Feld "Anzahl Packstücke" angibt, dann werden der Liste am Ende zusätzliche Instanzen des Barcode-Attribute hinzugefügt.

  2. Allen in der Position enthaltenen Barcode-Attribute, deren Feld "Barcode" (barcode) leer ist, wird abhängig vom angegebenen Nummernkreistyp ein automatisch erzeugter Wert zugewiesen.

HINWEIS◄ Welcher der für den ausgewählten Nummernkreistyp konfigurierten Nummernkreise herangezogen wird, um Barcode-Werte zu erzeugen, entscheidet hängt von der Auswertung von deren Zuordnungskriterien nach dem best-matching-Prinzip ab.

WICHTIG◄ Falls für den Aufrufkontext kein Nummernkreis für den Nummernkreistyp zugeordnet wird oder der zugeordnete Nummernkreis keine Werte mehr liefert, werden einige oder alle "Barcode"-Felder nicht befüllt. Sollten dadurch Barcode-Duplikate für dieselbe Position auftreten, tritt kann das Bezugsobjekt in diesem Zustand nicht gespeichert werden (s. "Hintergrund", oben).

Konfiguration

Die Ereignisaktion Generiere Barcodes (Allgemeines Geschäftsobjekt) erwartet als Bezugsobjekt ein Allgemeines Geschäftsobjekt. Im Kontext eines anderen Objekttyps ist die Ereignisaktion wirkungslos, ohne dass zur Laufzeit ein Fehler auftritt.

Die Auswahl für den Parameter Nummernkreistyp (Pflichtfeld) regelt, welche Nummernkreise als Kandidaten zum Erzeugen von Barcode-Werten in Frage kommen. Die Auswahl erfolgt per Zuordnung nach dem best-matching-Prinzip (s. Zuordnungskriterien).

Die Option Mit Anzahl Packstücke synchronisieren kann ausgewählt werden, um für alle relevanten Positionen sicherzustellen, dass die Anzahl der Barcode-Attribut-Instanzen exakt mit der "Anzahl Packstücke" (numberOfPackages) der Position übereinstimmt. Ausgehend von der gegebenen "Anzahl Packstücke" Positionen werden zu diesem Zweck bei Bedarf "überzählige" Barcode-Attribut-Instanzen entfernt bzw. "fehlende" hinzugefügt und automatisch mit einem Barcode-Wert aus dem anwendbaren Nummernkreis belegt.

Per Standard ist die Option Mit Anzahl Packstücke synchronisieren abgewählt. Dann wird das "Barcode"-Feld - sofern leer - nur für Barcode-Attribut-Instanzen gefüllt, die in den volatilen Daten des Bezugsobjekts bereits existieren.

images/download/attachments/78255453/image2021-8-10_10-29-40-version-1-modificationdate-1628584182624-api-v2.png

Der Parameter Positionen kann verwendet werden, um über einen Wertauflöser relevante Positionen explizit zu definieren, deren Barcode-Attribute durch die Ereignisaktion bearbeitet werden sollen.

  • Im Beispiel rechts werden über den Wertauflöser Direkte Positionen alle direkten Positionen für den Positionstyp "Service" ermittelt.

    HINWEIS◄ Das Ergebnis für die Auswahl der relevanten Positionen ist nur dann identisch mit der Auswahl von "Service" im Parameter Positionstypen (s. unten), wenn das Bezugsobjekt für diesen Positionstyp keine Unterpositionen beinhaltet. Ansonsten werden Unterpositionen nicht verarbeitet, da der Wertauflöser Direkte Positionen diese nicht auflistet.

  • Sobald ein Wertauflöser für den Parameter Positionen konfiguriert wird, erscheint der Parameter Positionstypen deaktiviert. Er wird nur dann wieder aktiv, wenn der Wertauflöser im Parameter Positionen entfernt wird.

  • Der Parameter kann nur konfiguriert werden, wenn noch keine Positionstypen (s. u.) ausgewählt sind.

images/download/attachments/78255453/image2021-8-20_17-59-57-version-1-modificationdate-1629475199945-api-v2.png

Alternativ kann der Parameter Positionstypen verwendet werden, um relevante Positionen, deren Barcode-Attribute durch die Ereignisaktion bearbeitet werden sollen, pauschal über ihren Positionstyp zu definieren.

  • Im Beispiel rechts wurde der Positionstyp "Standard" bereits ausgewählt. Zusätzlich soll der Positionstyp "Service" ausgewählt werden, der im Bild über die Suchfunktion der Multi-Combobox nachgeschlagen wurde. Über die Eingabetaste oder per Klick auf das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg -Symbol muss diese Auswahl noch bestätigt werden.

  • Eine Auswahl für Positionstypen ist nur möglich, wenn unter Positionen keine explizite Definition der relevanten Positionen konfiguriert ist.

  • Sobald eine Auswahl für einen oder mehrere Positionstypen vorgenommen wird, erscheint die Konfiguration für den Parameter Positionen deaktiviert.

HINWEIS◄ Nur wenn weder eine Konfiguration unter Positionen noch eine Auswahl unter Positionstypen vorliegt, gelten pauschal alle Positionen mit dem Positionstyp "Standard" (DEFAULT) als relevant.

images/download/attachments/78255453/image2021-8-20_18-16-12-version-1-modificationdate-1629476175203-api-v2.png

Beispiel

Einfaches Beispiel

Beim Speichern eines Allgemeinen Geschäftsobjekts soll auf Positionsebene für den Positionstyp "Standard" automatisch ein Barcode-Attribut für jedes Packstück generiert und mit einem Wert aus einem dafür eingerichteten Nummernkreis gefüllt werden.

Wie der folgende Screenshot verdeutlicht, lässt die Erfassungsmaske Änderungen an der "Anzahl Packstücke" einer Position zu. Außerdem können neuen Positionen per images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg hinzugefügt und per images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/forbidden.svg entfernt werden,

images/download/attachments/78255453/image2021-8-20_18-34-4-version-1-modificationdate-1629477246886-api-v2.png

  • Bereits generierte Barcodes erscheinen im Feld "Barcode" schreibgeschützt. Allerdings kann eine bestehende Barcode-Attribut-Instanz insgesamt per Klick auf das zugehörige images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/forbidden.svg -Symbol wieder gelöscht werden.

  • Die Anzahl der Barcode-Attribut-Instanzen je Position kann also von der "Anzahl Packstücke" abweichen. Vor dem "Speichern" sollen daher ggf. überzählige Barcode-Attribute gelöscht und fehlende ergänzt werden.

Konfiguration:

Innerhalb einer Ereignisbehandlung, die auf das "Erstellen" und "Ändern" eines Allgemeinen Geschäftsobjekts (Typprüfung) reagiert, kann eine der folgenden Konfigurationen für die Ereignisaktion Generiere Barcodes (Allgemeines Geschäftsobjekt) verwendet werden:

Variante 1

Variante 2

Variante 3

images/download/attachments/78255453/image2021-8-20_18-43-25-version-1-modificationdate-1629477807735-api-v2.png

images/download/attachments/78255453/image2021-8-20_18-43-52-version-1-modificationdate-1629477834688-api-v2.png

images/download/attachments/78255453/image2021-8-20_18-46-23-version-1-modificationdate-1629477985691-api-v2.png

  • Variante 1: Die relevanten Positionen (alle Standard-Positionen) werden aufgrund der Standard-Regelung für keine Konfiguration unter Positionen und keine Auswahl für Positionstypen pauschal ermittelt.

  • Variante 2: Die relevanten Positionen (alle Standard-Positionen) werden aufgrund der Auswahl von "Standard" unter Positionstypen pauschal ermittelt.

  • Variante 3: Die relevanten Positionen (alle direkten Standard-Positionen) werden über den Wertauflöser vom Typ Direkte Positionen explizit ermittelt.
    ANMERKUNG◄ Variante 3 ist mit den anderen Varianten nur für Bezugsobjekte gleichzusetzen, die keine Unterpositionen für Standard-Positionen verwenden.

Laufzeitbeispiel:

Ausgehend vom im Screenshot oben gezeigten Datenstand für ein Allgemeines Geschäftsobjekt ergibt sich nach dem Speichern folgendes Bild:

vor dem Speichern

nach dem Speichern

images/download/attachments/78255453/image2021-8-20_18-34-4-version-1-modificationdate-1629477246886-api-v2.png

images/download/attachments/78255453/image2021-8-20_20-25-0-version-1-modificationdate-1629483903742-api-v2.png

  • Es existieren noch keine Barcode-Attribute.

  • Passend zur "Anzahl Packstücke" wurden Barcode-Attribute ergänzt und aus dem adressierten Nummernkreis befüllt.

Das mit Barcodes angereicherte Allgemeine Geschäftsobjekt wird nun noch einmal so überarbeitet:

vor dem Speichern

nach dem Speichern

images/download/attachments/78255453/image2021-8-20_20-27-58-version-1-modificationdate-1629484081947-api-v2.png

images/download/attachments/78255453/image2021-8-20_20-29-24-version-1-modificationdate-1629484167381-api-v2.png

  • Die Anzahl Packstücke je Position wird einheitlich auf 2 eingestellt.

  • Der Barcode der ersten Position wird per Klick auf images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/forbidden.svg entfernt.

  • In Position 1 wurde eine Barcode-Attribut-Instanz ergänzt. Beide Barcodes wurden neu zugewiesen.

  • Position 2 ist unverändert.

  • In Position 3 wurde die letzte Position entfernt.

Komplexeres Beispiel

Ausgehend vom obigen "Einfachen Beispiel" sollen im Allgemeinen Geschäftsobjekt neben den "Standard"-Positionen auch "Service"-Positionen angelegt werden können.

Auch die "Service"-Positionen sollen automatisch mit Barcodes über denselben Nummernkreistyp ("Barcode") versehen werden. Allerdings mit einer etwas abweichenden Logik:

  • Für die "Service"-Position ist keine Pflege für die "Anzahl Packstücke" vorgesehen.

  • Eine "Service"-Position soll wahlweise keinen, einen oder mehrere Barcodes erhalten, abhängig davon wie viele Instanzen der Benutzer vor dem Speichern interaktiv anlegt.

  • Beim Speichern soll allen Barcode-Attribut-Instanzen in "Service"-Positionen ein automatisch ein Barcode zugewiesen werden, WENN das Textattribut "Service Code" der Position ausgefüllt wurde.

  • Ohne "Service Code" soll der "Service"-Position keine Barcode-Attribut-Instanz hinzugefügt werden können.

  • Beim Entfernen des "Service-Codes" in einer Position sollen bestehende Barcode-Attribut-Instanzen gelöscht werden.

Laufzeitbeispiel:

  • Für die "Service"-Position SER1 wurden zwei Barcodes angefordert.

  • Der "Service"-Position SER2 soll genau ein Barcode zugewiesen werden.

  • Die "Service"-Position SER3 soll keinen Barcode erhalten. Hier wurde nicht das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg Symbol gedrückt. Deshalb erscheint das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/forbidden.svg Symbol inaktiv und die Beschriftung "Barcode" schwarz nicht weinrot.

  • Für die "Service"-Position SER4 wurde kein "Service Code" angegeben. Daher kann keine Barcode-Attribut-Instanz hinzugefügt werden.

images/download/attachments/78255453/image2021-8-20_20-46-25-version-1-modificationdate-1629485188697-api-v2.png

HINWEIS◄ Die Symbole images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg und images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/forbidden.svg in der letzten Position betreffen das Hinzufügen/Entfernen einer Position und nicht einer Barcode-Attribut-Instanz.

Konfiguration:

In der Ereignisbehandlung aus dem vorigen Beispiel wird eine weitere Instanz der Ereignisaktion Generiere Barcodes (Allgemeines Geschäftsobjekt) ergänzt und wie rechts abgebildet parametriert:

  • Als Nummerkreistyp wird wie oben der Typ "Barcode" ausgewählt.

  • Die Option Mit Anzahl Packstücke synchronisieren wird abgewählt, da nur bestehende Attribut-Instanzen verarbeitet werden sollen.

  • Der Wertauflöser vom Typ Eingabeobjekt (Typsicher) dient dazu den Typ des Bezugsobjekts innerhalb der Konfiguration für Positionen zu deklarieren.

  • Der verkettete Wertauflöser vom Typ Direkte Positionen liefert alle direkten Positionen vom Positionstyp "Service".

  • Der Regel-Listen Resolver darunter "filtert" diese Liste auf die Teilmenge der Position, für die das Textattribut "Service Code" nicht leer ist. Dazu wird die Option Alle Werte als Liste ausgewählt und danach eine Objekt-Feld-Regel verwendet, die das Feld "Text" (textValue) gegen not(Ist leer) prüft.

ANMERKUNG◄ Der Regel-Listen Resolver kann auf verwendet werden, um komplexere "Filter" zu definieren. Anstelle Direkte Positionen kann auch das Feld lineItems des Bezugsobjekts verwendet werden. Dann kann die Ergebnisliste auch Positionen mit unterschiedlichem Positionstyp enthalten.

images/download/attachments/78255453/image2021-8-20_21-4-6-version-1-modificationdate-1629486249636-api-v2.png

Laufzeitbeispiel:

vor dem Speichern

nach dem Speichern

images/download/attachments/78255453/image2021-8-20_20-46-25-version-1-modificationdate-1629485188697-api-v2.png

images/download/attachments/78255453/image2021-8-20_21-27-19-version-1-modificationdate-1629487642656-api-v2.png

  • Je Position sind beim Speichern mehrere (SER1), eine (SER2) oder keine (SER3, SER4) Barcode-Zuweisungen zu erwarten.

  • Beim Speichern wurden nur die "angeforderten" Barcodes in die Attribut-Instanzen eingetragen.

In derselben Erfassungsmaske können beide Positionstypen gleichzeitig und buchstäblich "nebeneinander" verwendet werden:

images/download/attachments/78255453/image2021-8-20_21-31-18-version-1-modificationdate-1629487881049-api-v2.png