@kreiseck/kasseneck-api 1.7.1 → 1.10.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 +113 -0
- package/README.md +170 -1
- package/dist/cjs/client/api.d.ts +5 -3
- package/dist/cjs/client/api.js +1 -0
- package/dist/cjs/client/aufrufe.d.ts +9 -7
- package/dist/cjs/client/aufrufe.js +60 -2
- package/dist/cjs/client/errors.js +3 -0
- package/dist/cjs/client/index.d.ts +2 -2
- package/dist/cjs/client/index.js +3 -1
- package/dist/cjs/client/reports.d.ts +26 -0
- package/dist/cjs/client/reports.js +47 -0
- package/dist/cjs/client/transport.d.ts +27 -3
- package/dist/cjs/client/transport.js +29 -3
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/inventory/api.d.ts +21 -2
- package/dist/cjs/inventory/api.js +22 -3
- package/dist/cjs/inventory/fehler.d.ts +6 -0
- package/dist/cjs/inventory/fehler.js +12 -0
- package/dist/cjs/inventory/index.d.ts +6 -4
- package/dist/cjs/inventory/index.js +33 -3
- package/dist/cjs/inventory/inventur.d.ts +104 -0
- package/dist/cjs/inventory/inventur.js +245 -0
- package/dist/cjs/inventory/lesen.d.ts +20 -1
- package/dist/cjs/inventory/lesen.js +307 -0
- package/dist/cjs/inventory/typen.d.ts +410 -1
- package/dist/cjs/inventory/vertrag.d.ts +94 -8
- package/dist/cjs/inventory/vertrag.js +118 -5
- package/dist/cjs/invoice/index.d.ts +1 -1
- package/dist/cjs/invoice/typen.d.ts +12 -0
- package/dist/cjs/invoice/vertrag.d.ts +1 -1
- package/dist/cjs/invoice/vertrag.js +3 -0
- package/dist/cjs/models/cancellation.d.ts +1 -1
- package/dist/cjs/models/cancellation.js +3 -0
- package/dist/cjs/models/payment-errors.d.ts +1 -1
- package/dist/cjs/models/payment-errors.js +3 -0
- package/dist/cjs/models/receipt-email.d.ts +1 -1
- package/dist/cjs/models/receipt-email.js +3 -0
- package/dist/cjs/models/receipt-errors.d.ts +1 -1
- package/dist/cjs/models/receipt-errors.js +3 -0
- package/dist/cjs/pos/errors.d.ts +4 -3
- package/dist/cjs/pos/errors.js +24 -2
- package/dist/cjs/pos/index.d.ts +4 -1
- package/dist/cjs/pos/index.js +9 -2
- package/dist/cjs/pos/inventur.d.ts +104 -0
- package/dist/cjs/pos/inventur.js +117 -0
- package/dist/cjs/pos/texte.d.ts +82 -0
- package/dist/cjs/pos/texte.js +35 -0
- package/dist/cjs/register/errors.d.ts +1 -1
- package/dist/cjs/register/errors.js +3 -0
- package/dist/cjs/stored/vokabular.d.ts +1 -1
- package/dist/cjs/stored/vokabular.js +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/client/api.d.ts +5 -3
- package/dist/esm/client/api.js +2 -1
- package/dist/esm/client/aufrufe.d.ts +9 -7
- package/dist/esm/client/aufrufe.js +60 -2
- package/dist/esm/client/errors.js +3 -0
- package/dist/esm/client/index.d.ts +2 -2
- package/dist/esm/client/index.js +2 -2
- package/dist/esm/client/reports.d.ts +26 -0
- package/dist/esm/client/reports.js +46 -0
- package/dist/esm/client/transport.d.ts +27 -3
- package/dist/esm/client/transport.js +28 -3
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/inventory/api.d.ts +21 -2
- package/dist/esm/inventory/api.js +23 -4
- package/dist/esm/inventory/fehler.d.ts +6 -0
- package/dist/esm/inventory/fehler.js +11 -0
- package/dist/esm/inventory/index.d.ts +6 -4
- package/dist/esm/inventory/index.js +5 -3
- package/dist/esm/inventory/inventur.d.ts +104 -0
- package/dist/esm/inventory/inventur.js +226 -0
- package/dist/esm/inventory/lesen.d.ts +20 -1
- package/dist/esm/inventory/lesen.js +301 -0
- package/dist/esm/inventory/typen.d.ts +410 -1
- package/dist/esm/inventory/vertrag.d.ts +94 -8
- package/dist/esm/inventory/vertrag.js +117 -4
- package/dist/esm/invoice/index.d.ts +1 -1
- package/dist/esm/invoice/typen.d.ts +12 -0
- package/dist/esm/invoice/vertrag.d.ts +1 -1
- package/dist/esm/invoice/vertrag.js +3 -0
- package/dist/esm/models/cancellation.d.ts +1 -1
- package/dist/esm/models/cancellation.js +3 -0
- package/dist/esm/models/payment-errors.d.ts +1 -1
- package/dist/esm/models/payment-errors.js +3 -0
- package/dist/esm/models/receipt-email.d.ts +1 -1
- package/dist/esm/models/receipt-email.js +3 -0
- package/dist/esm/models/receipt-errors.d.ts +1 -1
- package/dist/esm/models/receipt-errors.js +3 -0
- package/dist/esm/pos/errors.d.ts +4 -3
- package/dist/esm/pos/errors.js +24 -2
- package/dist/esm/pos/index.d.ts +4 -1
- package/dist/esm/pos/index.js +2 -1
- package/dist/esm/pos/inventur.d.ts +104 -0
- package/dist/esm/pos/inventur.js +109 -0
- package/dist/esm/pos/texte.d.ts +82 -0
- package/dist/esm/pos/texte.js +35 -0
- package/dist/esm/register/errors.d.ts +1 -1
- package/dist/esm/register/errors.js +3 -0
- package/dist/esm/stored/vokabular.d.ts +1 -1
- package/dist/esm/stored/vokabular.js +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- 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/pos-texts.json +94 -1
- package/fixtures/stocktake-quantity-cases.json +55 -0
- package/fixtures/surface.json +157 -8
- package/fixtures/v3/antworten/belege.json +1 -1
- package/fixtures/v3/antworten/belegmail.json +1 -1
- package/fixtures/v3/antworten/kasse-belege.json +1 -1
- package/fixtures/v3/antworten/kasse.json +2958 -3
- package/fixtures/v3/antworten/lager.json +1727 -3
- package/fixtures/v3/antworten/rechnungen.json +14 -6
- package/fixtures/v3/antworten/storno.json +1 -1
- package/fixtures/v3/stored/belege.json +1 -1
- package/fixtures/v3/stored/kasse.json +414 -3
- package/fixtures/v3/stored/rechnungen.json +1 -1
- package/fixtures/v3/v3-vokabular.json +530 -8
- package/fixtures/v3/zahlbetrag-faelle.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { InternerTransport } from '../client/aufrufe.js';
|
|
2
|
+
import type { Stocktake, StocktakeCountPage, StocktakeCountResult, StocktakeItemPage } from '../inventory/typen.js';
|
|
3
|
+
import type { StockCondition, StocktakeStatus } from '../inventory/vertrag.js';
|
|
4
|
+
import { type QuantityRule } from './artikel.js';
|
|
5
|
+
/**
|
|
6
|
+
* Inventur zaehlen an der Kasse (Lager-Kern Stufe 3, Backend
|
|
7
|
+
* inventur-endpoints.js): offene Inventuren des Standorts, ihre Positionen und
|
|
8
|
+
* Zaehlungen lesen, zaehlen und eine Zaehlung stornieren. Alle fuenf Aufrufe
|
|
9
|
+
* gibt es nur ueber den Kassenweg `/api/v3`.
|
|
10
|
+
*
|
|
11
|
+
* Rechte am Server: `stocktakeCount` (zaehlen, eigene Zaehlungen stornieren,
|
|
12
|
+
* lesen) bzw. `stocktakeClose` (auch fremde Zaehlungen stornieren und ab der
|
|
13
|
+
* Pruefung das Soll sehen). Kassen-Benutzer sehen in [listMyStocktakes] nur
|
|
14
|
+
* Inventuren in `counting` und solche in `review` mit offenem Nachzaehlen.
|
|
15
|
+
* Anlegen, Pruefen und Abschliessen gibt es an der Kasse nicht.
|
|
16
|
+
*
|
|
17
|
+
* Gezaehlt wird nur online: die Serverzeit ist die Referenzzeit. Bei unklarem
|
|
18
|
+
* Ausgang (`outcome: 'unknown'`) dieselbe Zaehlung mit **demselben**
|
|
19
|
+
* `idempotencyKey` erneut senden; sie wirkt genau einmal.
|
|
20
|
+
*
|
|
21
|
+
* Die Modelle sind dieselben wie in `./inventory` (`Stocktake`,
|
|
22
|
+
* `StocktakeItem`, `StocktakeCount`); Mengen in Tausendstel.
|
|
23
|
+
*/
|
|
24
|
+
export interface ListMyStocktakesOptions {
|
|
25
|
+
/** Nur dieser Standort; `''` gilt wie nicht angegeben. */
|
|
26
|
+
locationId?: string;
|
|
27
|
+
/** Nur dieser Stand. */
|
|
28
|
+
status?: StocktakeStatus;
|
|
29
|
+
}
|
|
30
|
+
export interface ListMyStocktakeItemsOptions {
|
|
31
|
+
stocktakeId: string;
|
|
32
|
+
/** Nur ungezaehlte Positionen (in der Pruefung: die zum Nachzaehlen). */
|
|
33
|
+
openOnly?: boolean;
|
|
34
|
+
limit?: number;
|
|
35
|
+
cursor?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface ListMyStocktakeCountsOptions {
|
|
38
|
+
stocktakeId: string;
|
|
39
|
+
articleId?: string;
|
|
40
|
+
/** Nur die eigenen Zaehlungen. */
|
|
41
|
+
ownOnly?: boolean;
|
|
42
|
+
limit?: number;
|
|
43
|
+
cursor?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface RecordMyStocktakeCountOptions {
|
|
46
|
+
/** Bei „Erneut senden“ derselbe Schluessel wie beim ersten Versuch. */
|
|
47
|
+
idempotencyKey: string;
|
|
48
|
+
stocktakeId: string;
|
|
49
|
+
articleId: string;
|
|
50
|
+
/** Vorgabe `sellable`. */
|
|
51
|
+
condition?: StockCondition;
|
|
52
|
+
/** Tausendstel, aus der Eingabe mit [parseQuantityMilli]; `0` = leer gezaehlt. */
|
|
53
|
+
quantity: number;
|
|
54
|
+
/** Einzelstueck: je Stueck genau eine Seriennummer. */
|
|
55
|
+
serialNumbers?: string[];
|
|
56
|
+
/** Hoechstens 200 Zeichen. */
|
|
57
|
+
note?: string | null;
|
|
58
|
+
/** Ohne Angabe gilt die Kasse der Anmeldung (`registerUserAuth`). */
|
|
59
|
+
cashregisterId?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface VoidMyStocktakeCountOptions {
|
|
62
|
+
idempotencyKey: string;
|
|
63
|
+
stocktakeId: string;
|
|
64
|
+
countId: string;
|
|
65
|
+
/** 1–500 Zeichen. */
|
|
66
|
+
reason: string;
|
|
67
|
+
}
|
|
68
|
+
/** Offene Inventuren (fuer Kassen-Benutzer nur `counting` und `review` mit offenem Nachzaehlen). */
|
|
69
|
+
export declare function listMyStocktakes(transport: InternerTransport, options?: ListMyStocktakesOptions): Promise<Stocktake[]>;
|
|
70
|
+
/** Positionen einer Inventur; ab der Pruefung mit Soll nur mit dem Recht `stocktakeClose`. */
|
|
71
|
+
export declare function listMyStocktakeItems(transport: InternerTransport, options: ListMyStocktakeItemsOptions): Promise<StocktakeItemPage>;
|
|
72
|
+
/** Zaehlungen einer Inventur, neueste zuerst; `ownOnly` nur die eigenen. */
|
|
73
|
+
export declare function listMyStocktakeCounts(transport: InternerTransport, options: ListMyStocktakeCountsOptions): Promise<StocktakeCountPage>;
|
|
74
|
+
/** Eine Zaehlung; Antwort: die Zaehlung und die Position danach (Ist-Summe, kein Soll). */
|
|
75
|
+
export declare function recordMyStocktakeCount(transport: InternerTransport, options: RecordMyStocktakeCountOptions): Promise<StocktakeCountResult>;
|
|
76
|
+
/** Storniert eine Zaehlung mit Grund (fremde nur mit dem Recht `stocktakeClose`). */
|
|
77
|
+
export declare function voidMyStocktakeCount(transport: InternerTransport, options: VoidMyStocktakeCountOptions): Promise<StocktakeCountResult>;
|
|
78
|
+
/**
|
|
79
|
+
* Eine eingetippte Menge in Tausendstel der Basiseinheit, **ohne Gleitkomma**:
|
|
80
|
+
* `'12'` → `12000`, `'0,25'` → `250`, `'1.5'` → `1500`.
|
|
81
|
+
*
|
|
82
|
+
* - Dezimaltrenner Komma oder Punkt, hoechstens drei Nachkommastellen; weitere
|
|
83
|
+
* Nullen am Ende zaehlen nicht (`'1,2340'` → `1234`). `'0'` ist eine gueltige
|
|
84
|
+
* Menge (leer gezaehlt).
|
|
85
|
+
* - **Punkt mit genau drei Ziffern danach und einem Ganzteil ungleich 0**
|
|
86
|
+
* (`'1.000'`, `'12.500'`) ist bei jeder Einheit `null`: in oesterreichischer
|
|
87
|
+
* Schreibweise ist das ein Tausenderpunkt („tausend“), am Ziffernblock ein
|
|
88
|
+
* Dezimalpunkt („eins“); ein Faktor 1000 buchte der Abschluss als Differenz.
|
|
89
|
+
* Mit Komma ist es eindeutig (`'1,000'` → `1000`), ebenso `'0.500'`,
|
|
90
|
+
* `'1.5'`, `'1.25'`.
|
|
91
|
+
* - **Stueckware** nur als ganze Zahl ohne Trenner. Stueckware ist, was
|
|
92
|
+
* `rule` sagt (die gespeicherte Mengenregel des Artikels,
|
|
93
|
+
* `PosArticle.quantityRule`, `'piece'` | `'decimal'`), ohne `rule` die
|
|
94
|
+
* Vorgabe der Einheit (`quantityRuleForUnit`: Stk, g, ml …, auch ohne
|
|
95
|
+
* Einheit). Einzelstuecke (Seriennummer) sind immer Stueckware: dann
|
|
96
|
+
* `'piece'` uebergeben.
|
|
97
|
+
*
|
|
98
|
+
* `null` auch fuer: leer, Vorzeichen, Tausenderleerzeichen, Exponent, mehr als
|
|
99
|
+
* drei Nachkommastellen, groesser als eine sichere Ganzzahl. Die Kasse zeigt
|
|
100
|
+
* dann ihren Satz (`stocktake.quantity_invalid`), statt still zu runden.
|
|
101
|
+
* Gemeinsame Prueffaelle mit dem Dart-Zwilling:
|
|
102
|
+
* `fixtures/stocktake-quantity-cases.json`.
|
|
103
|
+
*/
|
|
104
|
+
export declare function parseQuantityMilli(text: string, unit?: string | null, rule?: QuantityRule | null): number | null;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listMyStocktakes = listMyStocktakes;
|
|
4
|
+
exports.listMyStocktakeItems = listMyStocktakeItems;
|
|
5
|
+
exports.listMyStocktakeCounts = listMyStocktakeCounts;
|
|
6
|
+
exports.recordMyStocktakeCount = recordMyStocktakeCount;
|
|
7
|
+
exports.voidMyStocktakeCount = voidMyStocktakeCount;
|
|
8
|
+
exports.parseQuantityMilli = parseQuantityMilli;
|
|
9
|
+
const errors_js_1 = require("../client/errors.js");
|
|
10
|
+
const inventur_js_1 = require("../inventory/inventur.js");
|
|
11
|
+
const lesen_js_1 = require("../inventory/lesen.js");
|
|
12
|
+
const schreiben_js_1 = require("../inventory/schreiben.js");
|
|
13
|
+
const artikel_js_1 = require("./artikel.js");
|
|
14
|
+
function anfragefehler(name, grund) {
|
|
15
|
+
return new errors_js_1.KasseneckValidationError(name, grund, 'request');
|
|
16
|
+
}
|
|
17
|
+
/** Eine Kennung, die gesendet werden muss. */
|
|
18
|
+
function kennung(name, feld, w) {
|
|
19
|
+
if (typeof w !== 'string' || w.trim() === '')
|
|
20
|
+
throw anfragefehler(name, `${feld} fehlt`);
|
|
21
|
+
return w;
|
|
22
|
+
}
|
|
23
|
+
/** Die Optionen flach, ohne `undefined`; Pflichtkennung `stocktakeId`. */
|
|
24
|
+
function mitInventur(name, options) {
|
|
25
|
+
const p = (0, schreiben_js_1.anfrage)(name, options);
|
|
26
|
+
kennung(name, 'stocktakeId', p.stocktakeId);
|
|
27
|
+
return p;
|
|
28
|
+
}
|
|
29
|
+
/** Offene Inventuren (fuer Kassen-Benutzer nur `counting` und `review` mit offenem Nachzaehlen). */
|
|
30
|
+
async function listMyStocktakes(transport, options = {}) {
|
|
31
|
+
const name = 'listMyStocktakes';
|
|
32
|
+
const p = (0, schreiben_js_1.anfrage)(name, options);
|
|
33
|
+
if (p.locationId === '')
|
|
34
|
+
delete p.locationId;
|
|
35
|
+
const daten = await transport(name, p);
|
|
36
|
+
return (0, lesen_js_1.liste)(name, daten, 'stocktakes', lesen_js_1.inventur);
|
|
37
|
+
}
|
|
38
|
+
/** Positionen einer Inventur; ab der Pruefung mit Soll nur mit dem Recht `stocktakeClose`. */
|
|
39
|
+
async function listMyStocktakeItems(transport, options) {
|
|
40
|
+
const name = 'listMyStocktakeItems';
|
|
41
|
+
const daten = await transport(name, mitInventur(name, options));
|
|
42
|
+
return { items: (0, lesen_js_1.liste)(name, daten, 'items', lesen_js_1.inventurPosition), nextCursor: (0, lesen_js_1.naechsterCursor)(name, daten) };
|
|
43
|
+
}
|
|
44
|
+
/** Zaehlungen einer Inventur, neueste zuerst; `ownOnly` nur die eigenen. */
|
|
45
|
+
async function listMyStocktakeCounts(transport, options) {
|
|
46
|
+
const name = 'listMyStocktakeCounts';
|
|
47
|
+
const daten = await transport(name, mitInventur(name, options));
|
|
48
|
+
return { counts: (0, lesen_js_1.liste)(name, daten, 'counts', lesen_js_1.inventurZaehlung), nextCursor: (0, lesen_js_1.naechsterCursor)(name, daten) };
|
|
49
|
+
}
|
|
50
|
+
/** Eine Zaehlung; Antwort: die Zaehlung und die Position danach (Ist-Summe, kein Soll). */
|
|
51
|
+
async function recordMyStocktakeCount(transport, options) {
|
|
52
|
+
const name = 'recordMyStocktakeCount';
|
|
53
|
+
const p = mitInventur(name, options);
|
|
54
|
+
(0, schreiben_js_1.schluessel)(name, p, { pflicht: true });
|
|
55
|
+
(0, inventur_js_1.zaehlungPruefen)(name, p);
|
|
56
|
+
if (p.cashregisterId !== undefined)
|
|
57
|
+
kennung(name, 'cashregisterId', p.cashregisterId);
|
|
58
|
+
return (0, lesen_js_1.zaehlungMitPosition)(name, await transport(name, p));
|
|
59
|
+
}
|
|
60
|
+
/** Storniert eine Zaehlung mit Grund (fremde nur mit dem Recht `stocktakeClose`). */
|
|
61
|
+
async function voidMyStocktakeCount(transport, options) {
|
|
62
|
+
const name = 'voidMyStocktakeCount';
|
|
63
|
+
const p = mitInventur(name, options);
|
|
64
|
+
(0, schreiben_js_1.schluessel)(name, p, { pflicht: true });
|
|
65
|
+
(0, inventur_js_1.stornoPruefen)(name, p);
|
|
66
|
+
return (0, lesen_js_1.zaehlungMitPosition)(name, await transport(name, p));
|
|
67
|
+
}
|
|
68
|
+
/** Tausendstel je Einheit: drei Nachkommastellen, wie die Mengen am Draht. */
|
|
69
|
+
const STELLEN = 3;
|
|
70
|
+
/**
|
|
71
|
+
* Eine eingetippte Menge in Tausendstel der Basiseinheit, **ohne Gleitkomma**:
|
|
72
|
+
* `'12'` → `12000`, `'0,25'` → `250`, `'1.5'` → `1500`.
|
|
73
|
+
*
|
|
74
|
+
* - Dezimaltrenner Komma oder Punkt, hoechstens drei Nachkommastellen; weitere
|
|
75
|
+
* Nullen am Ende zaehlen nicht (`'1,2340'` → `1234`). `'0'` ist eine gueltige
|
|
76
|
+
* Menge (leer gezaehlt).
|
|
77
|
+
* - **Punkt mit genau drei Ziffern danach und einem Ganzteil ungleich 0**
|
|
78
|
+
* (`'1.000'`, `'12.500'`) ist bei jeder Einheit `null`: in oesterreichischer
|
|
79
|
+
* Schreibweise ist das ein Tausenderpunkt („tausend“), am Ziffernblock ein
|
|
80
|
+
* Dezimalpunkt („eins“); ein Faktor 1000 buchte der Abschluss als Differenz.
|
|
81
|
+
* Mit Komma ist es eindeutig (`'1,000'` → `1000`), ebenso `'0.500'`,
|
|
82
|
+
* `'1.5'`, `'1.25'`.
|
|
83
|
+
* - **Stueckware** nur als ganze Zahl ohne Trenner. Stueckware ist, was
|
|
84
|
+
* `rule` sagt (die gespeicherte Mengenregel des Artikels,
|
|
85
|
+
* `PosArticle.quantityRule`, `'piece'` | `'decimal'`), ohne `rule` die
|
|
86
|
+
* Vorgabe der Einheit (`quantityRuleForUnit`: Stk, g, ml …, auch ohne
|
|
87
|
+
* Einheit). Einzelstuecke (Seriennummer) sind immer Stueckware: dann
|
|
88
|
+
* `'piece'` uebergeben.
|
|
89
|
+
*
|
|
90
|
+
* `null` auch fuer: leer, Vorzeichen, Tausenderleerzeichen, Exponent, mehr als
|
|
91
|
+
* drei Nachkommastellen, groesser als eine sichere Ganzzahl. Die Kasse zeigt
|
|
92
|
+
* dann ihren Satz (`stocktake.quantity_invalid`), statt still zu runden.
|
|
93
|
+
* Gemeinsame Prueffaelle mit dem Dart-Zwilling:
|
|
94
|
+
* `fixtures/stocktake-quantity-cases.json`.
|
|
95
|
+
*/
|
|
96
|
+
function parseQuantityMilli(text, unit, rule) {
|
|
97
|
+
if (typeof text !== 'string')
|
|
98
|
+
return null;
|
|
99
|
+
const m = /^(\d*)(?:([.,])(\d*))?$/.exec(text.trim());
|
|
100
|
+
if (!m)
|
|
101
|
+
return null;
|
|
102
|
+
const ganz = m[1] ?? '';
|
|
103
|
+
const trenner = m[2];
|
|
104
|
+
const roh = m[3] ?? '';
|
|
105
|
+
if (ganz === '' && roh === '')
|
|
106
|
+
return null;
|
|
107
|
+
const stueck = (rule === 'piece' || rule === 'decimal' ? rule : (0, artikel_js_1.quantityRuleForUnit)(unit).rule) === 'piece';
|
|
108
|
+
if (trenner !== undefined && stueck)
|
|
109
|
+
return null;
|
|
110
|
+
if (trenner === '.' && roh.length === 3 && /[1-9]/.test(ganz))
|
|
111
|
+
return null;
|
|
112
|
+
const nachkomma = roh.replace(/0+$/, '');
|
|
113
|
+
if (nachkomma.length > STELLEN)
|
|
114
|
+
return null;
|
|
115
|
+
const milli = BigInt(ganz === '' ? '0' : ganz) * 1000n + BigInt(nachkomma.padEnd(STELLEN, '0'));
|
|
116
|
+
return milli <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(milli) : null;
|
|
117
|
+
}
|
package/dist/cjs/pos/texte.d.ts
CHANGED
|
@@ -555,6 +555,42 @@ declare const MELDUNGEN_ROH: {
|
|
|
555
555
|
readonly 'logo.remove_failed': {
|
|
556
556
|
readonly text: "Entfernen fehlgeschlagen.";
|
|
557
557
|
};
|
|
558
|
+
readonly 'stocktake.none_open': {
|
|
559
|
+
readonly text: "An diesem Standort läuft gerade keine Inventur. Eine Inventur legt der Inhaber im Panel an.";
|
|
560
|
+
};
|
|
561
|
+
readonly 'stocktake.scan_or_search': {
|
|
562
|
+
readonly text: "Artikel scannen oder suchen.";
|
|
563
|
+
};
|
|
564
|
+
readonly 'stocktake.counted': {
|
|
565
|
+
readonly text: "{name}: {quantity} gezählt.";
|
|
566
|
+
readonly placeholders: readonly ["name", "quantity"];
|
|
567
|
+
};
|
|
568
|
+
readonly 'stocktake.blind_hint': {
|
|
569
|
+
readonly text: "Blind zählen – die Kasse zeigt keinen Buchbestand. Bitte zählen, was wirklich da ist.";
|
|
570
|
+
};
|
|
571
|
+
readonly 'stocktake.recount_hint': {
|
|
572
|
+
readonly text: "Bitte die markierten Positionen nachzählen.";
|
|
573
|
+
};
|
|
574
|
+
readonly 'stocktake.unknown_code': {
|
|
575
|
+
readonly text: "Zu „{code}“ gibt es keinen Artikel. Bitte den Code prüfen oder den Artikel suchen.";
|
|
576
|
+
readonly placeholders: readonly ["code"];
|
|
577
|
+
};
|
|
578
|
+
readonly 'stocktake.quantity_invalid': {
|
|
579
|
+
readonly text: "Bitte eine gültige Menge eingeben – höchstens drei Nachkommastellen, bei Stückware nur ganze Zahlen.";
|
|
580
|
+
};
|
|
581
|
+
readonly 'stocktake.serials_capture': {
|
|
582
|
+
readonly text: "Bitte für jedes Stück die Seriennummer scannen.";
|
|
583
|
+
};
|
|
584
|
+
readonly 'stocktake.serials_mismatch': {
|
|
585
|
+
readonly text: "Je Stück genau eine Seriennummer: {count} erfasst, {quantity} gezählt.";
|
|
586
|
+
readonly placeholders: readonly ["count", "quantity"];
|
|
587
|
+
};
|
|
588
|
+
readonly 'stocktake.reason_missing': {
|
|
589
|
+
readonly text: "Bitte einen Grund für das Stornieren eingeben.";
|
|
590
|
+
};
|
|
591
|
+
readonly 'stocktake.outcome_unknown': {
|
|
592
|
+
readonly text: "Unklar, ob die Zählung angekommen ist. „Erneut senden“ schickt dieselbe Zählung – sie zählt auch dann nur einmal.";
|
|
593
|
+
};
|
|
558
594
|
readonly 'app.not_in_browser': {
|
|
559
595
|
readonly text: "Die Kassen-App läuft nicht im Browser – dafür gibt es kasse.kasseneck.at.";
|
|
560
596
|
readonly only: readonly ["app"];
|
|
@@ -1050,6 +1086,52 @@ declare const BESCHRIFTUNGEN_ROH: {
|
|
|
1050
1086
|
readonly 'stock.return_disposed': {
|
|
1051
1087
|
readonly text: "Entsorgt";
|
|
1052
1088
|
};
|
|
1089
|
+
readonly 'stocktake.title': {
|
|
1090
|
+
readonly text: "Inventur zählen";
|
|
1091
|
+
};
|
|
1092
|
+
readonly 'stocktake.quantity': {
|
|
1093
|
+
readonly text: "Menge";
|
|
1094
|
+
};
|
|
1095
|
+
readonly 'stocktake.defective': {
|
|
1096
|
+
readonly text: "Defekt";
|
|
1097
|
+
};
|
|
1098
|
+
readonly 'stocktake.count_zero': {
|
|
1099
|
+
readonly text: "0 zählen";
|
|
1100
|
+
};
|
|
1101
|
+
readonly 'stocktake.next': {
|
|
1102
|
+
readonly text: "Weiter";
|
|
1103
|
+
};
|
|
1104
|
+
readonly 'stocktake.void': {
|
|
1105
|
+
readonly text: "Stornieren";
|
|
1106
|
+
};
|
|
1107
|
+
readonly 'stocktake.reason': {
|
|
1108
|
+
readonly text: "Grund";
|
|
1109
|
+
};
|
|
1110
|
+
readonly 'stocktake.progress': {
|
|
1111
|
+
readonly text: "{counted} von {total} gezählt";
|
|
1112
|
+
readonly placeholders: readonly ["counted", "total"];
|
|
1113
|
+
};
|
|
1114
|
+
readonly 'stocktake.serial_numbers': {
|
|
1115
|
+
readonly text: "Seriennummern erfassen";
|
|
1116
|
+
};
|
|
1117
|
+
readonly 'stocktake.recount': {
|
|
1118
|
+
readonly text: "Nachzählen";
|
|
1119
|
+
};
|
|
1120
|
+
readonly 'stocktake.resend': {
|
|
1121
|
+
readonly text: "Erneut senden";
|
|
1122
|
+
};
|
|
1123
|
+
readonly 'stocktake.my_counts': {
|
|
1124
|
+
readonly text: "Meine Zählungen";
|
|
1125
|
+
};
|
|
1126
|
+
readonly 'stocktake.sent': {
|
|
1127
|
+
readonly text: "gesendet";
|
|
1128
|
+
};
|
|
1129
|
+
readonly 'stocktake.unconfirmed': {
|
|
1130
|
+
readonly text: "unbestätigt";
|
|
1131
|
+
};
|
|
1132
|
+
readonly 'stocktake.voided': {
|
|
1133
|
+
readonly text: "storniert";
|
|
1134
|
+
};
|
|
1053
1135
|
};
|
|
1054
1136
|
export type LabelKey = keyof typeof BESCHRIFTUNGEN_ROH;
|
|
1055
1137
|
export declare const LABELS: Record<LabelKey, TextEntry>;
|
package/dist/cjs/pos/texte.js
CHANGED
|
@@ -292,6 +292,22 @@ const MELDUNGEN_ROH = {
|
|
|
292
292
|
'unpairing.failed': { text: 'Entkoppeln fehlgeschlagen.' },
|
|
293
293
|
'logo.upload_failed': { text: 'Hochladen fehlgeschlagen.' },
|
|
294
294
|
'logo.remove_failed': { text: 'Entfernen fehlgeschlagen.' },
|
|
295
|
+
// --- Inventur zählen ------------------------------------------------------
|
|
296
|
+
// Gezählt wird blind und nur online; bei unklarem Ausgang schickt
|
|
297
|
+
// „Erneut senden“ dieselbe Zählung mit demselben Schlüssel (sie zählt genau
|
|
298
|
+
// einmal), nie eine neue. `{quantity}` ist die Menge samt Einheit („12 Stk“),
|
|
299
|
+
// `{count}` die Zahl der erfassten Seriennummern.
|
|
300
|
+
'stocktake.none_open': { text: 'An diesem Standort läuft gerade keine Inventur. Eine Inventur legt der Inhaber im Panel an.' },
|
|
301
|
+
'stocktake.scan_or_search': { text: 'Artikel scannen oder suchen.' },
|
|
302
|
+
'stocktake.counted': { text: '{name}: {quantity} gezählt.', placeholders: ['name', 'quantity'] },
|
|
303
|
+
'stocktake.blind_hint': { text: 'Blind zählen – die Kasse zeigt keinen Buchbestand. Bitte zählen, was wirklich da ist.' },
|
|
304
|
+
'stocktake.recount_hint': { text: 'Bitte die markierten Positionen nachzählen.' },
|
|
305
|
+
'stocktake.unknown_code': { text: 'Zu „{code}“ gibt es keinen Artikel. Bitte den Code prüfen oder den Artikel suchen.', placeholders: ['code'] },
|
|
306
|
+
'stocktake.quantity_invalid': { text: 'Bitte eine gültige Menge eingeben – höchstens drei Nachkommastellen, bei Stückware nur ganze Zahlen.' },
|
|
307
|
+
'stocktake.serials_capture': { text: 'Bitte für jedes Stück die Seriennummer scannen.' },
|
|
308
|
+
'stocktake.serials_mismatch': { text: 'Je Stück genau eine Seriennummer: {count} erfasst, {quantity} gezählt.', placeholders: ['count', 'quantity'] },
|
|
309
|
+
'stocktake.reason_missing': { text: 'Bitte einen Grund für das Stornieren eingeben.' },
|
|
310
|
+
'stocktake.outcome_unknown': { text: 'Unklar, ob die Zählung angekommen ist. „Erneut senden“ schickt dieselbe Zählung – sie zählt auch dann nur einmal.' },
|
|
295
311
|
// --- Nur App -------------------------------------------------------------
|
|
296
312
|
'app.not_in_browser': { text: 'Die Kassen-App läuft nicht im Browser – dafür gibt es kasse.kasseneck.at.', only: ['app'] },
|
|
297
313
|
'app.open_in_browser': { text: 'Bitte im Browser öffnen: {target}', placeholders: ['target'], only: ['app'] },
|
|
@@ -620,6 +636,25 @@ const BESCHRIFTUNGEN_ROH = {
|
|
|
620
636
|
'stock.return_restock': { text: 'Zurück ins Lager' },
|
|
621
637
|
'stock.return_defective': { text: 'Defekt' },
|
|
622
638
|
'stock.return_disposed': { text: 'Entsorgt' },
|
|
639
|
+
// --- Inventur zählen ---------------------------------------------------------
|
|
640
|
+
// Knöpfe und Zeilen des Zählbildschirms. „gesendet“ und „unbestätigt“ stehen
|
|
641
|
+
// an den Zählungen der Sitzung (unbestätigt: unklarer Ausgang, „Erneut
|
|
642
|
+
// senden“ mit demselben Schlüssel).
|
|
643
|
+
'stocktake.title': { text: 'Inventur zählen' },
|
|
644
|
+
'stocktake.quantity': { text: 'Menge' },
|
|
645
|
+
'stocktake.defective': { text: 'Defekt' },
|
|
646
|
+
'stocktake.count_zero': { text: '0 zählen' },
|
|
647
|
+
'stocktake.next': { text: 'Weiter' },
|
|
648
|
+
'stocktake.void': { text: 'Stornieren' },
|
|
649
|
+
'stocktake.reason': { text: 'Grund' },
|
|
650
|
+
'stocktake.progress': { text: '{counted} von {total} gezählt', placeholders: ['counted', 'total'] },
|
|
651
|
+
'stocktake.serial_numbers': { text: 'Seriennummern erfassen' },
|
|
652
|
+
'stocktake.recount': { text: 'Nachzählen' },
|
|
653
|
+
'stocktake.resend': { text: 'Erneut senden' },
|
|
654
|
+
'stocktake.my_counts': { text: 'Meine Zählungen' },
|
|
655
|
+
'stocktake.sent': { text: 'gesendet' },
|
|
656
|
+
'stocktake.unconfirmed': { text: 'unbestätigt' },
|
|
657
|
+
'stocktake.voided': { text: 'storniert' },
|
|
623
658
|
};
|
|
624
659
|
exports.LABELS = BESCHRIFTUNGEN_ROH;
|
|
625
660
|
/**
|
|
@@ -22,7 +22,7 @@ import { KasseneckApiError } from '../client/errors.js';
|
|
|
22
22
|
* ueber `KasseneckApiError.code` lesbar; die Kasse braucht dafuer einen
|
|
23
23
|
* Rueckfallzweig.
|
|
24
24
|
*/
|
|
25
|
-
export declare const REGISTER_ERROR_CODES: readonly ["account_not_found", "admin_required", "api_not_approved", "cashregister_in_use", "cashregister_not_assigned", "cashregister_not_found", "cashregister_token_invalid", "cashregister_token_missing", "device_bound_elsewhere", "device_not_found", "device_not_paired", "device_takeover_required", "dialect_mismatch", "internal_translation_error", "licenses_exhausted", "live_not_enabled", "location_outside", "location_required", "login_failed", "login_mode_select_user", "login_unavailable", "method_not_allowed", "mfa_required", "not_found", "pairing_code_expired", "pairing_code_unknown", "pairing_code_used", "pairing_failed", "register_user_no_business", "register_user_not_allowed", "register_user_not_found", "register_user_only", "response_translation_failed", "session_ended", "session_expired", "session_not_running", "session_other_cashregister", "too_many_attempts", "unauthorized", "user_disabled", "user_verification_failed", "validation", "route_missing"];
|
|
25
|
+
export declare const REGISTER_ERROR_CODES: readonly ["account_not_found", "admin_required", "api_not_approved", "app_check_invalid", "app_check_missing", "cashregister_in_use", "cashregister_not_assigned", "cashregister_not_found", "cashregister_token_invalid", "cashregister_token_missing", "device_bound_elsewhere", "device_not_found", "device_not_paired", "device_takeover_required", "dialect_mismatch", "internal_translation_error", "licenses_exhausted", "live_not_enabled", "location_outside", "location_required", "login_failed", "login_mode_select_user", "login_unavailable", "method_not_allowed", "mfa_required", "not_found", "pairing_code_expired", "pairing_code_unknown", "pairing_code_used", "pairing_failed", "password_change_required", "register_user_no_business", "register_user_not_allowed", "register_user_not_found", "register_user_only", "response_translation_failed", "session_ended", "session_expired", "session_not_running", "session_other_cashregister", "too_many_attempts", "unauthorized", "user_disabled", "user_verification_failed", "validation", "route_missing"];
|
|
26
26
|
export type RegisterErrorCode = typeof REGISTER_ERROR_CODES[number];
|
|
27
27
|
export declare function isRegisterErrorCode(value: unknown): value is RegisterErrorCode;
|
|
28
28
|
/** Der Code eines geworfenen Fehlers, wenn es einer der Kassen-Anmeldung ist; sonst `undefined`. */
|
|
@@ -35,6 +35,8 @@ exports.REGISTER_ERROR_CODES = Object.freeze([
|
|
|
35
35
|
'account_not_found',
|
|
36
36
|
'admin_required',
|
|
37
37
|
'api_not_approved',
|
|
38
|
+
'app_check_invalid',
|
|
39
|
+
'app_check_missing',
|
|
38
40
|
'cashregister_in_use',
|
|
39
41
|
'cashregister_not_assigned',
|
|
40
42
|
'cashregister_not_found',
|
|
@@ -60,6 +62,7 @@ exports.REGISTER_ERROR_CODES = Object.freeze([
|
|
|
60
62
|
'pairing_code_unknown',
|
|
61
63
|
'pairing_code_used',
|
|
62
64
|
'pairing_failed',
|
|
65
|
+
'password_change_required',
|
|
63
66
|
'register_user_no_business',
|
|
64
67
|
'register_user_not_allowed',
|
|
65
68
|
'register_user_not_found',
|
|
@@ -1,5 +1,5 @@
|
|
|
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 = "4b0152e546f6320ecc6dad18156ac91cc176426c71c57ecbf21c1192a714ecda";
|
|
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 {
|
|
@@ -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 = "4b0152e546f6320ecc6dad18156ac91cc176426c71c57ecbf21c1192a714ecda";
|
|
8
8
|
/** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
|
|
9
9
|
exports.SCHEMAS = {
|
|
10
10
|
"getReceipt": {
|
package/dist/cjs/version.d.ts
CHANGED
package/dist/cjs/version.js
CHANGED
package/dist/esm/client/api.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Cashregister, HobexReceipt, Receipt, ReportMonth, StripeUrlSession
|
|
|
2
2
|
import { type CreateStripeLinkOptions, type StripeCaptureResult } from '../payments/stripe.js';
|
|
3
3
|
import { type HobexPayOptions, type HobexRefundOptions } from '../payments/hobex.js';
|
|
4
4
|
import { type TransportOptions } from './transport.js';
|
|
5
|
-
import { type ReportV2, type ReportV2Options } from './reports.js';
|
|
5
|
+
import { type CashregisterReportPeriod, type ReportV2, type ReportV2Options } from './reports.js';
|
|
6
6
|
import { type CashboxStatus, type SignatureStatus } from './status.js';
|
|
7
7
|
import { type SendReceiptEmailOptions, type SendReceiptEmailResult, type ListMyReceiptsOptions, type ReceiptList, type ReceiptWithCompany, type SellReceiptOptions, type CancelReceiptOptions, type CancelReceiptResult } from './receipts.js';
|
|
8
8
|
/**
|
|
@@ -54,9 +54,11 @@ export interface KasseneckApi {
|
|
|
54
54
|
listMyCashregisters(): Promise<Cashregister[]>;
|
|
55
55
|
/** Rohdaten eines Zeitraums: Belege und Firmendaten (`getReportV2`). */
|
|
56
56
|
getReportV2(options: ReportV2Options): Promise<ReportV2>;
|
|
57
|
-
/**
|
|
57
|
+
/** Kassenbericht als PDF (v2): abgeschlossener Monat, Tag oder Zeitraum (Endpunkt `getCashregisterReport`). */
|
|
58
|
+
getCashregisterReport(options: CashregisterReportPeriod): Promise<Uint8Array>;
|
|
59
|
+
/** @deprecated Since 1.10.0: use getCashregisterReport. Tagesbericht als PDF (Kalendertag nach Wiener Zeit). */
|
|
58
60
|
downloadDailyReport(date: Date): Promise<Uint8Array>;
|
|
59
|
-
/** Monatsbericht als PDF (Endpunkt `downloadReport`). */
|
|
61
|
+
/** @deprecated Since 1.10.0: use getCashregisterReport. Monatsbericht als PDF (Endpunkt `downloadReport`). */
|
|
60
62
|
downloadMonthlyReport(reportMonth: ReportMonth): Promise<Uint8Array>;
|
|
61
63
|
/** Betriebsstatus der Kasse bei FinanzOnline. */
|
|
62
64
|
getCashboxStatus(): Promise<CashboxStatus>;
|
package/dist/esm/client/api.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createStripeLink, stripeCaptureIntent, } from '../payments/stripe.js';
|
|
2
2
|
import { hobexPay, hobexRefund } from '../payments/hobex.js';
|
|
3
3
|
import { createTransport, createBinaryTransport } from './transport.js';
|
|
4
|
-
import { downloadDailyReport, downloadMonthlyReport, getReportV2 } from './reports.js';
|
|
4
|
+
import { downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2 } from './reports.js';
|
|
5
5
|
import { getCashboxStatus, getSignatureStatus } from './status.js';
|
|
6
6
|
import { sellReceipt, sellReceiptWithCompany, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, sendReceiptEmail, } from './receipts.js';
|
|
7
7
|
import { listMyCashregisters } from './cashregisters.js';
|
|
@@ -24,6 +24,7 @@ export function createKasseneckApi(options) {
|
|
|
24
24
|
sendReceiptEmail: (o) => sendReceiptEmail(rufen, o),
|
|
25
25
|
listMyCashregisters: () => listMyCashregisters(rufen),
|
|
26
26
|
getReportV2: (o) => getReportV2(rufen, o),
|
|
27
|
+
getCashregisterReport: (options) => getCashregisterReport(rufenBinaer, options),
|
|
27
28
|
downloadDailyReport: (date) => downloadDailyReport(rufenBinaer, date),
|
|
28
29
|
downloadMonthlyReport: (reportMonth) => downloadMonthlyReport(rufenBinaer, reportMonth),
|
|
29
30
|
getCashboxStatus: () => getCashboxStatus(rufen),
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
* weiterhin jeden `string`: wer einen Aufruf braucht, den dieses Paket nicht
|
|
13
13
|
* umhuellt, muss ihn weiterhin absetzen koennen.
|
|
14
14
|
*/
|
|
15
|
-
import type { 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", "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"];
|
|
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"];
|
|
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", "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"];
|
|
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"];
|
|
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"];
|
|
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"];
|
|
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", "changeStockCondition", "createArticle", "createCreditNote", "createCustomer", "createCustomerCashregister", "createInvoiceItem", "createPartnerCustomer", "createPartnerWebhook", "createPrintJob", "createReceipt", "createReservation", "createVariantGroup", "createWebhook", "deactivateArticle", "deletePartnerWebhook", "deleteWebhook", "extendReservation", "financeWebService", "hobexPayApi", "hobexRefundApi", "issueInvoice", "pairRegisterDevice", "receiveGoods", "recordInvoicePayment", "recordStockLoss", "releaseReservation", "reportCustomerContract", "requestCustomerSignature", "reverseStockMovement", "revokeCustomerMandate", "rotatePartnerWebhookSecret", "rotateWebhookSecret", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "sendWebhookTest", "setCustomerMandate", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "transferStock", "unpairRegisterDevice", "updateArticle", "updateCustomer", "updateInvoiceItem", "updatePartnerWebhook", "updateVariantGroup", "updateWebhook", "withdrawInvoiceItem"];
|
|
52
|
+
export declare const UNKNOWN_OUTCOME_CALLS: readonly ["activateCashregister", "addVariant", "cancelInvoice", "cancelReceipt", "cancelStocktake", "changeStockCondition", "closeStocktake", "createArticle", "createCreditNote", "createCustomer", "createCustomerCashregister", "createInvoiceItem", "createPartnerCustomer", "createPartnerWebhook", "createPrintJob", "createReceipt", "createReservation", "createStocktake", "createVariantGroup", "createWebhook", "deactivateArticle", "deletePartnerWebhook", "deleteWebhook", "extendReservation", "financeWebService", "hobexPayApi", "hobexRefundApi", "issueInvoice", "pairRegisterDevice", "receiveGoods", "recordInvoicePayment", "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
|
/**
|
|
@@ -85,10 +85,10 @@ export declare const CALLS_WITHOUT_EFFECT: Readonly<Record<string, CallWithoutEf
|
|
|
85
85
|
* absetzt, sagt es mit `hasEffect: true`.
|
|
86
86
|
*/
|
|
87
87
|
export declare function isUnknownOutcomeCall(name: string): boolean;
|
|
88
|
-
/** Einer der
|
|
88
|
+
/** Einer der 33 Aufrufe des Kassenwegs. */
|
|
89
89
|
export declare function isPosCall(name: string): boolean;
|
|
90
90
|
/**
|
|
91
|
-
* Nur ueber den Kassenweg erreichbar (
|
|
91
|
+
* Nur ueber den Kassenweg erreichbar (27 Namen): unter `api.kasseneck.at/v3`
|
|
92
92
|
* gibt es sie nicht. Der Transport schickt sie darum ohne eigene Basis an
|
|
93
93
|
* [POS_BASE_URL] statt an die oeffentliche Basis.
|
|
94
94
|
*/
|
|
@@ -97,3 +97,5 @@ export declare function isPosOnlyCall(name: string): boolean;
|
|
|
97
97
|
export type InternerTransport = <T = unknown>(functionName: ApiCall, params?: Record<string, unknown>, extraBodyFields?: TransportBodyFields, secretParams?: readonly string[], options?: TransportCallOptions) => Promise<T>;
|
|
98
98
|
/** Wie [KasseneckBinaryTransport], nur mit bekanntem Aufrufnamen. */
|
|
99
99
|
export type InternerBinaerTransport = (functionName: ApiCall, params?: Record<string, unknown>) => Promise<Uint8Array>;
|
|
100
|
+
/** Wie `createPdfOrDataTransport` (transport.ts), nur mit bekanntem Aufrufnamen. */
|
|
101
|
+
export type InternerPdfOderDatenTransport = (functionName: ApiCall, params?: Record<string, unknown>) => Promise<PdfOrData>;
|