@kreiseck/kasseneck-api 0.30.0 → 0.32.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/dist/cjs/kasse/index.d.ts +1 -1
  3. package/dist/cjs/kasse/index.js +5 -1
  4. package/dist/cjs/kasse/settings.d.ts +4 -2
  5. package/dist/cjs/kasse/settings.js +5 -2
  6. package/dist/cjs/kasse/texte.d.ts +444 -34
  7. package/dist/cjs/kasse/texte.js +265 -35
  8. package/dist/cjs/models/cancellation.d.ts +18 -5
  9. package/dist/cjs/models/cancellation.js +9 -4
  10. package/dist/cjs/models/payment-errors.js +1 -1
  11. package/dist/cjs/models/receipt-payment.d.ts +2 -1
  12. package/dist/cjs/models/receipt.js +16 -0
  13. package/dist/cjs/payments/hobex-hps/transaction-response.js +28 -28
  14. package/dist/cjs/rechnung/index.d.ts +2 -2
  15. package/dist/cjs/rechnung/index.js +3 -1
  16. package/dist/cjs/rechnung/typen.d.ts +13 -2
  17. package/dist/cjs/rechnung/vertrag.d.ts +5 -0
  18. package/dist/cjs/rechnung/vertrag.js +27 -2
  19. package/dist/esm/kasse/index.d.ts +1 -1
  20. package/dist/esm/kasse/index.js +1 -1
  21. package/dist/esm/kasse/settings.d.ts +4 -2
  22. package/dist/esm/kasse/settings.js +5 -2
  23. package/dist/esm/kasse/texte.d.ts +444 -34
  24. package/dist/esm/kasse/texte.js +262 -34
  25. package/dist/esm/models/cancellation.d.ts +18 -5
  26. package/dist/esm/models/cancellation.js +9 -4
  27. package/dist/esm/models/payment-errors.js +1 -1
  28. package/dist/esm/models/receipt-payment.d.ts +2 -1
  29. package/dist/esm/models/receipt.js +16 -0
  30. package/dist/esm/payments/hobex-hps/transaction-response.js +28 -28
  31. package/dist/esm/rechnung/index.d.ts +2 -2
  32. package/dist/esm/rechnung/index.js +1 -1
  33. package/dist/esm/rechnung/typen.d.ts +13 -2
  34. package/dist/esm/rechnung/vertrag.d.ts +5 -0
  35. package/dist/esm/rechnung/vertrag.js +26 -1
  36. package/fixtures/hobex-hps-codes.json +29 -29
  37. package/fixtures/kasse-settings-standard.json +4 -2
  38. package/fixtures/kasse-texte.json +479 -35
  39. package/fixtures/oberflaeche.json +8 -2
  40. package/fixtures/rechnung-api-beispiele/credit-fehler-rueckgabe.json +26 -0
  41. package/fixtures/rechnung-api-beispiele/credit-rueckgabe.json +23 -0
  42. package/fixtures/rechnung-api-beispiele/issue-fehler-lagerkennung.json +27 -0
  43. package/fixtures/rechnung-api-beispiele/issue-fehler-rueckgabe.json +25 -0
  44. package/fixtures/rechnung-api-beispiele/issue-lager.json +22 -0
  45. package/fixtures/rechnung-api-beispiele/storno-fehler-rueckgabe.json +17 -0
  46. package/fixtures/rechnung-api.schema.json +37 -1
  47. package/fixtures/rechnung-texte.json +1 -1
  48. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,152 @@ 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.32.0
8
+
9
+ Vertragsgleichstand mit dem Backend für Lager-Kern Stufe 2. Das Backend vendort nur die 0.x-Linie und
10
+ prüft daran seine Zwillingstests; darum kommen hier genau die Teile hinzu, die es dafür braucht – kein
11
+ neuer Aufruf, kein neues Verhalten der Kasse. Die Kassen-Aufrufe des Lagers gibt es nur in 1.x (ab 1.2.0).
12
+
13
+ - **Storno-Code `rueckgabe_ungueltig`** am Ende von `CANCELLATION_ERROR_CODES` (Zwilling von
14
+ `STORNO_FEHLERCODES`; unter `/v3` `invalid_return_disposition`). Grund: das Backend weist eine
15
+ Rückgabe-Wahl außerhalb von `lager|defekt|entsorgt` mit diesem Code ab, und die Kasse entscheidet am Code.
16
+ - **Rechnungs-API:** `items[].articleId`, `stockLocationId` an `issueInvoice`, `returnDisposition`
17
+ (`restock|defective|disposed`) an `cancelInvoice` und `createCreditNote`, dort auch je Position
18
+ (`CreditNoteItemInput`, `GUTSCHRIFT_POSITION_FELDER`); Schema `fixtures/rechnung-api.schema.json` und
19
+ sechs Beispiele. Grund: das Backend nimmt die Felder seit Stufe 2 an und vergleicht sein Schema in beide
20
+ Richtungen mit dem vendorierten.
21
+
22
+ ## 0.31.0
23
+
24
+ Texte und Einstellung für „Getrennt zahlen" an der Kasse (ein Tisch zahlt in Teilen, ein Beleg mit
25
+ mehreren Zahlungen). Nur Texte, eine Einstellung und eine Tasten-Aktion; kein Aufruf und kein
26
+ Rechenweg ändert sich.
27
+
28
+ - **`tenderedCents` an jeder Barzahlung**: die Doku an `ReceiptPaymentInput` und
29
+ `PAYMENT_TENDERED_INVALID` sagte „höchstens an einer Zahlung“. Das Backend erlaubt jetzt jeder
30
+ Barzahlung ihren eigenen gegebenen Betrag. Grund: beim getrennten Zahlen gibt jeder Gast selbst,
31
+ der Bon zeigte Gegeben/Rückgeld aber nur beim letzten. Der Bon druckte schon je Zahlung; ein Test
32
+ hält drei Barzahlungen mit je eigenem Rückgeld fest.
33
+ - **Neue Sätze in `MELDUNGEN`** unter `getrennt.*` (Hinweis zur Einstellung, Prüfungen der
34
+ Teilzahlung, gesperrter Warenkorb, Rückbuchung bar/Terminal/Karte ohne Anbindung, angefangene
35
+ Sitzung nach dem Neuladen) und unter `storno.*` (Rückgabe je Zahlung, Karten nach dem Storno von Hand gutschreiben).
36
+ Grund: Browser-Kasse und Kassen-App sollen am Tresen dieselben Worte sagen; eine schon belastete
37
+ Karte nennt in jedem Satz den Betrag, und keiner rät zum zweiten Kassieren.
38
+ - **`STORNO_ZAHLUNG_FEHLER`**: Zuordnung der Backend-Codes `STORNO_PAYMENTS_REQUIRED`,
39
+ `STORNO_REFUND_EXCEEDS_PAYMENT`, `STORNO_REFUND_REFERENCE_REQUIRED`,
40
+ `STORNO_REFUND_REFERENCE_UNKNOWN` und `PAYMENTS_SUM_MISMATCH` zu ihrem Satz, auch in
41
+ `fixtures/kasse-texte.json` (`stornoZahlungFehler`). Grund: beide Kassen entscheiden am Code,
42
+ nie am Wortlaut des Backends. `stornoZahlungFehler(code)` liefert den Schlüssel dazu, ein
43
+ unbekannter Code fällt auf `storno.fehlgeschlagen` (wie `belegMailFehler`).
44
+ - **Neuer Storno-Code `STORNO_OUTCOME_UNKNOWN`** am Ende von `CANCELLATION_ERROR_CODES` (Zwilling
45
+ von `STORNO_FEHLERCODES` in `functions/gemeinsam/storno-core.js`; unter `/v3`
46
+ `cancellation_outcome_unknown`, `isCancellationErrorCode` prüft weiter exakt) mit dem Satz
47
+ `storno.ergebnis_unklar`. Grund: der Storno-Beleg kann schon signiert sein, obwohl der Ausgang
48
+ offen ist; wer dann noch einmal storniert, storniert womöglich doppelt. Der Satz rät darum,
49
+ nicht zu wiederholen und die Belegliste später neu zu laden.
50
+ - **Aufteilung als eigener Schritt**: neue Beschriftungen `getrennt.weiter` („Weiter · {betrag}
51
+ getrennt“), `getrennt.aufteilung`, `getrennt.zurueck_zahlart`, `getrennt.tab_positionen`,
52
+ `getrennt.tab_betrag`, `getrennt.stueck_mehr`/`_weniger`,
53
+ `getrennt.gegeben`, `getrennt.gegeben_rueckgeld` und die Sätze
54
+ `getrennt.positionen_gesperrt` und `getrennt.positionen_waehlen`. Grund: Nutzertest – erst
55
+ „Weiter“, dann je Zahlung nach Positionen (stückweise) oder als Betrag. Nach einer Zahlung als
56
+ Betrag ist „Nach Positionen“ gesperrt, weil sich Beträge keinen Stücken zuordnen lassen; der
57
+ Satz sagt das.
58
+ - **Zahlart je Zahlung, ein Knopf zum Hinzufügen**: `getrennt.zahlart` („Zahlart“),
59
+ `getrennt.art_bar`/`getrennt.art_karte` („Bar“/„Karte“) als Umschalter oben in der Zahlung,
60
+ `getrennt.zahlung_hinzufuegen` („Zahlung hinzufügen · {betrag}“) für den einen Knopf unten
61
+ rechts und der Satz `getrennt.gegeben_fehlt` (Barzahlung ohne „Gegeben“ bei eingeschaltetem
62
+ Rückgeld-Rechner, Wortlaut wie beim Abschluss). `getrennt.bar_kassieren`/`getrennt.karte_kassieren`
63
+ und `getrennt.kassieren` („Zahlung {n} kassieren“) entfallen (noch nie veröffentlicht). Grund: Nutzertest – zwei Knöpfe, die sofort kassieren,
64
+ lagen zu nah beieinander; jetzt wählt der Kassier die Zahlart wie jede andere Eingabe, und nur
65
+ ein Knopf löst die Zahlung aus. Offen 0 macht aus demselben Knopf „Abschließen“.
66
+ - **Nach Positionen als Kacheln**: `getrennt.offene_positionen`, `getrennt.stueck_offen`
67
+ („{n} offen“), `getrennt.stueck_gewaehlt` („{n} von {offen}“), `getrennt.nichts_gewaehlt` und
68
+ `getrennt.alles_bezahlt`. `getrennt.stueck_bezahlt` entfällt (noch nie veröffentlicht): bezahlte
69
+ Stück verschwinden aus der Auswahl. Grund: Nutzertest – in der großen Fläche stehen nur noch die
70
+ offenen Produkte als Kacheln, der Kassier tippt dort an, was dieser Gast zahlt.
71
+ - **`BESCHRIFTUNGEN` und `beschriftung()`**: ein zweiter Katalog für Knöpfe und Zeilennamen
72
+ („Getrennt", „Zahlung {n}", „Offen", „Rest", „÷ {n}", „davon Trinkgeld {betrag}", „Wie
73
+ zurückgeben?", „Alles bar", „Mehrere" …), in `fixtures/kasse-texte.json` unter `beschriftungen`.
74
+ Grund: `MELDUNGEN` führt nur Sätze (die Wächter beider Kassen erkennen Sätze daran), „Rest" ist
75
+ keiner – muss aber in beiden Kassen gleich heißen. Die Zahlarten folgen dem Bon
76
+ („Kartenzahlung", „Barzahlung").
77
+ - **Vier weitere Sätze unter `getrennt.*`**: `sitzung_unlesbar` (eine auf dem Gerät abgelegte
78
+ Sitzung lässt sich nicht mehr lesen – auf schon belastete Karten hinweisen, im Panel oder am
79
+ Terminal nachsehen lassen), `ablage_fehlgeschlagen` (die Ablage schlägt fehl – vor dem
80
+ Neuladen warnen, sonst verschwinden belastete Karten aus der Liste), `zu_viele_zahlungen`
81
+ (höchstens 20 Zahlungen je Beleg) und `entkoppeln_offene_karten` (ein entkoppeltes Gerät hatte
82
+ noch offene Kartenzahlungen – die Beträge stehen daneben, der Satz selbst bleibt ohne
83
+ Platzhalter). Grund: die Ablage der Teilzahlung läuft rein lokal auf dem Gerät; geht sie
84
+ verloren oder lässt sie sich nicht lesen, ist eine schon belastete Karte das teure Risiko, und
85
+ der Satz muss zum Nachschauen anleiten statt zum Weiterkassieren zu verleiten.
86
+ - **Einstellung `zahlGetrennt`** (Betrieb, Standard `false`) und **Tasten-Aktion `getrennt`**
87
+ (ohne Vorgabe-Taste). Grund: für Betriebe ohne Bedarf bleibt die Kasse, wie sie ist; eine
88
+ unerprobte Vorgabe-Taste finge womöglich der Browser ab. Das Backend (`kasse-settings-core.js`)
89
+ muss beide nachziehen, sonst verwirft sein Validator den Wert beim Speichern.
90
+ - **Vorgabe `kassierenModus` jetzt `'panel'`** (vorher `'seite'`): kassiert wird im Korb-Panel,
91
+ die Kacheln bleiben stehen. Grund: Nutzertest – so bleibt der Kachelbereich beim Kassieren
92
+ sichtbar, auch beim getrennten Zahlen. Ein gespeichertes `'seite'` bleibt; gespeichert werden
93
+ aber nur geänderte Felder, darum wechselt jedes Konto, das den Schalter nie angefasst hat, mit
94
+ dem Backend-Standard auf das Korb-Panel. Das Backend (`BETRIEB_STANDARD` in
95
+ `kasse-settings-core.js`) und der Dart-Zwilling ziehen denselben Wert nach.
96
+ - **Texte, die bisher nur in der Browser-Kasse standen, jetzt im Katalog**: Sätze
97
+ `kassieren.nichts_erfasst`, `kassieren.gegeben_fehlt`, `kassieren.gegeben_zu_wenig`,
98
+ `kassieren.gesperrt` („Kassieren gesperrt: {grund}“), `trinkgeld.ueber_haelfte`,
99
+ `sitzung.meldet_ab` („Kasse meldet in {sekunden} s ab …“), `abmelden.noch_einmal`,
100
+ `kartenzahlung.terminal_bricht_ab` und `connect.entkoppeln_frage` (nur Web); Beschriftungen
101
+ `kassieren.trinkgeld`, `kassieren.kein`, `kassieren.eigener_betrag`, `kassieren.passend`,
102
+ `kassieren.gegeben_loeschen`, `kassieren.es_fehlen_noch`, `kassieren.rueckgeld`,
103
+ `kartenzahlung.betrag_am_terminal`, `kartenzahlung.karte_vorhalten` („… · noch {zeit}“),
104
+ `kopplung.neu_koppeln`, `abmelden.frage`, `abmelden.weiter_arbeiten`, `geraet.entkoppeln`,
105
+ `connect.entkoppeln_bestaetigen` (nur Web), `storno.titel` („Storno zu {beleg}“),
106
+ `meldung.ausblenden` („Meldung ausblenden: {meldung}“) und `meldung.warnung_ausblenden`
107
+ („Verstanden – Warnung ausblenden: {meldung}“). Wortlaut wie bisher in der Browser-Kasse.
108
+ Grund: Oberflächen-Vertrag – beide Kassen zeigen dieselben Wörter; das X an einer Meldung nennt
109
+ jetzt, welche Meldung es ausblendet (in der Ecke stehen oft mehrere).
110
+ - **Halbgeviertstrich statt Geviertstrich** in allen sichtbaren Texten von `MELDUNGEN` (u. a.
111
+ `abschluss.unklar`, `kartenzahlung.unklar`, `kartenzahlung.karte_gebucht_beleg_offen`,
112
+ `connect.*`, `druck.*`) und in den Sätzen der Hobex-Antwortcodes (`transaction-response.ts`,
113
+ auch `fixtures/hobex-hps-codes.json`): „ – “ statt „ — “. Nur das Zeichen ändert sich, kein
114
+ Wortlaut und kein Schlüssel. Wer einen dieser Sätze wörtlich vergleicht, muss nachziehen.
115
+ Grund: einheitliche Typografie am Bildschirm; der Geviertstrich wirkt dort wie ein
116
+ Maschinenzeichen. Die Rechnungstexte (`rechnung/texte.ts`, PDF) bleiben unverändert.
117
+ - **`Cancellation` trägt `refundedByPayment`** (Zahlungs-ID auf positive Cent), Zwilling der
118
+ gleichnamigen Backend-Ablage (`functions/gemeinsam/storno-core.js`). Die Lesung
119
+ (`fromReceiptPayload`) behält nur ganzzahlige, nicht negative Werte, verwirft ungültige
120
+ Einträge einzeln statt den ganzen Eintrag zu verwerfen, und lässt das Feld weg, wenn die
121
+ Nutzlast es nicht trägt – bestehende Belege lesen sich unverändert. Auch am `pending`-Eintrag
122
+ vorhanden. Grund: über alle Storno-Einträge darf je Zahlung nie mehr zurückgehen, als bezahlt
123
+ wurde; ohne das Feld ließe sich das am Client nicht nachvollziehen.
124
+ - **Weitere Sätze in `MELDUNGEN`**: `getrennt.karte_bereits_zurueckgebucht` (das Terminal meldet
125
+ eine Gutschrift, die hier noch als offene Rückbuchung steht), `abschluss.erledigen_frage` (nur erledigen, was wirklich in der Belegliste steht),
126
+ `kartenzahlung.korb_gesperrt_karte_belastet` und `kartenzahlung.entkoppeln_karte_belastet`.
127
+ Grund: jeder dieser Zustände ist eine schon belastete oder gutgeschriebene Karte ohne
128
+ passenden Beleg – der teuerste Fehler am Tresen ist die doppelte Buchung, und kein Satz davon
129
+ darf zum Wiederholen raten, ohne vorher den Terminal-Beleg zu nennen.
130
+ - **Weitere `BESCHRIFTUNGEN`**: `allgemein.abbrechen`, `abschluss.beleg_vorhanden`,
131
+ `abschluss.erledigen`, `getrennt.karte_zurueckbuchen`, `getrennt.trotzdem_neu_koppeln`,
132
+ `getrennt.zahlung_behalten`, `getrennt.klaeren`, `getrennt.wurde_belastet`,
133
+ `getrennt.nicht_belastet`, `getrennt.erneut_zurueckbuchen`, `storno.differenz`. Grund: Knöpfe
134
+ zu den neuen Sätzen oben, in beiden Kassen gleich beschriftet.
135
+ - **Storno eines Belegs mit mehreren Zahlungen: Karten gehen von Hand zurück.**
136
+ `storno.karten_gutschreiben` steht nach dem gebuchten Storno über der Liste der Karten zum
137
+ Abhaken (eine oder mehrere, mit oder ohne Anbindung); `storno.ergebnis_unklar_karten` ersetzt
138
+ `storno.ergebnis_unklar`, wenn der gesendete Vorschlag Karten enthielt – erst die Belegliste
139
+ neu laden, erst dann gutschreiben (`STORNO_ZAHLUNG_FEHLER` zeigt weiter auf
140
+ `storno.ergebnis_unklar`, die Wahl trifft die Kasse am Vorschlag). Die Sätze und Knöpfe einer
141
+ Gutschrift am Terminal VOR dem Senden (`storno.gutschrift_laeuft`,
142
+ `storno.gutschrift_fehlgeschlagen`, `storno.gutschrift_unklar`,
143
+ `storno.gutgeschrieben_nicht_gebucht`, `storno.gutschrift_pruefen`,
144
+ `storno.extern_gutschreiben`, `storno.am_terminal_gutgeschrieben`,
145
+ `storno.nicht_gutgeschrieben`) sind wieder entfernt; sie waren nie veröffentlicht. Grund:
146
+ eine Gutschrift vor dem gebuchten Storno lässt Geld zurückgehen, ohne dass ein Storno-Beleg
147
+ sicher entsteht; die automatische Gutschrift kommt als eigener Schritt mit
148
+ Server-Unterstützung.
149
+ - **`storno.karten_nicht_abgehakt`**: wird die Liste der Karten nach dem gebuchten Storno
150
+ geschlossen, obwohl nicht jede Karte abgehakt ist, fragt die Kasse einmal nach. Grund: eine
151
+ vergessene Gutschrift fällt sonst erst dem Gast auf, und am Storno-Beleg sieht sie niemand mehr.
152
+
7
153
  ## 0.30.0
8
154
 
9
155
  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,