pos 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/pos-settings-defaults.json hält die Standardwerte deckungsgleich.

Classes

AfterCount
Entnehmen oder Einlegen nach dem Zaehlen: amountCents immer positiv, die Richtung sagt type (aus afterCountTypes). Gezaehlt wird immer die ganze Lade; was danach bleibt, steht in leftInDrawerCents (Schicht, Z-Bon). Dient auch als Parameter von closeMyShift.
ArticleGroup
Kategorie der Kachel-Kasse.
CancellationOf
Bezug eines Storno-Belegs auf sein Original (cancellationOf).
CancelReceiptResult
Ergebnis eines Stornos: der neue, signierte Storno-Beleg, der Bezug zum Original und die verbliebenen Restmengen je Position.
Cart
CartItemDraft
Was der Kassier eingegeben hat, bevor daraus eine Position wird.
CartLine
Eine Anzeigezeile des Korbs: gebuendelt (Menge × Preis) oder je Stueck einzeln.
CashMovement
CashMovementReceipt
Bon-Daten einer Kassenbewegung; Druck mit cashMovementLayout.
CashMovementResult
Antwort von recordMyCashMovement.
CashregisterAutoLogout
Automatisches Abmelden an der Kasse (autoLogout in listMyCashregisters). Beide Werte sind einzeln optional: der Server sendet nur, was die Kasse selbst gesetzt hat.
CashregisterEntry
Eine Kasse aus listMyCashregisters (Draht /v3). Zeitpunkte bleiben Text (ISO, UTC); ein fehlender ist null, nie ein erfundenes Datum.
CashregisterOnboarding
Stand der Inbetriebnahme (RKSV): bei FinanzOnline registriert, Startbeleg erzeugt und übermittelt.
CashregisterStockLocation
Antwort von setMyCashregisterStockLocation.
CheckoutState
Was der Kassier am Kassieren-Bildschirm eingestellt hat.
CheckoutTotals
Alle Beträge des Kassiervorgangs auf einen Blick.
CompletionCheck
DrawerInfo
DrawerOpening
Eine gemeldete Oeffnung der Lade (nur mit cashView).
DrawerOpeningEntry
Eine Oeffnung der Lade, wie die Kasse sie puffert und meldet.
DrawerOpeningOperator
Wer die Lade oeffnete (gepufferte Oeffnung): der damals angemeldete Mitarbeiter. Der Server nimmt ihn nur, wenn er zum Betrieb gehoert und der Kasse zugewiesen ist, den Namen aus dem Konto; sonst gilt der sendende Benutzer.
DrawerOpeningsResult
Antwort von logMyDrawerOpenings.
DrawerRights
Die vier Rechte des angemeldeten Benutzers an der Lade.
DrawerState
Stand der Lade fuer die Kasse: Lade, Rechte, Schicht und was das Recht cashView zeigt.
ErrorRule
Eine Regel: fuer eine Art (und optional bestimmte Codes oder einen Ausgang) entweder ein Satz des Katalogs (key) oder ein Verhalten (behavior).
FieldError
Ein Feldfehler aus details.errors[] einer validation-Antwort.
KasseneckItem
KasseneckReceipt
KeckPayment
Eine Zahlung am Beleg — Zwilling von ReceiptPayment in @kreiseck/kasseneck-api (models/receipt-payment.ts) und der Eintraege, die functions/gemeinsam/zahlungen-core.js unter payments ablegt.
KeckPaymentInput
Eine Zahlung, wie der Aufrufer sie an sellReceipt/sell/ cancel schickt – Zwilling von ReceiptPaymentInput. id und changeCents vergibt der Server.
KeckTip
Trinkgeld auf einem Beleg.
KeckTipPerson
Eine Person, der sich Trinkgeld zuweisen lässt.
KeckTipRecipient
Ein Trinkgeld-Empfänger: ein Kassen-Benutzer und sein Anteil.
KeckVoucher
Gutschein am Beleg bzw. Gutscheinwunsch an createReceipt. Zwilling von Voucher im npm-Paket.
NetworkPrinter
Ein Netzwerk-Drucker des Kontos (listMyPrinters).
NonCashAmount
OpenShiftResult
Antwort von openMyShift.
PosArticle
Artikel, wie ihn die Kasse für Kacheln und Belegpositionen braucht.
PosBusinessSettings
Was für den ganzen Betrieb gilt (im Panel eingestellt).
PosColor
PosDeviceSettings
Was nur für dieses Gerät gilt (in der Kasse selbst eingestellt).
Position
Eine Position des laufenden Verkaufs.
PosPrinterClient
Drucker und Druckjobs über die laufende Kassen-Sitzung.
PosSettings
PosSettingsClient
PosSettingValue
Gemeinsame Sicht auf die Aufzählungen der Einstellungen: value ist der Wert am Draht.
PosText
Ein Eintrag des Katalogs.
PosThemeData
PosVoucherSettings
Gutschein-Einstellung der Kasse (Block vouchers aus getKasseSettings).
PrintJob
PrintResult
Ergebnis eines Drucks, wie der Drucker es meldet.
QuantityDefaults
ReceiptDayGroup
ReceiptFilter
ReceiptOperator
Bediener an einem Beleg.
ReceiptSummary
Ein Beleg in der Liste — eine Zusammenfassung, kein vollstaendiger Beleg. Fuer Nachdruck oder Storno gehoert der Beleg ueber RegisterReceiptClient.get einzeln geholt.
RegisterReceiptClient
RegistrationInfo
Registrierdaten fuer den Block „Prüfangaben“ am Nullbeleg (Regelwerk 2): wann die Signaturkarte und wann die Kasse bei FinanzOnline registriert wurden. Zwilling von RegistrationInfo in @kreiseck/kasseneck-api 1.0, Drahtfeld registrationInfo (frueher pruefangaben).
SendReceiptEmailResult
Was das Backend ueber einen erfolgten Versand sagt.
Shift
Eine Schicht. Die Felder nach „Nur mit cashView“ sind null, wenn der Server sie nicht sendet (kein Recht); null heisst dort „nicht gesendet“ oder „es gibt (noch) keinen Wert“ – nie 0. Ohne das Recht shift sendet der Server von einer offenen Schicht nur die Grunddaten (id, drawerId, cashregisterId, number, status, openedAt, openedBy); alles andere ist dann null, auch openingFloatTakenOver.
ShiftActor
Wer gehandelt hat: Kassen-Benutzer (register_user), Inhaber (owner, Panel) oder Admin.
ShiftCloseResult
Ergebnis von closeMyShift: recount = bitte noch einmal zaehlen (kein Fehler), ready = nur geprueft (checkOnly), Schliessen mit diesem Betrag ginge, sonst geschlossen mit Z-Bon in receipt.
ShiftReceiptHeader
Kopf der Bon-Daten der Schicht (gemeinsam fuer Z-, X-Bon und Kassenbewegung).
ShiftReceiptMovement
Eine Kassenbewegung auf dem Z- oder X-Bon.
ShiftReconciliation
Nachrechnung des Laufstands beim Abschluss: stimmt er, oder welche Felder weichen ab.
ShiftReport
Antwort von getMyShiftReport.
ShiftRunningTotals
Laufstand der Schicht (nur mit cashView).
ShiftSummaryReceipt
Bon-Daten des Z-Bons (shift_close) bzw. X-Bons (shift_interim); Druck mit shiftReceiptLayout. Kein Registrierkassenbeleg.
ShiftTip
Trinkgeld eines Mitarbeiters mit seinem offenen Anspruch an die Lade (openCents, „offen“): im Kassenstand (DrawerState.tips) und auf dem Z- und X-Bon. Was davon gezeigt wird, sagt shiftTipLines.
ShiftTipLine
Eine Zeile des Trinkgelds eines Mitarbeiters (siehe shiftTipLines).
ShiftTipTotals
StockLevel
Bestand eines Artikels an einem Standort, in Tausendstel der Basiseinheit.
StockList
Antwort von listMyStock.
StockLocation
Ein Standort des Betriebs (Lager, Geschaeft, Fahrzeug).
StockLocationAddress
Anschrift eines Standorts. Jeder Teil ist null, wenn er fehlt oder leer ist; eine Anschrift ohne einen einzigen Teil gibt es nicht (dann ist StockLocation.address null).
Stocktake
Eine Inventur (Kopf), wie jeder Inventur-Aufruf ausser den Listen der Positionen und Zaehlungen sie sendet.
StocktakeActor
Wer etwas tat: Inhaber, Kasseneck-Admin, Kassen-Benutzer oder ein API-Schluessel.
StocktakeCancellation
Der Abbruch einer Inventur.
StocktakeClosing
Der Abschluss: er bucht in Teilen und laesst sich wieder aufnehmen.
StocktakeCount
Eine Zaehlung.
StocktakeCountPage
Eine Seite von listStocktakeCounts bzw. listMyStocktakeCounts, neueste zuerst.
StocktakeCountResult
Antwort von Zaehlen und Stornieren: die Zaehlung und ihre Position danach (Summe der Runde in StocktakeItem.quantity, kein Soll).
StocktakeCountVoided
Das Storno einer Zaehlung.
StocktakeInventoryLine
Eine Zeile des Inventars (nach dem Abschluss).
StocktakeItem
Eine Position: ein Artikel in einem Zustand (sellable bzw. defective).
StocktakeItemPage
Eine Seite von listStocktakeItems bzw. listMyStocktakeItems, nach Kennung.
StocktakeNotBooked
Was von einer Position nicht gebucht wurde, und warum.
StocktakePdfInfo
Das Inventurprotokoll: ob es da ist, und die Pruefsummen der Fassungen, die der Aufrufer sehen darf.
StocktakeProgress
Fortschritt: Zahl der Positionen und ob Positionen zum Nachzaehlen offen sind.
StocktakeRecount
Ein Nachzaehlen-Auftrag an einer Position.
StocktakeReview
Die Pruefung: wann und von wem angestossen, ob Soll und Differenz schon gerechnet sind.
StocktakeScope
Umfang einer Inventur, bei der Anlage eingefroren.
StocktakeSeal
Siegelstand des Lagerprotokolls beim Abschluss: Wiener Tage YYYY-MM-DD. verified: null heisst „nicht fertig geprueft“, nie Bruch.
StocktakeTotals
Summen des Abschlusses (Anzahlen von Positionen; Werte nur mit dem Recht costs).
StocktakeWarning
Ein Hinweis zur Inventur, mit der Zahl der betroffenen Positionen. Er ist kein Fehler: der Vorgang hat gewirkt.
StockValue
Lagerwert eines Artikels. Derselbe Typ an der Kasse (pos.dart) und in der Lager-API (inventory.dart); er kommt nur, wenn Werte freigegeben sind: an der Kasse mit dem Recht stockCosts des Kassenbenutzers, in der Lager-API mit dem Konto-Schalter „Einkaufswerte per API“ (Recht costs).
TileBooking
Ergebnis eines Kachelgriffs: der neue Korb und die betroffene Zeile.
TileCategory
TipClaim
Offener Trinkgeld-Anspruch eines Mitarbeiters (auszahlbar beim Abschluss oder per tip_payout).
TipPayout
Trinkgeld-Auszahlung beim Abschluss: hoechstens der offene Anspruch (DrawerState.tipClaims).
VoucherArticle
Artikel eines Leistungsgutscheins, wie der Server ihn festhaelt (am Beleg und in checkVoucher). Zwilling von VoucherArticle im npm-Paket.
VoucherCheck
Stand eines Gutscheins nach dem Code-Eingeben (checkVoucher). Felder, die zur Art nicht passen oder die der Server nicht sendet, sind null.
VoucherPerms
Die drei Gutschein-Rechte, aufgeloest (kein Schluessel fehlt mehr).
VoucherValidity
Gueltigkeit eines Gutscheins; Daten als YYYY-MM-DD (Wiener Tag). Was der Server nicht nennt, ist null.

Enums

CancellationState
Storno-Stand eines Belegs in der Liste (Drahtfeld cancellationStatus, Katalog STORNO_STAND): none, partial, full. Ein unbekannter kuenftiger Wert kommt als CancellationState.unknown an und nie als none: die Kasse bietet dann keinen Storno an (siehe canCancel), der Server haelt ohnehin die Restmengen.
CreditCardProvider
DiscountKind
ErrorKind
Wie ein Fehler fuer die Einordnung heisst (kind im Vertrag):
ErrorOutcome
Ausgang eines gescheiterten Aufrufs. rejected: nichts geschehen. unknown: der Vorgang kann ausgefuehrt sein (ein Beleg signiert, ein Storno gebucht, Ware gebucht, eine Rechnung ausgestellt); nie blind wiederholen. Belege, Stornos und Zahlungen nachlesen; ein Aufruf mit idempotencyKey nur mit demselben Schluessel erneut senden (wirkt genau einmal, ein neuer buchte doppelt); ohne Schluessel erst nachlesen.
ErrorRuleBehavior
Was eine Regel ohne eigenen Satz tut (behavior im Vertrag).
KeckPaymentMethod
PaymentFilter
PosCardProvider
Karte gibt es erst mit eingerichtetem Anbieter.
PosCategoryPosition
PosCheckoutMode
PosCodePage
PosCut
PosDiscount
PosDrawerAutoOpen
PosFontSize
PosLayout
PosLogoScale
Größe des Bild-Logos am Beleg (logoScale).
PosLogoSize
Größe des Kürzel-Logos in der Kopfzeile der Kasse (logoSize).
PosPaperSize
PosPrinterType
sdp = Netzwerk über Epson Server Direct Print (der Drucker holt die Jobs vom Backend), network = direkt per IP (ePOS), bluetooth, usb = Kabel, connect = Kasseneck Connect (lokaler Agent auf dem Kassen-Rechner).
PosQrMode
Mit welchem Befehl der Signatur-QR auf den Bon kommt.
PosQuantity
PosReceiptOutput
PosSettingsFontSize
PosSurface
Die Seite, auf der ein Satz gilt (only im Vertrag).
PosTerminalType
Art des Kartenterminals an dieser Kasse: keines oder Hobex HPS.
PosTerminalVia
Terminal-Ansprache: direkt per IP oder über Kasseneck Connect.
PosTheme
PosTileHeight
PosTileStyle
PosTipMode
PosWatermark
PosWatermarkScale
Größe des Wasserzeichens (watermarkScale), getrennt vom Beleg-Logo.
PosWatermarkSide
Seite des Wasserzeichens; alt, abgelöst von watermarkX, bleibt fürs Mischen alter Stände.
QuantityRule
Mengenregel eines Artikels.
ReceiptPeriod
ReceiptTypeFilter
RegisterScope
Reichweite eines Rechts.
ReturnDisposition
Rueckgabe-Wahl als Typ; der Name ist der Wert am Draht (ReturnDisposition.defective.name = 'defective').
StockLocationType
Typ eines Standorts; der Name ist der Wert am Draht.
VatRate
VoucherAction
Gutschein-Aktion. Zwilling von VoucherAction im npm-Paket; der Name ist zugleich der Drahtwert.
VoucherStatus
Stand eines Gutscheins nach dem Code-Eingeben.
VoucherType
Gutscheinart. Zwilling von VoucherType im npm-Paket; am Draht steht wire (multi_purpose …), in Dart heisst der Wert in Dart-Schreibweise.

Constants

afterCountTypes → const List<String>
Was nach dem Zaehlen beim Schicht-Abschluss mit dem Geld geschieht (Katalog NACH_ZAEHLUNG_ART): cash_drop = entnehmen (gebucht als Abschoepfung), change_in = einlegen (gebucht als Wechselgeld). Beides Geldtransit, kein Umsatz.
callsWithEffect → const List<String>
Kassen-Aufrufe mit Wirkung: nach Frist oder Netzfehler nie „erneut versuchen“; siehe messageOutcome.
cancellationPaymentErrorMessages → const Map<String, String>
Storno mit mehreren Zahlungen: Code des Backends -> Schluessel des Satzes.
cancellationReasons → const Map<String, String>
Die Gründe, die das Backend annimmt – Codes wie unter /v3 (Katalog STORNO_GRUND), Beschriftung für den Bildschirm und den Bon (bleibt deutsch, sie steht so am Beleg). Reihenfolge wie im Katalog des Backends.
cancellationReservationMs → 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ß.
cancellationStatuses → const List<String>
Stornostand eines Belegs in der Belegliste (Katalog STORNO_STAND).
cardBlockHeadings → const Map<CreditCardProvider, String>
Die Überschrift des Kartenzahlungsblocks je Anbieter.
cashLocations → const List<String>
Woher Wechselgeld kommt bzw. wohin abgeschoepft wird (Katalog KASSEN_ORT).
defaultVatRate → const VatRate
Der uebliche Fall am Tresen.
errorCodeRules → const List<ErrorRule>
Regeln je Code, vor der Regel der Art; siehe findErrorRule.
errorOutcomeRules → const List<ErrorRule>
Regeln je Ausgang, nach den Code-Regeln; siehe findErrorRule und messageOutcome.
errorRules → const List<ErrorRule>
Genau eine Regel je Art, der Stand von 1.0.0-rc.4; siehe findErrorRule.
eurDenominations → const List<int>
Scheine und Muenzen in Euro-Cent, vom groessten Schein abwaerts (Backend EUR_STUECKELUNG).
fontScales → const Map<PosFontSize, double>
Schriftfaktoren. Auch XL bleibt bedienbar — ein Faktor, der die Kasse sprengt, hilft niemandem, der schlecht sieht.
legacyBusinessKeys → const Map<String, String>
Schlüssel der inneren Form (0.x, Zwischenspeicher bis Dart 9.x) -> Draht, Betriebsteil. Ein Test hält die Tabelle deckungsgleich mit renames-1.0.json (structure.pos-settings-defaults.json.business).
legacyDeviceKeys → const Map<String, String>
Wie legacyBusinessKeys für den Geräteteil.
legacyShortcutActions → const Map<String, String>
Tasten-Aktionen der inneren Form -> Draht.
legacyValues → const Map<String, Map<String, String>>
Werte der inneren Form -> Draht, je Drahtfeld; gleichlautende Werte (gptom, S) stehen nicht darin. Ein Test hält die Tabelle deckungsgleich mit renames-1.0.json (values.pos-settings-defaults.json).
manualMovementTypes → const List<String>
Was die Kasse von Hand buchen darf. Pflichtangaben je Art (sonst lehnt der Server ab): note bei other_in/other_out, recipientId bei tip_payout, targetDrawerId bei transfer_out. location bei change_in/cash_drop ist freiwillig.
manualOpeningReasons → const List<String>
Die Gruende des Knopfs „Lade“; other braucht einen Text (note).
maxAmountCents → const int
Obergrenze je Position: 100.000,00 €.
maxPayments → const int
Hoechstzahl der Zahlungen je Beleg (Backend: MAX_ZAHLUNGEN).
movementTypes → const List<String>
Alle Arten einer Kassenbewegung (Katalog KASSEN_BEWEGUNG_ART). Die ersten acht sendet die Kasse (manualMovementTypes); transfer_in (Gegenseite einer Umbuchung), expense, count_difference und handover_difference vergibt nur der Server.
openingReasons → const List<String>
Warum die Lade aufging (Katalog LADE_OEFFNUNG_GRUND). sale, cash_movement, shift_open und shift_close meldet die Kasse selbst beim jeweiligen Vorgang; von Hand waehlt der Kassier aus manualOpeningReasons.
posAutoLogoutMinutes → const List<int>
Automatisches Abmelden nach Minuten Ruhe; 0 = nie.
posBusinessOptionalFields → const List<String>
Optionale Betriebs-Schalter: ohne Standardwert, der Server sendet sie nur, wenn sie gespeichert sind (Zwilling von POS_BUSINESS_OPTIONAL_FIELDS). Gelesen nur als Wahrheitswert; fehlt einer, gilt aus.
posDeviceOptionalFields → const List<String>
Optionale Geraete-Einstellungen: ohne Standardwert, der Server sendet sie nur, wenn sie gesetzt sind (Zwilling von POS_DEVICE_OPTIONAL_FIELDS). Sie fehlen darum in den Standardwerten; gelesen werden sie nur als gueltige Kennung, der Schreibweg nimmt Kennung oder null (Zuordnung entfernen).
posDoneScreenSeconds → const List<int>
Wie lange die Fertig-Seite stehen bleibt, in Sekunden; 0 = bis zum Tippen.
posErrorCodes → const List<String>
Gleich pos.posErrorCodes im Vertrag (surface.json): Fehlerfälle der Endpunkte (seit 10.7 auch die fuenf der Inventur, seit 11.1 die sechs der Schicht) und ihre Handler-Codes, dazu Anmelde- und Randcodes (ohne den Partner-Zugang) und der Paketcode route_missing. validation trägt details.errors[] mit dem äußeren Feldpfad (posFieldErrors).
posLabels → const Map<String, PosText>
Beschriftungen: Knoepfe, Ueberschriften, Zeilennamen, was kein Satz ist.
posMessages → const Map<String, PosText>
Was die Kasse selbst sagt: ein Satz je Schluessel (bereich.name), gleich wie im Web.
posShortcutActions → const List<String>
Aktionen der Kasse, die eine Taste bekommen können (Schlüssel von device.shortcuts), Zwilling von POS_SHORTCUT_ACTIONS.
posShortcutDefaults → const Map<String, List<String>>
Tastenbelegung: Aktion -> Tasten (Mod+F, Enter, Escape, F5 ...; Mod = Cmd auf dem Mac, Strg sonst). Zwilling von POS_SHORTCUT_DEFAULTS.
posShortcutSharedPairs → const List<(String, String)>
Aktionen, die sich eine Taste teilen dürfen (Backend TASTEN_PAARE), Zwilling von POS_SHORTCUT_SHARED_PAIRS. Jede andere Doppelbelegung weist der Server ab, und dieses Paket schon vor dem Senden.
posTextsVersion → const String
Version des Vertrags, aus dem dieser Katalog erzeugt ist.
posVatRateOrder → const List<double>
Steuersätze in der Reihenfolge, in der die Kasse sie zeigt.
posWatermarkStrengths → const List<int>
Deckkraft des Wasserzeichens in Prozent, bewusst Stufen.
printJobSources → const List<String>
Bekannte Werte für source (Katalog DRUCK_QUELLE): die Kasse oder das Panel. Der Server nimmt Freitext bis 40 Zeichen an und übersetzt nur diese beiden.
printJobStatuses → const List<String>
Stände eines Druckjobs (Katalog DRUCKJOB).
printJobStatusUnknown → const String
Stand, wenn der Server einen nennt, den dieses Paket nicht kennt (oder keinen). Er beendet die Abfrage, gilt aber nie als gedruckt.
quantityRules → const List<String>
Die Werte von quantityRule (Katalog MENGENREGEL).
receiptEmailErrorMessages → const Map<String, String>
Beleg per E-Mail: Code des Backends -> Schluessel des Satzes.
receiptEmailSendErrorCodes → const List<String>
Die fachlichen Codes von sendReceiptEmail (ohne Anmeldung und Rand).
receiptEmailVias → const List<String>
Versandwege einer Belegmail (Katalog MAILWEG): Postfach des Betriebs, Plattform, Plattform nach gescheitertem eigenen Postfach.
receiptNumberMaxDigits → const int
Höchstzahl der Stellen, die eine Belegnummer hat.
returnDispositionLabels → const Map<String, String>
Rueckgabe beim Storno: Wahl (restock, defective, disposed) -> Schluessel der Beschriftung.
returnDispositions → const List<String>
Die Werte der Rueckgabe-Wahl, englisch wie am Draht, in der Reihenfolge des Vertrags.
shiftReceiptKinds → const List<String>
Arten der Bon-Daten (Katalog SCHICHT_BON_ART): Z-Bon, X-Bon, Kassenbewegung.
stockLocationTypes → const List<String>
Standort-Typen (Katalog STANDORT_TYP), englisch wie am Draht.
stocktakeStatuses → const List<String>
Stand einer Inventur (Katalog INVENTUR_STATUS). Gezaehlt wird in counting; review rechnet Soll und Differenz (erst ab hier sichtbar, blind); closing bucht den Abschluss in Teilen; closed und cancelled sind endgueltig. creating steht nur, solange eine grosse Anlage ihre Positionen schreibt.
tileHeights → const Map<PosTileHeight, double>
Kachelhöhen in dp. Auch die flachste bleibt ein Fingerziel: unter 48 dp trifft ein Finger nicht mehr verlässlich.
tipRefundSources → const List<String>
Woher das Trinkgeld beim Storno zurueckkommt: drawer – die Lade zahlt es aus; employee – die Mitarbeiterin gibt es selbst. Nur bei Barrueckgabe.
ungroupedColor → const String
ungroupedId → const String
vatRateChoices → const List<VatRate>
Die Steuersaetze zur Wahl — haeufige zuerst.
voucherErrorMessages → const Map<String, String>
Gutschein-Fehler (/v3): Code des Backends -> Schluessel des Satzes; siehe voucherErrorMessage.
voucherValidityPatterns → const List<String>
Die Gueltigkeitsmuster (unlimited, 1+3 = ein Jahr einloesbar, drei rueckzahlbar, custom).

Properties

cancellationErrorCodes → List<String>
Codes von cancelReceipt (Formfehler an payments stehen in paymentErrorCodes).
final
paymentErrorCodes → List<String>
Codes rund um payments an createReceipt und cancelReceipt.
final
posBusinessValues → Map<String, List<Object>>
Die Wertemenge je Betriebsfeld, soweit das Feld eine hat (Zwilling von POS_BUSINESS_VALUES); dagegen prüft der Schreibweg vor dem Senden.
final
posDeviceValues → Map<String, List<Object>>
Wie posBusinessValues für die Geräte-Einstellungen (POS_DEVICE_VALUES).
final
receiptEmailErrorCodes → List<String>
Codes von sendReceiptEmail.
final
receiptErrorCodes → List<String>
Codes von createReceipt und getReceipt (ohne die Zahlungscodes, die stehen in paymentErrorCodes). receipt_outcome_unknown heisst: der Beleg ist moeglicherweise signiert, nachlesen statt wiederholen.
final
voucherKinds → List<String>
Die Arten, die checkVoucher liefert (Drahtwerte, wie voucherKinds im Vertrag surface.json).
final
voucherStatuses → List<String>
Die Staende, die checkVoucher liefert (Drahtwerte, wie voucherStatuses im Vertrag).
final

Functions

allowedQuantity(PosArticle a, num wanted) → num
Deckelt eine gewünschte Menge an der Höchstmenge des Artikels.
amountDue(Cart cart, int discount) → int
Zu zahlen nach Rabatt — nie unter null.
asksRefundTip(KasseneckReceipt receipt, {int? nowMs}) → bool
Fragt das Storno „Trinkgeld auch zurueckgeben?" – nur bei offenem Mitarbeiter-Trinkgeld und ohne Wertgutschein am Beleg (Ruling R59). Einen Wertgutschein spiegelt nur ein Storno, der alles nimmt; dort geht das Trinkgeld immer mit (der Server weist refundTip: false mit tip_keep_not_possible_with_voucher ab), die Kasse zeigt cancellation.tip_refunded_with_voucher und sendet refundTip: true. Die Frage nach der Quelle bleibt (asksTipRefundSource). Zwilling von asksRefundTip im npm-Paket.
asksTipRefundSource(KasseneckReceipt receipt, int cashRefundCents, {int? nowMs}) → bool
Fragt das Storno nach „Ja" auch „Woher kommt das Trinkgeld zurueck?" – nur, wenn das Bargeld des Stornos (cashRefundCents, siehe cancellationCashRefundCents) das offene Mitarbeiter-Trinkgeld deckt und die Mitarbeiterin wenigstens eines davon schon hatte. Bei Kartenrueckgabe geht es auf die Karte zurueck; ueber Lohn behaltenes Trinkgeld kommt immer aus der Lade. Ohne diese Frage gilt beim Server fuer refundTip: true: aus der Lade, kein „gibt die Mitarbeiterin direkt".
assertCardRefunds(List<KeckPaymentInput> payments, KasseneckReceipt? original) → void
Karten-Rueckbuchung am Storno, geprueft bevor etwas hinausgeht (Zwilling von assertCardRefunds im npm-Paket):
bookTile(Cart cart, CartItemDraft draft, {required bool bundle}) → TileBooking
Kachel in den Korb.
canCancel(ReceiptSummary receipt, RegisterScope scope, String ownUid) → bool
Darf dieser Beleg storniert werden?
cancellationCashRefundCents(KasseneckReceipt receipt, List<KeckPaymentInput>? payments, int dueCents) → int
Was dieses Storno bar zurueckgibt (positiv, Cent): mit Rueckzahlungen deren Barteil; ohne (der Server spiegelt die eine Zahlung des Originals) alles, wenn das Original bar bezahlt war. Bei mehr als einer Zahlung ohne Angabe 0: welcher Teil bar zurueckgeht, ist dann offen (ein Teilstorno verlangt ohnehin payments). Beide Kassen schicken bei mehr als einer Zahlung darum immer die Rueckzahlungen mit und rechnen hier mit ihnen.
cancellationItemsForTip(KasseneckReceipt receipt, List<CancellationItem>? items, {required bool refundTip, int? nowMs}) → List<CancellationItem>?
Die Positionen, die nach der Antwort auf „Trinkgeld auch zurueckgeben?" hinausgehen – dieselbe Regel wie im Backend. items null = ganzer Beleg. Ja: zum Teilstorno kommt das offene Trinkgeld dazu, der ganze Beleg bleibt null. Nein: ohne das Mitarbeiter-Trinkgeld; der ganze Beleg wird zur Liste aller Restmengen ausser dem Trinkgeld (leer = nichts mehr zu stornieren). Ist kein Mitarbeiter-Trinkgeld mehr offen (keines oder schon storniert), bleibt der Wunsch, wie er ist – „Nein" wirkt dann wie keine Wahl (R61).
cancellationPaymentErrorMessage(String? code) → String
Der Satz zu einem code des Backends beim Storno mit mehreren Zahlungen. Einen unbekannten Code faengt der allgemeine Storno-Satz auf.
cardRefundReference(KasseneckReceipt receipt, String paymentId) → String
Kennung der Originalzahlung fuer die Rueckbuchung am Terminal (Hobex originalTransactionId, SumUp-Transaktion …): providerPaymentId der Zahlung paymentId des Originals. Die liefert nur der Kassenweg (kasse.kasseneck.at/api/v3, Kanal app); am oeffentlichen Weg fehlt sie, und dann wirft dieser Aufruf, statt null an ein Terminal weiterzugeben. Zwilling von cardRefundReference im npm-Paket.
cashMovementLayout(CashMovementReceipt receipt, {PosPaperSize paperSize = PosPaperSize.mm58}) → ReceiptLayout
Bon einer Kassenbewegung (Einzahlung, Auszahlung, Umbuchung). Wirft (KasseneckValidationError, kind: request), wenn die Bon-Daten keine Kassenbewegung sind.
cashPayment(CheckoutTotals invoice, {int? amountCents}) → KeckPaymentInput
Die Barzahlung aus der Kassierrechnung als Eintrag fuer payments -- mit tenderedCents, damit das Backend Gegeben und Rueckgeld am Beleg fuehrt und der Bon sie zeigt.
checkoutTotals(Cart cart, PosBusinessSettings business, CheckoutState state) → CheckoutTotals
Die ganze Rechnung des Kassierens — Zwilling von kassierenRechnung der Browser-Kasse.
checkVoucher(RegisterTransport transport, String code) → Future<VoucherCheck>
Gutschein am Code pruefen (Gutschein-Recht voucherRedeem). Der Code wird tolerant eingelesen (Gross/klein, Bindestriche, Leerzeichen, O/0, I/L/1) und vor dem Senden auf sein Pruefzeichen geprueft: ein Tippfehler geht nie ueber das Netz, sondern endet mit KasseneckValidationError. Fachliche Fehler kommen als KasseneckApiError mit dem Code des Servers (voucher_not_found, too_many_voucher_checks, not_permitted …). Gesendet wird die Normalform; kein Text dieses Aufrufs nennt den Code.
colorFromHsv(double hue, double saturation, double value) → PosColor
Aus Farbton, Sättigung und Helligkeit (HSV) eine Farbe.
completionCheck({required KeckPaymentMethod paymentMethod, required int dueCents, required int? tenderedCents, required bool changeEnabled, required bool cartEmpty}) → CompletionCheck
Darf abgeschlossen werden? Bar mit Rückgeld-Rechnung braucht genug Gegebenes.
computeChange(int dueCents, int tenderedCents) → int
contrastRatio(PosColor a, PosColor b) → double
Kontrastverhältnis nach WCAG: 1 (gleich) bis 21 (Schwarz auf Weiß).
discountCentsFor(DiscountKind kind, num value, int total) → int?
Rabatt in Cent aus der Eingabe; außerhalb von 0 … Summe gibt es keinen.
distributeDiscount(List<KasseneckItem> items, int discountCents, {String name = 'Rabatt'}) → List<KasseneckItem>
Rabatt als negative Position(en) — eine je Steuersatz, anteilig zum Bruttoumsatz dieses Satzes.
draftFromArticle(PosArticle a) → CartItemDraft?
Was aus einer Kachel im Korb wird; null, wenn die Kachel nicht buchbar ist.
durationText(num minutes) → String
Dauer für Menschen aus ganzen Minuten: unter 1 Std. „45 Min.“, unter 1 Tag „8 Std. 32 Min.“ (bei 0 Minuten nur „8 Std.“), ab 1 Tag „1 Tag 3 Std.“ bzw. „2 Tage“ (bei 0 Stunden ohne Stunden). Negatives und Unsinn zählt als 0; Bruchteile werden abgeschnitten. Gemeinsame Fälle mit dem JS-Zwilling: shift-cases.json (durationText).
filterReceipts(List<ReceiptSummary> receipts, ReceiptFilter f) → List<ReceiptSummary>
findErrorRule(ErrorKind kind, {String? code, ErrorOutcome? outcome}) → ErrorRule
Die Regel fuer einen Fehler, in derselben Reihenfolge wie im Web: zuerst eine Regel aus errorCodeRules mit passender Art und passendem code, dann eine aus errorOutcomeRules mit passender Art und passendem outcome, sonst die eine Regel der Art aus errorRules.
formatEuro(int cents) → String
Betrag fuer den Schirm: „2,50 €".
formatVatRate(VatRate rate) → String
Beschriftung eines Steuersatzes, wie sie am Tresen gelesen wird.
fullReceiptIdFromNumber(String cashregisterId, String number) → 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.
groupByDay(List<ReceiptSummary> receipts) → List<ReceiptDayGroup>
Nach Wiener Kalendertag gruppiert, neueste zuerst.
isCancellationErrorCode(Object? value) → bool
Stabile Fehlercodes von cancelReceipt unter /v3 – Zwilling von CANCELLATION_ERROR_CODES in @kreiseck/kasseneck-api 1.0, in derselben Reihenfolge (siehe receipt/codes.dart). Das Backend legt sie als code neben die Meldung; sie kommen als KasseneckApiError.code an. Entscheide am Code, nie am Text. Formfehler an payments selbst melden die Codes aus paymentErrorCodes. cancellation_outcome_unknown heisst: der Storno ist moeglicherweise gebucht; nie wiederholen, sondern das Original nachlesen. Ist value ein Code aus cancellationErrorCodes? Ein Anzeigetext ist keiner, ein alter deutscher oder grosser Code aus /v1 auch nicht.
isLegacyValue0x(String field, Object? value) → bool
Ist value ein Wert der inneren Form 0.x für dieses Drahtfeld?
isOutcomeUnknown(Object? error) → bool
Ist der Ausgang dieses Fehlers unklar? Dann den Aufruf nicht blind wiederholen: Belege, Stornos und Zahlungen nachlesen; einen Aufruf mit idempotencyKey nur mit demselben Schluessel erneut senden; ohne Schluessel erst nachlesen (siehe ErrorOutcome). Gilt fuer jede Fehlerart; nur KasseneckApiError und KasseneckHttpError koennen unklar sein.
isPaymentErrorCode(Object? value) → bool
Die Codes, gleiche Reihenfolge wie PAYMENT_ERROR_CODES. Ist value ein Code aus paymentErrorCodes? Exakt, wie unter /v3 (klein); ein grosser Code aus /v1 ist keiner. Ein Anzeigetext auch nicht.
isPosError(Object? error, [String? code]) → bool
Kurzform für catch (e) { if (isPosError(e, 'logo_too_large')) … }.
isPosErrorCode(Object? value) → bool
isPosOptionalId(Object? value) → bool
Ist value eine gueltige optionale Kennung (Backend ladeKennung)?
isPrintJobFinished(String status) → bool
Endet die Abfrage bei diesem Stand? printed, failed, expired, unknown.
isReceiptEmailErrorCode(Object? value) → bool
Stabile Fehlercodes von sendReceiptEmail unter /v3 – Zwilling von RECEIPT_EMAIL_ERROR_CODES (siehe receipt/codes.dart). Sie kommen als KasseneckApiError.code an – entscheide am Code, nie am Text, der deutsche Satz darf sich jederzeit aendern.
isReceiptErrorCode(Object? value) → bool
Ist value ein Code aus receiptErrorCodes?
isReceiptVisible(ReceiptSummary receipt, RegisterScope scope, String ownUid) → bool
Sieht dieser Kassier den Beleg überhaupt?
isReturnDisposition(Object? value) → bool
Ist value eine Rueckgabe-Wahl aus returnDispositions? Der innere deutsche Wert (lager, defekt, entsorgt) ist keine.
isTipRefundSource(Object? value) → bool
Ist value ein Wert aus tipRefundSources?
isUsableBrandColor(PosColor color) → bool
Taugt diese Farbe als Betriebsfarbe?
labelText(String key, [Map<String, Object> values = const {}]) → String
Die Beschriftung zum Schluessel, Platzhalter ersetzt; wirft wie messageText.
messageAppliesTo(String key, PosSurface surface) → bool
Gilt der Satz auf dieser Seite?
messageOutcome(Object? error) → ErrorOutcome?
Der Ausgang, nach dem der Satz gewaehlt wird:
messageText(String key, [Map<String, Object> values = const {}]) → String
Der Satz zum Schluessel, Platzhalter ersetzt. Fehlt ein Wert oder ist der Schluessel unbekannt, wirft es: ein {status} am Tresen waere schlimmer.
migrateStoredReceiptJson(Map<String, dynamic> stored) → Map<String, dynamic>
Bringt einen Beleg in der gespeicherten Form von 9.x (toJson mit 0.x- Namen: uid, taxnr, logo_skala, testCashregister, testSignatur, kopfId, Layout mit regelwerk/ton; an Storno-Zeilen und in cancellations[] rueckgabe statt returnDisposition, dazu lagerStandortId, das wegfaellt) in die Form von /v3, die KasseneckReceipt.fromJson liest. Fuer lokale Ablagen, die das Update ueberleben muessen: gelesen wird migriert, verworfen wird nichts. Schon englische Schluessel bleiben, wie sie sind; ein englischer Schluessel gewinnt immer gegen seinen deutschen Vorgaenger. stored bleibt unberuehrt.
modeFor(PosTheme style) → KdMode
Welcher Modus des Design-Systems hinter einem Stil steht.
netCentsFromGross(int grossCents, num rate) → int
Netto aus Brutto, in ganzen Cent.
newIdempotencyKey() → String
Ein frischer Idempotenzschluessel fuer einen neuen Vorgang: kasse- und 32 Hex-Zeichen aus dem sicheren Zufall, dieselbe Form wie beim Zaehlen der Inventur. Fuer „Erneut senden“ nie einen neuen ziehen, sondern den alten behalten.
offeredPaymentMethods(PosBusinessSettings business) → List<KeckPaymentMethod>
Welche Zahlungsarten der Betrieb anbietet — nie keine (dann Bar).
openStaffTipCents(KasseneckReceipt receipt, {int? nowMs}) → int
Noch nicht storniertes Mitarbeiter-Trinkgeld in Cent. Groesser 0 heisst: das Storno fragt „Trinkgeld auch zurueckgeben?" (auch beim Teilstorno). Inhaber-Trinkgeld ist Umsatz und folgt der Ware.
operatorNames(List<ReceiptSummary> receipts) → List<String>
Bediener-Namen in der Liste, für den Filter — sortiert, ohne Doppelte.
parseAmountCents(String text) → int?
Betrag aus dem Eingabefeld in ganzen Cent — oder null.
parseCentsAllowZero(String text) → int?
Ein eingetippter Betrag in Cent, ohne Gleitkomma: '12,5' -> 1250, '0' -> 0 (anders als beim Kassieren ist 0 hier gueltig: eine leere Lade, kein Startgeld). Dezimaltrenner Komma oder Punkt mit einer oder zwei Nachkommastellen; null fuer leer, Vorzeichen, Tausendertrenner ('1.000', '1 000'), drei Nachkommastellen, Euro-Zeichen und alles ueber einer sicheren Ganzzahl. Leerraum aussen faellt weg wie bei String.prototype.trim in JS. Gemeinsame Faelle mit dem JS-Zwilling: shift-cases.json des Vertrags.
parseQuantityMilli(String text, String? unit, {QuantityRule? rule}) → int?
Eine eingetippte Menge in Tausendstel der Basiseinheit, ohne Gleitkomma: '12' → 12000, '0,25' → 250, '1.5' → 1500. Zwilling von parseQuantityMilli im JS-Paket; gemeinsame Prueffaelle in stocktake-quantity-cases.json des Vertrags.
paymentsError(List<KeckPaymentInput> payments, {required bool cancellation, bool payout = false}) → String?
Was an der Zahlungsliste nicht stimmt -- null, wenn die Form passt.
paymentsExpectedCents(Object? error) → int?
Der Zahlbetrag des Servers aus einem payments_sum_mismatch (details.expectedCents), sonst null. Das Paket wiederholt nie selbst mit diesem Betrag: eine Kartenzahlung ist schon belastet. Die Kasse entscheidet (Differenz nachkassieren oder erstatten) und schickt dann einen neuen Verkauf. Zwilling von paymentsExpectedCents im npm-Paket.
periodRange(ReceiptPeriod period, [DateTime? now]) → ({String from, String to})
from/to (Wiener Wanduhr, YYYY-MM-DD) für den Zeitraum.
posErrorCode(Object? error) → String?
Der Code eines geworfenen Fehlers, wenn er in posErrorCodes steht; sonst null.
posFieldErrors(Object? error) → List<FieldError>
Die Feldfehler einer validation-Antwort (business.vatRates, device.shortcuts.cash); leer, wenn es keine sind.
posSettingsChanges(Map<String, dynamic> before, Map<String, dynamic> after) → Map<String, dynamic>
Was sich zwischen zwei Ständen eines Teils (toJson von Betrieb oder Gerät) geändert hat, als Nutzlast für saveBusiness bzw. saveDevice: nur geänderte Felder (der Server mischt; ein nicht geänderter, hier unbekannter Wert geht so nie verloren). vatRates geht bei einer Änderung als ganze Karte (Nachtrag §11.7.2), shortcuts ebenfalls ganz, aber nur mit den Aktionen, die dieses Paket kennt: so sieht die Doppelbelegungsprüfung die ganze Belegung, und eine unbekannte Aktion bleibt am Server stehen. tipSteps geht nur mit den geänderten Einträgen. Zwilling von posSettingsChanges.
posShortcutConflict(Map<String, Object?> shortcuts) → ({String action, String heldBy, String key})?
Die erste Doppelbelegung einer Tastenkarte oder null. Geprüft wird die ganze Karte, so wie der Server sie nach dem Speichern hält. Zwilling von posShortcutConflict.
posTipKeptByDefault(PosBusinessSettings? business) → bool
Bar-Trinkgeld „gleich behalten“ vorbelegt? Fehlt die Einstellung, gilt aus (Zwilling von posTipKeptByDefault).
quantityDefaults(PosArticle a) → QuantityDefaults
Wirksame Regel eines Artikels: die gespeicherte Angabe schlägt die Vorgabe der Einheit.
quantityRuleForUnit(String? unit) → QuantityDefaults
Vorgabe je Einheit — was der Betrieb bei einem neuen Artikel bekommt und ändern darf.
quickAmounts(int dueCents) → List<int>
Schnellwahl für „Gegeben": passend, der nächste runde Euro, dann Scheine.
rasterRowsBase64() → String
Die Rasterzeilen eines Logos als Base64 (1 Bit je Punkt, links das höchste Bit, Zeilen auf ganze Bytes aufgefüllt), Zwilling von rasterRowsBase64.
readableOn(PosColor background, {PosColor light = const PosColor(0xFF, 0xFF, 0xFF), PosColor dark = const PosColor(0x0F, 0x17, 0x2A)}) → PosColor
Die besser lesbare von zwei Farben auf background.
receiptEmailErrorMessage(String? code) → String
Der Satz zu einem code des Backends beim Senden eines Belegs per E-Mail. Einen unbekannten Code faengt der allgemeine Satz auf.
receiptIsTest({required bool testCashregister, String? qr}) → bool
Beides zusammen — so entscheidet die Anzeige.
receiptItems(Cart cart, int discount) → List<KasseneckItem>
Positionen für den Beleg: Korb plus Rabattzeilen (eine je Steuersatz).
receiptNumber(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.
receiptTime(String timestamp) → String
Uhrzeit eines Belegs in Wiener Wanduhrzeit (HH:MM).
receiptTypeLabel(ReceiptSummary receipt) → String
Lesbarer Name der Belegart — nie ein Rohwert.
remainingQuantities(KasseneckReceipt receipt, {int? nowMs}) → List<int>
Restmenge je Position: Belegmenge minus alles, was storniert oder frisch reserviert ist; nie unter null.
reprintVoucherLabel(RegisterTransport transport, String id) → Future<String>
Etikett eines Gutscheins noch einmal drucken (Gutschein-Recht voucherManage). Liefert den Klartext-Code zum Drucken; er gehoert nur in den Speicher bis zum Druck. Aufrufer duerfen ihn nicht protokollieren, speichern oder in Meldungen nennen; Lesefehler dieser Antwort nennen ihn nie.
searchTiles(List<TileCategory> categories, String text) → List<PosArticle>
Suche über alle sichtbaren Kacheln (Name, ohne Groß/Klein, Teilwort).
shiftReceiptLayout(ShiftSummaryReceipt receipt, {PosPaperSize paperSize = PosPaperSize.mm58}) → ReceiptLayout
Z-Bon bzw. X-Bon der Schicht. Titel nach kind: „Schichtabschluss“ oder „Zwischenbericht“. Wirft (KasseneckValidationError, kind: request), wenn die Bon-Daten keine Z- oder X-Bon-Daten sind. paperSize ist die Breite des Bauplans (Vorgabe mm58); die Druckbreite waehlt der Druckweg.
shiftTipLines(ShiftTipTotals tip) → List<ShiftTipLine>
Was vom Trinkgeld eines Mitarbeiters dasteht, auf dem Bon, im Kassenstand und beim Abschluss gleich (Rulings R50/R51): „verdient“ (sofort + ueber Lohn) immer, „über Lohn“, „schon genommen“, „selbst zurückgegeben“ (R62) und „offen“ nur, wenn nicht 0. Davor „aus früheren Schichten“ (R64, nur wenn nicht 0). Ist alles 0, gibt es keine Zeile, und der Mitarbeiter entfaellt ganz. Ohne openCents (Laufstand, ShiftTipTotals) zaehlt offen als 0. Gemeinsame Faelle mit dem JS-Zwilling: shift-cases.json.
signatureIsTest(String? qr) → bool
Trägt der Beleg eine Test-Signatur? Erkannt am ZDA-Kennzeichen AT100.
stockViewOf(RegisterUserPerms? perms) → bool
Darf der Benutzer Standorte und Mengen sehen? Wie im Backend (lager-core): ohne Schluessel gilt stockView als erteilt, nur ein ausdrueckliches false sperrt; alle anderen Lager-Rechte gelten ohne Schluessel als verweigert. Ohne Rechte (perms null) nichts.
storedLayoutJson(Object? stored) → Map<String, dynamic>?
Ein gespeichertes Zeilenmodell (layout) in der Form von /v3, wie ReceiptLayout.fromJson es liest. Zwilling von fromStoredLayout im npm-Paket: nimmt die Form von 0.x bzw. 9.x (regelwerk, Bannerzeilen mit ton belegart/warnung) und die Form 1.0 (ruleset, tone receipt_type/warning); ein unbekannter Ton geht woertlich durch. Die Schluessel werden an ihrer Stelle umbenannt, die Reihenfolge bleibt; traegt ein Objekt beide Namen, gewinnt der englische.
sumDenominations(Object? denominations) → int?
Summe einer Stueckelung in Cent, oder null, wenn sie keine ist: denominations ist keine Abbildung, ein Schluessel ist kein Euro-Wert (eurDenominations, genau so geschrieben, "500", nicht "0500"), eine Anzahl ist keine ganze Zahl von 0 bis 100 000. Dieselbe Regel wie am Server (invalid_denominations). Schluessel duerfen Text oder Zahl sein. Gemeinsame Faelle mit dem JS-Zwilling: shift-cases.json des Vertrags.
textColorOn(String hex) → String
Kontrastfarbe für Text auf voller Kachelfläche. Eine kaputte Farbe bekommt hellen Text statt eines Absturzes.
tileCategories(List<ArticleGroup> groups, List<PosArticle> articles) → List<TileCategory>
unknownPosSettingValues(PosSettings settings) → List<String>
Die Felder, deren Wert dieses Paket nicht kennt, als Pfade (business.theme, device.shortcuts.<aktion>). Die Oberfläche zeigt sie als „vom Server, hier nicht einstellbar"; sie bleiben erhalten, solange nur geänderte Felder geschrieben werden (posSettingsChanges). Zwilling von unknownPosSettingValues.
untangleShortcuts(Map<String, Object?> mixed, Map<String, Object?> stored) → Map<String, Object?>
Zwilling von untangleShortcuts (Backend, npm stored): Aktionen aus stored behalten ihre Tasten; jede andere Aktion verliert eine Taste, die eine gespeicherte Aktion beansprucht, außer die beiden dürfen sie teilen (posShortcutSharedPairs).
vatCentsFromGross(int grossCents, num rate) → int
Enthaltene MwSt aus Brutto, in ganzen Cent — die Differenz zum Netto.
vatRateFor(num rate) → VatRate?
Der RKSV-Steuersatz zu einer Prozentzahl — oder null bei Unbekanntem.
vatTotalCents(Cart cart, {int discountCents = 0}) → int
Enthaltene MwSt des Warenkorbs — wie sie auf dem Beleg stehen wird.
vatTotalCentsOfItems(List<KasseneckItem> items) → int
Enthaltene MwSt einer Belegpositionsliste — je Steuersatz gruppiert, dann einmal zerlegt. Fuer Aufrufer, die die Positionen schon haben (Storno, Nachdruck), und die gemeinsame Rechnung hinter vatTotalCents.
viennaDate(DateTime instant) → String
Der Wiener Kalendertag eines Zeitpunkts als YYYY-MM-DD.
voucherErrorMessage(String? code) → String?
Der Satz zu einem Gutschein-code des Backends (/v3); null fuer jeden anderen Code, der dann den allgemeinen Weg des Aufrufs geht. Wie beim E-Mail-Versand entscheiden beide Kassen am Code, nie am Wortlaut.
voucherPermsOf(RegisterUserPerms? perms) → VoucherPerms
Gutschein-Rechte lesen. Das Backend loest sie bei der Anmeldung auf; ein alter Server kennt sie nicht. Dann gilt je fehlendem Schluessel die Vorgabe des Kassiers: verkaufen und einloesen ja, verwalten nein. Ein ausdrueckliches false sperrt (beim Lesen wird jeder Wert ausser true zu false). Zwilling von voucherPermsOf im npm-Paket; ohne Rechte (perms null) gilt wie dort die Vorgabe.

Typedefs

CancellationItem = ({int index, int quantity})
Eine Position, die storniert werden soll.
ShiftReceiptData = ShiftSummaryReceipt
Bon-Daten des Z- oder X-Bons unter dem Namen der Aufgabe (Zwilling: ShiftSummaryReceipt).
ShiftReceiptTip = ShiftTip
Trinkgeld auf dem Z- und X-Bon: offen = Anspruch beim Abschluss bzw. jetzt.

Exceptions / Errors

KasseneckReceiptFormatError
Ein Beleg kam an, liess sich aber nicht lesen — ein Pflichtfeld fehlt oder hat den falschen Typ.