kasse library

Die Kasse am Tresen: Einstellungen, Warenkorb, Kassieren und Belege — gemeinsam von Browser-Kasse und App.

Zwilling von kasse/settings.ts bzw. client/receipts.ts im JS-Paket und von functions/kasse-settings-core.js im Backend. Die Golden-Datei fixtures/kasse-settings-standard.json hält die Standardwerte deckungsgleich.

Classes

AbschlussPruefung
Artikelgruppe
Kategorie der Kachel-Kasse.
Belegbediener
Bediener an einem Beleg.
Belegfilter
Belegzusammenfassung
Ein Beleg in der Liste — eine Zusammenfassung, kein vollständiger Beleg. Für Nachdruck oder Storno gehört der Beleg über RegisterReceiptClient.holen einzeln geholt.
Kachelbuchung
Ergebnis eines Kachelgriffs: der neue Korb und die betroffene Zeile.
KasseArtikel
Artikel, wie ihn die Kasse für Kacheln und Belegpositionen braucht.
KasseEinstellungenClient
KasseneckItem
KasseneckReceipt
KasseSettings
KasseSettingsBetrieb
Was für den ganzen Betrieb gilt (im Panel eingestellt).
KasseSettingsGeraet
Was nur für dieses Gerät gilt (in der Kasse selbst eingestellt).
Kassierrechnung
Alle Beträge des Kassiervorgangs auf einen Blick.
Kassierstand
Was der Kassier am Kassieren-Bildschirm eingestellt hat.
Kategorie
Korbzeile
Eine Anzeigezeile des Korbs: gebündelt (Menge × Preis) oder je Stück einzeln.
Mengenvorgabe
Position
Eine Position des laufenden Verkaufs.
Positionsentwurf
Was der Kassier eingegeben hat, bevor daraus eine Position wird.
RegisterReceiptClient
Stornoergebnis
Ergebnis eines Stornos: der neue, signierte Storno-Beleg, der Bezug zum Original und die verbliebenen Restmengen je Position.
Tagesgruppe
Warenkorb

Enums

BelegartFilter
KasseBelegAusgabe
KasseDruckerArt
sdp = Netzwerk über Epson Server Direct Print (der Drucker holt die Jobs vom Backend), netz = direkt per IP (ePOS), bt = Bluetooth, usb = Kabel.
KasseEinstellSchrift
KasseGroesse
KasseHoehe
KasseKachelstil
KasseKartenanbieter
Karte gibt es erst mit eingerichtetem Anbieter; extern = eigenes Terminal ohne Anbindung.
KasseKassierenModus
KasseKatpos
KasseLadeAuto
KasseLayout
KasseMenge
KassePapier
KasseRabatt
KasseSchnitt
KasseSchrift
KasseStil
KasseTgModus
KasseWasserzeichen
KasseZeichensatz
KeckPaymentMethod
Mengenregel
Mengenregel eines Artikels.
RabattArt
RegisterScope
Reichweite eines Rechts.
StornoStand
Storno-Stand eines Belegs. Ein unbekannter künftiger Wert gilt als StornoStand.offen — beim Lesen ist dieses Paket tolerant, die Grenze zieht ohnehin das Backend.
VatRate
ZahlungFilter
Zeitraum

Constants

hoechstbetragCent → const int
Obergrenze je Position: 100.000,00 €.
idHoechststellen → const int
Höchstzahl der Stellen, die eine Belegnummer hat.
kasseSaetzeReihenfolge → const List<double>
Steuersätze in der Reihenfolge, in der die Kasse sie zeigt.
kasseTastenAktionen → const List<String>
Aktionen der Kasse, die eine Taste bekommen können.
kasseTastenStandard → const Map<String, List<String>>
Tastenbelegung: Aktion → Tasten (Mod+F, Enter, Escape, F5 …; Mod = ⌘ auf dem Mac, Strg sonst).
ohneGruppeFarbe → const String
ohneGruppeId → const String
steuersaetze → const List<VatRate>
Die Steuersätze zur Wahl — häufige zuerst.
stornogruende → const Map<String, String>
Die Gründe, die das Backend annimmt — Schlüssel wie dort, Beschriftung für den Bildschirm. Reihenfolge wie im Katalog des Backends.
stornoReservierungMs → const int
Ab wann eine liegengebliebene Reservierung nicht mehr zählt (wie im Backend). Ohne diese Grenze bliebe eine Position für immer gesperrt, weil ein Abbruch irgendwann einmal eine Reservierung stehen ließ.
vorgabeSteuersatz → const VatRate
Der übliche Fall am Tresen.

Functions

abschlussPruefung({required KeckPaymentMethod zahlungsart, required int zuZahlen, required int? gegeben, required bool rueckgeldAn, required bool leer}) AbschlussPruefung
Darf abgeschlossen werden? Bar mit Rückgeld-Rechnung braucht genug Gegebenes.
alsEntwurf(KasseArtikel a) Positionsentwurf?
Was aus einer Kachel im Korb wird; null, wenn die Kachel nicht buchbar ist.
alsEuro(int cents) String
Betrag für den Schirm: „2,50 €".
bediener(List<Belegzusammenfassung> belege) List<String>
Bediener-Namen in der Liste, für den Filter — sortiert, ohne Doppelte.
belegartText(Belegzusammenfassung beleg) String
Lesbarer Name der Belegart — nie ein Rohwert.
belegPositionen(Warenkorb warenkorb, int rabatt) List<KasseneckItem>
Positionen für den Beleg: Korb plus Rabattzeilen (eine je Steuersatz).
belegSichtbar(Belegzusammenfassung beleg, RegisterScope reichweite, String eigeneUid) bool
Sieht dieser Kassier den Beleg überhaupt?
betragAusText(String text) int?
Betrag aus dem Eingabefeld in ganzen Cent — oder null.
gebucht(Warenkorb korb, Positionsentwurf entwurf, {required bool buendeln}) Kachelbuchung
Kachel in den Korb.
gefiltert(List<Belegzusammenfassung> belege, Belegfilter f) List<Belegzusammenfassung>
idNummer(String receiptId) String
Die Nummer aus einer vollen Beleg-Kennung — für die Anzeige „ID 809". Passt sie nicht auf das Muster, steht die Kennung selbst da; eine erfundene Nummer wäre schlimmer als eine lange.
kassierrechnung(Warenkorb warenkorb, KasseSettingsBetrieb betrieb, Kassierstand stand) Kassierrechnung
Die ganze Rechnung des Kassierens — Zwilling von kassierenRechnung der Browser-Kasse.
kategorien(List<Artikelgruppe> gruppen, List<KasseArtikel> artikel) List<Kategorie>
mengeErlaubt(KasseArtikel a, num gewuenscht) num
Deckelt eine gewünschte Menge an der Höchstmenge des Artikels.
mengenregelFuerEinheit(String? einheit) Mengenvorgabe
Vorgabe je Einheit — was der Betrieb bei einem neuen Artikel bekommt und ändern darf.
mengenVorgabe(KasseArtikel a) Mengenvorgabe
Wirksame Regel eines Artikels: die gespeicherte Angabe schlägt die Vorgabe der Einheit.
rabattCents(RabattArt art, num wert, int summe) int?
Rabatt in Cent aus der Eingabe; außerhalb von 0 … Summe gibt es keinen.
restmengen(KasseneckReceipt beleg, {int? jetzt}) List<int>
Restmenge je Position: Belegmenge minus alles, was storniert oder frisch reserviert ist; nie unter null.
rueckgeld(int zuZahlenCents, int gegebenCents) int
schnellbetraege(int zuZahlenCents) List<int>
Schnellwahl für „Gegeben": passend, der nächste runde Euro, dann Scheine.
steuersatzText(VatRate satz) String
Beschriftung eines Steuersatzes, wie sie am Tresen gelesen wird.
steuersatzZu(num rate) VatRate?
Der RKSV-Steuersatz zu einer Prozentzahl — oder null bei Unbekanntem.
stornoErlaubt(Belegzusammenfassung beleg, RegisterScope reichweite, String eigeneUid) bool
Darf dieser Beleg storniert werden?
suche(List<Kategorie> kategorien, String text) List<KasseArtikel>
Suche über alle sichtbaren Kacheln (Name, ohne Groß/Klein, Teilwort).
tagesgruppen(List<Belegzusammenfassung> belege) List<Tagesgruppe>
Nach Wiener Kalendertag gruppiert, neueste zuerst.
textAuf(String hex) String
Kontrastfarbe für Text auf voller Kachelfläche. Eine kaputte Farbe bekommt hellen Text statt eines Absturzes.
uhrzeit(String zeitstempel) String
Uhrzeit eines Belegs in Wiener Wanduhrzeit (HH:MM).
ustCents(int brutto, num satz) int
Enthaltene MwSt aus dem Bruttobetrag (ganzzahlig, wie im Backend).
ustSumme(Warenkorb warenkorb) int
verteileRabatt(List<KasseneckItem> positionen, int rabattCents, {String name = 'Rabatt'}) List<KasseneckItem>
Rabatt als negative Position(en) — eine je Steuersatz, anteilig zum Bruttoumsatz dieses Satzes.
volleId(String cashregisterId, String nummer) String?
Aus der getippten Nummer die volle Kennung; null, wenn keine Ziffer dabei ist. Der Kassier tippt nur die Nummer — das Kassenkürzel steht ohnehin fest.
wienDatum(DateTime zeitpunkt) String
Der Wiener Kalendertag eines Zeitpunkts als YYYY-MM-DD.
zahlungsarten(KasseSettingsBetrieb betrieb) List<KeckPaymentMethod>
Welche Zahlungsarten der Betrieb anbietet — nie keine (dann Bar).
zeitfenster(Zeitraum zeitraum, [DateTime? jetzt]) → ({String bis, String von})
von/bis (Wiener Wanduhr, YYYY-MM-DD) für den Zeitraum.
zuZahlen(Warenkorb warenkorb, int rabatt) int
Zu zahlen nach Rabatt — nie unter null.

Typedefs

Stornoposition = ({int index, int menge})
Eine Position, die storniert werden soll.