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

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.
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
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.
NetworkPrinter
Ein Netzwerk-Drucker des Kontos (listMyPrinters).
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
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.
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

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

Constants

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.
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.
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).
maxAmountCents → const int
Obergrenze je Position: 100.000,00 €.
maxPayments → const int
Hoechstzahl der Zahlungen je Beleg (Backend: MAX_ZAHLUNGEN).
posAutoLogoutMinutes → const List<int>
Automatisches Abmelden nach Minuten Ruhe; 0 = nie.
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) 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.
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.
ungroupedColor → const String
ungroupedId → const String
vatRateChoices → const List<VatRate>
Die Steuersaetze zur Wahl — haeufige zuerst.

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

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.
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?
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.
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.
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.
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
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.
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.
offeredPaymentMethods(PosBusinessSettings business) → List<KeckPaymentMethod>
Welche Zahlungsarten der Betrieb anbietet — nie keine (dann Bar).
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.
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}) → 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.
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.
searchTiles(List<TileCategory> categories, String text) → List<PosArticle>
Suche über alle sichtbaren Kacheln (Name, ohne Groß/Klein, Teilwort).
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.
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.

Typedefs

CancellationItem = ({int index, int quantity})
Eine Position, die storniert werden soll.

Exceptions / Errors

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