@kreiseck/kasseneck-api 0.6.44 → 0.6.45

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 (52) hide show
  1. package/README.md +17 -0
  2. package/dist/cjs/client/aufrufe.d.ts +21 -0
  3. package/dist/cjs/client/aufrufe.js +34 -0
  4. package/dist/cjs/client/cashregisters.d.ts +2 -2
  5. package/dist/cjs/client/index.d.ts +1 -0
  6. package/dist/cjs/client/index.js +3 -1
  7. package/dist/cjs/client/receipts.d.ts +12 -12
  8. package/dist/cjs/client/reports.d.ts +3 -3
  9. package/dist/cjs/client/status.d.ts +3 -3
  10. package/dist/cjs/index.d.ts +1 -1
  11. package/dist/cjs/index.js +3 -2
  12. package/dist/cjs/kasse/artikel.d.ts +3 -3
  13. package/dist/cjs/kasse/client.d.ts +4 -4
  14. package/dist/cjs/kasse/drucker.d.ts +4 -4
  15. package/dist/cjs/kasse/index.d.ts +1 -1
  16. package/dist/cjs/kasse/index.js +30 -1
  17. package/dist/cjs/kasse/settings.d.ts +82 -31
  18. package/dist/cjs/kasse/settings.js +65 -5
  19. package/dist/cjs/payments/hobex.d.ts +3 -3
  20. package/dist/cjs/payments/stripe.d.ts +3 -3
  21. package/dist/cjs/register/index.d.ts +1 -1
  22. package/dist/cjs/register/index.js +2 -1
  23. package/dist/cjs/register/pairing.d.ts +2 -0
  24. package/dist/cjs/register/pairing.js +6 -0
  25. package/dist/cjs/register/session.d.ts +3 -3
  26. package/dist/esm/client/aufrufe.d.ts +21 -0
  27. package/dist/esm/client/aufrufe.js +31 -0
  28. package/dist/esm/client/cashregisters.d.ts +2 -2
  29. package/dist/esm/client/index.d.ts +1 -0
  30. package/dist/esm/client/index.js +1 -0
  31. package/dist/esm/client/receipts.d.ts +12 -12
  32. package/dist/esm/client/reports.d.ts +3 -3
  33. package/dist/esm/client/status.d.ts +3 -3
  34. package/dist/esm/index.d.ts +1 -1
  35. package/dist/esm/index.js +1 -1
  36. package/dist/esm/kasse/artikel.d.ts +3 -3
  37. package/dist/esm/kasse/client.d.ts +4 -4
  38. package/dist/esm/kasse/drucker.d.ts +4 -4
  39. package/dist/esm/kasse/index.d.ts +1 -1
  40. package/dist/esm/kasse/index.js +3 -1
  41. package/dist/esm/kasse/settings.d.ts +82 -31
  42. package/dist/esm/kasse/settings.js +64 -4
  43. package/dist/esm/payments/hobex.d.ts +3 -3
  44. package/dist/esm/payments/stripe.d.ts +3 -3
  45. package/dist/esm/register/index.d.ts +1 -1
  46. package/dist/esm/register/index.js +1 -1
  47. package/dist/esm/register/pairing.d.ts +2 -0
  48. package/dist/esm/register/pairing.js +5 -0
  49. package/dist/esm/register/session.d.ts +3 -3
  50. package/fixtures/kasse-settings-standard.json +10 -9
  51. package/fixtures/oberflaeche.json +216 -0
  52. package/package.json +3 -2
@@ -7,48 +7,95 @@
7
7
  * Backend; ein Test in beiden Repos haelt sie deckungsgleich. Trinkgeld ist
8
8
  * bewusst AUS, bis die Buchung geklaert ist (Spec kachel-kasse § 9).
9
9
  */
10
- export type KasseStil = 'klar' | 'warm' | 'nacht' | 'kontrast';
11
- export type KasseSchrift = 'S' | 'M' | 'L' | 'XL';
12
- export type KasseWasserzeichen = 'aus' | 'anmeldung' | 'ueberall';
13
- export type KasseMenge = 'aus' | 'x' | 'kg';
14
- export type KasseTgModus = 'betrag' | 'gesamt' | 'beides';
15
- export type KasseKassierenModus = 'seite' | 'panel';
10
+ export declare const STIL: readonly ["klar", "warm", "nacht", "kontrast"];
11
+ export type KasseStil = typeof STIL[number];
12
+ export declare const SCHRIFT: readonly ["S", "M", "L", "XL"];
13
+ export type KasseSchrift = typeof SCHRIFT[number];
14
+ export declare const WASSERZEICHEN: readonly ["aus", "anmeldung", "ueberall"];
15
+ export type KasseWasserzeichen = typeof WASSERZEICHEN[number];
16
+ export declare const MENGE: readonly ["aus", "x", "kg"];
17
+ export type KasseMenge = typeof MENGE[number];
18
+ export declare const TG_MODUS: readonly ["betrag", "gesamt", "beides"];
19
+ export type KasseTgModus = typeof TG_MODUS[number];
20
+ export declare const KASSIEREN_MODUS: readonly ["seite", "panel"];
21
+ export type KasseKassierenModus = typeof KASSIEREN_MODUS[number];
16
22
  /** Kartenanbieter: Karte gibt es erst mit eingerichtetem Anbieter; 'extern' = eigenes Terminal ohne Anbindung. */
17
- export type KasseKartenanbieter = 'keiner' | 'extern' | 'hobex' | 'mypos' | 'stripe';
18
- export declare const KARTENANBIETER: readonly KasseKartenanbieter[];
19
- export type KasseBelegAusgabe = 'qr' | 'druck' | 'mail' | 'sms' | 'fragen';
20
- export type KasseLayout = 'rechts' | 'links' | 'vollbild';
21
- export type KasseKatpos = 'oben' | 'links';
22
- export type KasseHoehe = 'S' | 'M' | 'L';
23
+ export declare const KARTENANBIETER: readonly ["keiner", "extern", "gptom", "hobex", "mypos", "stripe"];
24
+ export type KasseKartenanbieter = typeof KARTENANBIETER[number];
25
+ export declare const BELEG_AUSGABE: readonly ["qr", "druck", "mail", "sms", "fragen"];
26
+ export type KasseBelegAusgabe = typeof BELEG_AUSGABE[number];
27
+ export declare const LAYOUT: readonly ["rechts", "links", "vollbild"];
28
+ export type KasseLayout = typeof LAYOUT[number];
29
+ export declare const KATPOS: readonly ["oben", "links"];
30
+ export type KasseKatpos = typeof KATPOS[number];
31
+ export declare const HOEHE: readonly ["S", "M", "L"];
32
+ export type KasseHoehe = typeof HOEHE[number];
23
33
  /**
24
34
  * `sdp` = Netzwerk ueber Epson Server Direct Print (der Drucker holt Jobs vom Backend, jeder Browser druckt).
25
35
  * `connect` = Kasseneck Connect (lokaler Agent auf dem Kassen-Rechner druckt fuer die Browser-Kasse).
26
36
  */
27
- export type KasseDruckerArt = 'sdp' | 'netz' | 'bt' | 'usb' | 'connect';
37
+ export declare const DRUCKER_ART: readonly ["sdp", "netz", "bt", "usb", "connect"];
38
+ export type KasseDruckerArt = typeof DRUCKER_ART[number];
28
39
  /** Terminal-Ansprache: direkt per IP (wie bisher) oder ueber Kasseneck Connect (Agent leitet weiter). */
29
- export type KasseTerminalVia = 'direkt' | 'connect';
40
+ export declare const TERMINAL_VIA: readonly ["direkt", "connect"];
41
+ export type KasseTerminalVia = typeof TERMINAL_VIA[number];
30
42
  /** Art des Kartenterminals an dieser Kasse: keines oder Hobex HPS (JSON-REST am Geraet). */
31
- export type KasseTerminalArt = 'keins' | 'hps';
32
- export type KassePapier = 'mm58' | 'mm80';
33
- export type KasseZeichensatz = 'CP1252' | 'CP437';
34
- export type KasseSchnitt = 'partial' | 'full' | 'none';
35
- export type KasseLadeAuto = 'bar' | 'immer' | 'nie';
43
+ export declare const TERMINAL_ART: readonly ["keins", "hps"];
44
+ export type KasseTerminalArt = typeof TERMINAL_ART[number];
45
+ export declare const PAPIER: readonly ["mm58", "mm80"];
46
+ export type KassePapier = typeof PAPIER[number];
47
+ export declare const ZEICHENSATZ: readonly ["CP1252", "CP437"];
48
+ export type KasseZeichensatz = typeof ZEICHENSATZ[number];
49
+ export declare const SCHNITT: readonly ["partial", "full", "none"];
50
+ export type KasseSchnitt = typeof SCHNITT[number];
51
+ export declare const LADE_AUTO: readonly ["bar", "immer", "nie"];
52
+ export type KasseLadeAuto = typeof LADE_AUTO[number];
53
+ /** Groesse des Kuerzel-Logos in der Kopfzeile der Kasse. */
54
+ export declare const LOGO_GROESSE: readonly ["S", "M", "L"];
55
+ export type KasseLogoGroesse = typeof LOGO_GROESSE[number];
56
+ /** Schriftgroesse in den Chef-Einstellungen — getrennt von der Schrift der Kasse. */
57
+ export declare const SCHRIFT_EINST: readonly ["S", "M", "L"];
58
+ export type KasseSchriftEinst = typeof SCHRIFT_EINST[number];
59
+ /** Kachel-Optik: farbiger Streifen am Rand oder ganz gefuellte Kachel. */
60
+ export declare const KACHELSTIL: readonly ["streifen", "voll"];
61
+ export type KasseKachelstil = typeof KACHELSTIL[number];
62
+ /** Automatisches Abmelden nach Minuten Ruhe; 0 = nie. */
63
+ export declare const AUTO_AB_MIN: readonly [0, 1, 5, 15, 30];
64
+ export type KasseAutoAbMin = typeof AUTO_AB_MIN[number];
65
+ /** Rabatt am Beleg erlaubt. */
66
+ export declare const RABATT: readonly ["aus", "an"];
67
+ export type KasseRabatt = typeof RABATT[number];
68
+ /** Seite des Wasserzeichens — ALT, abgeloest von wzPos. */
69
+ export declare const WZ_SEITE: readonly ["links", "mitte", "rechts"];
70
+ export type KasseWzSeite = typeof WZ_SEITE[number];
71
+ /** Deckkraft des Wasserzeichens in Prozent — bewusst Stufen, kein Schieberegler. */
72
+ export declare const WZ_STAERKE: readonly [3, 6, 10, 16];
73
+ export type KasseWzStaerke = typeof WZ_STAERKE[number];
74
+ /** Groesse des Bild-Logos am Beleg. */
75
+ export declare const LOGO_SKALA: readonly ["S", "M", "L", "XL"];
76
+ export type KasseLogoSkala = typeof LOGO_SKALA[number];
77
+ /** Groesse des Wasserzeichens — getrennt vom Beleg-Logo. */
78
+ export declare const WZ_SKALA: readonly ["S", "M", "L", "XL"];
79
+ export type KasseWzSkala = typeof WZ_SKALA[number];
80
+ /** Wie lange die Fertig-Seite stehen bleibt, in Sekunden; 0 = bis zum Tippen. */
81
+ export declare const FERTIG_SEKUNDEN: readonly [0, 3, 5, 10, 15, 30, 60];
82
+ export type KasseFertigSekunden = typeof FERTIG_SEKUNDEN[number];
36
83
  /** Schalter-Landkarte: Steuersaetze / Trinkgeldstufen (Schluessel = Wert als Text). */
37
84
  export type Schalterkarte = Record<string, boolean>;
38
85
  export interface KasseSettingsBetrieb {
39
86
  logoText: string;
40
87
  logoAn: boolean;
41
- logoGroesse: 'S' | 'M' | 'L';
88
+ logoGroesse: KasseLogoGroesse;
42
89
  wasserzeichen: KasseWasserzeichen;
43
90
  farbe: string;
44
91
  stil: KasseStil;
45
92
  schrift: KasseSchrift;
46
- schriftEinst: 'S' | 'M' | 'L';
47
- kachelstil: 'streifen' | 'voll';
93
+ schriftEinst: KasseSchriftEinst;
94
+ kachelstil: KasseKachelstil;
48
95
  uhr: boolean;
49
96
  sperrbild: boolean;
50
97
  foto: boolean;
51
- autoAbMin: 0 | 1 | 5 | 15 | 30;
98
+ autoAbMin: KasseAutoAbMin;
52
99
  abNachVerkauf: boolean;
53
100
  /** Schnelles Entsperren mit gemerkter PIN (lokal, Server-Login laeuft nach); aus = streng, jeder Login wartet. */
54
101
  schnellLogin: boolean;
@@ -61,21 +108,21 @@ export interface KasseSettingsBetrieb {
61
108
  menge: KasseMenge;
62
109
  notiz: boolean;
63
110
  suche: boolean;
64
- rabatt: 'aus' | 'an';
111
+ rabatt: KasseRabatt;
65
112
  /** Bild-Logo (Download-URL aus dem Kasse-Upload); '' = Kuerzel verwenden. */
66
113
  logoBild: string;
67
114
  /** Seite des Wasserzeichens — ALT: abgeloest von wzPos, bleibt fuers Mischen alter Staende. */
68
- wzSeite: 'links' | 'mitte' | 'rechts';
115
+ wzSeite: KasseWzSeite;
69
116
  /** Horizontale Lage der Wasserzeichen-MITTE in Prozent (-25 bis 125 — darf ueber den Rand hinaus). */
70
117
  wzPos: number;
71
118
  /** Vertikale Lage der Wasserzeichen-Mitte in Prozent (-25 bis 125). */
72
119
  wzPosV: number;
73
120
  /** Deckkraft des Wasserzeichens in Prozent — bewusst Stufen, kein Schieberegler. */
74
- wzStaerke: 3 | 6 | 10 | 16;
121
+ wzStaerke: KasseWzStaerke;
75
122
  /** Groesse des Bild-Logos am BELEG (Ansicht, PDF, Kopfzeile). */
76
- logoSkala: 'S' | 'M' | 'L' | 'XL';
123
+ logoSkala: KasseLogoSkala;
77
124
  /** Groesse des Wasserzeichens — getrennt vom Beleg-Logo. */
78
- wzSkala: 'S' | 'M' | 'L' | 'XL';
125
+ wzSkala: KasseWzSkala;
79
126
  zahlBar: boolean;
80
127
  zahlKarte: boolean;
81
128
  kartenanbieter: KasseKartenanbieter;
@@ -91,15 +138,17 @@ export interface KasseSettingsBetrieb {
91
138
  /** Rabatt-Chips in Prozent — dieselben Regeln wie tgChips, vom Chef einstellbar. */
92
139
  rabattChips: number[];
93
140
  belegAusgabe: KasseBelegAusgabe;
94
- fertigSekunden: 0 | 3 | 5 | 10 | 15 | 30 | 60;
141
+ fertigSekunden: KasseFertigSekunden;
95
142
  /** Glas-Optik: Kacheln und Korb leicht durchscheinend (Wasserzeichen schimmert). */
96
143
  glas: boolean;
97
144
  /** Hilfetexte in den Chef-Einstellungen anzeigen. */
98
145
  hinweise: boolean;
99
146
  }
100
147
  /** Aktionen der Kasse, die eine Taste bekommen koennen. */
101
- export type KasseTastenAktion = 'kassieren' | 'abschliessen' | 'abbrechen' | 'frei' | 'bar' | 'karte' | 'passend' | 'belege' | 'letzteZurueck' | 'einstellungen' | 'abmelden' | 'trinkgeld' | 'vollbild' | 'gegebenLeeren' | 'korbLeeren';
102
- export declare const KASSE_TASTEN_AKTIONEN: readonly KasseTastenAktion[];
148
+ export declare const KASSE_TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren"];
149
+ export type KasseTastenAktion = typeof KASSE_TASTEN_AKTIONEN[number];
150
+ /** Kurzer Name, damit alle Enum-Listen gleich heissen; der alte bleibt gueltig. */
151
+ export declare const TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren"];
103
152
  /** Tastenkarte: Aktion -> Tasten (`Mod+F`, `Enter`, `Escape`, `F5` ...; `Mod` = ⌘ auf dem Mac, Strg sonst). */
104
153
  export type KasseTastenkarte = Record<KasseTastenAktion, string[]>;
105
154
  export declare const KASSE_TASTEN_STANDARD: Readonly<KasseTastenkarte>;
@@ -116,6 +165,8 @@ export interface KasseSettingsGeraet {
116
165
  druckerIp: string;
117
166
  druckerPort: number;
118
167
  druckerBt: string;
168
+ /** Klartextname des gemerkten Druckers; sonst stuende dort eine nackte Bluetooth-Adresse. */
169
+ druckerName: string;
119
170
  /** Kennung des Netzwerk-Druckers (Server Direct Print) aus `listMyPrinters`; '' = keiner gewaehlt. */
120
171
  druckerId: string;
121
172
  /** ePOS Device-ID bei `druckerArt 'netz'` (Epson direkt per IP), Vorgabe `local_printer`. */
@@ -7,8 +7,68 @@
7
7
  * Backend; ein Test in beiden Repos haelt sie deckungsgleich. Trinkgeld ist
8
8
  * bewusst AUS, bis die Buchung geklaert ist (Spec kachel-kasse § 9).
9
9
  */
10
- export const KARTENANBIETER = ['keiner', 'extern', 'hobex', 'mypos', 'stripe'];
10
+ /*
11
+ * Jedes Enum steht als Liste zur Laufzeit da, der Typ leitet sich daraus ab
12
+ * (`typeof LISTE[number]`). So gibt es die Werte nur einmal, und die Zwillinge
13
+ * (Backend-Validator, Flutter-Paket) koennen gegen dieselben Listen pruefen,
14
+ * statt sie abzuschreiben.
15
+ */
16
+ export const STIL = ['klar', 'warm', 'nacht', 'kontrast'];
17
+ export const SCHRIFT = ['S', 'M', 'L', 'XL'];
18
+ export const WASSERZEICHEN = ['aus', 'anmeldung', 'ueberall'];
19
+ export const MENGE = ['aus', 'x', 'kg'];
20
+ export const TG_MODUS = ['betrag', 'gesamt', 'beides'];
21
+ export const KASSIEREN_MODUS = ['seite', 'panel'];
22
+ /** Kartenanbieter: Karte gibt es erst mit eingerichtetem Anbieter; 'extern' = eigenes Terminal ohne Anbindung. */
23
+ export const KARTENANBIETER = ['keiner', 'extern', 'gptom', 'hobex', 'mypos', 'stripe'];
24
+ export const BELEG_AUSGABE = ['qr', 'druck', 'mail', 'sms', 'fragen'];
25
+ export const LAYOUT = ['rechts', 'links', 'vollbild'];
26
+ export const KATPOS = ['oben', 'links'];
27
+ export const HOEHE = ['S', 'M', 'L'];
28
+ /**
29
+ * `sdp` = Netzwerk ueber Epson Server Direct Print (der Drucker holt Jobs vom Backend, jeder Browser druckt).
30
+ * `connect` = Kasseneck Connect (lokaler Agent auf dem Kassen-Rechner druckt fuer die Browser-Kasse).
31
+ */
32
+ export const DRUCKER_ART = ['sdp', 'netz', 'bt', 'usb', 'connect'];
33
+ /** Terminal-Ansprache: direkt per IP (wie bisher) oder ueber Kasseneck Connect (Agent leitet weiter). */
34
+ export const TERMINAL_VIA = ['direkt', 'connect'];
35
+ /** Art des Kartenterminals an dieser Kasse: keines oder Hobex HPS (JSON-REST am Geraet). */
36
+ export const TERMINAL_ART = ['keins', 'hps'];
37
+ export const PAPIER = ['mm58', 'mm80'];
38
+ export const ZEICHENSATZ = ['CP1252', 'CP437'];
39
+ export const SCHNITT = ['partial', 'full', 'none'];
40
+ export const LADE_AUTO = ['bar', 'immer', 'nie'];
41
+ /*
42
+ * Auch die uebrigen Wertemengen der Einstellungen stehen jetzt als Liste da —
43
+ * vorher waren sie nur als Union am Feld ausgeschrieben. Ein Zwilling konnte
44
+ * dadurch einen Wert (etwa `kachelstil: 'voll'`) gar nicht kennen, ohne dass es
45
+ * auffiel: der Vertrag fuehrte die Menge nicht, und die Standardwerte-Datei
46
+ * pinnt je Feld nur einen einzigen Wert.
47
+ */
48
+ /** Groesse des Kuerzel-Logos in der Kopfzeile der Kasse. */
49
+ export const LOGO_GROESSE = ['S', 'M', 'L'];
50
+ /** Schriftgroesse in den Chef-Einstellungen — getrennt von der Schrift der Kasse. */
51
+ export const SCHRIFT_EINST = ['S', 'M', 'L'];
52
+ /** Kachel-Optik: farbiger Streifen am Rand oder ganz gefuellte Kachel. */
53
+ export const KACHELSTIL = ['streifen', 'voll'];
54
+ /** Automatisches Abmelden nach Minuten Ruhe; 0 = nie. */
55
+ export const AUTO_AB_MIN = [0, 1, 5, 15, 30];
56
+ /** Rabatt am Beleg erlaubt. */
57
+ export const RABATT = ['aus', 'an'];
58
+ /** Seite des Wasserzeichens — ALT, abgeloest von wzPos. */
59
+ export const WZ_SEITE = ['links', 'mitte', 'rechts'];
60
+ /** Deckkraft des Wasserzeichens in Prozent — bewusst Stufen, kein Schieberegler. */
61
+ export const WZ_STAERKE = [3, 6, 10, 16];
62
+ /** Groesse des Bild-Logos am Beleg. */
63
+ export const LOGO_SKALA = ['S', 'M', 'L', 'XL'];
64
+ /** Groesse des Wasserzeichens — getrennt vom Beleg-Logo. */
65
+ export const WZ_SKALA = ['S', 'M', 'L', 'XL'];
66
+ /** Wie lange die Fertig-Seite stehen bleibt, in Sekunden; 0 = bis zum Tippen. */
67
+ export const FERTIG_SEKUNDEN = [0, 3, 5, 10, 15, 30, 60];
68
+ /** Aktionen der Kasse, die eine Taste bekommen koennen. */
11
69
  export const KASSE_TASTEN_AKTIONEN = ['kassieren', 'abschliessen', 'abbrechen', 'frei', 'bar', 'karte', 'passend', 'belege', 'letzteZurueck', 'einstellungen', 'abmelden', 'trinkgeld', 'vollbild', 'gegebenLeeren', 'korbLeeren'];
70
+ /** Kurzer Name, damit alle Enum-Listen gleich heissen; der alte bleibt gueltig. */
71
+ export const TASTEN_AKTIONEN = KASSE_TASTEN_AKTIONEN;
12
72
  export const KASSE_TASTEN_STANDARD = Object.freeze({
13
73
  kassieren: ['Enter'], abschliessen: ['Enter'], abbrechen: ['Escape'],
14
74
  // Mod+F gehoert dem Vollbild; Betrag frei liegt auf D. Bar bleibt auf B,
@@ -30,8 +90,8 @@ export const KASSE_TASTEN_STANDARD = Object.freeze({
30
90
  korbLeeren: ['Mod+C'],
31
91
  });
32
92
  export const KASSE_BETRIEB_STANDARD = Object.freeze({
33
- // Kasseneck-Teal aus dem Branding-Guide — nicht mehr das alte Blau.
34
- logoText: 'K', logoAn: true, logoGroesse: 'M', wasserzeichen: 'anmeldung', farbe: '#0F6B72',
93
+ // Petrol aus der Markenpalette ("Ecke, Aktion") — nicht das alte Blau.
94
+ logoText: 'K', logoAn: true, logoGroesse: 'M', wasserzeichen: 'anmeldung', farbe: '#116B6B',
35
95
  stil: 'klar', schrift: 'M', schriftEinst: 'S', kachelstil: 'streifen', uhr: true,
36
96
  sperrbild: true, foto: true, autoAbMin: 0, abNachVerkauf: false, schnellLogin: true,
37
97
  preisAnzeigen: true, ustAnzeigen: false, emoji: true, katFarben: true, freiErlaubt: true,
@@ -49,7 +109,7 @@ export const KASSE_BETRIEB_STANDARD = Object.freeze({
49
109
  export const KASSE_GERAET_STANDARD = Object.freeze({
50
110
  layout: 'rechts', katpos: 'oben', spaltenExtra: 0, hoehe: 'M', touch: false,
51
111
  tasten: { ...KASSE_TASTEN_STANDARD },
52
- druckerAn: false, druckerArt: 'sdp', druckerIp: '', druckerPort: 9100, druckerBt: '', druckerId: '', druckerDevid: 'local_printer',
112
+ druckerAn: false, druckerArt: 'sdp', druckerIp: '', druckerPort: 9100, druckerBt: '', druckerName: '', druckerId: '', druckerDevid: 'local_printer',
53
113
  connectDruckerId: '',
54
114
  papier: 'mm80', zeichensatz: 'CP1252', schnitt: 'partial',
55
115
  ladeAn: false, ladeAuto: 'bar',
@@ -1,5 +1,5 @@
1
1
  import { type HobexReceipt } from '../models/index.js';
2
- import type { KasseneckTransport } from '../client/transport.js';
2
+ import type { InternerTransport } from '../client/aufrufe.js';
3
3
  /**
4
4
  * Cent -> Euro. **Die einzige Umrechnungsstelle dieses Moduls.** Betraege
5
5
  * werden im ganzen Paket in Cent gefuehrt (exakte Ganzzahl-Arithmetik); die
@@ -46,7 +46,7 @@ export interface HobexTransactionIdOptions {
46
46
  * **Der Endpunkt heisst `hobexPayApi`** — mit Suffix; ohne ihn gibt es ihn
47
47
  * nicht.
48
48
  */
49
- export declare function hobexPay(rufen: KasseneckTransport, options: HobexPayOptions): Promise<HobexReceipt>;
49
+ export declare function hobexPay(rufen: InternerTransport, options: HobexPayOptions): Promise<HobexReceipt>;
50
50
  /**
51
51
  * Erstattet eine zuvor ueber die Hobex-Cloud getaetigte Zahlung. Das Backend
52
52
  * storniert zuerst (Void, solange der Tagesabschluss aussteht) und erstattet
@@ -61,7 +61,7 @@ export declare function hobexPay(rufen: KasseneckTransport, options: HobexPayOpt
61
61
  *
62
62
  * **Der Endpunkt heisst `hobexRefundApi`** — mit Suffix.
63
63
  */
64
- export declare function hobexRefund(rufen: KasseneckTransport, options: HobexRefundOptions): Promise<void>;
64
+ export declare function hobexRefund(rufen: InternerTransport, options: HobexRefundOptions): Promise<void>;
65
65
  /**
66
66
  * Erzeugt eine neue Hobex-Transaktionskennung: 19 Ziffern aus Zeitanteil und
67
67
  * Zufall (Zwilling von `newHobexTransactionId` im Vorbild, Zeile 522).
@@ -1,6 +1,6 @@
1
1
  import { StripeLinkMode, type StripeLinkModeKey } from '../enums/index.js';
2
2
  import { type ReceiptItem, type StripeUrlSession } from '../models/index.js';
3
- import type { KasseneckTransport } from '../client/transport.js';
3
+ import type { InternerTransport } from '../client/aufrufe.js';
4
4
  export interface CreateStripeLinkOptions {
5
5
  /** Positionen des Zahlungslinks; mindestens eine, alle gueltig. */
6
6
  items: ReceiptItem[];
@@ -50,7 +50,7 @@ export interface StripeCaptureResult {
50
50
  * Methodenname und Endpunktname fallen wie schon beim Monatsbericht
51
51
  * auseinander (siehe client/reports.ts).
52
52
  */
53
- export declare function createStripeLink(rufen: KasseneckTransport, options: CreateStripeLinkOptions): Promise<StripeUrlSession>;
53
+ export declare function createStripeLink(rufen: InternerTransport, options: CreateStripeLinkOptions): Promise<StripeUrlSession>;
54
54
  /**
55
55
  * Zieht die zuvor nur reservierte Zahlung einer `authorization`-Sitzung ein.
56
56
  *
@@ -58,4 +58,4 @@ export declare function createStripeLink(rufen: KasseneckTransport, options: Cre
58
58
  * das Vorbild und so das Backend. Der naheliegende Singular waere ein fehlender
59
59
  * Pflichtparameter.
60
60
  */
61
- export declare function stripeCaptureIntent(rufen: KasseneckTransport, stripeSessionId: string): Promise<StripeCaptureResult>;
61
+ export declare function stripeCaptureIntent(rufen: InternerTransport, stripeSessionId: string): Promise<StripeCaptureResult>;
@@ -47,5 +47,5 @@
47
47
  * daraus entstehende ID-Token und `sitzung.sessionId` ergeben zusammen
48
48
  * `registerUserAuth` — ab da laeuft alles Weitere ueber den ueblichen Weg.
49
49
  */
50
- export { type RegisterDeviceConnection, type RegisterDeviceCredentials, type PairRegisterDeviceOptions, type PairedRegisterDevice, type RegisterUserKind, type RegisterUserSummary, type RegisterUserPerms, type RegisterScope, type RegisterUser, type RegisterUserSession, type ListRegisterUsersForDeviceOptions, type RegisterUserLoginOptions, type RegisterPinLoginOptions, type RegisterPinPolicy, type RegisterLoginMode, type RegisterDeviceUsers, type RegisterClientInfo, type RegisterGeo, type RegisterGeraeteAngaben, pairRegisterDevice, listRegisterUsersForDevice, unpairRegisterDevice, registerUserLogin, registerPinLogin, } from './pairing.js';
50
+ export { type RegisterDeviceConnection, type RegisterDeviceCredentials, type PairRegisterDeviceOptions, type PairedRegisterDevice, type RegisterUserKind, type RegisterUserSummary, type RegisterUserPerms, REGISTER_PERMS, type RegisterScope, type RegisterUser, type RegisterUserSession, type ListRegisterUsersForDeviceOptions, type RegisterUserLoginOptions, type RegisterPinLoginOptions, type RegisterPinPolicy, type RegisterLoginMode, type RegisterDeviceUsers, type RegisterClientInfo, type RegisterGeo, type RegisterGeraeteAngaben, pairRegisterDevice, listRegisterUsersForDevice, unpairRegisterDevice, registerUserLogin, registerPinLogin, } from './pairing.js';
51
51
  export { renewRegisterSession, endRegisterSession } from './session.js';
@@ -47,5 +47,5 @@
47
47
  * daraus entstehende ID-Token und `sitzung.sessionId` ergeben zusammen
48
48
  * `registerUserAuth` — ab da laeuft alles Weitere ueber den ueblichen Weg.
49
49
  */
50
- export { pairRegisterDevice, listRegisterUsersForDevice, unpairRegisterDevice, registerUserLogin, registerPinLogin, } from './pairing.js';
50
+ export { REGISTER_PERMS, pairRegisterDevice, listRegisterUsersForDevice, unpairRegisterDevice, registerUserLogin, registerPinLogin, } from './pairing.js';
51
51
  export { renewRegisterSession, endRegisterSession } from './session.js';
@@ -159,6 +159,8 @@ export interface RegisterUserPerms {
159
159
  tipAssign?: boolean;
160
160
  [weiteresRecht: string]: boolean | RegisterScope | undefined;
161
161
  }
162
+ /** Alle Rechte-Schluessel, die dieses Paket kennt — die Zwillinge pruefen dagegen. */
163
+ export declare const REGISTER_PERMS: readonly ["sell", "cancel", "articles", "layout", "reports", "takeover", "cancelScope", "receiptsScope", "drawer", "discount", "tipAssign"];
162
164
  /** Reichweite lesen, mit der Migration des Backends (register-auth.js). */
163
165
  export declare function cancelScopeOf(perms: RegisterUserPerms | null | undefined): RegisterScope;
164
166
  export declare function receiptsScopeOf(perms: RegisterUserPerms | null | undefined): RegisterScope;
@@ -38,6 +38,11 @@ import { KASSE_BETRIEB_STANDARD, KASSE_GERAET_STANDARD, mergeKasseSettings, } fr
38
38
  * es auch halten.
39
39
  */
40
40
  const ohneAnmeldung = () => ({ headers: {}, params: {} });
41
+ /** Alle Rechte-Schluessel, die dieses Paket kennt — die Zwillinge pruefen dagegen. */
42
+ export const REGISTER_PERMS = [
43
+ 'sell', 'cancel', 'articles', 'layout', 'reports', 'takeover',
44
+ 'cancelScope', 'receiptsScope', 'drawer', 'discount', 'tipAssign',
45
+ ];
41
46
  /** Reichweite lesen, mit der Migration des Backends (register-auth.js). */
42
47
  export function cancelScopeOf(perms) {
43
48
  if (!perms)
@@ -1,4 +1,4 @@
1
- import type { KasseneckTransport } from '../client/transport.js';
1
+ import type { InternerTransport } from '../client/aufrufe.js';
2
2
  /**
3
3
  * Die beiden Aufrufe der **laufenden** Kassen-Sitzung. Anders als die drei in
4
4
  * pairing.ts haben sie eine Identitaet: sie laufen ueber `registerUserAuth`
@@ -23,7 +23,7 @@ import type { KasseneckTransport } from '../client/transport.js';
23
23
  * beendet — bitte neu anmelden.") — dann hilft nur eine neue Anmeldung ueber
24
24
  * `registerUserLogin`.
25
25
  */
26
- export declare function renewRegisterSession(rufen: KasseneckTransport): Promise<number>;
26
+ export declare function renewRegisterSession(rufen: InternerTransport): Promise<number>;
27
27
  /**
28
28
  * Sitzung beenden und den Lizenzplatz sofort freigeben — der regulaere Weg des
29
29
  * Abmeldens.
@@ -34,4 +34,4 @@ export declare function renewRegisterSession(rufen: KasseneckTransport): Promise
34
34
  * einer harmlosen Vertragsaenderung — ausgerechnet beim Abmelden, dem Aufruf,
35
35
  * der auch dann durchgehen soll, wenn sonst nichts mehr geht.
36
36
  */
37
- export declare function endRegisterSession(rufen: KasseneckTransport): Promise<void>;
37
+ export declare function endRegisterSession(rufen: InternerTransport): Promise<void>;
@@ -4,7 +4,7 @@
4
4
  "logoAn": true,
5
5
  "logoGroesse": "M",
6
6
  "wasserzeichen": "anmeldung",
7
- "farbe": "#0F6B72",
7
+ "farbe": "#116B6B",
8
8
  "stil": "klar",
9
9
  "schrift": "M",
10
10
  "schriftEinst": "S",
@@ -51,23 +51,23 @@
51
51
  "rueckgeld": true,
52
52
  "schnellbar": false,
53
53
  "kassierenModus": "seite",
54
- "belegAusgabe": "fragen",
55
- "fertigSekunden": 0,
56
54
  "logoBild": "",
57
55
  "wzSeite": "mitte",
56
+ "wzPos": 50,
57
+ "wzPosV": 50,
58
58
  "wzStaerke": 6,
59
+ "logoSkala": "M",
60
+ "wzSkala": "M",
61
+ "glas": true,
62
+ "hinweise": true,
59
63
  "rabattChips": [
60
64
  5,
61
65
  10,
62
66
  15,
63
67
  20
64
68
  ],
65
- "logoSkala": "M",
66
- "wzPos": 50,
67
- "wzPosV": 50,
68
- "wzSkala": "M",
69
- "glas": true,
70
- "hinweise": true
69
+ "belegAusgabe": "fragen",
70
+ "fertigSekunden": 0
71
71
  },
72
72
  "geraet": {
73
73
  "layout": "rechts",
@@ -127,6 +127,7 @@
127
127
  "druckerIp": "",
128
128
  "druckerPort": 9100,
129
129
  "druckerBt": "",
130
+ "druckerName": "",
130
131
  "druckerId": "",
131
132
  "druckerDevid": "local_printer",
132
133
  "connectDruckerId": "",
@@ -0,0 +1,216 @@
1
+ {
2
+ "version": "0.6.45",
3
+ "aufrufe": [
4
+ "cancelReceipt",
5
+ "createPaymentLinkStripe",
6
+ "createPrintJob",
7
+ "createReceipt",
8
+ "downloadDailyReport",
9
+ "downloadReport",
10
+ "endRegisterSession",
11
+ "financeWebService",
12
+ "generateFullReceiptId",
13
+ "getFirstReceiptDate",
14
+ "getKasseSettings",
15
+ "getPrintJob",
16
+ "getReceipt",
17
+ "hobexPayApi",
18
+ "hobexRefundApi",
19
+ "listMyArticleGroups",
20
+ "listMyArticles",
21
+ "listMyCashregisters",
22
+ "listMyPrinters",
23
+ "listMyReceipts",
24
+ "listRegisterUsersForDevice",
25
+ "pairRegisterDevice",
26
+ "registerPinLogin",
27
+ "registerUserLogin",
28
+ "renewRegisterSession",
29
+ "setMyKasseSettings",
30
+ "setMyRegisterDeviceSettings",
31
+ "stripeCaptureIntent",
32
+ "unpairRegisterDevice"
33
+ ],
34
+ "enums": {
35
+ "autoAbMin": [
36
+ 0,
37
+ 1,
38
+ 5,
39
+ 15,
40
+ 30
41
+ ],
42
+ "belegAusgabe": [
43
+ "qr",
44
+ "druck",
45
+ "mail",
46
+ "sms",
47
+ "fragen"
48
+ ],
49
+ "druckerArt": [
50
+ "sdp",
51
+ "netz",
52
+ "bt",
53
+ "usb",
54
+ "connect"
55
+ ],
56
+ "fertigSekunden": [
57
+ 0,
58
+ 3,
59
+ 5,
60
+ 10,
61
+ 15,
62
+ 30,
63
+ 60
64
+ ],
65
+ "hoehe": [
66
+ "S",
67
+ "M",
68
+ "L"
69
+ ],
70
+ "kachelstil": [
71
+ "streifen",
72
+ "voll"
73
+ ],
74
+ "kartenanbieter": [
75
+ "keiner",
76
+ "extern",
77
+ "gptom",
78
+ "hobex",
79
+ "mypos",
80
+ "stripe"
81
+ ],
82
+ "kassierenModus": [
83
+ "seite",
84
+ "panel"
85
+ ],
86
+ "katpos": [
87
+ "oben",
88
+ "links"
89
+ ],
90
+ "ladeAuto": [
91
+ "bar",
92
+ "immer",
93
+ "nie"
94
+ ],
95
+ "layout": [
96
+ "rechts",
97
+ "links",
98
+ "vollbild"
99
+ ],
100
+ "logoGroesse": [
101
+ "S",
102
+ "M",
103
+ "L"
104
+ ],
105
+ "logoSkala": [
106
+ "S",
107
+ "M",
108
+ "L",
109
+ "XL"
110
+ ],
111
+ "menge": [
112
+ "aus",
113
+ "x",
114
+ "kg"
115
+ ],
116
+ "papier": [
117
+ "mm58",
118
+ "mm80"
119
+ ],
120
+ "rabatt": [
121
+ "aus",
122
+ "an"
123
+ ],
124
+ "schnitt": [
125
+ "partial",
126
+ "full",
127
+ "none"
128
+ ],
129
+ "schrift": [
130
+ "S",
131
+ "M",
132
+ "L",
133
+ "XL"
134
+ ],
135
+ "schriftEinst": [
136
+ "S",
137
+ "M",
138
+ "L"
139
+ ],
140
+ "stil": [
141
+ "klar",
142
+ "warm",
143
+ "nacht",
144
+ "kontrast"
145
+ ],
146
+ "terminalArt": [
147
+ "keins",
148
+ "hps"
149
+ ],
150
+ "terminalVia": [
151
+ "direkt",
152
+ "connect"
153
+ ],
154
+ "tgModus": [
155
+ "betrag",
156
+ "gesamt",
157
+ "beides"
158
+ ],
159
+ "wasserzeichen": [
160
+ "aus",
161
+ "anmeldung",
162
+ "ueberall"
163
+ ],
164
+ "wzSeite": [
165
+ "links",
166
+ "mitte",
167
+ "rechts"
168
+ ],
169
+ "wzSkala": [
170
+ "S",
171
+ "M",
172
+ "L",
173
+ "XL"
174
+ ],
175
+ "wzStaerke": [
176
+ 3,
177
+ 6,
178
+ 10,
179
+ 16
180
+ ],
181
+ "zeichensatz": [
182
+ "CP1252",
183
+ "CP437"
184
+ ]
185
+ },
186
+ "rechte": [
187
+ "sell",
188
+ "cancel",
189
+ "articles",
190
+ "layout",
191
+ "reports",
192
+ "takeover",
193
+ "cancelScope",
194
+ "receiptsScope",
195
+ "drawer",
196
+ "discount",
197
+ "tipAssign"
198
+ ],
199
+ "tastenAktionen": [
200
+ "kassieren",
201
+ "abschliessen",
202
+ "abbrechen",
203
+ "frei",
204
+ "bar",
205
+ "karte",
206
+ "passend",
207
+ "belege",
208
+ "letzteZurueck",
209
+ "einstellungen",
210
+ "abmelden",
211
+ "trinkgeld",
212
+ "vollbild",
213
+ "gegebenLeeren",
214
+ "korbLeeren"
215
+ ]
216
+ }