@kreiseck/kasseneck-api 1.18.0 → 1.20.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 +22 -0
- package/README.md +90 -9
- package/dist/cjs/client/api.d.ts +19 -0
- package/dist/cjs/client/api.js +18 -0
- package/dist/cjs/client/aufrufe.d.ts +5 -3
- package/dist/cjs/client/aufrufe.js +20 -0
- package/dist/cjs/client/dep-export.d.ts +242 -0
- package/dist/cjs/client/dep-export.js +336 -0
- package/dist/cjs/client/index.d.ts +3 -2
- package/dist/cjs/client/index.js +22 -2
- package/dist/cjs/client/list-receipts.d.ts +45 -5
- package/dist/cjs/client/list-receipts.js +62 -3
- package/dist/cjs/client/receipts.js +2 -2
- package/dist/cjs/client/transport.d.ts +35 -0
- package/dist/cjs/client/transport.js +37 -2
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +21 -2
- package/dist/cjs/models/receipt.d.ts +5 -3
- 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 +19 -0
- package/dist/esm/client/api.js +19 -1
- package/dist/esm/client/aufrufe.d.ts +5 -3
- package/dist/esm/client/aufrufe.js +20 -0
- package/dist/esm/client/dep-export.d.ts +242 -0
- package/dist/esm/client/dep-export.js +325 -0
- package/dist/esm/client/index.d.ts +3 -2
- package/dist/esm/client/index.js +3 -2
- package/dist/esm/client/list-receipts.d.ts +45 -5
- package/dist/esm/client/list-receipts.js +61 -3
- package/dist/esm/client/receipts.js +2 -2
- package/dist/esm/client/transport.d.ts +35 -0
- package/dist/esm/client/transport.js +36 -2
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/models/receipt.d.ts +5 -3
- 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 +1 -1
- package/fixtures/surface.json +12 -2
- package/fixtures/v3/antworten/belege.json +106 -8
- package/fixtures/v3/antworten/belegmail.json +1 -1
- package/fixtures/v3/antworten/berichte.json +1 -1
- package/fixtures/v3/antworten/kasse-belege.json +1 -1
- package/fixtures/v3/antworten/kasse.json +2 -2
- package/fixtures/v3/antworten/lager.json +1 -1
- package/fixtures/v3/antworten/rechnungen.json +1 -1
- package/fixtures/v3/antworten/storno.json +14 -2
- package/fixtures/v3/stored/belege.json +1 -1
- package/fixtures/v3/stored/kasse.json +2 -2
- package/fixtures/v3/stored/rechnungen.json +1 -1
- package/fixtures/v3/v3-vokabular.json +153 -10
- package/fixtures/v3/zahlbetrag-faelle.json +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { KeckPaymentMethod, ReceiptType } from '../enums/index.js';
|
|
2
|
-
import { type CancellationReason, type CancellationStatus, type Receipt, type ReceiptPayment, type ZeroKind } from '../models/index.js';
|
|
2
|
+
import { type CancellationReason, type CancellationStatus, type Receipt, type ReceiptCompany, type ReceiptPayment, type ZeroKind } from '../models/index.js';
|
|
3
3
|
import type { ReportV2Metadata } from './reports.js';
|
|
4
|
+
import type { ReceiptWithCompany } from './receipts.js';
|
|
5
|
+
import type { SheetLogoSize } from '../receipt/blatt.js';
|
|
4
6
|
import { type ManualReceipt } from '../models/manual-receipt.js';
|
|
5
7
|
import type { InternerTransport } from './aufrufe.js';
|
|
6
8
|
/**
|
|
@@ -147,8 +149,26 @@ export interface ListReceiptsSummary {
|
|
|
147
149
|
/** Nur an nacherfassten Belegen: der Handbeleg. */
|
|
148
150
|
manualReceipt?: ManualReceipt;
|
|
149
151
|
}
|
|
150
|
-
/**
|
|
151
|
-
|
|
152
|
+
/**
|
|
153
|
+
* Ein Beleg der vollen Ansicht: das Belegdokument wie bei `getReceipt`, dazu was `getReceipt` in der Huelle
|
|
154
|
+
* traegt, ausser `outputs` und dem Zeilenmodell `layout` (die gibt es nur einzeln ueber `getReceipt`).
|
|
155
|
+
* `headerVersionId` ist die Kopf-Version, die fuer diesen Beleg gilt (auch bei Altbelegen ohne gespeicherte
|
|
156
|
+
* Kennung); ihr Kopf steht in [ListReceiptsPage.headers]. Anbieterdaten der Zahlungen bekommt nur der Betrieb
|
|
157
|
+
* selbst (API-Schluessel oder Kassen-Anmeldung), nie ein Partner-Zugang.
|
|
158
|
+
* Druck- und Anzeigedaten wie bei `getReceiptWithCompany`: [listedReceiptWithCompany].
|
|
159
|
+
*/
|
|
160
|
+
export interface ListedFullReceipt extends Receipt {
|
|
161
|
+
/** Produktionskonto mit Test-Signatureinheit (Aufdruck TESTSIGNATUR); fehlt bei einem Backend vor dem 30.10.2026. */
|
|
162
|
+
testSignature?: boolean;
|
|
163
|
+
}
|
|
164
|
+
/** Ein Eintrag in [ListReceiptsPage.headers]: Kopf und Fuss einer Kopf-Version (Felder wie die Huelle von `getReceipt`). */
|
|
165
|
+
export interface ListReceiptsHeader {
|
|
166
|
+
/** `null` nur, wenn das Konto noch keine Kopf-Version hat (dann der heutige Stand). */
|
|
167
|
+
headerVersionId: string | null;
|
|
168
|
+
company: ReceiptCompany;
|
|
169
|
+
}
|
|
170
|
+
/** Ein Beleg der Liste je Ansicht: `full` das Belegdokument wie bei `getReceipt`, sonst die Zeile. */
|
|
171
|
+
export type ListedReceipt<V extends ListReceiptsView = 'summary'> = V extends 'full' ? ListedFullReceipt : ListReceiptsSummary;
|
|
152
172
|
/**
|
|
153
173
|
* Tagessumme aus der Tagesstatistik der Kasse, nur bei `date` und nur auf
|
|
154
174
|
* der ersten Seite. **Nicht die Summe der Liste:** `receiptCount` zaehlt jeden
|
|
@@ -183,9 +203,28 @@ export interface ListReceiptsPage<V extends ListReceiptsView = 'summary'> {
|
|
|
183
203
|
* `getReportV2().metadata`. Bei der Kurzansicht fehlt das Feld.
|
|
184
204
|
*/
|
|
185
205
|
metadata?: V extends 'full' ? ReportV2Metadata : never;
|
|
206
|
+
/**
|
|
207
|
+
* Nur bei `view: 'full'`: die Kopf-Versionen der Belege dieser Seite, je Version einmal, aelteste zuerst.
|
|
208
|
+
* Fuer den Druck gilt der Eintrag mit der `headerVersionId` des Belegs, nicht `metadata` (heutiger Stand).
|
|
209
|
+
* Fehlt bei einem Backend vor dem 30.10.2026.
|
|
210
|
+
*/
|
|
211
|
+
headers?: V extends 'full' ? ListReceiptsHeader[] : never;
|
|
212
|
+
/** Nur bei `view: 'full'`: Belege einer Testumgebung (Aufdruck TESTKASSE), wie `getReceipt`. */
|
|
213
|
+
testCashregister?: V extends 'full' ? boolean : never;
|
|
214
|
+
/** Nur bei `view: 'full'`: Groesse des Firmenlogos (`logo_scale`), wie `getReceipt`. */
|
|
215
|
+
logoScale?: V extends 'full' ? SheetLogoSize : never;
|
|
186
216
|
}
|
|
187
217
|
/** Zeile `view: summary` vom Draht. */
|
|
188
218
|
export declare function fromListReceiptsSummaryPayload(payload: Record<string, unknown>): ListReceiptsSummary;
|
|
219
|
+
/**
|
|
220
|
+
* Ein Beleg der vollen Ansicht mit den Druck- und Anzeigedaten seiner Seite, in derselben Form wie
|
|
221
|
+
* `getReceiptWithCompany` (ohne `outputs`): der Kopf der Version des Belegs aus `headers` (Nullbelege ohne
|
|
222
|
+
* Logo, wie beim Server), Testkennzeichen, Logo-Stufe. `layout` ist immer `null` -- die Liste traegt kein
|
|
223
|
+
* Zeilenmodell; [receiptLayoutFromResult] baut es dann mit denselben Angaben, oder `getReceiptWithCompany`
|
|
224
|
+
* holt das des Servers. Von einem Backend vor dem 30.10.2026 (ohne `headers`) kommt der Kopf aus
|
|
225
|
+
* `metadata`, dem heutigen Stand.
|
|
226
|
+
*/
|
|
227
|
+
export declare function listedReceiptWithCompany(page: ListReceiptsPage<'full'>, receipt: ListedFullReceipt): ReceiptWithCompany;
|
|
189
228
|
/**
|
|
190
229
|
* Eine Seite Belege der angemeldeten Kasse (`listReceipts`). Die Eingabe wird
|
|
191
230
|
* vor dem Senden nach den Regeln des Servers geprueft (genau eine Form des
|
|
@@ -193,8 +232,9 @@ export declare function fromListReceiptsSummaryPayload(payload: Record<string, u
|
|
|
193
232
|
* `order`, `view`); ein Verstoss wirft [KasseneckValidationError] mit
|
|
194
233
|
* `scope: 'request'`, ohne dass etwas hinausgeht.
|
|
195
234
|
*
|
|
196
|
-
* Mit `view: 'full'` sind die Belege das gespeicherte Belegdokument
|
|
197
|
-
*
|
|
235
|
+
* Mit `view: 'full'` sind die Belege das gespeicherte Belegdokument mit den
|
|
236
|
+
* Angaben, die `getReceipt` liefert ([ListedFullReceipt]; Kopf je Version in
|
|
237
|
+
* `headers`, ohne Zeilenmodell), sonst [ListReceiptsSummary].
|
|
198
238
|
* Alle Seiten auf einmal: [listAllReceipts].
|
|
199
239
|
*/
|
|
200
240
|
export declare function listReceipts<V extends ListReceiptsView = 'summary'>(transport: InternerTransport, options: ListReceiptsOptions<V>): Promise<ListReceiptsPage<V>>;
|
|
@@ -219,6 +219,57 @@ function kopfdaten(roh) {
|
|
|
219
219
|
const label = roh.label;
|
|
220
220
|
return { ...fromReceiptCompanyPayload(roh), label: typeof label === 'string' ? label : '' };
|
|
221
221
|
}
|
|
222
|
+
const LOGO_STUFEN = ['S', 'M', 'L', 'XL'];
|
|
223
|
+
/** Ein Beleg der vollen Ansicht vom Draht: das Belegdokument und die Zusaetze, die `getReceipt` in der Huelle traegt. */
|
|
224
|
+
function vollerBeleg(roh) {
|
|
225
|
+
const beleg = fromReceiptPayload(roh);
|
|
226
|
+
if (typeof roh['testSignature'] === 'boolean')
|
|
227
|
+
beleg.testSignature = roh['testSignature'];
|
|
228
|
+
return beleg;
|
|
229
|
+
}
|
|
230
|
+
/** `headers` der vollen Ansicht: je Kopf-Version Kennung und Kopf. */
|
|
231
|
+
function koepfe(roh) {
|
|
232
|
+
if (!Array.isArray(roh) || roh.some((h) => !istObjekt(h)))
|
|
233
|
+
throw antwortfehler('headers ist keine Liste von Kopf-Versionen');
|
|
234
|
+
return roh.map((h) => ({
|
|
235
|
+
headerVersionId: typeof h['headerVersionId'] === 'string' && h['headerVersionId'] !== '' ? h['headerVersionId'] : null,
|
|
236
|
+
company: fromReceiptCompanyPayload(h),
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Ein Beleg der vollen Ansicht mit den Druck- und Anzeigedaten seiner Seite, in derselben Form wie
|
|
241
|
+
* `getReceiptWithCompany` (ohne `outputs`): der Kopf der Version des Belegs aus `headers` (Nullbelege ohne
|
|
242
|
+
* Logo, wie beim Server), Testkennzeichen, Logo-Stufe. `layout` ist immer `null` -- die Liste traegt kein
|
|
243
|
+
* Zeilenmodell; [receiptLayoutFromResult] baut es dann mit denselben Angaben, oder `getReceiptWithCompany`
|
|
244
|
+
* holt das des Servers. Von einem Backend vor dem 30.10.2026 (ohne `headers`) kommt der Kopf aus
|
|
245
|
+
* `metadata`, dem heutigen Stand.
|
|
246
|
+
*/
|
|
247
|
+
export function listedReceiptWithCompany(page, receipt) {
|
|
248
|
+
const kennung = receipt.headerVersionId ?? null;
|
|
249
|
+
const eintrag = page.headers?.find((h) => h.headerVersionId === kennung);
|
|
250
|
+
let company;
|
|
251
|
+
if (eintrag)
|
|
252
|
+
company = { ...eintrag.company };
|
|
253
|
+
else if (page.metadata) {
|
|
254
|
+
const { label: _label, ...kopf } = page.metadata;
|
|
255
|
+
company = kopf;
|
|
256
|
+
}
|
|
257
|
+
else
|
|
258
|
+
company = fromReceiptCompanyPayload({});
|
|
259
|
+
const art = typeof receipt.receiptType === 'object' ? receipt.receiptType.value : receipt.receiptType;
|
|
260
|
+
if (art === ReceiptType.zero.value)
|
|
261
|
+
delete company.logoUrl;
|
|
262
|
+
return {
|
|
263
|
+
receipt,
|
|
264
|
+
company,
|
|
265
|
+
testCashregister: page.testCashregister === true,
|
|
266
|
+
testSignature: receipt.testSignature === true,
|
|
267
|
+
headerVersionId: kennung,
|
|
268
|
+
layout: null,
|
|
269
|
+
registrationInfo: receipt.registrationInfo ?? null,
|
|
270
|
+
logoScale: page.logoScale ?? 'M',
|
|
271
|
+
};
|
|
272
|
+
}
|
|
222
273
|
/**
|
|
223
274
|
* Eine Seite Belege der angemeldeten Kasse (`listReceipts`). Die Eingabe wird
|
|
224
275
|
* vor dem Senden nach den Regeln des Servers geprueft (genau eine Form des
|
|
@@ -226,8 +277,9 @@ function kopfdaten(roh) {
|
|
|
226
277
|
* `order`, `view`); ein Verstoss wirft [KasseneckValidationError] mit
|
|
227
278
|
* `scope: 'request'`, ohne dass etwas hinausgeht.
|
|
228
279
|
*
|
|
229
|
-
* Mit `view: 'full'` sind die Belege das gespeicherte Belegdokument
|
|
230
|
-
*
|
|
280
|
+
* Mit `view: 'full'` sind die Belege das gespeicherte Belegdokument mit den
|
|
281
|
+
* Angaben, die `getReceipt` liefert ([ListedFullReceipt]; Kopf je Version in
|
|
282
|
+
* `headers`, ohne Zeilenmodell), sonst [ListReceiptsSummary].
|
|
231
283
|
* Alle Seiten auf einmal: [listAllReceipts].
|
|
232
284
|
*/
|
|
233
285
|
export async function listReceipts(transport, options) {
|
|
@@ -248,14 +300,20 @@ export async function listReceipts(transport, options) {
|
|
|
248
300
|
throw antwortfehler('nextCursor passt nicht zu hasMore (Text bei hasMore, sonst null)');
|
|
249
301
|
}
|
|
250
302
|
const receipts = (voll
|
|
251
|
-
? liste.map((b) =>
|
|
303
|
+
? liste.map((b) => vollerBeleg(b))
|
|
252
304
|
: liste.map((b) => fromListReceiptsSummaryPayload(b)));
|
|
305
|
+
const stufe = daten['logo_scale'];
|
|
253
306
|
return {
|
|
254
307
|
receipts,
|
|
255
308
|
hasMore: daten['hasMore'],
|
|
256
309
|
nextCursor: daten['hasMore'] ? weiter : null,
|
|
257
310
|
...('daySummary' in daten ? { daySummary: tagessumme(daten['daySummary']) } : {}),
|
|
258
311
|
...(voll && 'metadata' in daten ? { metadata: kopfdaten(daten['metadata']) } : {}),
|
|
312
|
+
...(voll && 'headers' in daten ? { headers: koepfe(daten['headers']) } : {}),
|
|
313
|
+
...(voll && 'testCashregister' in daten ? { testCashregister: (daten['testCashregister'] === true) } : {}),
|
|
314
|
+
...(voll && 'logo_scale' in daten
|
|
315
|
+
? { logoScale: (typeof stufe === 'string' && LOGO_STUFEN.includes(stufe) ? stufe : 'M') }
|
|
316
|
+
: {}),
|
|
259
317
|
};
|
|
260
318
|
}
|
|
261
319
|
/**
|
|
@@ -905,7 +905,7 @@ export function cardRefundReference(receipt, paymentId) {
|
|
|
905
905
|
throw new KasseneckValidationError('cancelReceipt', `Zahlung "${paymentId}" ist keine Kartenzahlung`, 'request');
|
|
906
906
|
}
|
|
907
907
|
if (typeof zahlung.providerPaymentId !== 'string' || zahlung.providerPaymentId === '') {
|
|
908
|
-
throw new KasseneckValidationError('cancelReceipt', `Kennung der Kartenzahlung "${paymentId}" fehlt: sie
|
|
908
|
+
throw new KasseneckValidationError('cancelReceipt', `Kennung der Kartenzahlung "${paymentId}" fehlt: der Beleg kam ohne Anbieterdaten (sie bekommt nur der Betrieb selbst, mit API-Schluessel oder Kassen-Anmeldung, nie ein Partner-Zugang)`, 'request');
|
|
909
909
|
}
|
|
910
910
|
return zahlung.providerPaymentId;
|
|
911
911
|
}
|
|
@@ -931,7 +931,7 @@ function pruefeKartenRueckbuchung(zahlungen, original) {
|
|
|
931
931
|
const orig = original != null && typeof z['refundOf'] === 'string' ? original.payments?.find((o) => o.id === z['refundOf']) : undefined;
|
|
932
932
|
if (typeof orig?.providerPaymentId === 'string' && orig.providerPaymentId !== '')
|
|
933
933
|
return;
|
|
934
|
-
throw new KasseneckValidationError('cancelReceipt', `Zahlung ${i + 1}: Karten-Rueckbuchung ohne Bezug: providerPaymentId der Erstattung am Terminal angeben (oder das Original
|
|
934
|
+
throw new KasseneckValidationError('cancelReceipt', `Zahlung ${i + 1}: Karten-Rueckbuchung ohne Bezug: providerPaymentId der Erstattung am Terminal angeben (oder das Original mit Anbieterdaten lesen: API-Schluessel des Betriebs oder Kassen-Anmeldung, dort traegt es die Kennung der Kartenzahlung)`, 'request');
|
|
935
935
|
});
|
|
936
936
|
}
|
|
937
937
|
/** Kartenanbieter pruefen — er stammt vom Aufrufer, nicht aus Serverdaten. */
|
|
@@ -217,3 +217,38 @@ export type KasseneckPdfOrDataTransport = (functionName: string, params?: Record
|
|
|
217
217
|
* ist unlesbar mit denselben Gruenden wie dort.
|
|
218
218
|
*/
|
|
219
219
|
export declare function createPdfOrDataTransport(options: TransportOptions): KasseneckPdfOrDataTransport;
|
|
220
|
+
/**
|
|
221
|
+
* Ergebnis eines Aufrufs, der eine beliebige Datei **oder** eine Nutzlast
|
|
222
|
+
* liefert: die Datei mit Namen und Inhaltstyp aus den Kopfzeilen der Antwort
|
|
223
|
+
* (`Content-Disposition: attachment`), oder die `data` einer Erfolgshuelle
|
|
224
|
+
* (etwa ein Lese-Link, wenn die Datei zu gross fuer die Antwort ist).
|
|
225
|
+
*/
|
|
226
|
+
export type FileOrData = {
|
|
227
|
+
file: {
|
|
228
|
+
bytes: Uint8Array;
|
|
229
|
+
fileName: string | null;
|
|
230
|
+
contentType: string | undefined;
|
|
231
|
+
};
|
|
232
|
+
} | {
|
|
233
|
+
data: unknown;
|
|
234
|
+
};
|
|
235
|
+
/** Optionen je Aufruf des Datei-oder-Daten-Wegs ([createFileOrDataTransport]). */
|
|
236
|
+
export interface FileOrDataCallOptions {
|
|
237
|
+
/**
|
|
238
|
+
* Zeitlimit dieses Aufrufs in Millisekunden (Anmeldung, Anfrage und Lesen
|
|
239
|
+
* des Rumpfs); ohne Angabe `TransportOptions.timeoutMs` (Vorgabe 30 s). Eine
|
|
240
|
+
* Datei kommt im Rumpf und braucht dafuer laenger als eine Huelle.
|
|
241
|
+
*/
|
|
242
|
+
timeoutMs?: number;
|
|
243
|
+
}
|
|
244
|
+
/** Ruft eine Backend-Funktion auf, die irgendeine Datei **oder** eine JSON-Nutzlast liefert. */
|
|
245
|
+
export type KasseneckFileOrDataTransport = (functionName: string, params?: Record<string, unknown>, options?: FileOrDataCallOptions) => Promise<FileOrData>;
|
|
246
|
+
/**
|
|
247
|
+
* Vierter Einstiegspunkt, fuer Aufrufe, deren Datei kein PDF ist (DEP-JSON,
|
|
248
|
+
* CSV, ZIP: `getDepExportFile`). Die Antwort wird nur als Bytes gelesen.
|
|
249
|
+
* Entschieden wird an der Kopfzeile `Content-Disposition: attachment` — eine
|
|
250
|
+
* Datei ist hier selbst JSON und liesse sich am Inhalt nicht von der
|
|
251
|
+
* Erfolgshuelle trennen. Ohne diese Kopfzeile gilt der Rumpf als Huelle
|
|
252
|
+
* (Erfolg: `{ data }`, Fehler: derselbe fachliche Fehler wie auf dem JSON-Weg).
|
|
253
|
+
*/
|
|
254
|
+
export declare function createFileOrDataTransport(options: TransportOptions): KasseneckFileOrDataTransport;
|
|
@@ -104,6 +104,37 @@ export function createPdfOrDataTransport(options) {
|
|
|
104
104
|
const kern = createCore(options);
|
|
105
105
|
return (functionName, params) => kern(functionName, params, undefined, undefined, undefined, alsBytes, pdfOderDatenAuswerten);
|
|
106
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Vierter Einstiegspunkt, fuer Aufrufe, deren Datei kein PDF ist (DEP-JSON,
|
|
109
|
+
* CSV, ZIP: `getDepExportFile`). Die Antwort wird nur als Bytes gelesen.
|
|
110
|
+
* Entschieden wird an der Kopfzeile `Content-Disposition: attachment` — eine
|
|
111
|
+
* Datei ist hier selbst JSON und liesse sich am Inhalt nicht von der
|
|
112
|
+
* Erfolgshuelle trennen. Ohne diese Kopfzeile gilt der Rumpf als Huelle
|
|
113
|
+
* (Erfolg: `{ data }`, Fehler: derselbe fachliche Fehler wie auf dem JSON-Weg).
|
|
114
|
+
*/
|
|
115
|
+
export function createFileOrDataTransport(options) {
|
|
116
|
+
const kern = createCore(options);
|
|
117
|
+
return (functionName, params, aufruf) => kern(functionName, params, undefined, undefined, undefined, alsRohAntwort, dateiOderDatenAuswerten, aufruf?.timeoutMs);
|
|
118
|
+
}
|
|
119
|
+
const alsRohAntwort = async (antwort, functionName) => ({
|
|
120
|
+
bytes: await alsBytes(antwort, functionName),
|
|
121
|
+
disposition: antwort.headers.get('content-disposition'),
|
|
122
|
+
});
|
|
123
|
+
/** Dateiname aus `Content-Disposition`; nur der letzte Pfadteil, ohne Steuerzeichen. `null`, wenn keiner da ist. */
|
|
124
|
+
function dateinameAusKopf(disposition) {
|
|
125
|
+
const treffer = /filename\s*=\s*"([^"]*)"|filename\s*=\s*([^;\s]+)/i.exec(disposition);
|
|
126
|
+
const roh = treffer ? (treffer[1] ?? treffer[2] ?? '') : '';
|
|
127
|
+
// eslint-disable-next-line no-control-regex
|
|
128
|
+
const name = (roh.split(/[\\/]/).pop() ?? '').replace(/[\u0000-\u001f\u007f]/g, '').trim();
|
|
129
|
+
return name === '' || name === '.' || name === '..' ? null : name;
|
|
130
|
+
}
|
|
131
|
+
function dateiOderDatenAuswerten(roh, functionName, statusCode, inhaltstyp, geheimnisse, unlesbar) {
|
|
132
|
+
if (roh.disposition !== null && /^\s*attachment\b/i.test(roh.disposition)) {
|
|
133
|
+
return { file: { bytes: roh.bytes, fileName: dateinameAusKopf(roh.disposition), contentType: inhaltstyp } };
|
|
134
|
+
}
|
|
135
|
+
const text = new TextDecoder('utf-8').decode(roh.bytes);
|
|
136
|
+
return { data: jsonAuswerten(text, functionName, statusCode, inhaltstyp, geheimnisse, unlesbar) };
|
|
137
|
+
}
|
|
107
138
|
/**
|
|
108
139
|
* Gemeinsamer Kern aller Einstiegspunkte: Anmeldung, Zeitlimit, Anfrage und
|
|
109
140
|
* HTTP-Status. Was danach mit dem Rumpf geschieht, entscheiden `lesen` und
|
|
@@ -113,7 +144,7 @@ function createCore(options) {
|
|
|
113
144
|
const oeffentlicheBasis = v3Basis('baseUrl', options.baseUrl) ?? DEFAULT_BASE_URL;
|
|
114
145
|
const kassenBasis = v3Basis('posBaseUrl', options.posBaseUrl) ?? POS_BASE_URL;
|
|
115
146
|
const kassenweg = isRegisterUserAuth(options.auth);
|
|
116
|
-
const
|
|
147
|
+
const standardZeitlimitMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
117
148
|
const holen = options.fetch ?? globalesFetch();
|
|
118
149
|
const kennung = options.clientHeader ?? `kasseneck-api/${PACKAGE_VERSION}`;
|
|
119
150
|
pruefeKennung(kennung);
|
|
@@ -126,7 +157,10 @@ function createCore(options) {
|
|
|
126
157
|
* (Berichte, Zahlungen, FinanzOnline), geht an die oeffentliche Basis.
|
|
127
158
|
*/
|
|
128
159
|
const basisFuer = (functionName) => isPosOnlyCall(functionName) || (kassenweg && isPosCall(functionName)) ? kassenBasis : oeffentlicheBasis;
|
|
129
|
-
return async function aufrufen(functionName, params = {}, extraBodyFields, secretParams, callOptions, lesen, auswerten
|
|
160
|
+
return async function aufrufen(functionName, params = {}, extraBodyFields, secretParams, callOptions, lesen, auswerten,
|
|
161
|
+
// Zeitlimit nur dieses Aufrufs (Datei-oder-Daten-Weg); sonst das des Transports.
|
|
162
|
+
eigenesZeitlimitMs) {
|
|
163
|
+
const zeitlimitMs = eigenesZeitlimitMs ?? standardZeitlimitMs;
|
|
130
164
|
// Die URL nennt die Backend-Funktion, die Fehler nennen den **Vorgang**:
|
|
131
165
|
// `financeWebService` fuehrt ein Dutzend verschiedener Vorgaenge unter einem
|
|
132
166
|
// Endpunkt, und ein Fehler, der nur "financeWebService" sagt, verschweigt
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { ReceiptType, type ReceiptTypeKey, VatRate, type VatRateKey, KeckPaymentMethod, type KeckPaymentMethodKey, CreditCardProvider, type CreditCardProviderKey, VoucherType, type VoucherTypeKey, VoucherAction, type VoucherActionKey, StripeLinkMode, type StripeLinkModeKey, } from './enums/index.js';
|
|
2
2
|
export { type ReceiptItem, type ReceiptItemPayload, type ReceiptItemPayloadRead, toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, receiptItemIsValid, negateReceiptItem, type TipRecipient, isTipItem, isVoucherItem, isVoucherFloatItem, type Voucher, type VoucherArticle, type IssuedVoucher, type VoucherPayload, toVoucherPayload, fromVoucherPayload, voucherIsValid, type Receipt, type RegistrationInfo, type ReceiptPayload, type ReceiptPayloadRead, toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, receiptValueVoucherSign, type CancellationOf, type CancellationItem, type Cancellation, type CancellationReason, type CancellationErrorCode, type CancellationStatus, type ReturnDisposition, RETURN_DISPOSITIONS, CANCELLATION_REASONS, CANCELLATION_STATUSES, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isReturnDisposition, isCancellationErrorCode, cancellationErrorCode, isCancellationError, cancellationFieldErrors, type CancellationFieldError, type ReceiptPayment, type ReceiptPaymentPayload, type ReceiptPaymentInput, fromReceiptPaymentPayload, toReceiptPaymentPayload, type PaymentErrorCode, PAYMENT_ERROR_CODES, isPaymentErrorCode, paymentErrorCode, isPaymentError, paymentFieldErrors, type PaymentFieldError, type ReceiptEmailErrorCode, type ReceiptEmailVia, RECEIPT_EMAIL_ERROR_CODES, RECEIPT_EMAIL_SEND_ERROR_CODES, type ReceiptEmailSendErrorCode, RECEIPT_EMAIL_VIAS, isReceiptEmailErrorCode, receiptEmailErrorCode, isReceiptEmailError, receiptEmailFieldErrors, type ReceiptEmailFieldError, RECEIPT_OUTPUT_KINDS, type ReceiptOutputKind, RECEIPT_OUTPUT_LOG_KINDS, type ReceiptOutputLogKind, RECEIPT_OUTPUT_RESULTS, type ReceiptOutputResult, RECEIPT_OUTPUT_ENTRIES_MAX, type ReceiptOutput, type ReceiptOutputActor, RECEIPT_OUTPUT_ENTRY_ERROR_CODES, type ReceiptOutputEntryErrorCode, RECEIPT_OUTPUT_ERROR_CODES, type ReceiptOutputErrorCode, isReceiptOutputErrorCode, receiptOutputErrorCode, isReceiptOutputError, receiptOutputFieldErrors, type ReceiptOutputFieldError, type ReceiptErrorCode, type ReceiptFieldError, RECEIPT_ERROR_CODES, isReceiptErrorCode, receiptErrorCode, isReceiptError, receiptFieldErrors, remainingQuantities, TIP_REFUND_SOURCES, type TipRefundSource, isTipRefundSource, openStaffTipCents, cancellationItemsForTip, cancellationCashRefundCents, asksTipRefundSource, asksRefundTip, type ReceiptCompany, type ReceiptCompanyPayload, fromReceiptCompanyPayload, receiptCompanyTaxInfo, type Cashregister, type CashregisterOnboarding, type CashregisterPayload, type CashregisterOnboardingPayload, type CashregisterAutoLogout, type CashregisterAutoLogoutPayload, fromCashregisterPayload, type ReceiptSummary, type ReceiptSummaryPayload, fromReceiptSummaryPayload, type ZeroKind, ZERO_KINDS, isZeroKind, type ReportMonth, reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, type StripeUrlSession, type StripeUrlSessionPayload, toStripeUrlSessionPayload, fromStripeUrlSessionPayload, type HobexReceipt, type HobexReceiptPayload, toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './models/index.js';
|
|
3
|
-
export { type AuthCredentials, type KasseneckAuth, type ApiKeyAuthOptions, type RegisterUserAuthOptions, apiKeyAuth, registerUserAuth, DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type TransportCallOptions, type KasseneckTransport, type KasseneckBinaryTransport, type KasseneckPdfOrDataTransport, type PdfOrData, ALL_CALLS, type ApiCall, PUBLIC_CALLS, POS_CALLS, UNKNOWN_OUTCOME_CALLS, type PublicCall, type PosCall, createTransport, createBinaryTransport, createPdfOrDataTransport, KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, type ErrorOutcome, CLIENT_ERROR_CODES, type ClientErrorCode, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type CancelReceiptResult, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, listMyCashregisters, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, type ReceiptOutputEntry, type LogReceiptOutputsOptions, type LogReceiptOutputsResult, type RejectedReceiptOutput, logReceiptOutputs, downloadDailyReport, downloadMonthlyReport, getCashregisterReport, type CashregisterReportPeriod, getReportV2, type ReportV2, type ReportV2Metadata, type ReportV2Options, listReceipts, listAllReceipts, fromListReceiptsSummaryPayload, LIST_RECEIPTS_VIEWS, LIST_RECEIPTS_ORDERS, LIST_RECEIPTS_LIMIT_MAX, LIST_RECEIPTS_DAYS_MAX, LIST_ALL_RECEIPTS_MAX_PAGES, LIST_RECEIPTS_ERROR_CODES, type ListReceiptsErrorCode, type ListReceiptsView, type ListReceiptsOrder, type ListReceiptsOptions, type ListReceiptsWindow, type ListReceiptsGrossByRate, type ListReceiptsSummary, type ListReceiptsDaySummary, type ListReceiptsPage, type ListedReceipt, type CashboxStatus, type SignatureStatus, getCashboxStatus, getSignatureStatus, type KasseneckApi, createKasseneckApi, } from './client/index.js';
|
|
3
|
+
export { type AuthCredentials, type KasseneckAuth, type ApiKeyAuthOptions, type RegisterUserAuthOptions, apiKeyAuth, registerUserAuth, DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type TransportCallOptions, type KasseneckTransport, type KasseneckBinaryTransport, type KasseneckPdfOrDataTransport, type PdfOrData, ALL_CALLS, type ApiCall, PUBLIC_CALLS, POS_CALLS, UNKNOWN_OUTCOME_CALLS, type PublicCall, type PosCall, createTransport, createBinaryTransport, createPdfOrDataTransport, createFileOrDataTransport, type FileOrData, type FileOrDataCallOptions, type KasseneckFileOrDataTransport, KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, type ErrorOutcome, CLIENT_ERROR_CODES, type ClientErrorCode, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type CancelReceiptResult, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, listMyCashregisters, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, type ReceiptOutputEntry, type LogReceiptOutputsOptions, type LogReceiptOutputsResult, type RejectedReceiptOutput, logReceiptOutputs, downloadDailyReport, downloadMonthlyReport, getCashregisterReport, type CashregisterReportPeriod, getReportV2, type ReportV2, type ReportV2Metadata, type ReportV2Options, listReceipts, listAllReceipts, fromListReceiptsSummaryPayload, listedReceiptWithCompany, LIST_RECEIPTS_VIEWS, LIST_RECEIPTS_ORDERS, LIST_RECEIPTS_LIMIT_MAX, LIST_RECEIPTS_DAYS_MAX, LIST_ALL_RECEIPTS_MAX_PAGES, LIST_RECEIPTS_ERROR_CODES, type ListReceiptsErrorCode, type ListReceiptsView, type ListReceiptsOrder, type ListReceiptsOptions, type ListReceiptsWindow, type ListReceiptsGrossByRate, type ListReceiptsSummary, type ListReceiptsDaySummary, type ListReceiptsPage, type ListedReceipt, createDepExport, getDepExport, waitForDepExport, getDepExportFile, createDepHandoverLink, revokeDepHandoverLink, DepExportTimeoutError, DepExportChecksumError, DEP_EXPORT_STATUSES, DEP_EXPORT_FILES, DEP_EXPORT_ERROR_CODES, DEP_EXPORT_FAILURES, DEP_EXPORT_POLL_START_MS, DEP_EXPORT_POLL_FACTOR, DEP_EXPORT_POLL_MAX_MS, DEP_EXPORT_WAIT_TIMEOUT_MS, DEP_EXPORT_DOWNLOAD_TIMEOUT_MS, type DepExportStatus, type DepExportFileKind, type DepExportErrorCode, type DepExportFailure, type CreateDepExportOptions, type CreateDepExportResult, type DepExportGap, type DepExportChainBreak, type DepExportFindings, type DepExportItems, type DepHandoverLinkInfo, type DepExport, type WaitForDepExportOptions, type GetDepExportFileOptions, type DepExportFile, type DepHandoverLink, type RevokedDepHandoverLink, type ListedFullReceipt, type ListReceiptsHeader, type CashboxStatus, type SignatureStatus, getCashboxStatus, getSignatureStatus, type KasseneckApi, createKasseneckApi, } from './client/index.js';
|
|
4
4
|
export { type ReceiptDueTip, type ReceiptDueTipRecipient, type ReceiptDueOptions, type ReceiptDueBuckets, type ReceiptDueBreakdown, type ReceiptDueErrorReason, receiptDueCents, receiptDueBreakdown, ReceiptDueError, RECEIPT_DUE_ERROR_REASONS, isReceiptDueError, type VoucherDueInfo, type VoucherDueArticle, type VoucherDueType, type VoucherRedeemContext, voucherRedeemMaxCents, VOUCHER_ZERO_RATE_BUCKET_FROM, } from './receipt/due.js';
|
|
5
5
|
export { parseServerTimeStamp, toViennaWallClock, type ViennaWallClock } from './vienna-time.js';
|
|
6
6
|
export { type PosBusinessSettings, type PosDeviceSettings, type PosSettings, type ArticleGroup, type PosArticle, POS_BUSINESS_DEFAULTS, POS_DEVICE_DEFAULTS, mergePosSettings, fromArticleGroupPayload, fromPosArticlePayload, listMyArticleGroups, listMyArticles, getPosSettings, setMyPosSettings, setMyRegisterDeviceSettings, distributeDiscount, cancelScopeOf, receiptsScopeOf, stockViewOf, voucherPermsOf, } from './pos/index.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { ReceiptType, VatRate, KeckPaymentMethod, CreditCardProvider, VoucherType, VoucherAction, StripeLinkMode, } from './enums/index.js';
|
|
2
2
|
export { toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, receiptItemIsValid, negateReceiptItem, isTipItem, isVoucherItem, isVoucherFloatItem, toVoucherPayload, fromVoucherPayload, voucherIsValid, toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, receiptValueVoucherSign, RETURN_DISPOSITIONS, CANCELLATION_REASONS, CANCELLATION_STATUSES, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isReturnDisposition, isCancellationErrorCode, cancellationErrorCode, isCancellationError, cancellationFieldErrors, fromReceiptPaymentPayload, toReceiptPaymentPayload, PAYMENT_ERROR_CODES, isPaymentErrorCode, paymentErrorCode, isPaymentError, paymentFieldErrors, RECEIPT_EMAIL_ERROR_CODES, RECEIPT_EMAIL_SEND_ERROR_CODES, RECEIPT_EMAIL_VIAS, isReceiptEmailErrorCode, receiptEmailErrorCode, isReceiptEmailError, receiptEmailFieldErrors, RECEIPT_OUTPUT_KINDS, RECEIPT_OUTPUT_LOG_KINDS, RECEIPT_OUTPUT_RESULTS, RECEIPT_OUTPUT_ENTRIES_MAX, RECEIPT_OUTPUT_ENTRY_ERROR_CODES, RECEIPT_OUTPUT_ERROR_CODES, isReceiptOutputErrorCode, receiptOutputErrorCode, isReceiptOutputError, receiptOutputFieldErrors, RECEIPT_ERROR_CODES, isReceiptErrorCode, receiptErrorCode, isReceiptError, receiptFieldErrors, remainingQuantities, TIP_REFUND_SOURCES, isTipRefundSource, openStaffTipCents, cancellationItemsForTip, cancellationCashRefundCents, asksTipRefundSource, asksRefundTip, fromReceiptCompanyPayload, receiptCompanyTaxInfo, fromCashregisterPayload, fromReceiptSummaryPayload, ZERO_KINDS, isZeroKind, reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, toStripeUrlSessionPayload, fromStripeUrlSessionPayload, toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './models/index.js';
|
|
3
|
-
export { apiKeyAuth, registerUserAuth, DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, ALL_CALLS, PUBLIC_CALLS, POS_CALLS, UNKNOWN_OUTCOME_CALLS, createTransport, createBinaryTransport, createPdfOrDataTransport, KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, CLIENT_ERROR_CODES, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, listMyCashregisters, checkVoucherCombinationError, sendReceiptEmail, logReceiptOutputs, downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2, listReceipts, listAllReceipts, fromListReceiptsSummaryPayload, LIST_RECEIPTS_VIEWS, LIST_RECEIPTS_ORDERS, LIST_RECEIPTS_LIMIT_MAX, LIST_RECEIPTS_DAYS_MAX, LIST_ALL_RECEIPTS_MAX_PAGES, LIST_RECEIPTS_ERROR_CODES, getCashboxStatus, getSignatureStatus, createKasseneckApi, } from './client/index.js';
|
|
3
|
+
export { apiKeyAuth, registerUserAuth, DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, ALL_CALLS, PUBLIC_CALLS, POS_CALLS, UNKNOWN_OUTCOME_CALLS, createTransport, createBinaryTransport, createPdfOrDataTransport, createFileOrDataTransport, KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, CLIENT_ERROR_CODES, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, listMyCashregisters, checkVoucherCombinationError, sendReceiptEmail, logReceiptOutputs, downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2, listReceipts, listAllReceipts, fromListReceiptsSummaryPayload, listedReceiptWithCompany, LIST_RECEIPTS_VIEWS, LIST_RECEIPTS_ORDERS, LIST_RECEIPTS_LIMIT_MAX, LIST_RECEIPTS_DAYS_MAX, LIST_ALL_RECEIPTS_MAX_PAGES, LIST_RECEIPTS_ERROR_CODES, createDepExport, getDepExport, waitForDepExport, getDepExportFile, createDepHandoverLink, revokeDepHandoverLink, DepExportTimeoutError, DepExportChecksumError, DEP_EXPORT_STATUSES, DEP_EXPORT_FILES, DEP_EXPORT_ERROR_CODES, DEP_EXPORT_FAILURES, DEP_EXPORT_POLL_START_MS, DEP_EXPORT_POLL_FACTOR, DEP_EXPORT_POLL_MAX_MS, DEP_EXPORT_WAIT_TIMEOUT_MS, DEP_EXPORT_DOWNLOAD_TIMEOUT_MS, getCashboxStatus, getSignatureStatus, createKasseneckApi, } from './client/index.js';
|
|
4
4
|
export { receiptDueCents, receiptDueBreakdown, ReceiptDueError, RECEIPT_DUE_ERROR_REASONS, isReceiptDueError, voucherRedeemMaxCents, VOUCHER_ZERO_RATE_BUCKET_FROM, } from './receipt/due.js';
|
|
5
5
|
export { parseServerTimeStamp, toViennaWallClock } from './vienna-time.js';
|
|
6
6
|
export { POS_BUSINESS_DEFAULTS, POS_DEVICE_DEFAULTS, mergePosSettings, fromArticleGroupPayload, fromPosArticlePayload, listMyArticleGroups, listMyArticles, getPosSettings, setMyPosSettings, setMyRegisterDeviceSettings, distributeDiscount, cancelScopeOf, receiptsScopeOf, stockViewOf, voucherPermsOf, } from './pos/index.js';
|
|
@@ -25,9 +25,11 @@ import { type ReceiptPayment, type ReceiptPaymentPayload } from './receipt-payme
|
|
|
25
25
|
* **Zahlungen stehen in `payments`.** `paymentMethod` vergibt der Server
|
|
26
26
|
* (`mixed` bei mehreren Zahlarten); gesendet wird es unter `/v3` nie. Die
|
|
27
27
|
* Anbieterdaten (`payments[].providerPaymentId`/`providerData`, bei
|
|
28
|
-
* Altbelegen `cardPaymentId`/`cardPaymentData`)
|
|
29
|
-
* (
|
|
30
|
-
*
|
|
28
|
+
* Altbelegen `cardPaymentId`/`cardPaymentData`) bekommt nur der Betrieb
|
|
29
|
+
* selbst (API-Schluessel oder Kassen-Anmeldung, in beiden Kanaelen); ein
|
|
30
|
+
* Partner-Zugang nie. Darum sind sie hier optional. `providerData` ist die
|
|
31
|
+
* Rohform des Zahlungsanbieters ohne zugesagte Form; fuer Logik `provider`,
|
|
32
|
+
* `providerPaymentId` und `id` nehmen.
|
|
31
33
|
*/
|
|
32
34
|
export interface Receipt {
|
|
33
35
|
receiptId: string;
|
|
@@ -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 = "b06a8be2fe8c96e7e266a4e237c77588e9bef4e3272a9343ed2969ba722a87f4";
|
|
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 {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Erzeugt von scripts/stored-vokabular.mjs aus fixtures/v3/v3-vokabular.json.
|
|
2
2
|
// Nicht von Hand aendern: test/stored.test.ts vergleicht mit dem Vertrag.
|
|
3
3
|
/** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
|
|
4
|
-
export const VOKABULAR_QUELLE = "
|
|
4
|
+
export const VOKABULAR_QUELLE = "b06a8be2fe8c96e7e266a4e237c77588e9bef4e3272a9343ed2969ba722a87f4";
|
|
5
5
|
/** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
|
|
6
6
|
export const SCHEMAS = {
|
|
7
7
|
"getReceipt": {
|
package/dist/esm/version.d.ts
CHANGED
package/dist/esm/version.js
CHANGED
package/fixtures/pos-texts.json
CHANGED
package/fixtures/surface.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.20.0",
|
|
3
3
|
"baseUrls": {
|
|
4
4
|
"public": "https://api.kasseneck.at/v3",
|
|
5
5
|
"pos": "https://kasse.kasseneck.at/api/v3"
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
"createCreditNote",
|
|
13
13
|
"createCustomer",
|
|
14
14
|
"createCustomerCashregister",
|
|
15
|
+
"createDepExport",
|
|
16
|
+
"createDepHandoverLink",
|
|
15
17
|
"createPartnerCustomer",
|
|
16
18
|
"checkPartnerCustomerEmail",
|
|
17
19
|
"createPartnerWebhook",
|
|
@@ -26,6 +28,8 @@
|
|
|
26
28
|
"getCustomer",
|
|
27
29
|
"getCustomerCredentials",
|
|
28
30
|
"getCustomerSignatureStatus",
|
|
31
|
+
"getDepExport",
|
|
32
|
+
"getDepExportFile",
|
|
29
33
|
"getFirstReceiptDate",
|
|
30
34
|
"getInvoice",
|
|
31
35
|
"getInvoicePdf",
|
|
@@ -49,6 +53,7 @@
|
|
|
49
53
|
"recordInvoicePayment",
|
|
50
54
|
"reportCustomerContract",
|
|
51
55
|
"requestCustomerSignature",
|
|
56
|
+
"revokeDepHandoverLink",
|
|
52
57
|
"searchCustomers",
|
|
53
58
|
"sendPartnerCustomerFonLink",
|
|
54
59
|
"sendPartnerWebhookTest",
|
|
@@ -258,7 +263,12 @@
|
|
|
258
263
|
"getStocktakePdf",
|
|
259
264
|
"orderSignatureCard",
|
|
260
265
|
"getSignatureCardOrder",
|
|
261
|
-
"listReceipts"
|
|
266
|
+
"listReceipts",
|
|
267
|
+
"createDepExport",
|
|
268
|
+
"getDepExport",
|
|
269
|
+
"getDepExportFile",
|
|
270
|
+
"createDepHandoverLink",
|
|
271
|
+
"revokeDepHandoverLink"
|
|
262
272
|
],
|
|
263
273
|
"pos": [
|
|
264
274
|
"pairRegisterDevice",
|