@kreiseck/kasseneck-api 1.11.0 → 1.12.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 +21 -0
- package/README.md +2 -1
- package/dist/cjs/client/aufrufe.d.ts +4 -4
- package/dist/cjs/client/aufrufe.js +15 -0
- package/dist/cjs/client/receipts.d.ts +5 -0
- package/dist/cjs/client/receipts.js +65 -6
- package/dist/cjs/enums/voucher-action.d.ts +2 -0
- package/dist/cjs/enums/voucher-action.js +2 -0
- package/dist/cjs/enums/voucher-type.d.ts +10 -0
- package/dist/cjs/enums/voucher-type.js +10 -0
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +9 -3
- package/dist/cjs/models/index.d.ts +3 -3
- package/dist/cjs/models/index.js +7 -2
- package/dist/cjs/models/receipt-errors.d.ts +1 -1
- package/dist/cjs/models/receipt-errors.js +2 -0
- package/dist/cjs/models/receipt-item.d.ts +11 -3
- package/dist/cjs/models/receipt-item.js +22 -1
- package/dist/cjs/models/receipt.d.ts +31 -1
- package/dist/cjs/models/receipt.js +45 -5
- package/dist/cjs/models/voucher.d.ts +57 -4
- package/dist/cjs/models/voucher.js +111 -3
- package/dist/cjs/partner/fehler.d.ts +1 -1
- package/dist/cjs/partner/fehler.js +2 -0
- package/dist/cjs/partner/index.d.ts +1 -1
- package/dist/cjs/partner/typen.d.ts +7 -1
- package/dist/cjs/partner/typen.js +3 -0
- package/dist/cjs/pos/client.d.ts +2 -1
- package/dist/cjs/pos/client.js +3 -1
- package/dist/cjs/pos/gutschein.d.ts +90 -0
- package/dist/cjs/pos/gutschein.js +164 -0
- package/dist/cjs/pos/index.d.ts +3 -2
- package/dist/cjs/pos/index.js +13 -2
- package/dist/cjs/pos/settings.d.ts +3 -0
- package/dist/cjs/pos/settings.js +12 -10
- package/dist/cjs/pos/texte.d.ts +156 -0
- package/dist/cjs/pos/texte.js +72 -1
- package/dist/cjs/react/index.js +8 -2
- package/dist/cjs/receipt/due.d.ts +83 -2
- package/dist/cjs/receipt/due.js +202 -36
- package/dist/cjs/receipt/grid.js +13 -1
- package/dist/cjs/receipt/gutschein-plan.d.ts +104 -0
- package/dist/cjs/receipt/gutschein-plan.js +360 -0
- package/dist/cjs/receipt/index.d.ts +1 -1
- package/dist/cjs/receipt/index.js +3 -0
- package/dist/cjs/receipt/layout.js +186 -10
- package/dist/cjs/register/pairing.d.ts +21 -1
- package/dist/cjs/register/pairing.js +17 -0
- package/dist/cjs/stored/bon-layout.d.ts +8 -0
- package/dist/cjs/stored/bon-layout.js +23 -0
- package/dist/cjs/stored/draht.d.ts +3 -1
- package/dist/cjs/stored/draht.js +53 -6
- package/dist/cjs/stored/einstellungen.js +2 -1
- package/dist/cjs/stored/gutscheine.d.ts +3 -0
- package/dist/cjs/stored/gutscheine.js +60 -0
- package/dist/cjs/stored/index.js +2 -17
- package/dist/cjs/stored/vokabular.d.ts +6 -4
- package/dist/cjs/stored/vokabular.js +48 -2
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/client/aufrufe.d.ts +4 -4
- package/dist/esm/client/aufrufe.js +15 -0
- package/dist/esm/client/receipts.d.ts +5 -0
- package/dist/esm/client/receipts.js +66 -8
- package/dist/esm/enums/voucher-action.d.ts +2 -0
- package/dist/esm/enums/voucher-action.js +2 -0
- package/dist/esm/enums/voucher-type.d.ts +10 -0
- package/dist/esm/enums/voucher-type.js +10 -0
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +3 -3
- package/dist/esm/models/index.d.ts +3 -3
- package/dist/esm/models/index.js +3 -3
- package/dist/esm/models/receipt-errors.d.ts +1 -1
- package/dist/esm/models/receipt-errors.js +2 -0
- package/dist/esm/models/receipt-item.d.ts +11 -3
- package/dist/esm/models/receipt-item.js +20 -1
- package/dist/esm/models/receipt.d.ts +31 -1
- package/dist/esm/models/receipt.js +44 -5
- package/dist/esm/models/voucher.d.ts +57 -4
- package/dist/esm/models/voucher.js +108 -3
- package/dist/esm/partner/fehler.d.ts +1 -1
- package/dist/esm/partner/fehler.js +2 -0
- package/dist/esm/partner/index.d.ts +1 -1
- package/dist/esm/partner/typen.d.ts +7 -1
- package/dist/esm/partner/typen.js +3 -0
- package/dist/esm/pos/client.d.ts +2 -1
- package/dist/esm/pos/client.js +3 -1
- package/dist/esm/pos/gutschein.d.ts +90 -0
- package/dist/esm/pos/gutschein.js +158 -0
- package/dist/esm/pos/index.d.ts +3 -2
- package/dist/esm/pos/index.js +4 -2
- package/dist/esm/pos/settings.d.ts +3 -0
- package/dist/esm/pos/settings.js +2 -0
- package/dist/esm/pos/texte.d.ts +156 -0
- package/dist/esm/pos/texte.js +70 -0
- package/dist/esm/react/index.js +8 -2
- package/dist/esm/receipt/due.d.ts +83 -2
- package/dist/esm/receipt/due.js +198 -34
- package/dist/esm/receipt/grid.js +13 -1
- package/dist/esm/receipt/gutschein-plan.d.ts +104 -0
- package/dist/esm/receipt/gutschein-plan.js +352 -0
- package/dist/esm/receipt/index.d.ts +1 -1
- package/dist/esm/receipt/index.js +1 -1
- package/dist/esm/receipt/layout.js +187 -11
- package/dist/esm/register/pairing.d.ts +21 -1
- package/dist/esm/register/pairing.js +16 -0
- package/dist/esm/stored/bon-layout.d.ts +8 -0
- package/dist/esm/stored/bon-layout.js +20 -0
- package/dist/esm/stored/draht.d.ts +3 -1
- package/dist/esm/stored/draht.js +52 -6
- package/dist/esm/stored/einstellungen.js +3 -2
- package/dist/esm/stored/gutscheine.d.ts +3 -0
- package/dist/esm/stored/gutscheine.js +56 -0
- package/dist/esm/stored/index.js +2 -17
- package/dist/esm/stored/vokabular.d.ts +6 -4
- package/dist/esm/stored/vokabular.js +48 -2
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/fixtures/expected/voucher-cancellation.grid32.txt +30 -0
- package/fixtures/expected/voucher-cancellation.grid48.txt +29 -0
- package/fixtures/expected/voucher-cancellation.lines.json +252 -0
- package/fixtures/expected/voucher-cancellation.sheet32.json +206 -0
- package/fixtures/expected/voucher-cancellation.sheet48.json +200 -0
- package/fixtures/expected/voucher-multi-purpose-redeem.grid32.txt +25 -0
- package/fixtures/expected/voucher-multi-purpose-redeem.grid48.txt +25 -0
- package/fixtures/expected/voucher-multi-purpose-redeem.lines.json +259 -0
- package/fixtures/expected/voucher-multi-purpose-redeem.sheet32.json +176 -0
- package/fixtures/expected/voucher-multi-purpose-redeem.sheet48.json +176 -0
- package/fixtures/expected/voucher-multi-purpose-sale.grid32.txt +24 -0
- package/fixtures/expected/voucher-multi-purpose-sale.grid48.txt +23 -0
- package/fixtures/expected/voucher-multi-purpose-sale.lines.json +216 -0
- package/fixtures/expected/voucher-multi-purpose-sale.sheet32.json +170 -0
- package/fixtures/expected/voucher-multi-purpose-sale.sheet48.json +164 -0
- package/fixtures/expected/voucher-payout.grid32.txt +23 -0
- package/fixtures/expected/voucher-payout.grid48.txt +22 -0
- package/fixtures/expected/voucher-payout.lines.json +216 -0
- package/fixtures/expected/voucher-payout.sheet32.json +164 -0
- package/fixtures/expected/voucher-payout.sheet48.json +158 -0
- package/fixtures/expected/voucher-service-redeem.grid32.txt +26 -0
- package/fixtures/expected/voucher-service-redeem.grid48.txt +25 -0
- package/fixtures/expected/voucher-service-redeem.lines.json +261 -0
- package/fixtures/expected/voucher-service-redeem.sheet32.json +182 -0
- package/fixtures/expected/voucher-service-redeem.sheet48.json +176 -0
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid32.txt +30 -0
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid48.txt +29 -0
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.lines.json +331 -0
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet32.json +206 -0
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet48.json +200 -0
- package/fixtures/expected/voucher-single-purpose-redeem.grid32.txt +25 -0
- package/fixtures/expected/voucher-single-purpose-redeem.grid48.txt +24 -0
- package/fixtures/expected/voucher-single-purpose-redeem.lines.json +246 -0
- package/fixtures/expected/voucher-single-purpose-redeem.sheet32.json +176 -0
- package/fixtures/expected/voucher-single-purpose-redeem.sheet48.json +170 -0
- package/fixtures/expected/voucher-single-purpose-sale.grid32.txt +26 -0
- package/fixtures/expected/voucher-single-purpose-sale.grid48.txt +24 -0
- package/fixtures/expected/voucher-single-purpose-sale.lines.json +225 -0
- package/fixtures/expected/voucher-single-purpose-sale.sheet32.json +182 -0
- package/fixtures/expected/voucher-single-purpose-sale.sheet48.json +170 -0
- package/fixtures/hobex-hps-codes.json +1 -1
- package/fixtures/invoice-api.schema.json +1 -1
- package/fixtures/invoice-texts.json +1 -1
- package/fixtures/manifest.json +64 -0
- package/fixtures/pos-texts.json +170 -1
- package/fixtures/receipt-due-generated.json +1 -1
- package/fixtures/receipt-due-voucher-generated.json +494 -0
- package/fixtures/receipts/voucher-cancellation.json +76 -0
- package/fixtures/receipts/voucher-multi-purpose-redeem.json +62 -0
- package/fixtures/receipts/voucher-multi-purpose-sale.json +63 -0
- package/fixtures/receipts/voucher-payout.json +65 -0
- package/fixtures/receipts/voucher-service-redeem.json +82 -0
- package/fixtures/receipts/voucher-single-purpose-redeem-exempt.json +86 -0
- package/fixtures/receipts/voucher-single-purpose-redeem.json +71 -0
- package/fixtures/receipts/voucher-single-purpose-sale.json +88 -0
- package/fixtures/surface.json +35 -5
- package/fixtures/v3/antworten/belege.json +3405 -3
- package/fixtures/v3/antworten/belegmail.json +5 -2
- package/fixtures/v3/antworten/kasse-belege.json +3423 -3
- package/fixtures/v3/antworten/kasse.json +621 -14
- package/fixtures/v3/antworten/lager.json +1 -1
- package/fixtures/v3/antworten/rechnungen.json +5 -2
- package/fixtures/v3/antworten/storno.json +214 -3
- package/fixtures/v3/stored/belege.json +5 -2
- package/fixtures/v3/stored/kasse.json +225 -4
- package/fixtures/v3/stored/rechnungen.json +5 -2
- package/fixtures/v3/v3-vokabular.json +1375 -23
- package/fixtures/v3/zahlbetrag-faelle.json +293 -3
- package/package.json +4 -1
|
@@ -199,6 +199,12 @@ export interface RegisterUserPerms {
|
|
|
199
199
|
stocktakeClose?: boolean;
|
|
200
200
|
/** Standort der Kasse waehlen (setMyCashregisterStockLocation). */
|
|
201
201
|
stockLocation?: boolean;
|
|
202
|
+
/** Gutschein verkaufen (fehlt bei altem Server: gilt wie beim Kassier, siehe [voucherPermsOf]). */
|
|
203
|
+
voucherSell?: boolean;
|
|
204
|
+
/** Gutschein einloesen (fehlt bei altem Server: gilt wie beim Kassier). */
|
|
205
|
+
voucherRedeem?: boolean;
|
|
206
|
+
/** Gutscheine verwalten, z. B. Etikett nachdrucken (fehlt: verweigert). */
|
|
207
|
+
voucherManage?: boolean;
|
|
202
208
|
[weiteresRecht: string]: boolean | RegisterScope | undefined;
|
|
203
209
|
}
|
|
204
210
|
/**
|
|
@@ -209,7 +215,7 @@ export interface RegisterUserPerms {
|
|
|
209
215
|
* nicht fuehrt (Tippfehler, umbenanntes Recht), kommt hier nicht durch.
|
|
210
216
|
* Die Gegenrichtung schliesst [_RechteVollstaendig] direkt darunter.
|
|
211
217
|
*/
|
|
212
|
-
export declare const REGISTER_PERMS: readonly ["sell", "cancel", "articles", "layout", "reports", "takeover", "cancelScope", "receiptsScope", "drawer", "discount", "tipAssign", "stockView", "stockCosts", "stockMove", "stockLoss", "stocktakeCount", "stocktakeClose", "stockLocation"];
|
|
218
|
+
export declare const REGISTER_PERMS: readonly ["sell", "cancel", "articles", "layout", "reports", "takeover", "cancelScope", "receiptsScope", "drawer", "discount", "tipAssign", "stockView", "stockCosts", "stockMove", "stockLoss", "stocktakeCount", "stocktakeClose", "stockLocation", "voucherSell", "voucherRedeem", "voucherManage"];
|
|
213
219
|
/** Reichweite lesen, mit der Migration des Backends (register-auth.js). */
|
|
214
220
|
export declare function cancelScopeOf(perms: RegisterUserPerms | null | undefined): RegisterScope;
|
|
215
221
|
export declare function receiptsScopeOf(perms: RegisterUserPerms | null | undefined): RegisterScope;
|
|
@@ -219,6 +225,20 @@ export declare function receiptsScopeOf(perms: RegisterUserPerms | null | undefi
|
|
|
219
225
|
* sperrt; alle anderen Lager-Rechte gelten ohne Schluessel als verweigert.
|
|
220
226
|
*/
|
|
221
227
|
export declare function stockViewOf(perms: RegisterUserPerms | null | undefined): boolean;
|
|
228
|
+
/** Die drei Gutschein-Rechte, aufgeloest (kein Schluessel fehlt mehr). */
|
|
229
|
+
export interface VoucherPerms {
|
|
230
|
+
voucherSell: boolean;
|
|
231
|
+
voucherRedeem: boolean;
|
|
232
|
+
voucherManage: boolean;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Gutschein-Rechte lesen. Das Backend loest sie bei der Anmeldung auf; ein
|
|
236
|
+
* alter Server (und `/api`-Antworten) kennt sie nicht. Dann gilt je fehlendem
|
|
237
|
+
* Schluessel die Vorgabe des Kassiers: verkaufen und einloesen ja, verwalten
|
|
238
|
+
* nein. Ein ausdrueckliches `false` sperrt; was kein Wahrheitswert ist,
|
|
239
|
+
* erteilt nichts.
|
|
240
|
+
*/
|
|
241
|
+
export declare function voucherPermsOf(perms: Partial<RegisterUserPerms> | null | undefined): VoucherPerms;
|
|
222
242
|
/** Der angemeldete Kassen-Benutzer. */
|
|
223
243
|
export interface RegisterUser {
|
|
224
244
|
id: string;
|
|
@@ -4,6 +4,7 @@ exports.REGISTER_PERMS = void 0;
|
|
|
4
4
|
exports.cancelScopeOf = cancelScopeOf;
|
|
5
5
|
exports.receiptsScopeOf = receiptsScopeOf;
|
|
6
6
|
exports.stockViewOf = stockViewOf;
|
|
7
|
+
exports.voucherPermsOf = voucherPermsOf;
|
|
7
8
|
exports.pairRegisterDevice = pairRegisterDevice;
|
|
8
9
|
exports.unpairRegisterDevice = unpairRegisterDevice;
|
|
9
10
|
exports.listRegisterSessionsForDevice = listRegisterSessionsForDevice;
|
|
@@ -62,6 +63,7 @@ exports.REGISTER_PERMS = [
|
|
|
62
63
|
'sell', 'cancel', 'articles', 'layout', 'reports', 'takeover',
|
|
63
64
|
'cancelScope', 'receiptsScope', 'drawer', 'discount', 'tipAssign',
|
|
64
65
|
'stockView', 'stockCosts', 'stockMove', 'stockLoss', 'stocktakeCount', 'stocktakeClose', 'stockLocation',
|
|
66
|
+
'voucherSell', 'voucherRedeem', 'voucherManage',
|
|
65
67
|
];
|
|
66
68
|
/** Reichweite lesen, mit der Migration des Backends (register-auth.js). */
|
|
67
69
|
function cancelScopeOf(perms) {
|
|
@@ -88,6 +90,21 @@ function stockViewOf(perms) {
|
|
|
88
90
|
return false;
|
|
89
91
|
return perms.stockView === undefined ? true : perms.stockView === true;
|
|
90
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Gutschein-Rechte lesen. Das Backend loest sie bei der Anmeldung auf; ein
|
|
95
|
+
* alter Server (und `/api`-Antworten) kennt sie nicht. Dann gilt je fehlendem
|
|
96
|
+
* Schluessel die Vorgabe des Kassiers: verkaufen und einloesen ja, verwalten
|
|
97
|
+
* nein. Ein ausdrueckliches `false` sperrt; was kein Wahrheitswert ist,
|
|
98
|
+
* erteilt nichts.
|
|
99
|
+
*/
|
|
100
|
+
function voucherPermsOf(perms) {
|
|
101
|
+
const lies = (wert, vorgabe) => (wert === undefined ? vorgabe : wert === true);
|
|
102
|
+
return {
|
|
103
|
+
voucherSell: lies(perms?.voucherSell, true),
|
|
104
|
+
voucherRedeem: lies(perms?.voucherRedeem, true),
|
|
105
|
+
voucherManage: lies(perms?.voucherManage, false),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
91
108
|
/**
|
|
92
109
|
* Geraet koppeln: der Kopplungs-Code wird gegen den dauerhaften Ausweis dieses
|
|
93
110
|
* Geraets getauscht. **Ohne Anmeldung** — der Code ist der Nachweis.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReceiptWithCompany } from '../client/receipts.js';
|
|
2
|
+
import { type ReceiptLayout } from '../receipt/layout.js';
|
|
3
|
+
/**
|
|
4
|
+
* Layout wie `beleg-layout.layoutFuerBeleg`: 80 mm, Regelwerk mindestens das
|
|
5
|
+
* aktuelle. Kann der Server es nicht bauen, liefert er `null` (dann baut
|
|
6
|
+
* [receiptLayoutFromResult] selbst); ebenso hier.
|
|
7
|
+
*/
|
|
8
|
+
export declare function layoutWieServer(b: ReceiptWithCompany, regelwerk: unknown): ReceiptLayout | null;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.layoutWieServer = layoutWieServer;
|
|
4
|
+
const layout_js_1 = require("../receipt/layout.js");
|
|
5
|
+
const gutscheine_js_1 = require("./gutscheine.js");
|
|
6
|
+
/**
|
|
7
|
+
* Layout wie `beleg-layout.layoutFuerBeleg`: 80 mm, Regelwerk mindestens das
|
|
8
|
+
* aktuelle. Kann der Server es nicht bauen, liefert er `null` (dann baut
|
|
9
|
+
* [receiptLayoutFromResult] selbst); ebenso hier.
|
|
10
|
+
*/
|
|
11
|
+
function layoutWieServer(b, regelwerk) {
|
|
12
|
+
const ruleset = Math.max(Number(regelwerk) || 1, layout_js_1.CURRENT_LAYOUT_RULESET);
|
|
13
|
+
try {
|
|
14
|
+
// Wie layoutFuerBeleg: Gutscheine mit Code stehen am Bon als Positionen,
|
|
15
|
+
// die uebrigen Eintraege so, wie das vendorte Paket des Servers sie liest.
|
|
16
|
+
return (0, layout_js_1.buildReceiptLayout)((0, gutscheine_js_1.wieVendortesPaket)((0, gutscheine_js_1.gutscheineFuerPaket)(b.receipt)), b.company, {
|
|
17
|
+
paperSize: 'mm80', ruleset, testCashregister: b.testCashregister, testSignature: b.testSignature, registrationInfo: b.registrationInfo,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SchemaEintrag, type SchemaObjekt } from './vokabular.js';
|
|
1
|
+
import { type SchemaEintrag, type SchemaObjekt, type Wertverweis } from './vokabular.js';
|
|
2
2
|
export type Objekt = Record<string, unknown>;
|
|
3
3
|
export declare const hat: (o: object, k: string) => boolean;
|
|
4
4
|
export declare const istObjekt: (w: unknown) => w is Objekt;
|
|
@@ -10,6 +10,8 @@ export declare function regel(eintrag: SchemaEintrag): {
|
|
|
10
10
|
};
|
|
11
11
|
/** Innere Namen einer Schema-Ebene (was der Server innen an dieser Stelle kennt). */
|
|
12
12
|
export declare function innereNamen(schema: SchemaObjekt): Map<string, string>;
|
|
13
|
+
/** Zuordnung eines Wertverweises: benannter Katalog oder eingebettet. */
|
|
14
|
+
export declare function katalogVon(verweis: Wertverweis): Readonly<Record<string, string>> | undefined;
|
|
13
15
|
/** Rueckgabe-Wahl innen -> aussen (Katalog RUECKGABE; stored.test.ts vergleicht mit dem Vertrag). */
|
|
14
16
|
export declare const _RUECKGABE_NACH_AUSSEN: Readonly<Record<string, string>>;
|
|
15
17
|
/**
|
package/dist/cjs/stored/draht.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports._RUECKGABE_NACH_AUSSEN = exports.istObjekt = exports.hat = void 0;
|
|
4
4
|
exports.regel = regel;
|
|
5
5
|
exports.innereNamen = innereNamen;
|
|
6
|
+
exports.katalogVon = katalogVon;
|
|
6
7
|
exports._storedReceiptInner = _storedReceiptInner;
|
|
7
8
|
exports.pruefangabenDerHuelle = pruefangabenDerHuelle;
|
|
8
9
|
exports._receiptEnvelopeToWire = _receiptEnvelopeToWire;
|
|
@@ -79,16 +80,21 @@ function anPfad(obj, teile, fn) {
|
|
|
79
80
|
*/
|
|
80
81
|
function werteNachAussen(obj, werte) {
|
|
81
82
|
let raus = obj;
|
|
82
|
-
for (const [pfad,
|
|
83
|
-
const katalog =
|
|
83
|
+
for (const [pfad, verweis] of Object.entries(werte)) {
|
|
84
|
+
const katalog = katalogVon(verweis);
|
|
84
85
|
if (!katalog)
|
|
85
|
-
throw new Error(`stored: Katalog ${
|
|
86
|
+
throw new Error(`stored: Katalog ${verweis.$catalog} fehlt im Vokabular`);
|
|
86
87
|
raus = anPfad(raus, pfad.split('.'), (v) => (typeof v === 'string' && (0, exports.hat)(katalog, v) ? katalog[v] : v));
|
|
87
88
|
}
|
|
88
89
|
return raus;
|
|
89
90
|
}
|
|
91
|
+
/** Zuordnung eines Wertverweises: benannter Katalog oder eingebettet. */
|
|
92
|
+
function katalogVon(verweis) {
|
|
93
|
+
const name = verweis.$catalog;
|
|
94
|
+
return typeof name === 'string' ? vokabular_js_1.KATALOGE[name] : verweis;
|
|
95
|
+
}
|
|
90
96
|
/** Englische Werte eines Katalogs (was an dieser Stelle hinaus darf). */
|
|
91
|
-
const aeussereWerte = (
|
|
97
|
+
const aeussereWerte = (verweis) => new Set(Object.values(katalogVon(verweis) ?? {}));
|
|
92
98
|
// ---- Belege -----------------------------------------------------------------
|
|
93
99
|
/**
|
|
94
100
|
* Interne Marke der Storno-Reservierung: `stornoMarke` am Storno-Beleg,
|
|
@@ -143,6 +149,47 @@ function belegRueckgabeNachAussen(beleg) {
|
|
|
143
149
|
}
|
|
144
150
|
return raus;
|
|
145
151
|
}
|
|
152
|
+
// ---- Gutschein-Eintraege am Beleg ---------------------------------------------
|
|
153
|
+
/** Zwilling von `BELEG_GUTSCHEIN` (api-vokabular-v3): aussen -> innen. */
|
|
154
|
+
const BELEG_GUTSCHEIN = {
|
|
155
|
+
voucherType: 'art', voucherId: 'gutscheinId', codeSuffix: 'codeEnde', amountCents: 'betragCents', vatRateBp: 'satzBp',
|
|
156
|
+
article: 'artikel', articleId: 'artikelId', quantity: 'stueck', positions: 'positionen',
|
|
157
|
+
balanceAfterCents: 'saldoNachCents', remainingQuantityAfter: 'stueckOffenNach', taxedWith: 'versteuertMit', exempt: 'befreit',
|
|
158
|
+
reason: 'grund', zeroRateBucket: 'imNullTopf',
|
|
159
|
+
};
|
|
160
|
+
const BELEG_GUTSCHEIN_AUSSEN = Object.fromEntries(Object.entries(BELEG_GUTSCHEIN).map(([aussen, innen]) => [innen, aussen]));
|
|
161
|
+
const GUTSCHEIN_ARTIKEL_AUSSEN = { satzBp: 'vatRateBp', preisCents: 'priceCents' };
|
|
162
|
+
function umbenannt(o, namen) {
|
|
163
|
+
return Object.fromEntries(Object.entries(o).map(([k, w]) => [(0, exports.hat)(namen, k) ? namen[k] : k, w]));
|
|
164
|
+
}
|
|
165
|
+
/** Zwilling von `gutscheinEintragNachAussen`: ohne deutschen Schluessel/Wert dasselbe Objekt (Altbeleg). */
|
|
166
|
+
function gutscheinEintragNachAussen(v) {
|
|
167
|
+
if (!(0, exports.istObjekt)(v))
|
|
168
|
+
return v;
|
|
169
|
+
const art = vokabular_js_1.KATALOGE.GUTSCHEIN_ART ?? {};
|
|
170
|
+
const typNeu = typeof v.type === 'string' && (0, exports.hat)(art, v.type);
|
|
171
|
+
if (!typNeu && !Object.keys(v).some((k) => (0, exports.hat)(BELEG_GUTSCHEIN_AUSSEN, k)))
|
|
172
|
+
return v;
|
|
173
|
+
const raus = {};
|
|
174
|
+
for (const [k, w] of Object.entries(v)) {
|
|
175
|
+
if (k === 'type')
|
|
176
|
+
raus.type = typNeu ? art[w] : w;
|
|
177
|
+
else if (k === 'art')
|
|
178
|
+
raus.voucherType = typeof w === 'string' && (0, exports.hat)(art, w) ? art[w] : w;
|
|
179
|
+
else if (k === 'artikel')
|
|
180
|
+
raus.article = (0, exports.istObjekt)(w) ? umbenannt(w, GUTSCHEIN_ARTIKEL_AUSSEN) : w;
|
|
181
|
+
else
|
|
182
|
+
raus[(0, exports.hat)(BELEG_GUTSCHEIN_AUSSEN, k) ? BELEG_GUTSCHEIN_AUSSEN[k] : k] = w;
|
|
183
|
+
}
|
|
184
|
+
return raus;
|
|
185
|
+
}
|
|
186
|
+
/** Zwilling von `belegGutscheineNachAussen`: `vouchers[]` eines Belegs an Ort und Stelle nach aussen. */
|
|
187
|
+
function belegGutscheineNachAussen(beleg) {
|
|
188
|
+
if (!Array.isArray(beleg.vouchers))
|
|
189
|
+
return beleg;
|
|
190
|
+
const neu = beleg.vouchers.map(gutscheinEintragNachAussen);
|
|
191
|
+
return neu.every((v, i) => v === beleg.vouchers[i]) ? beleg : { ...beleg, vouchers: neu };
|
|
192
|
+
}
|
|
146
193
|
/**
|
|
147
194
|
* Zwilling von `beleg-pruefangaben.alsIso`: leer (auch 0, '') -> null;
|
|
148
195
|
* Firestore-Zeitstempel, Zahl oder Zeichenkette -> ISO-Zeitpunkt in UTC;
|
|
@@ -194,7 +241,7 @@ function pruefangabenDerHuelle(p) {
|
|
|
194
241
|
function _receiptEnvelopeToWire(huelle) {
|
|
195
242
|
const schema = vokabular_js_1.SCHEMAS.getReceipt;
|
|
196
243
|
const draht = werteNachAussen(schluesselNachAussen(huelle, schema.data), schema.werte);
|
|
197
|
-
return (0, exports.istObjekt)(draht.receipt) ? { ...draht, receipt: belegRueckgabeNachAussen(draht.receipt) } : draht;
|
|
244
|
+
return (0, exports.istObjekt)(draht.receipt) ? { ...draht, receipt: belegGutscheineNachAussen(belegRueckgabeNachAussen(draht.receipt)) } : draht;
|
|
198
245
|
}
|
|
199
246
|
/**
|
|
200
247
|
* Ein Belegdokument (`users/{uid}/cashregisters/{id}/receipts/{id}`) in der
|
|
@@ -250,7 +297,7 @@ function _storedArticleToWire(id, doc, functionName = 'fromStoredArticle') {
|
|
|
250
297
|
const schema = vokabular_js_1.SCHEMAS.listMyArticles;
|
|
251
298
|
const huelle = werteNachAussen(schluesselNachAussen({ articles: [handler] }, schema.data), schema.werte);
|
|
252
299
|
const artikel = huelle.articles[0];
|
|
253
|
-
const katalog = (pfad) => aeussereWerte(schema.werte[pfad]
|
|
300
|
+
const katalog = (pfad) => aeussereWerte(schema.werte[pfad]);
|
|
254
301
|
const raus = nurBekannte(artikel, new Set(vokabular_js_1.ARTIKEL_FELDER), {
|
|
255
302
|
quantityRule: katalog('articles[].quantityRule'), e1aGroup: katalog('articles[].e1aGroup'),
|
|
256
303
|
});
|
|
@@ -4,6 +4,7 @@ exports._PRUEFER_FELDER = void 0;
|
|
|
4
4
|
exports._storedPosSettingsToWire = _storedPosSettingsToWire;
|
|
5
5
|
const settings_js_1 = require("../pos/settings.js");
|
|
6
6
|
const draht_js_1 = require("./draht.js");
|
|
7
|
+
const draht_js_2 = require("./draht.js");
|
|
7
8
|
const vokabular_js_1 = require("./vokabular.js");
|
|
8
9
|
const bool = (v) => typeof v === 'boolean';
|
|
9
10
|
const hex = (v) => typeof v === 'string' && /^#[0-9a-fA-F]{6}$/.test(v);
|
|
@@ -75,7 +76,7 @@ function teilSchema(teil) {
|
|
|
75
76
|
}
|
|
76
77
|
function katalogFuer(teil, aussen) {
|
|
77
78
|
const verweis = vokabular_js_1.SCHEMAS.getKasseSettings.werte[`${teil}.${aussen}`];
|
|
78
|
-
return verweis ?
|
|
79
|
+
return verweis ? (0, draht_js_2.katalogVon)(verweis) ?? null : null;
|
|
79
80
|
}
|
|
80
81
|
/** Tasten: aeussere und innere Aktionsnamen, Vorgabe und Paare in innerer Form. */
|
|
81
82
|
const TASTEN_SCHEMA = (0, draht_js_1.regel)(teilSchema('device').shortcuts).unter;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gutscheineFuerPaket = gutscheineFuerPaket;
|
|
4
|
+
exports.wieVendortesPaket = wieVendortesPaket;
|
|
5
|
+
/*
|
|
6
|
+
* Zwilling von `gutscheineFuerPaket` (functions/beleg-layout.js): der Bon
|
|
7
|
+
* kennt Gutscheine mit Code nur als Positionen. Eintraege, deren Betrag schon
|
|
8
|
+
* als Position am Beleg steht (Einzweck, Leistung, Mehrzweck im 0-%-Topf),
|
|
9
|
+
* fallen fuer das Zeilenmodell weg, sonst zaehlte es sie ein zweites Mal; die
|
|
10
|
+
* maskierte Code-Endung wandert an die passende Position. Nur Darstellung,
|
|
11
|
+
* der Beleg selbst bleibt unberuehrt.
|
|
12
|
+
*/
|
|
13
|
+
const POSITIONS_ARTEN = ['single_purpose', 'service'];
|
|
14
|
+
const centsDerPosition = (it) => Math.round(Math.abs(it.priceCents * it.quantity));
|
|
15
|
+
const centsDesEintrags = (v) => Number.isInteger(v.amountCents) ? Math.abs(v.amountCents) : Math.abs(v.valueCents ?? 0);
|
|
16
|
+
function gutscheineFuerPaket(receipt) {
|
|
17
|
+
const positionen = receipt.items.map((it) => ({ ...it }));
|
|
18
|
+
const vergeben = new Set();
|
|
19
|
+
const codeAnPosition = (v, kinds) => {
|
|
20
|
+
const cents = centsDesEintrags(v);
|
|
21
|
+
const i = positionen.findIndex((it, k) => !vergeben.has(k) && it.kind != null && kinds.includes(it.kind)
|
|
22
|
+
&& centsDerPosition(it) === cents && !String(it.name || '').includes('····'));
|
|
23
|
+
if (i < 0)
|
|
24
|
+
return;
|
|
25
|
+
vergeben.add(i);
|
|
26
|
+
if (typeof v.code === 'string' && v.code)
|
|
27
|
+
positionen[i].name = `${positionen[i].name} ${v.code}`;
|
|
28
|
+
};
|
|
29
|
+
const bleiben = [];
|
|
30
|
+
for (const v of receipt.vouchers) {
|
|
31
|
+
if (POSITIONS_ARTEN.includes(v.type)) {
|
|
32
|
+
if (v.action === 'sell')
|
|
33
|
+
codeAnPosition(v, ['voucher']);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (v.zeroRateBucket === true) {
|
|
37
|
+
codeAnPosition(v, ['voucher_float']);
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
bleiben.push(v);
|
|
41
|
+
}
|
|
42
|
+
return { ...receipt, items: positionen, vouchers: bleiben };
|
|
43
|
+
}
|
|
44
|
+
/*
|
|
45
|
+
* Das Backend setzt den Bon noch mit dem vendorten Paket 0.33 (functions/
|
|
46
|
+
* package.json). Es liest an einem Gutschein nur name, code, action, type und
|
|
47
|
+
* den Wert; die Kennzeichen der neuen Form (`voucherType`, `codeSuffix`,
|
|
48
|
+
* `balanceAfterCents` ...) sieht es nicht. Was nach `gutscheineFuerPaket`
|
|
49
|
+
* bleibt (Mehrzweck, Aktion), zeigt es darum wie einen Altbeleg
|
|
50
|
+
* („Wertgutschein ····-····-5KNZ - Gutschein“). Dieses Paket zeigt solche
|
|
51
|
+
* Eintraege selbst in der Form der Spec („Gutschein ····-5KNZ“ + Rest); fuer
|
|
52
|
+
* das Layout wie der Server fallen die Kennzeichen hier weg. Entfaellt, sobald
|
|
53
|
+
* der Server ein Paket mit der neuen Form vendort und nicht mehr aufbereitet.
|
|
54
|
+
*/
|
|
55
|
+
function wieVendortesPaket(receipt) {
|
|
56
|
+
const vouchers = receipt.vouchers.map((v) => ({
|
|
57
|
+
name: v.name, code: v.code, action: v.action, type: v.type, valueCents: v.valueCents,
|
|
58
|
+
}));
|
|
59
|
+
return { ...receipt, vouchers };
|
|
60
|
+
}
|
package/dist/cjs/stored/index.js
CHANGED
|
@@ -29,6 +29,7 @@ const settings_js_1 = require("../pos/settings.js");
|
|
|
29
29
|
const artikel_js_1 = require("../pos/artikel.js");
|
|
30
30
|
const errors_js_1 = require("../client/errors.js");
|
|
31
31
|
const draht_js_1 = require("./draht.js");
|
|
32
|
+
const bon_layout_js_1 = require("./bon-layout.js");
|
|
32
33
|
const einstellungen_js_1 = require("./einstellungen.js");
|
|
33
34
|
const istObjekt = (w) => w !== null && typeof w === 'object' && !Array.isArray(w);
|
|
34
35
|
// ---- Belege -----------------------------------------------------------------
|
|
@@ -87,7 +88,7 @@ function fromStoredReceiptWithCompany(doc, options) {
|
|
|
87
88
|
const draht = (0, draht_js_1._receiptEnvelopeToWire)(huelle);
|
|
88
89
|
draht.receipt = zeilenAlsText(draht.receipt);
|
|
89
90
|
const raus = (0, receipts_js_1.belegMitFirmaAusHuelle)(draht, name);
|
|
90
|
-
raus.layout = layoutWieServer(raus, beleg.layoutRegeln);
|
|
91
|
+
raus.layout = (0, bon_layout_js_1.layoutWieServer)(raus, beleg.layoutRegeln);
|
|
91
92
|
return raus;
|
|
92
93
|
}
|
|
93
94
|
/**
|
|
@@ -102,22 +103,6 @@ function pruefangabenFuer(beleg, angabe) {
|
|
|
102
103
|
return (0, draht_js_1.pruefangabenDerHuelle)(beleg.pruefangaben);
|
|
103
104
|
return { karteRegistriertAm: angabe?.cardRegisteredAt ?? null, kasseRegistriertAm: angabe?.cashregisterRegisteredAt ?? null };
|
|
104
105
|
}
|
|
105
|
-
/**
|
|
106
|
-
* Layout wie `beleg-layout.layoutFuerBeleg`: 80 mm, Regelwerk mindestens das
|
|
107
|
-
* aktuelle. Kann der Server es nicht bauen, liefert er `null` (dann baut
|
|
108
|
-
* [receiptLayoutFromResult] selbst); ebenso hier.
|
|
109
|
-
*/
|
|
110
|
-
function layoutWieServer(b, regelwerk) {
|
|
111
|
-
const ruleset = Math.max(Number(regelwerk) || 1, layout_js_1.CURRENT_LAYOUT_RULESET);
|
|
112
|
-
try {
|
|
113
|
-
return (0, layout_js_1.buildReceiptLayout)(b.receipt, b.company, {
|
|
114
|
-
paperSize: 'mm80', ruleset, testCashregister: b.testCashregister, testSignature: b.testSignature, registrationInfo: b.registrationInfo,
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
catch {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
106
|
// ---- Firma ------------------------------------------------------------------
|
|
122
107
|
const KOPF_FELDER = ['companyName', 'street', 'zip', 'city', 'phone', 'uid', 'taxnr', 'isSmallBusiness',
|
|
123
108
|
'footer1', 'footer2', 'footer3', 'footer4', 'thanksMessage', 'showKreiseckLogo', 'logoUrl'];
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
|
|
2
|
-
export declare const VOKABULAR_QUELLE = "
|
|
2
|
+
export declare const VOKABULAR_QUELLE = "733e4385baf4b2aa50605e2ebe5903948ce77b3346aa3bb65c5fd0d450a6898f";
|
|
3
3
|
/** Schema-Notation des Vertrags: Blatt 'aussen': 'innen', Objekt { __: 'innen', ... }, Liste [ { __: 'innen', ... } ]. */
|
|
4
4
|
export type SchemaEintrag = string | SchemaObjekt | readonly [SchemaObjekt];
|
|
5
5
|
export interface SchemaObjekt {
|
|
6
6
|
readonly [aussen: string]: SchemaEintrag;
|
|
7
7
|
}
|
|
8
|
+
/** Wertverweis: Name eines Katalogs oder eine eingebettete Zuordnung innen -> aussen. */
|
|
9
|
+
export type Wertverweis = {
|
|
10
|
+
readonly $catalog: string;
|
|
11
|
+
} | Readonly<Record<string, string>>;
|
|
8
12
|
/** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
|
|
9
13
|
export declare const SCHEMAS: Readonly<Record<'getReceipt' | 'getKasseSettings' | 'listMyArticles', {
|
|
10
14
|
readonly data: SchemaObjekt;
|
|
11
|
-
readonly werte: Readonly<Record<string,
|
|
12
|
-
readonly $catalog: string;
|
|
13
|
-
}>>;
|
|
15
|
+
readonly werte: Readonly<Record<string, Wertverweis>>;
|
|
14
16
|
}>>;
|
|
15
17
|
/** Die Felder eines Artikels in der Antwort (`listMyArticles`), aussen. */
|
|
16
18
|
export declare const ARTIKEL_FELDER: readonly string[];
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.KATALOGE = exports.ARTIKEL_FELDER = exports.SCHEMAS = exports.VOKABULAR_QUELLE = void 0;
|
|
6
6
|
/** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
|
|
7
|
-
exports.VOKABULAR_QUELLE = "
|
|
7
|
+
exports.VOKABULAR_QUELLE = "733e4385baf4b2aa50605e2ebe5903948ce77b3346aa3bb65c5fd0d450a6898f";
|
|
8
8
|
/** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
|
|
9
9
|
exports.SCHEMAS = {
|
|
10
10
|
"getReceipt": {
|
|
@@ -46,7 +46,22 @@ exports.SCHEMAS = {
|
|
|
46
46
|
"tone": "ton"
|
|
47
47
|
}
|
|
48
48
|
]
|
|
49
|
-
}
|
|
49
|
+
},
|
|
50
|
+
"issuedVouchers": [
|
|
51
|
+
{
|
|
52
|
+
"__": "gutscheine",
|
|
53
|
+
"codeSuffix": "codeEnde",
|
|
54
|
+
"faceValueCents": "nennwertCents",
|
|
55
|
+
"quantity": "stueck",
|
|
56
|
+
"validity": {
|
|
57
|
+
"__": "gueltigkeit",
|
|
58
|
+
"pattern": "muster",
|
|
59
|
+
"redeemableUntil": "einloesbarBis",
|
|
60
|
+
"refundableUntil": "rueckzahlbarBis",
|
|
61
|
+
"validUntil": "gueltigBis"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
]
|
|
50
65
|
},
|
|
51
66
|
"werte": {
|
|
52
67
|
"receipt.cancellationReason": {
|
|
@@ -54,6 +69,12 @@ exports.SCHEMAS = {
|
|
|
54
69
|
},
|
|
55
70
|
"layout.lines[].tone": {
|
|
56
71
|
"$catalog": "LAYOUT_TON"
|
|
72
|
+
},
|
|
73
|
+
"issuedVouchers[].type": {
|
|
74
|
+
"$catalog": "GUTSCHEIN_ART"
|
|
75
|
+
},
|
|
76
|
+
"issuedVouchers[].validity.pattern": {
|
|
77
|
+
"$catalog": "GUTSCHEIN_MUSTER"
|
|
57
78
|
}
|
|
58
79
|
}
|
|
59
80
|
},
|
|
@@ -160,6 +181,12 @@ exports.SCHEMAS = {
|
|
|
160
181
|
"terminalVia": "terminalVia",
|
|
161
182
|
"terminalType": "terminalArt",
|
|
162
183
|
"shortcutHints": "tastenMarken"
|
|
184
|
+
},
|
|
185
|
+
"vouchers": {
|
|
186
|
+
"__": "gutscheine",
|
|
187
|
+
"sale": "verkauf",
|
|
188
|
+
"valueVoucherType": "wertArt",
|
|
189
|
+
"vatRateBp": "satzBp"
|
|
163
190
|
}
|
|
164
191
|
},
|
|
165
192
|
"werte": {
|
|
@@ -210,6 +237,10 @@ exports.SCHEMAS = {
|
|
|
210
237
|
},
|
|
211
238
|
"device.terminalType": {
|
|
212
239
|
"$catalog": "KASSE_GERAET_WERTE.terminalType"
|
|
240
|
+
},
|
|
241
|
+
"vouchers.valueVoucherType": {
|
|
242
|
+
"mehrzweck": "multi_purpose",
|
|
243
|
+
"einzweck": "single_purpose"
|
|
213
244
|
}
|
|
214
245
|
}
|
|
215
246
|
},
|
|
@@ -304,6 +335,7 @@ exports.KATALOGE = {
|
|
|
304
335
|
"afa_gebaeude": "building_depreciation",
|
|
305
336
|
"anlagenabgang": "asset_disposal_book_value",
|
|
306
337
|
"instandhaltung_gebaeude": "building_maintenance",
|
|
338
|
+
"bauarbeiten": "construction_work",
|
|
307
339
|
"reise": "travel_expenses",
|
|
308
340
|
"fahrkarten": "travel_tickets",
|
|
309
341
|
"naechtigung_beleg": "lodging_invoice",
|
|
@@ -338,6 +370,8 @@ exports.KATALOGE = {
|
|
|
338
370
|
"geschenke_geschaeftsfreunde": "business_gifts",
|
|
339
371
|
"bewirtung": "hospitality",
|
|
340
372
|
"bewirtung_werbung": "hospitality_advertising",
|
|
373
|
+
"kundschaft_aufmerksamkeit": "customer_courtesy",
|
|
374
|
+
"lebensmittel": "groceries",
|
|
341
375
|
"bewirtung_voll": "hospitality_full",
|
|
342
376
|
"bewirtung_repraesentation": "hospitality_representation",
|
|
343
377
|
"sponsoring": "sponsorship",
|
|
@@ -368,6 +402,7 @@ exports.KATALOGE = {
|
|
|
368
402
|
"arbeitslosen_optin": "voluntary_unemployment_insurance",
|
|
369
403
|
"uebrige_ausgaben": "other_expenses",
|
|
370
404
|
"telefon_internet": "phone_internet",
|
|
405
|
+
"energie": "energy_utilities",
|
|
371
406
|
"buero": "office_supplies",
|
|
372
407
|
"software": "software_subscriptions",
|
|
373
408
|
"fachliteratur": "professional_literature",
|
|
@@ -399,6 +434,17 @@ exports.KATALOGE = {
|
|
|
399
434
|
"ball_kultur": "non_deductible_events",
|
|
400
435
|
"durchlaufend_ausgabe": "pass_through_payment"
|
|
401
436
|
},
|
|
437
|
+
"GUTSCHEIN_ART": {
|
|
438
|
+
"mehrzweck": "multi_purpose",
|
|
439
|
+
"einzweck": "single_purpose",
|
|
440
|
+
"leistung": "service",
|
|
441
|
+
"aktion": "promotion"
|
|
442
|
+
},
|
|
443
|
+
"GUTSCHEIN_MUSTER": {
|
|
444
|
+
"unbefristet": "unlimited",
|
|
445
|
+
"1+3": "1+3",
|
|
446
|
+
"frei": "custom"
|
|
447
|
+
},
|
|
402
448
|
"KASSE_BETRIEB_WERTE.cardProvider": {
|
|
403
449
|
"keiner": "none",
|
|
404
450
|
"extern": "external",
|
package/dist/cjs/version.d.ts
CHANGED
package/dist/cjs/version.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* umhuellt, muss ihn weiterhin absetzen koennen.
|
|
14
14
|
*/
|
|
15
15
|
import type { PdfOrData, TransportBodyFields, TransportCallOptions } from './transport.js';
|
|
16
|
-
export declare const ALL_CALLS: readonly ["activateCashregister", "cancelInvoice", "cancelReceipt", "createCreditNote", "createCustomer", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCashregisterReport", "getCustomer", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getInvoice", "getInvoicePdf", "getInvoiceSetupStatus", "getInvoiceXml", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "getReportV2", "hobexPayApi", "hobexRefundApi", "issueInvoice", "listCustomerCashregisters", "listInvoices", "listBrands", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyStock", "listMyStockLocations", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "recordInvoicePayment", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "reportCustomerContract", "requestCustomerSignature", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift"];
|
|
16
|
+
export declare const ALL_CALLS: readonly ["activateCashregister", "cancelInvoice", "cancelReceipt", "createCreditNote", "createCustomer", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCashregisterReport", "getCustomer", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getInvoice", "getInvoicePdf", "getInvoiceSetupStatus", "getInvoiceXml", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "getReportV2", "hobexPayApi", "hobexRefundApi", "issueInvoice", "listCustomerCashregisters", "listInvoices", "listBrands", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyStock", "listMyStockLocations", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "recordInvoicePayment", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "reportCustomerContract", "requestCustomerSignature", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift"];
|
|
17
17
|
export type ApiCall = typeof ALL_CALLS[number];
|
|
18
18
|
/**
|
|
19
19
|
* Die oeffentlichen Endpunkte unter `/v3` (`https://api.kasseneck.at/v3/<name>`),
|
|
@@ -21,14 +21,14 @@ export type ApiCall = typeof ALL_CALLS[number];
|
|
|
21
21
|
* (`fixtures/v3/v3-vokabular.json`, `endpoints.public`, umbenannt nach
|
|
22
22
|
* `names`). Ein Test haelt beide Listen deckungsgleich.
|
|
23
23
|
*/
|
|
24
|
-
export declare const PUBLIC_CALLS: readonly ["createReceipt", "getReceipt", "cancelReceipt", "sendReceiptEmail", "generateFullReceiptId", "downloadReceipt", "getFirstReceiptDate", "getReportV2", "downloadReport", "downloadDailyReport", "getCashregisterReport", "createPaymentLinkStripe", "stripeCaptureIntent", "hobexPayApi", "hobexRefundApi", "hobexGetStatus", "financeWebService", "listMyTipRecipients", "getPartnerInfo", "createPartnerCustomer", "checkPartnerCustomerEmail", "listPartnerCustomers", "getPartnerCustomer", "sendPartnerCustomerFonLink", "createPartnerWebhook", "updatePartnerWebhook", "deletePartnerWebhook", "listPartnerWebhooks", "sendPartnerWebhookTest", "rotatePartnerWebhookSecret", "listPartnerWebhookDeliveries", "requestCustomerSignature", "getCustomerSignatureStatus", "createCustomerCashregister", "activateCashregister", "listCustomerCashregisters", "getCustomerCredentials", "reportCustomerContract", "getPartnerBilling", "getPartnerBillingMonth", "createCustomer", "getCustomer", "updateCustomer", "searchCustomers", "issueInvoice", "cancelInvoice", "createCreditNote", "getInvoice", "listInvoices", "getInvoicePdf", "getInvoiceXml", "getInvoiceSetupStatus", "listBrands", "recordInvoicePayment", "createInvoiceItem", "updateInvoiceItem", "withdrawInvoiceItem", "getInvoiceItem", "listInvoiceItems", "setCustomerMandate", "revokeCustomerMandate", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf"];
|
|
24
|
+
export declare const PUBLIC_CALLS: readonly ["createReceipt", "getReceipt", "cancelReceipt", "sendReceiptEmail", "generateFullReceiptId", "downloadReceipt", "getFirstReceiptDate", "getReportV2", "downloadReport", "downloadDailyReport", "getCashregisterReport", "createPaymentLinkStripe", "stripeCaptureIntent", "hobexPayApi", "hobexRefundApi", "hobexGetStatus", "financeWebService", "listMyTipRecipients", "getPartnerInfo", "createPartnerCustomer", "checkPartnerCustomerEmail", "listPartnerCustomers", "getPartnerCustomer", "sendPartnerCustomerFonLink", "createPartnerWebhook", "updatePartnerWebhook", "deletePartnerWebhook", "listPartnerWebhooks", "sendPartnerWebhookTest", "rotatePartnerWebhookSecret", "listPartnerWebhookDeliveries", "requestCustomerSignature", "getCustomerSignatureStatus", "createCustomerCashregister", "activateCashregister", "listCustomerCashregisters", "getCustomerCredentials", "reportCustomerContract", "getPartnerBilling", "getPartnerBillingMonth", "createCustomer", "getCustomer", "updateCustomer", "searchCustomers", "issueInvoice", "cancelInvoice", "createCreditNote", "getInvoice", "listInvoices", "getInvoicePdf", "getInvoiceXml", "getInvoiceSetupStatus", "listBrands", "recordInvoicePayment", "createInvoiceItem", "updateInvoiceItem", "withdrawInvoiceItem", "getInvoiceItem", "listInvoiceItems", "setCustomerMandate", "revokeCustomerMandate", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder"];
|
|
25
25
|
/**
|
|
26
26
|
* Die Endpunkte des Kassenwegs (`https://kasse.kasseneck.at/api/v3/<name>`,
|
|
27
27
|
* Web-Kasse: gleicher Ursprung `/api/v3`), in der Reihenfolge von
|
|
28
28
|
* `endpoints.register`. Sechs davon sind zugleich oeffentlich; die Kasse ruft
|
|
29
29
|
* sie trotzdem ueber diesen Weg (ein Dialekt je Client, Nachtrag §5.2).
|
|
30
30
|
*/
|
|
31
|
-
export declare const POS_CALLS: readonly ["pairRegisterDevice", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "registerUserLogin", "registerPinLogin", "renewRegisterSession", "endRegisterSession", "unpairRegisterDevice", "listMyCashregisters", "listMyReceipts", "getReceipt", "createReceipt", "generateFullReceiptId", "cancelReceipt", "sendReceiptEmail", "listMyArticleGroups", "listMyArticles", "getKasseSettings", "setMyKasseSettings", "setMyKasseLogo", "setMyRegisterDeviceSettings", "listMyPrinters", "createPrintJob", "getPrintJob", "listMyTipRecipients", "listMyStockLocations", "listMyStock", "setMyCashregisterStockLocation", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift"];
|
|
31
|
+
export declare const POS_CALLS: readonly ["pairRegisterDevice", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "registerUserLogin", "registerPinLogin", "renewRegisterSession", "endRegisterSession", "unpairRegisterDevice", "listMyCashregisters", "listMyReceipts", "getReceipt", "createReceipt", "generateFullReceiptId", "cancelReceipt", "sendReceiptEmail", "listMyArticleGroups", "listMyArticles", "getKasseSettings", "setMyKasseSettings", "setMyKasseLogo", "setMyRegisterDeviceSettings", "listMyPrinters", "createPrintJob", "getPrintJob", "listMyTipRecipients", "listMyStockLocations", "listMyStock", "setMyCashregisterStockLocation", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift"];
|
|
32
32
|
export type PublicCall = typeof PUBLIC_CALLS[number];
|
|
33
33
|
export type PosCall = typeof POS_CALLS[number];
|
|
34
34
|
/**
|
|
@@ -49,7 +49,7 @@ export type PosCall = typeof POS_CALLS[number];
|
|
|
49
49
|
* [ALL_CALLS], [PUBLIC_CALLS] und [POS_CALLS] steht entweder hier oder in
|
|
50
50
|
* [CALLS_WITHOUT_EFFECT] (Waechter `test/ausgang-einordnung.test.ts`).
|
|
51
51
|
*/
|
|
52
|
-
export declare const UNKNOWN_OUTCOME_CALLS: readonly ["activateCashregister", "addVariant", "cancelInvoice", "cancelReceipt", "cancelStocktake", "changeStockCondition", "closeMyShift", "closeStocktake", "createArticle", "createCreditNote", "createCustomer", "createCustomerCashregister", "createInvoiceItem", "createPartnerCustomer", "createPartnerWebhook", "createPrintJob", "createReceipt", "createReservation", "createStocktake", "createVariantGroup", "createWebhook", "deactivateArticle", "deletePartnerWebhook", "deleteWebhook", "extendReservation", "financeWebService", "hobexPayApi", "hobexRefundApi", "issueInvoice", "logMyDrawerOpenings", "openMyShift", "pairRegisterDevice", "receiveGoods", "recordInvoicePayment", "recordMyCashMovement", "recordMyStocktakeCount", "recordStockLoss", "recordStocktakeCount", "recountStocktake", "releaseReservation", "reportCustomerContract", "requestCustomerSignature", "reverseStockMovement", "reviewStocktake", "revokeCustomerMandate", "rotatePartnerWebhookSecret", "rotateWebhookSecret", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "sendWebhookTest", "setCustomerMandate", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "transferStock", "unpairRegisterDevice", "updateArticle", "updateCustomer", "updateInvoiceItem", "updatePartnerWebhook", "updateVariantGroup", "updateWebhook", "voidMyStocktakeCount", "voidStocktakeCount", "withdrawInvoiceItem"];
|
|
52
|
+
export declare const UNKNOWN_OUTCOME_CALLS: readonly ["activateCashregister", "addVariant", "cancelInvoice", "cancelReceipt", "cancelStocktake", "changeStockCondition", "closeMyShift", "closeStocktake", "createArticle", "createCreditNote", "createCustomer", "createCustomerCashregister", "createInvoiceItem", "createPartnerCustomer", "createPartnerWebhook", "createPrintJob", "createReceipt", "createReservation", "createStocktake", "createVariantGroup", "createWebhook", "deactivateArticle", "deletePartnerWebhook", "deleteWebhook", "extendReservation", "financeWebService", "hobexPayApi", "hobexRefundApi", "issueInvoice", "logMyDrawerOpenings", "openMyShift", "orderSignatureCard", "pairRegisterDevice", "receiveGoods", "recordInvoicePayment", "recordMyCashMovement", "recordMyStocktakeCount", "recordStockLoss", "recordStocktakeCount", "recountStocktake", "releaseReservation", "reportCustomerContract", "requestCustomerSignature", "reverseStockMovement", "reviewStocktake", "revokeCustomerMandate", "rotatePartnerWebhookSecret", "rotateWebhookSecret", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "sendWebhookTest", "setCustomerMandate", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "transferStock", "unpairRegisterDevice", "updateArticle", "updateCustomer", "updateInvoiceItem", "updatePartnerWebhook", "updateVariantGroup", "updateWebhook", "voidMyStocktakeCount", "voidStocktakeCount", "withdrawInvoiceItem"];
|
|
53
53
|
/** Warum ein Aufruf keine Wirkung hat, die ein Zeitlimit offen lassen koennte. */
|
|
54
54
|
export type CallWithoutEffectReason = 'read' | 'repeatable';
|
|
55
55
|
/**
|