@kreiseck/kasseneck-api 0.30.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,137 @@ Was vor 0.7.0 geschah, steht in der Commit-Historie (`git log`); ab hier wird
4
4
  es hier geführt. Ein Eintrag nennt die Änderung **und ihren Grund** —
5
5
  nur der Grund überlebt den nächsten Umbau.
6
6
 
7
+ ## 0.31.0
8
+
9
+ Texte und Einstellung für „Getrennt zahlen" an der Kasse (ein Tisch zahlt in Teilen, ein Beleg mit
10
+ mehreren Zahlungen). Nur Texte, eine Einstellung und eine Tasten-Aktion; kein Aufruf und kein
11
+ Rechenweg ändert sich.
12
+
13
+ - **`tenderedCents` an jeder Barzahlung**: die Doku an `ReceiptPaymentInput` und
14
+ `PAYMENT_TENDERED_INVALID` sagte „höchstens an einer Zahlung“. Das Backend erlaubt jetzt jeder
15
+ Barzahlung ihren eigenen gegebenen Betrag. Grund: beim getrennten Zahlen gibt jeder Gast selbst,
16
+ der Bon zeigte Gegeben/Rückgeld aber nur beim letzten. Der Bon druckte schon je Zahlung; ein Test
17
+ hält drei Barzahlungen mit je eigenem Rückgeld fest.
18
+ - **Neue Sätze in `MELDUNGEN`** unter `getrennt.*` (Hinweis zur Einstellung, Prüfungen der
19
+ Teilzahlung, gesperrter Warenkorb, Rückbuchung bar/Terminal/Karte ohne Anbindung, angefangene
20
+ Sitzung nach dem Neuladen) und unter `storno.*` (Rückgabe je Zahlung, Karten nach dem Storno von Hand gutschreiben).
21
+ Grund: Browser-Kasse und Kassen-App sollen am Tresen dieselben Worte sagen; eine schon belastete
22
+ Karte nennt in jedem Satz den Betrag, und keiner rät zum zweiten Kassieren.
23
+ - **`STORNO_ZAHLUNG_FEHLER`**: Zuordnung der Backend-Codes `STORNO_PAYMENTS_REQUIRED`,
24
+ `STORNO_REFUND_EXCEEDS_PAYMENT`, `STORNO_REFUND_REFERENCE_REQUIRED`,
25
+ `STORNO_REFUND_REFERENCE_UNKNOWN` und `PAYMENTS_SUM_MISMATCH` zu ihrem Satz, auch in
26
+ `fixtures/kasse-texte.json` (`stornoZahlungFehler`). Grund: beide Kassen entscheiden am Code,
27
+ nie am Wortlaut des Backends. `stornoZahlungFehler(code)` liefert den Schlüssel dazu, ein
28
+ unbekannter Code fällt auf `storno.fehlgeschlagen` (wie `belegMailFehler`).
29
+ - **Neuer Storno-Code `STORNO_OUTCOME_UNKNOWN`** am Ende von `CANCELLATION_ERROR_CODES` (Zwilling
30
+ von `STORNO_FEHLERCODES` in `functions/gemeinsam/storno-core.js`; unter `/v3`
31
+ `cancellation_outcome_unknown`, `isCancellationErrorCode` prüft weiter exakt) mit dem Satz
32
+ `storno.ergebnis_unklar`. Grund: der Storno-Beleg kann schon signiert sein, obwohl der Ausgang
33
+ offen ist; wer dann noch einmal storniert, storniert womöglich doppelt. Der Satz rät darum,
34
+ nicht zu wiederholen und die Belegliste später neu zu laden.
35
+ - **Aufteilung als eigener Schritt**: neue Beschriftungen `getrennt.weiter` („Weiter · {betrag}
36
+ getrennt“), `getrennt.aufteilung`, `getrennt.zurueck_zahlart`, `getrennt.tab_positionen`,
37
+ `getrennt.tab_betrag`, `getrennt.stueck_mehr`/`_weniger`,
38
+ `getrennt.gegeben`, `getrennt.gegeben_rueckgeld` und die Sätze
39
+ `getrennt.positionen_gesperrt` und `getrennt.positionen_waehlen`. Grund: Nutzertest – erst
40
+ „Weiter“, dann je Zahlung nach Positionen (stückweise) oder als Betrag. Nach einer Zahlung als
41
+ Betrag ist „Nach Positionen“ gesperrt, weil sich Beträge keinen Stücken zuordnen lassen; der
42
+ Satz sagt das.
43
+ - **Zahlart je Zahlung, ein Knopf zum Hinzufügen**: `getrennt.zahlart` („Zahlart“),
44
+ `getrennt.art_bar`/`getrennt.art_karte` („Bar“/„Karte“) als Umschalter oben in der Zahlung,
45
+ `getrennt.zahlung_hinzufuegen` („Zahlung hinzufügen · {betrag}“) für den einen Knopf unten
46
+ rechts und der Satz `getrennt.gegeben_fehlt` (Barzahlung ohne „Gegeben“ bei eingeschaltetem
47
+ Rückgeld-Rechner, Wortlaut wie beim Abschluss). `getrennt.bar_kassieren`/`getrennt.karte_kassieren`
48
+ und `getrennt.kassieren` („Zahlung {n} kassieren“) entfallen (noch nie veröffentlicht). Grund: Nutzertest – zwei Knöpfe, die sofort kassieren,
49
+ lagen zu nah beieinander; jetzt wählt der Kassier die Zahlart wie jede andere Eingabe, und nur
50
+ ein Knopf löst die Zahlung aus. Offen 0 macht aus demselben Knopf „Abschließen“.
51
+ - **Nach Positionen als Kacheln**: `getrennt.offene_positionen`, `getrennt.stueck_offen`
52
+ („{n} offen“), `getrennt.stueck_gewaehlt` („{n} von {offen}“), `getrennt.nichts_gewaehlt` und
53
+ `getrennt.alles_bezahlt`. `getrennt.stueck_bezahlt` entfällt (noch nie veröffentlicht): bezahlte
54
+ Stück verschwinden aus der Auswahl. Grund: Nutzertest – in der großen Fläche stehen nur noch die
55
+ offenen Produkte als Kacheln, der Kassier tippt dort an, was dieser Gast zahlt.
56
+ - **`BESCHRIFTUNGEN` und `beschriftung()`**: ein zweiter Katalog für Knöpfe und Zeilennamen
57
+ („Getrennt", „Zahlung {n}", „Offen", „Rest", „÷ {n}", „davon Trinkgeld {betrag}", „Wie
58
+ zurückgeben?", „Alles bar", „Mehrere" …), in `fixtures/kasse-texte.json` unter `beschriftungen`.
59
+ Grund: `MELDUNGEN` führt nur Sätze (die Wächter beider Kassen erkennen Sätze daran), „Rest" ist
60
+ keiner – muss aber in beiden Kassen gleich heißen. Die Zahlarten folgen dem Bon
61
+ („Kartenzahlung", „Barzahlung").
62
+ - **Vier weitere Sätze unter `getrennt.*`**: `sitzung_unlesbar` (eine auf dem Gerät abgelegte
63
+ Sitzung lässt sich nicht mehr lesen – auf schon belastete Karten hinweisen, im Panel oder am
64
+ Terminal nachsehen lassen), `ablage_fehlgeschlagen` (die Ablage schlägt fehl – vor dem
65
+ Neuladen warnen, sonst verschwinden belastete Karten aus der Liste), `zu_viele_zahlungen`
66
+ (höchstens 20 Zahlungen je Beleg) und `entkoppeln_offene_karten` (ein entkoppeltes Gerät hatte
67
+ noch offene Kartenzahlungen – die Beträge stehen daneben, der Satz selbst bleibt ohne
68
+ Platzhalter). Grund: die Ablage der Teilzahlung läuft rein lokal auf dem Gerät; geht sie
69
+ verloren oder lässt sie sich nicht lesen, ist eine schon belastete Karte das teure Risiko, und
70
+ der Satz muss zum Nachschauen anleiten statt zum Weiterkassieren zu verleiten.
71
+ - **Einstellung `zahlGetrennt`** (Betrieb, Standard `false`) und **Tasten-Aktion `getrennt`**
72
+ (ohne Vorgabe-Taste). Grund: für Betriebe ohne Bedarf bleibt die Kasse, wie sie ist; eine
73
+ unerprobte Vorgabe-Taste finge womöglich der Browser ab. Das Backend (`kasse-settings-core.js`)
74
+ muss beide nachziehen, sonst verwirft sein Validator den Wert beim Speichern.
75
+ - **Vorgabe `kassierenModus` jetzt `'panel'`** (vorher `'seite'`): kassiert wird im Korb-Panel,
76
+ die Kacheln bleiben stehen. Grund: Nutzertest – so bleibt der Kachelbereich beim Kassieren
77
+ sichtbar, auch beim getrennten Zahlen. Ein gespeichertes `'seite'` bleibt; gespeichert werden
78
+ aber nur geänderte Felder, darum wechselt jedes Konto, das den Schalter nie angefasst hat, mit
79
+ dem Backend-Standard auf das Korb-Panel. Das Backend (`BETRIEB_STANDARD` in
80
+ `kasse-settings-core.js`) und der Dart-Zwilling ziehen denselben Wert nach.
81
+ - **Texte, die bisher nur in der Browser-Kasse standen, jetzt im Katalog**: Sätze
82
+ `kassieren.nichts_erfasst`, `kassieren.gegeben_fehlt`, `kassieren.gegeben_zu_wenig`,
83
+ `kassieren.gesperrt` („Kassieren gesperrt: {grund}“), `trinkgeld.ueber_haelfte`,
84
+ `sitzung.meldet_ab` („Kasse meldet in {sekunden} s ab …“), `abmelden.noch_einmal`,
85
+ `kartenzahlung.terminal_bricht_ab` und `connect.entkoppeln_frage` (nur Web); Beschriftungen
86
+ `kassieren.trinkgeld`, `kassieren.kein`, `kassieren.eigener_betrag`, `kassieren.passend`,
87
+ `kassieren.gegeben_loeschen`, `kassieren.es_fehlen_noch`, `kassieren.rueckgeld`,
88
+ `kartenzahlung.betrag_am_terminal`, `kartenzahlung.karte_vorhalten` („… · noch {zeit}“),
89
+ `kopplung.neu_koppeln`, `abmelden.frage`, `abmelden.weiter_arbeiten`, `geraet.entkoppeln`,
90
+ `connect.entkoppeln_bestaetigen` (nur Web), `storno.titel` („Storno zu {beleg}“),
91
+ `meldung.ausblenden` („Meldung ausblenden: {meldung}“) und `meldung.warnung_ausblenden`
92
+ („Verstanden – Warnung ausblenden: {meldung}“). Wortlaut wie bisher in der Browser-Kasse.
93
+ Grund: Oberflächen-Vertrag – beide Kassen zeigen dieselben Wörter; das X an einer Meldung nennt
94
+ jetzt, welche Meldung es ausblendet (in der Ecke stehen oft mehrere).
95
+ - **Halbgeviertstrich statt Geviertstrich** in allen sichtbaren Texten von `MELDUNGEN` (u. a.
96
+ `abschluss.unklar`, `kartenzahlung.unklar`, `kartenzahlung.karte_gebucht_beleg_offen`,
97
+ `connect.*`, `druck.*`) und in den Sätzen der Hobex-Antwortcodes (`transaction-response.ts`,
98
+ auch `fixtures/hobex-hps-codes.json`): „ – “ statt „ — “. Nur das Zeichen ändert sich, kein
99
+ Wortlaut und kein Schlüssel. Wer einen dieser Sätze wörtlich vergleicht, muss nachziehen.
100
+ Grund: einheitliche Typografie am Bildschirm; der Geviertstrich wirkt dort wie ein
101
+ Maschinenzeichen. Die Rechnungstexte (`rechnung/texte.ts`, PDF) bleiben unverändert.
102
+ - **`Cancellation` trägt `refundedByPayment`** (Zahlungs-ID auf positive Cent), Zwilling der
103
+ gleichnamigen Backend-Ablage (`functions/gemeinsam/storno-core.js`). Die Lesung
104
+ (`fromReceiptPayload`) behält nur ganzzahlige, nicht negative Werte, verwirft ungültige
105
+ Einträge einzeln statt den ganzen Eintrag zu verwerfen, und lässt das Feld weg, wenn die
106
+ Nutzlast es nicht trägt – bestehende Belege lesen sich unverändert. Auch am `pending`-Eintrag
107
+ vorhanden. Grund: über alle Storno-Einträge darf je Zahlung nie mehr zurückgehen, als bezahlt
108
+ wurde; ohne das Feld ließe sich das am Client nicht nachvollziehen.
109
+ - **Weitere Sätze in `MELDUNGEN`**: `getrennt.karte_bereits_zurueckgebucht` (das Terminal meldet
110
+ eine Gutschrift, die hier noch als offene Rückbuchung steht), `abschluss.erledigen_frage` (nur erledigen, was wirklich in der Belegliste steht),
111
+ `kartenzahlung.korb_gesperrt_karte_belastet` und `kartenzahlung.entkoppeln_karte_belastet`.
112
+ Grund: jeder dieser Zustände ist eine schon belastete oder gutgeschriebene Karte ohne
113
+ passenden Beleg – der teuerste Fehler am Tresen ist die doppelte Buchung, und kein Satz davon
114
+ darf zum Wiederholen raten, ohne vorher den Terminal-Beleg zu nennen.
115
+ - **Weitere `BESCHRIFTUNGEN`**: `allgemein.abbrechen`, `abschluss.beleg_vorhanden`,
116
+ `abschluss.erledigen`, `getrennt.karte_zurueckbuchen`, `getrennt.trotzdem_neu_koppeln`,
117
+ `getrennt.zahlung_behalten`, `getrennt.klaeren`, `getrennt.wurde_belastet`,
118
+ `getrennt.nicht_belastet`, `getrennt.erneut_zurueckbuchen`, `storno.differenz`. Grund: Knöpfe
119
+ zu den neuen Sätzen oben, in beiden Kassen gleich beschriftet.
120
+ - **Storno eines Belegs mit mehreren Zahlungen: Karten gehen von Hand zurück.**
121
+ `storno.karten_gutschreiben` steht nach dem gebuchten Storno über der Liste der Karten zum
122
+ Abhaken (eine oder mehrere, mit oder ohne Anbindung); `storno.ergebnis_unklar_karten` ersetzt
123
+ `storno.ergebnis_unklar`, wenn der gesendete Vorschlag Karten enthielt – erst die Belegliste
124
+ neu laden, erst dann gutschreiben (`STORNO_ZAHLUNG_FEHLER` zeigt weiter auf
125
+ `storno.ergebnis_unklar`, die Wahl trifft die Kasse am Vorschlag). Die Sätze und Knöpfe einer
126
+ Gutschrift am Terminal VOR dem Senden (`storno.gutschrift_laeuft`,
127
+ `storno.gutschrift_fehlgeschlagen`, `storno.gutschrift_unklar`,
128
+ `storno.gutgeschrieben_nicht_gebucht`, `storno.gutschrift_pruefen`,
129
+ `storno.extern_gutschreiben`, `storno.am_terminal_gutgeschrieben`,
130
+ `storno.nicht_gutgeschrieben`) sind wieder entfernt; sie waren nie veröffentlicht. Grund:
131
+ eine Gutschrift vor dem gebuchten Storno lässt Geld zurückgehen, ohne dass ein Storno-Beleg
132
+ sicher entsteht; die automatische Gutschrift kommt als eigener Schritt mit
133
+ Server-Unterstützung.
134
+ - **`storno.karten_nicht_abgehakt`**: wird die Liste der Karten nach dem gebuchten Storno
135
+ geschlossen, obwohl nicht jede Karte abgehakt ist, fragt die Kasse einmal nach. Grund: eine
136
+ vergessene Gutschrift fällt sonst erst dem Gast auf, und am Storno-Beleg sieht sie niemand mehr.
137
+
7
138
  ## 0.30.0
8
139
 
9
140
  Mehrere Zahlungen je Beleg. Setzt ein Backend mit `payments` voraus (keck, live seit
@@ -10,4 +10,4 @@ export { verteileRabatt } from '../receipt/discount.js';
10
10
  export { cancelScopeOf, receiptsScopeOf, type RegisterScope, type RegisterUserPerms } from '../register/pairing.js';
11
11
  export { type NetzDrucker, type DruckJob, type DruckJobStatus, type CreatePrintJobOptions, listMyPrinters, createPrintJob, getPrintJob } from './drucker.js';
12
12
  export { listMyTipRecipients } from './trinkgeld.js';
13
- export { MELDUNGEN, FEHLERREGELN, meldung, meldungGiltFuer, BELEG_MAIL_FEHLER, belegMailFehler, type Meldung, type MeldungsSchluessel, type Fehlerart, type Seite, type BelegMailFehlercode, } from './texte.js';
13
+ export { MELDUNGEN, FEHLERREGELN, meldung, meldungGiltFuer, BELEG_MAIL_FEHLER, belegMailFehler, STORNO_ZAHLUNG_FEHLER, stornoZahlungFehler, BESCHRIFTUNGEN, beschriftung, type Meldung, type MeldungsSchluessel, type Fehlerart, type Seite, type BelegMailFehlercode, type StornoZahlungFehlercode, type BeschriftungsSchluessel, } from './texte.js';
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createPrintJob = exports.listMyPrinters = exports.receiptsScopeOf = exports.cancelScopeOf = exports.verteileRabatt = exports.setMyRegisterDeviceSettings = exports.setMyKasseSettings = exports.getKasseSettings = exports.mengeErlaubt = exports.mengenVorgabe = exports.mengenregelFuerEinheit = exports.listMyArticles = exports.listMyArticleGroups = exports.fromKasseArtikelPayload = exports.fromArticleGroupPayload = exports.FERTIG_SEKUNDEN = exports.WZ_SKALA = exports.LOGO_SKALA = exports.WZ_STAERKE = exports.WZ_SEITE = exports.RABATT = exports.AUTO_AB_MIN = exports.KACHELSTIL = exports.SCHRIFT_EINST = exports.LOGO_GROESSE = exports.TASTEN_AKTIONEN = exports.QR_MODUS = exports.LADE_AUTO = exports.SCHNITT = exports.ZEICHENSATZ = exports.PAPIER = exports.TERMINAL_ART = exports.TERMINAL_VIA = exports.DRUCKER_ART = exports.HOEHE = exports.KATPOS = exports.LAYOUT = exports.BELEG_AUSGABE = exports.KASSIEREN_MODUS = exports.TG_MODUS = exports.MENGE = exports.WASSERZEICHEN = exports.SCHRIFT = exports.STIL = exports.mergeKasseSettings = exports.KASSE_GERAET_STANDARD = exports.KASSE_BETRIEB_STANDARD = exports.KASSE_TASTEN_STANDARD = exports.KASSE_TASTEN_AKTIONEN = exports.KARTENANBIETER = void 0;
4
- exports.belegMailFehler = exports.BELEG_MAIL_FEHLER = exports.meldungGiltFuer = exports.meldung = exports.FEHLERREGELN = exports.MELDUNGEN = exports.listMyTipRecipients = exports.getPrintJob = void 0;
4
+ exports.beschriftung = exports.BESCHRIFTUNGEN = exports.stornoZahlungFehler = exports.STORNO_ZAHLUNG_FEHLER = exports.belegMailFehler = exports.BELEG_MAIL_FEHLER = exports.meldungGiltFuer = exports.meldung = exports.FEHLERREGELN = exports.MELDUNGEN = exports.listMyTipRecipients = exports.getPrintJob = void 0;
5
5
  /**
6
6
  * Kachel-Kasse: Einstellungen, Artikelgruppen/Artikel fuer Kacheln,
7
7
  * Rabattverteilung. Die Aufrufe heissen 1:1 wie die Backend-Functions
@@ -77,3 +77,7 @@ Object.defineProperty(exports, "meldung", { enumerable: true, get: function () {
77
77
  Object.defineProperty(exports, "meldungGiltFuer", { enumerable: true, get: function () { return texte_js_1.meldungGiltFuer; } });
78
78
  Object.defineProperty(exports, "BELEG_MAIL_FEHLER", { enumerable: true, get: function () { return texte_js_1.BELEG_MAIL_FEHLER; } });
79
79
  Object.defineProperty(exports, "belegMailFehler", { enumerable: true, get: function () { return texte_js_1.belegMailFehler; } });
80
+ Object.defineProperty(exports, "STORNO_ZAHLUNG_FEHLER", { enumerable: true, get: function () { return texte_js_1.STORNO_ZAHLUNG_FEHLER; } });
81
+ Object.defineProperty(exports, "stornoZahlungFehler", { enumerable: true, get: function () { return texte_js_1.stornoZahlungFehler; } });
82
+ Object.defineProperty(exports, "BESCHRIFTUNGEN", { enumerable: true, get: function () { return texte_js_1.BESCHRIFTUNGEN; } });
83
+ Object.defineProperty(exports, "beschriftung", { enumerable: true, get: function () { return texte_js_1.beschriftung; } });
@@ -156,6 +156,8 @@ export interface KasseSettingsBetrieb {
156
156
  rueckgeld: boolean;
157
157
  schnellbar: boolean;
158
158
  kassierenModus: KasseKassierenModus;
159
+ /** Getrennt zahlen: dritter Knopf neben Bar und Karte, ein Beleg mit mehreren Zahlungen. */
160
+ zahlGetrennt: boolean;
159
161
  /** Trinkgeld-Chips in Prozent (eine Nachkommastelle, max 5, eindeutig, Reihenfolge des Chefs). */
160
162
  tgChips: number[];
161
163
  /** Rabatt-Chips in Prozent — dieselben Regeln wie tgChips, vom Chef einstellbar. */
@@ -168,10 +170,10 @@ export interface KasseSettingsBetrieb {
168
170
  hinweise: boolean;
169
171
  }
170
172
  /** Aktionen der Kasse, die eine Taste bekommen koennen. */
171
- export declare const KASSE_TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren"];
173
+ export declare const KASSE_TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren", "getrennt"];
172
174
  export type KasseTastenAktion = typeof KASSE_TASTEN_AKTIONEN[number];
173
175
  /** Kurzer Name, damit alle Enum-Listen gleich heissen; der alte bleibt gueltig. */
174
- export declare const TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren"];
176
+ export declare const TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren", "getrennt"];
175
177
  /** Tastenkarte: Aktion -> Tasten (`Mod+F`, `Enter`, `Escape`, `F5` ...; `Mod` = ⌘ auf dem Mac, Strg sonst). */
176
178
  export type KasseTastenkarte = Record<KasseTastenAktion, string[]>;
177
179
  export declare const KASSE_TASTEN_STANDARD: Readonly<KasseTastenkarte>;
@@ -92,7 +92,7 @@ exports.WZ_SKALA = ['S', 'M', 'L', 'XL'];
92
92
  /** Wie lange die Fertig-Seite stehen bleibt, in Sekunden; 0 = bis zum Tippen. */
93
93
  exports.FERTIG_SEKUNDEN = [0, 3, 5, 10, 15, 30, 60];
94
94
  /** Aktionen der Kasse, die eine Taste bekommen koennen. */
95
- exports.KASSE_TASTEN_AKTIONEN = ['kassieren', 'abschliessen', 'abbrechen', 'frei', 'bar', 'karte', 'passend', 'belege', 'letzteZurueck', 'einstellungen', 'abmelden', 'trinkgeld', 'vollbild', 'gegebenLeeren', 'korbLeeren'];
95
+ exports.KASSE_TASTEN_AKTIONEN = ['kassieren', 'abschliessen', 'abbrechen', 'frei', 'bar', 'karte', 'passend', 'belege', 'letzteZurueck', 'einstellungen', 'abmelden', 'trinkgeld', 'vollbild', 'gegebenLeeren', 'korbLeeren', 'getrennt'];
96
96
  /** Kurzer Name, damit alle Enum-Listen gleich heissen; der alte bleibt gueltig. */
97
97
  exports.TASTEN_AKTIONEN = exports.KASSE_TASTEN_AKTIONEN;
98
98
  exports.KASSE_TASTEN_STANDARD = Object.freeze({
@@ -114,6 +114,9 @@ exports.KASSE_TASTEN_STANDARD = Object.freeze({
114
114
  // verschiedenen Momenten (Korb vor dem Kassieren, Gegeben-Feld darin) —
115
115
  // der Verteiler laesst die nicht zustaendige Aktion durchfallen.
116
116
  korbLeeren: ['Mod+C'],
117
+ // Bewusst ohne Vorgabe: jede freie Mod-Taste ist in irgendeinem Browser
118
+ // belegt oder am Geraet unerprobt. Der Chef vergibt sie, wenn er sie braucht.
119
+ getrennt: [],
117
120
  });
118
121
  exports.KASSE_BETRIEB_STANDARD = Object.freeze({
119
122
  // Das Petrol der Marke: die Aktionsfarbe des Design-Systems (Rolle `brand`).
@@ -128,7 +131,7 @@ exports.KASSE_BETRIEB_STANDARD = Object.freeze({
128
131
  menge: 'x', notiz: false, suche: false, rabatt: 'aus',
129
132
  zahlBar: true, zahlKarte: false, kartenanbieter: 'keiner', trinkgeld: false, tgModus: 'beides',
130
133
  tgStufen: { 5: true, 10: true, 15: false, 20: false }, tgChips: [5, 10], tgSplit: true, rueckgeld: true,
131
- schnellbar: false, kassierenModus: 'seite',
134
+ schnellbar: false, kassierenModus: 'panel', zahlGetrennt: false,
132
135
  // 'fragen' = Fertig-Seite bietet QR und Bon an — sicherster Standard.
133
136
  logoBild: '', wzSeite: 'mitte', wzPos: 50, wzPosV: 50, wzStaerke: 6, logoSkala: 'M', wzSkala: 'M',
134
137
  glas: true, hinweise: true,