Beispiele für komplette Abläufe in der Kasse mit ASQL-Makro. Einzelne ASQL-Befehle werden zu einer Kette als Makro zusammengefasst und Zeit gespart.
An der ATouch Kasse wird auf diese Art und Weise einem dynamischen Button eine Funktionalität zugeordnet, die der Kellner mit einem Tastendruck aufrufen kann.
In der POS API zählt ein ASQL-Makro als ein einziger Aufruf bei der Einhaltung des Limits der Third Party API
LINK: access resources /Zugriff auf Ressourcen Third Party API
Verkettung und Trennzeichen
Alle ASQL-Befehle werden mit einem Semikolon _ ; _ beendet. Für die Verkettung werden die einzelnen Befehle hintereinander geschrieben, mit jeweils diesem Semikolon. Es steht auch am Ende des gesamten Makro, zusätzliche Zeichen werden nicht benötigt. Das ASQL-Makro ist eine Zeichenkette <string>, Leerzeichen sind zu besseren Lesbarkeit möglich, es dürfen aber keine Sonderzeichen genutzt werden.
Grenzen der Verkettung
Nicht alle ASQL-Befehle können in einem einzigen ASQL-Makro zusammengefasst werden.
- Verkaufsangebot:
Bevor die in der jeweiligen Situation verfügbaren Verkaufsartikel abgefragt werden können, muss ein Kellner an einem Terminal angemeldet sein und ein Tisch geöffnet. Erst dann steht der dynamische Verkaufsartikel zur Verfügung und kann durchsucht werden.
LINK ASQL - Bestelldaten suchen (dynamisch). - bestellte Artikel am Tisch:
Auf dem Tisch sind keine Artikel, bevor eine Bestellung durchgeführt wurde. Erst danach kann abgefragt werden, welche ID von LINA POS vergeben und im Journal registriert wurden.
LINK: ASQL - Bonieren und Bestellen - Teilzahlung:
Für die Berechnung der Teilsummen für verschiedene Gäste muss der Tisch gesplittet werden. Danach sind auf dem gesplitten Tisch die Artikel und Belege verfügbar
LINK: ASQL - Tische und Split
Execution Codes von ASQL-Makros
Ein Makro wird schrittweise ausgeführt. Der Execution Code wird gespeichert und der nächste Befehl folgt und der Execution Code wird überschrieben.
Bei erfolgreicher Ausführung des gesamten Makros wird der Execution Code des letzten Befehls zurückgegeben. Bricht das Makro wegen eines Fehlers ab, wird nur der Execution Code dieses letzten Befehls zurückgegeben.
In die Entwicklung von Makros werden die ASQL-Befehle einzeln übergeben, bis sichergestellt ist, dass die Kette in jeder Situation (Startumgebung und Konfiguration) funktioniert.
Voraussetzungen zu den Beispielen
Das Terminal oder die Webkasse hat die Seriennummer 1234. Als PIN des Kellners wird 999 angenommen.
Artikel bonieren
Der klassische Workflow an jedem Kassenplatz. Der Kellner kommt zur Kasse, meldet sich an, öffnet einen Tisch, boniert einen Artikel, und meldet sich wieder ab. Dabei ist das Terminal schon gestartet und in Betrieb.
Beispiel bonieren:
INIT 999; // Anmelden des Kellners mit PIN 999
TABLE 1; BOOK PLU 123; // Öffnen von Tisch mit der Nummer 1 Bonieren des Artikels mit der Artikelnummer 123
INIT ; //Abmelden des Kellners
Anzeigen geöffneter Tische
Will ein Kellner den Tisch wechseln, werden nur die seine geöffneten Tische angezeigt
Beispiel eigene Tische des Kellners:
INIT 999; //Anmelden des Kellners mit PIN 999
TABLE; // Liste seiner Tische
Es wird eine XML-Struktur aller geöffneten Tische zurückgegeben, auf die der Kellner Zugriff hat. Zusätzlich werden Informationen wie der aktuelle Saldo ist oder der Zeitpunkt der letzten Aktion angezeigt.
<section name="table.list"> <dataset> <var key="table.lastbookdatetime">2017-02-15T11:37:43.000+01:00</var> <var key="table.firstbookdatetime">2017-02-15T11:37:42.000+01:00</var> <var key="type">table</var> <var key="table.number">5</var> <var key="table.balance">11.0</var> <var key="table.adults">2</var> <var key="table.infants">0</var> <var key="table.kids">0</var> <var key="waiter.number">999</var> <var key="waiter.name">Ebner Service</var> <action key="STANDARD">table 5;</action> </dataset>
Alternativ für einen Tischplan der geöffneten Tische
Beispiel Tischplan
TABLEINFO NOWAITER
Es werden Informationen ohne Rücksicht auf die Kellneranmeldung zurückgegeben, um z.B. in einem Tischplan anzuzeigen, welche Tische von welchem Kellner belegt sind.
Ausdrucken einer Rechnung
Um für einen Tisch eine Rechnung auszudrucken, kann die folgende Abfolge von Befehlen verwendet werden.
Beispiel Rechnungsdruck:
INIT 999; // Anmeldung
TABLE 1; FINANCE 20; PRINT 1;
// Macro Tisch 1 öffnen, auf Finanzweg 20 abschließen und Rechnung (Beleg 1) drucken
INIT; //Abmeldung
EBon als Rechnung
In der Kasse ist der EBon auf print 0 konfiguriert. In der Antwort auf print 0 ist dann der Link auf den EBon im Feld QR enthalten. Bei Aufruf des Link wird die Rechnung im PDF-Format ausgegeben.
<var key="qr">https://...../ebon/index/uuid/998899 <var>
Der EBon bleibt auf dem LINA Server für kurze Zeit gespeichert und wird dann gelöscht.
Beispiel EBon:
INIT 999; // Anmeldung des Kellners mit PIN 999
TABLE 1; BOOK PLU 3; FINANCE 20; PRINT 0;
// Macro Tisch 1 öffnen, Artikel 3 buchen und auf Finanzweg 20 abschließen.
// Die Rechnung (Beleg 1) auf Drucker 0 (Standarddrucker EBON) drucken.
INIT; //Abmeldung
Antwort Rechnung EBon:
<document name="screen" messageid="3000015"> <section name="status"> <dataset> <var key="terminal.number">3</var> <var key="terminal.status">open</var> <var key="terminal.tapster">inactive</var> <var key="organization.name">Gastro MIS DEMO</var> <var key="pricelevel.name">Standardpreis</var> <var key="pricelevel.number">1</var> <var key="site.number">0</var> <var key="situation.name">Gesamtbetrieb</var> <var key="execution.code">23600100</var> <var key="message.target">BILL</var> <var key="master">true</var> <var key="message.status">FINISH</var> <var key="qr">https://dev.amadeus360.de/extern/ebon/index/uuid/d76#######8cc0c9</var> <var key="profile.name">Standard</var> <var key="profile.number">1</var> <var key="profile.tendercountsplit">tfm</var> <var key="site.color">notset</var> <var key="terminal.name">Kasse Webservice</var> <var key="site.name">Gesamtbetrieb</var> <var key="situation.color">notset</var> <var key="organization.businessdate">21.09.2023</var> <var key="organization.currency">EUR</var> <var key="situation.number">0</var> <var key="execution.severity">I</var> <var key="execution.message">Rechnung 12,345 gedruckt.</var> <var key="organization.number">2571</var> <var key="waiter.name">Service</var> <var key="waiter.number">999</var> <var key="bill.number">2313</var> </dataset> </section> <section name="bill.list"/> </document>
Ausführen einer Funktion über Funktionsnummern
Viele Funktionen werden in LINA POS über Funktionsnummern und Parameter aufgerufen. Die möglichen Parameter werden von LINA POS zurückgegeben, wenn der Funktionsaufruf ohne Parameter erfolgt. Funktionsnummer, Funktionsname und Funktionsaufruf werden gelistet. Der vollständige Funktionsaufruf wird im action-Tag zurückgegeben.
<action key="STANDARD">#Funktion_mit_Parameter</action>
Beispiel Parameter für Tischjournal:
INIT 999; //Anmelden des Kellners
FUNC 81; //Journal aufrufen
Da es zwei Möglichkeiten gibt (komplettes Journal und Tischjournal), werden zwei Blöcke zurückgegeben:
<section name="function.list.details"> <dataset> <var key="type">function</var> <var key="function.number">1</var> <var key="function.name">Buchungsjournal</var> <action key="STANDARD">FUNC 81 1;</action> </dataset> <dataset> <var key="type">function</var> <var key="function.number">2</var> <var key="function.name">Tischjournal</var> <action key="STANDARD">FUNC 81 2;</action> </dataset> </section>
Beispiel Buchungsjournal:
FUNC 81 1;
Beispiel Tischjournal:
FUNC 81 2;
Bei einigen Funktionen sind bis zu 5 Eingaben nacheinander erforderlich, z.B. das Erstellen oder Einlösen von Gutschein bei externen Gutscheinanbietern.
Beispiel Gutscheineinlösung:
Beispiel für das Bonieren eines Menüs
Eine Menüzusammenstellung kann schrittweise im Dialog boniert werden oder durch Aufruf eines einzigen ASQL-Befehls mit den passenden Parametern in Anführungszeichen. ADDINFO ist base64 codiert, da es Sonderzeichen und Zeilenumbrüche enthalten kann. Im Beispiel wird zur Sicherheit auch der Preis mit angegeben.
Beispiel Menüzusammenstellung bonieren
BOOK MENU "3001|1x2100 PRICE 6.5 TYPE ARTICLE COURSE 1 ADDINFO ZGF0YTp0ZXh0L3BsYWluO2Jhc2U2NCxaSFZ5WTJnZ1oyVmljbUYwWlc0PQ==|1x5000 PRICE 3.1 TYPE ARTICLE COURSE 2|1x5015 PRICE 0 TYPE ARTICLE COURSE 3|1x1103 PRICE 1 TYPE ARTICLE COURSE 4 ADDINFO BASE64ENCODEDSTRING|1x400 PRICE 0 TYPE ARTICLE COURSE 5";
// Menüzusammenstellung 3001
// 1. Gang Artikel 2100 Anzahl 1 mit ADDINFO
// 2. Gang Artikel 5000 Anzahl 1
// 3. Gang Artikel 5015 Anzahl 1
// 4. Gang Artikel 1103 Anzahl 1 mit ADDINFO
// 5. Gang Artikel 400 Anzahl 1
Abrufen von Bestandsmengen eines Artikels
Der Befehl PLU #article gibt die Stammdaten des einen Artikels inklusive der Anzahl der verfügbaren Artikel aus.
Beispiel Bestandsmenge:
PLU 203;