@kreiseck/kasseneck-api 1.19.0 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +70 -1
  3. package/dist/cjs/client/api.d.ts +19 -0
  4. package/dist/cjs/client/api.js +18 -0
  5. package/dist/cjs/client/aufrufe.d.ts +9 -6
  6. package/dist/cjs/client/aufrufe.js +29 -2
  7. package/dist/cjs/client/dep-export.d.ts +242 -0
  8. package/dist/cjs/client/dep-export.js +337 -0
  9. package/dist/cjs/client/index.d.ts +2 -1
  10. package/dist/cjs/client/index.js +21 -2
  11. package/dist/cjs/client/transport.d.ts +39 -4
  12. package/dist/cjs/client/transport.js +40 -5
  13. package/dist/cjs/index.d.ts +1 -1
  14. package/dist/cjs/index.js +20 -2
  15. package/dist/cjs/pos/dep.d.ts +10 -0
  16. package/dist/cjs/pos/dep.js +27 -0
  17. package/dist/cjs/pos/index.d.ts +1 -0
  18. package/dist/cjs/pos/index.js +5 -2
  19. package/dist/cjs/pos/texte.d.ts +109 -0
  20. package/dist/cjs/pos/texte.js +42 -0
  21. package/dist/cjs/stored/vokabular.d.ts +1 -1
  22. package/dist/cjs/stored/vokabular.js +1 -1
  23. package/dist/cjs/version.d.ts +1 -1
  24. package/dist/cjs/version.js +1 -1
  25. package/dist/esm/client/api.d.ts +19 -0
  26. package/dist/esm/client/api.js +19 -1
  27. package/dist/esm/client/aufrufe.d.ts +9 -6
  28. package/dist/esm/client/aufrufe.js +29 -2
  29. package/dist/esm/client/dep-export.d.ts +242 -0
  30. package/dist/esm/client/dep-export.js +326 -0
  31. package/dist/esm/client/index.d.ts +2 -1
  32. package/dist/esm/client/index.js +2 -1
  33. package/dist/esm/client/transport.d.ts +39 -4
  34. package/dist/esm/client/transport.js +39 -5
  35. package/dist/esm/index.d.ts +1 -1
  36. package/dist/esm/index.js +1 -1
  37. package/dist/esm/pos/dep.d.ts +10 -0
  38. package/dist/esm/pos/dep.js +24 -0
  39. package/dist/esm/pos/index.d.ts +1 -0
  40. package/dist/esm/pos/index.js +2 -0
  41. package/dist/esm/pos/texte.d.ts +109 -0
  42. package/dist/esm/pos/texte.js +42 -0
  43. package/dist/esm/stored/vokabular.d.ts +1 -1
  44. package/dist/esm/stored/vokabular.js +1 -1
  45. package/dist/esm/version.d.ts +1 -1
  46. package/dist/esm/version.js +1 -1
  47. package/fixtures/dep-folder-cases.json +14 -0
  48. package/fixtures/hobex-hps-codes.json +1 -1
  49. package/fixtures/invoice-api.schema.json +1 -1
  50. package/fixtures/invoice-texts.json +1 -1
  51. package/fixtures/pos-message-cases.json +9 -0
  52. package/fixtures/pos-texts.json +127 -1
  53. package/fixtures/surface.json +23 -3
  54. package/fixtures/v3/antworten/belege.json +1 -1
  55. package/fixtures/v3/antworten/belegmail.json +1 -1
  56. package/fixtures/v3/antworten/berichte.json +1 -1
  57. package/fixtures/v3/antworten/kasse-belege.json +1 -1
  58. package/fixtures/v3/antworten/kasse.json +802 -3
  59. package/fixtures/v3/antworten/lager.json +1 -1
  60. package/fixtures/v3/antworten/rechnungen.json +1 -1
  61. package/fixtures/v3/antworten/storno.json +1 -1
  62. package/fixtures/v3/stored/belege.json +1 -1
  63. package/fixtures/v3/stored/kasse.json +153 -6
  64. package/fixtures/v3/stored/rechnungen.json +1 -1
  65. package/fixtures/v3/v3-vokabular.json +219 -9
  66. package/fixtures/v3/zahlbetrag-faelle.json +1 -1
  67. package/package.json +1 -1
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Prüfung (DEP) bei der Kassennachschau an der Kasse (Spec dep-nachschau, Stufe 2): der Ordner, in den Web-Kasse
3
+ * und Kassen-App DEP, Übergabeprotokoll und Positionen auf den USB-Stick legen. Beide Kassen benennen ihn gleich;
4
+ * die Prüffälle stehen in `fixtures/dep-folder-cases.json` (auch im Dart-Zwilling).
5
+ */
6
+ /**
7
+ * `DEP_<Kassen-ID>_<von>_<bis>` (Tage JJJJ-MM-TT, wie der Export sie nennt). Ohne Anfang `DEP_<id>_bis_<bis>`, ohne
8
+ * Ende `DEP_<id>_ab_<von>`, ohne beides `DEP_<id>_alles`. Was ein Stick nicht als Namen nimmt, wird zu `_`.
9
+ */
10
+ export declare function depFolderName(cashregisterId: string, from?: string | null, to?: string | null): string;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /**
3
+ * Prüfung (DEP) bei der Kassennachschau an der Kasse (Spec dep-nachschau, Stufe 2): der Ordner, in den Web-Kasse
4
+ * und Kassen-App DEP, Übergabeprotokoll und Positionen auf den USB-Stick legen. Beide Kassen benennen ihn gleich;
5
+ * die Prüffälle stehen in `fixtures/dep-folder-cases.json` (auch im Dart-Zwilling).
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.depFolderName = depFolderName;
9
+ /** Zeichen, die FAT32 und exFAT in Namen nicht erlauben, Steuerzeichen und Leerraum. */
10
+ const UNERLAUBT = /[\\/:*?"<>|\u0000-\u001f\u007f\s]/g;
11
+ const teil = (s) => s.trim().replace(UNERLAUBT, '_');
12
+ /**
13
+ * `DEP_<Kassen-ID>_<von>_<bis>` (Tage JJJJ-MM-TT, wie der Export sie nennt). Ohne Anfang `DEP_<id>_bis_<bis>`, ohne
14
+ * Ende `DEP_<id>_ab_<von>`, ohne beides `DEP_<id>_alles`. Was ein Stick nicht als Namen nimmt, wird zu `_`.
15
+ */
16
+ function depFolderName(cashregisterId, from, to) {
17
+ const id = teil(String(cashregisterId ?? '')) || 'Kasse';
18
+ const von = typeof from === 'string' && from.trim() ? teil(from) : null;
19
+ const bis = typeof to === 'string' && to.trim() ? teil(to) : null;
20
+ if (von && bis)
21
+ return `DEP_${id}_${von}_${bis}`;
22
+ if (bis)
23
+ return `DEP_${id}_bis_${bis}`;
24
+ if (von)
25
+ return `DEP_${id}_ab_${von}`;
26
+ return `DEP_${id}_alles`;
27
+ }
@@ -14,6 +14,7 @@ export { distributeDiscount } from '../receipt/discount.js';
14
14
  export { cancelScopeOf, receiptsScopeOf, stockViewOf, voucherPermsOf, type VoucherPerms, type RegisterScope, type RegisterUserPerms } from '../register/pairing.js';
15
15
  export { type NetworkPrinter, type PrintJob, type PrintJobStatus, PRINT_JOB_STATUSES, type PrintJobSource, PRINT_JOB_SOURCES, isPrintJobFinished, type CreatePrintJobOptions, listMyPrinters, createPrintJob, getPrintJob, } from './drucker.js';
16
16
  export { listMyTipRecipients } from './trinkgeld.js';
17
+ export { depFolderName } from './dep.js';
17
18
  export { STOCK_LOCATION_TYPES, type StockLocationType, type StockLocation, type StockLocationAddress, type StockLevel, type StockValue, type StockList, type ListMyStockOptions, type SetMyCashregisterStockLocationOptions, type CashregisterStockLocation, listMyStockLocations, listMyStock, setMyCashregisterStockLocation, } from './lager.js';
18
19
  export { type ListMyStocktakesOptions, type ListMyStocktakeItemsOptions, type ListMyStocktakeCountsOptions, type RecordMyStocktakeCountOptions, type VoidMyStocktakeCountOptions, listMyStocktakes, listMyStocktakeItems, listMyStocktakeCounts, recordMyStocktakeCount, voidMyStocktakeCount, parseQuantityMilli, } from './inventur.js';
19
20
  export type { Stocktake, StocktakeItem, StocktakeCount, StocktakeCountResult, StocktakeItemPage, StocktakeCountPage, StocktakeActor, StocktakeProgress, StocktakeReview, StocktakeRecount, StocktakeScope, } from '../inventory/typen.js';
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.quantityRuleForUnit = exports.QUANTITY_RULES = exports.listMyArticles = exports.listMyArticleGroups = exports.fromPosArticlePayload = exports.fromArticleGroupPayload = exports.DONE_SCREEN_SECONDS = exports.WATERMARK_SCALE = exports.LOGO_SCALE = exports.WATERMARK_STRENGTH = exports.WATERMARK_SIDE = exports.DISCOUNT = exports.AUTO_LOGOUT_MINUTES = exports.TILE_STYLE = exports.SETTINGS_FONT_SIZE = exports.LOGO_SIZE = exports.QR_MODE = exports.DRAWER_AUTO_OPEN = exports.CUT = exports.CODE_PAGE = exports.PAPER_SIZE = exports.TERMINAL_TYPE = exports.TERMINAL_VIA = exports.PRINTER_TYPE = exports.TILE_HEIGHT = exports.CATEGORY_POSITION = exports.LAYOUT = exports.RECEIPT_OUTPUT = exports.CARD_PROVIDER = exports.CHECKOUT_MODE = exports.TIP_MODE = exports.QUANTITY = exports.WATERMARK = exports.FONT_SIZE = exports.THEME = exports.posShortcutConflict = exports.POS_SHORTCUT_SHARED_PAIRS = exports.posSettingsChanges = exports.unknownPosSettingValues = exports.sanitizePosSettings = exports.mergePosSettings = exports.POS_DEVICE_VALUES = exports.POS_BUSINESS_VALUES = exports.posTipKeptByDefault = exports.POS_BUSINESS_OPTIONAL_FIELDS = exports.POS_DEVICE_OPTIONAL_FIELDS = exports.POS_DEVICE_DEFAULTS = exports.POS_BUSINESS_DEFAULTS = exports.POS_SHORTCUT_DEFAULTS = exports.POS_SHORTCUT_ACTIONS = void 0;
4
- exports.closeMyShift = exports.getMyShiftReport = exports.logMyDrawerOpenings = exports.recordMyCashMovement = exports.openMyShift = exports.getMyDrawerState = exports.VOUCHER_TYPE_VALIDITY_PATTERNS = exports.VOUCHER_AMOUNT_MODES = exports.VOUCHER_TYPE_KINDS = exports.VOUCHER_PAYOUTS = exports.posVoucherSettingsFromWire = exports.VOUCHER_SETTINGS_DEFAULTS = exports.reprintVoucherLabel = exports.checkVoucher = exports.VOUCHER_STATUSES = exports.VOUCHER_KINDS = exports.parseQuantityMilli = exports.voidMyStocktakeCount = exports.recordMyStocktakeCount = exports.listMyStocktakeCounts = exports.listMyStocktakeItems = exports.listMyStocktakes = exports.setMyCashregisterStockLocation = exports.listMyStock = exports.listMyStockLocations = exports.STOCK_LOCATION_TYPES = exports.listMyTipRecipients = exports.getPrintJob = exports.createPrintJob = exports.listMyPrinters = exports.isPrintJobFinished = exports.PRINT_JOB_SOURCES = exports.PRINT_JOB_STATUSES = exports.voucherPermsOf = exports.stockViewOf = exports.receiptsScopeOf = exports.cancelScopeOf = exports.distributeDiscount = exports.posFieldErrors = exports.isPosError = exports.posErrorCode = exports.isPosErrorCode = exports.POS_ERROR_CODES = exports.posSettingsFromWire = exports.setMyPosLogo = exports.setMyRegisterDeviceSettings = exports.setMyPosSettings = exports.getPosSettings = exports.allowedQuantity = exports.quantityDefaults = void 0;
5
- exports.receiptOutputLabel = exports.RETURN_DISPOSITION_LABELS = exports.labelText = exports.LABELS = exports.voucherErrorMessage = exports.VOUCHER_ERROR_MESSAGES = exports.cancellationPaymentErrorMessage = exports.CANCELLATION_PAYMENT_ERROR_MESSAGES = exports.receiptEmailErrorMessage = exports.RECEIPT_EMAIL_ERROR_MESSAGES = exports.messageAppliesTo = exports.messageText = exports.messageOutcome = exports.findErrorRule = exports.CALLS_WITH_EFFECT = exports.ERROR_OUTCOME_RULES = exports.ERROR_CODE_RULES = exports.ERROR_RULES = exports.MESSAGES = exports.isReturnDisposition = exports.RETURN_DISPOSITIONS = exports.RECEIPT_OUTPUT_RESULTS = exports.RECEIPT_OUTPUT_KINDS = exports.cashMovementLayout = exports.shiftReceiptLayout = exports.AFTER_COUNT_TYPES = exports.SHIFT_RECEIPT_KINDS = exports.MANUAL_OPENING_REASONS = exports.OPENING_REASONS = exports.CASH_LOCATIONS = exports.MANUAL_MOVEMENT_TYPES = exports.MOVEMENT_TYPES = exports.EUR_DENOMINATIONS = exports.durationText = exports.shiftTipLines = exports.newIdempotencyKey = exports.parseCentsAllowZero = exports.sumDenominations = void 0;
4
+ exports.getMyShiftReport = exports.logMyDrawerOpenings = exports.recordMyCashMovement = exports.openMyShift = exports.getMyDrawerState = exports.VOUCHER_TYPE_VALIDITY_PATTERNS = exports.VOUCHER_AMOUNT_MODES = exports.VOUCHER_TYPE_KINDS = exports.VOUCHER_PAYOUTS = exports.posVoucherSettingsFromWire = exports.VOUCHER_SETTINGS_DEFAULTS = exports.reprintVoucherLabel = exports.checkVoucher = exports.VOUCHER_STATUSES = exports.VOUCHER_KINDS = exports.parseQuantityMilli = exports.voidMyStocktakeCount = exports.recordMyStocktakeCount = exports.listMyStocktakeCounts = exports.listMyStocktakeItems = exports.listMyStocktakes = exports.setMyCashregisterStockLocation = exports.listMyStock = exports.listMyStockLocations = exports.STOCK_LOCATION_TYPES = exports.depFolderName = exports.listMyTipRecipients = exports.getPrintJob = exports.createPrintJob = exports.listMyPrinters = exports.isPrintJobFinished = exports.PRINT_JOB_SOURCES = exports.PRINT_JOB_STATUSES = exports.voucherPermsOf = exports.stockViewOf = exports.receiptsScopeOf = exports.cancelScopeOf = exports.distributeDiscount = exports.posFieldErrors = exports.isPosError = exports.posErrorCode = exports.isPosErrorCode = exports.POS_ERROR_CODES = exports.posSettingsFromWire = exports.setMyPosLogo = exports.setMyRegisterDeviceSettings = exports.setMyPosSettings = exports.getPosSettings = exports.allowedQuantity = exports.quantityDefaults = void 0;
5
+ exports.receiptOutputLabel = exports.RETURN_DISPOSITION_LABELS = exports.labelText = exports.LABELS = exports.voucherErrorMessage = exports.VOUCHER_ERROR_MESSAGES = exports.cancellationPaymentErrorMessage = exports.CANCELLATION_PAYMENT_ERROR_MESSAGES = exports.receiptEmailErrorMessage = exports.RECEIPT_EMAIL_ERROR_MESSAGES = exports.messageAppliesTo = exports.messageText = exports.messageOutcome = exports.findErrorRule = exports.CALLS_WITH_EFFECT = exports.ERROR_OUTCOME_RULES = exports.ERROR_CODE_RULES = exports.ERROR_RULES = exports.MESSAGES = exports.isReturnDisposition = exports.RETURN_DISPOSITIONS = exports.RECEIPT_OUTPUT_RESULTS = exports.RECEIPT_OUTPUT_KINDS = exports.cashMovementLayout = exports.shiftReceiptLayout = exports.AFTER_COUNT_TYPES = exports.SHIFT_RECEIPT_KINDS = exports.MANUAL_OPENING_REASONS = exports.OPENING_REASONS = exports.CASH_LOCATIONS = exports.MANUAL_MOVEMENT_TYPES = exports.MOVEMENT_TYPES = exports.EUR_DENOMINATIONS = exports.durationText = exports.shiftTipLines = exports.newIdempotencyKey = exports.parseCentsAllowZero = exports.sumDenominations = exports.closeMyShift = void 0;
6
6
  /**
7
7
  * Kachel-Kasse: Einstellungen, Artikelgruppen/Artikel fuer Kacheln,
8
8
  * Rabattverteilung, Drucker, Trinkgeld-Empfaenger, Lager (Standorte, Bestand,
@@ -96,6 +96,9 @@ Object.defineProperty(exports, "createPrintJob", { enumerable: true, get: functi
96
96
  Object.defineProperty(exports, "getPrintJob", { enumerable: true, get: function () { return drucker_js_1.getPrintJob; } });
97
97
  var trinkgeld_js_1 = require("./trinkgeld.js");
98
98
  Object.defineProperty(exports, "listMyTipRecipients", { enumerable: true, get: function () { return trinkgeld_js_1.listMyTipRecipients; } });
99
+ // Prüfung (DEP) an der Kasse: Ordner auf dem USB-Stick (gleich in Web-Kasse und Kassen-App).
100
+ var dep_js_1 = require("./dep.js");
101
+ Object.defineProperty(exports, "depFolderName", { enumerable: true, get: function () { return dep_js_1.depFolderName; } });
99
102
  var lager_js_1 = require("./lager.js");
100
103
  Object.defineProperty(exports, "STOCK_LOCATION_TYPES", { enumerable: true, get: function () { return lager_js_1.STOCK_LOCATION_TYPES; } });
101
104
  Object.defineProperty(exports, "listMyStockLocations", { enumerable: true, get: function () { return lager_js_1.listMyStockLocations; } });
@@ -802,6 +802,47 @@ declare const MELDUNGEN_ROH: {
802
802
  readonly text: "Es fehlen {amount} bis zum Wechselgeld von {total}.";
803
803
  readonly placeholders: readonly ["amount", "total"];
804
804
  };
805
+ readonly 'dep.manager_only': {
806
+ readonly text: "Den Export für die Prüfung macht der Chef. Ist er nicht da, darf die Behörde bis zu zwei Werktage warten.";
807
+ };
808
+ readonly 'dep.offline': {
809
+ readonly text: "Ohne Internet ist kein Export möglich. Die Behörde muss dann bis zu zwei Werktage warten; der Export geht später hier oder unter mein.kasseneck.at.";
810
+ };
811
+ readonly 'dep.creating': {
812
+ readonly text: "Wird erstellt …";
813
+ };
814
+ readonly 'dep.running': {
815
+ readonly text: "Für diese Kasse läuft schon ein Export. Bitte kurz warten, er wird gleich fertig.";
816
+ };
817
+ readonly 'dep.failed': {
818
+ readonly text: "Der Export ist fehlgeschlagen. Bitte erneut erstellen.";
819
+ };
820
+ readonly 'dep.too_many_exports': {
821
+ readonly text: "Heute sind an diesem Konto keine weiteren Exporte möglich – morgen geht es wieder. Ein schon erstellter Export bleibt nutzbar.";
822
+ };
823
+ readonly 'dep.period_invalid': {
824
+ readonly text: "Bitte einen gültigen Zeitraum wählen: „Von“ nicht in der Zukunft, „Bis“ nicht vor „Von“.";
825
+ };
826
+ readonly 'dep.usb_hint': {
827
+ readonly text: "USB-Stick anstecken (FAT32 oder exFAT). Der Prüfer behält den Stick.";
828
+ };
829
+ readonly 'dep.saved': {
830
+ readonly text: "Gespeichert im Ordner {folder}.";
831
+ readonly placeholders: readonly ["folder"];
832
+ };
833
+ readonly 'dep.save_failed': {
834
+ readonly text: "Speichern hat nicht geklappt. Bitte den Stick prüfen und erneut speichern.";
835
+ };
836
+ readonly 'dep.zip_fallback': {
837
+ readonly text: "Dieser Browser kann keinen Ordner wählen – der Export kommt als ZIP-Datei in den Download-Ordner.";
838
+ readonly only: readonly ["web"];
839
+ };
840
+ readonly 'dep.code_once': {
841
+ readonly text: "Code und QR-Code gibt es nur auf diesem Bildschirm. Wer zurückgeht, erstellt beim nächsten Mal einen neuen Link.";
842
+ };
843
+ readonly 'dep.revoked': {
844
+ readonly text: "Der Link ist widerrufen.";
845
+ };
805
846
  readonly 'app.not_in_browser': {
806
847
  readonly text: "Die Kassen-App läuft nicht im Browser – dafür gibt es kasse.kasseneck.at.";
807
848
  readonly only: readonly ["app"];
@@ -935,6 +976,18 @@ export declare const ERROR_CODE_RULES: readonly [{
935
976
  readonly kind: "api";
936
977
  readonly codes: readonly ["drawer_inactive"];
937
978
  readonly key: "drawer.inactive";
979
+ }, {
980
+ readonly kind: "api";
981
+ readonly codes: readonly ["manager_only"];
982
+ readonly key: "dep.manager_only";
983
+ }, {
984
+ readonly kind: "api";
985
+ readonly codes: readonly ["export_running"];
986
+ readonly key: "dep.running";
987
+ }, {
988
+ readonly kind: "api";
989
+ readonly codes: readonly ["too_many_exports"];
990
+ readonly key: "dep.too_many_exports";
938
991
  }];
939
992
  /**
940
993
  * Regeln je Ausgang, nach den Code-Regeln und vor der Regel der Art: eine
@@ -1848,6 +1901,9 @@ declare const BESCHRIFTUNGEN_ROH: {
1848
1901
  readonly 'nav.stocktake': {
1849
1902
  readonly text: "Inventur";
1850
1903
  };
1904
+ readonly 'nav.dep': {
1905
+ readonly text: "Prüfung (DEP)";
1906
+ };
1851
1907
  readonly 'nav.settings': {
1852
1908
  readonly text: "Einstellungen";
1853
1909
  };
@@ -2133,6 +2189,59 @@ declare const BESCHRIFTUNGEN_ROH: {
2133
2189
  readonly 'receipt.output_failed': {
2134
2190
  readonly text: "fehlgeschlagen";
2135
2191
  };
2192
+ readonly 'dep.title': {
2193
+ readonly text: "Prüfung (DEP)";
2194
+ };
2195
+ readonly 'dep.period': {
2196
+ readonly text: "Zeitraum";
2197
+ };
2198
+ readonly 'dep.period_all': {
2199
+ readonly text: "Alles seit Inbetriebnahme";
2200
+ };
2201
+ readonly 'dep.period_year': {
2202
+ readonly text: "Ein Jahr";
2203
+ };
2204
+ readonly 'dep.period_quarter': {
2205
+ readonly text: "Ein Quartal";
2206
+ };
2207
+ readonly 'dep.period_custom': {
2208
+ readonly text: "Eigener Zeitraum";
2209
+ };
2210
+ readonly 'dep.from': {
2211
+ readonly text: "Von";
2212
+ };
2213
+ readonly 'dep.to': {
2214
+ readonly text: "Bis";
2215
+ };
2216
+ readonly 'dep.create': {
2217
+ readonly text: "Export erstellen";
2218
+ };
2219
+ readonly 'dep.receipts': {
2220
+ readonly text: "{count} Belege";
2221
+ readonly placeholders: readonly ["count"];
2222
+ };
2223
+ readonly 'dep.save_usb': {
2224
+ readonly text: "Auf USB-Stick speichern";
2225
+ };
2226
+ readonly 'dep.handover_link': {
2227
+ readonly text: "Link für den Prüfer";
2228
+ };
2229
+ readonly 'dep.code': {
2230
+ readonly text: "Code";
2231
+ };
2232
+ readonly 'dep.valid_until': {
2233
+ readonly text: "gültig bis {date}";
2234
+ readonly placeholders: readonly ["date"];
2235
+ };
2236
+ readonly 'dep.revoke': {
2237
+ readonly text: "Widerrufen";
2238
+ };
2239
+ readonly 'dep.checksum': {
2240
+ readonly text: "Prüfsumme (SHA-256)";
2241
+ };
2242
+ readonly 'dep.new_export': {
2243
+ readonly text: "Neuer Export";
2244
+ };
2136
2245
  };
2137
2246
  export type LabelKey = keyof typeof BESCHRIFTUNGEN_ROH;
2138
2247
  export declare const LABELS: Record<LabelKey, TextEntry>;
@@ -397,6 +397,22 @@ const MELDUNGEN_ROH = {
397
397
  // Wechselgeld der Lade (1.11.0): beim Öffnen der Schicht liegt weniger in der Lade als eingestellt.
398
398
  // `{amount}` was fehlt, `{total}` das eingestellte Wechselgeld, beide samt Euro-Zeichen.
399
399
  'shift.change_float_missing': { text: 'Es fehlen {amount} bis zum Wechselgeld von {total}.', placeholders: ['amount', 'total'] },
400
+ // --- Prüfung (DEP) bei der Kassennachschau ---------------------------------
401
+ // Nur der Chef exportiert (Inhaber oder Recht „Einstellungen“); ein Kassier
402
+ // sieht nur den Hinweis. Ohne Internet gilt die Frist von zwei Werktagen.
403
+ 'dep.manager_only': { text: 'Den Export für die Prüfung macht der Chef. Ist er nicht da, darf die Behörde bis zu zwei Werktage warten.' },
404
+ 'dep.offline': { text: 'Ohne Internet ist kein Export möglich. Die Behörde muss dann bis zu zwei Werktage warten; der Export geht später hier oder unter mein.kasseneck.at.' },
405
+ 'dep.creating': { text: 'Wird erstellt …' },
406
+ 'dep.running': { text: 'Für diese Kasse läuft schon ein Export. Bitte kurz warten, er wird gleich fertig.' },
407
+ 'dep.failed': { text: 'Der Export ist fehlgeschlagen. Bitte erneut erstellen.' },
408
+ 'dep.too_many_exports': { text: 'Heute sind an diesem Konto keine weiteren Exporte möglich – morgen geht es wieder. Ein schon erstellter Export bleibt nutzbar.' },
409
+ 'dep.period_invalid': { text: 'Bitte einen gültigen Zeitraum wählen: „Von“ nicht in der Zukunft, „Bis“ nicht vor „Von“.' },
410
+ 'dep.usb_hint': { text: 'USB-Stick anstecken (FAT32 oder exFAT). Der Prüfer behält den Stick.' },
411
+ 'dep.saved': { text: 'Gespeichert im Ordner {folder}.', placeholders: ['folder'] },
412
+ 'dep.save_failed': { text: 'Speichern hat nicht geklappt. Bitte den Stick prüfen und erneut speichern.' },
413
+ 'dep.zip_fallback': { text: 'Dieser Browser kann keinen Ordner wählen – der Export kommt als ZIP-Datei in den Download-Ordner.', only: ['web'] },
414
+ 'dep.code_once': { text: 'Code und QR-Code gibt es nur auf diesem Bildschirm. Wer zurückgeht, erstellt beim nächsten Mal einen neuen Link.' },
415
+ 'dep.revoked': { text: 'Der Link ist widerrufen.' },
400
416
  // --- Nur App -------------------------------------------------------------
401
417
  'app.not_in_browser': { text: 'Die Kassen-App läuft nicht im Browser – dafür gibt es kasse.kasseneck.at.', only: ['app'] },
402
418
  'app.open_in_browser': { text: 'Bitte im Browser öffnen: {target}', placeholders: ['target'], only: ['app'] },
@@ -467,6 +483,13 @@ exports.ERROR_CODE_RULES = [
467
483
  { kind: 'api', codes: ['invalid_amount'], key: 'amount.invalid' },
468
484
  { kind: 'api', codes: ['drawer_not_found'], key: 'drawer.not_found' },
469
485
  { kind: 'api', codes: ['drawer_inactive'], key: 'drawer.inactive' },
486
+ // Prüfung (DEP, 1.21.0): nur der Chef; die Tagesgrenze und ein laufender
487
+ // Export sagen, was zu tun ist. Der Server hat nichts angelegt. Bewusst
488
+ // ohne export_failed (kommt auch von Zahlungswegen mit unklarem Ausgang)
489
+ // und ohne too_many_links (der Satz des Backends nennt die Grenze).
490
+ { kind: 'api', codes: ['manager_only'], key: 'dep.manager_only' },
491
+ { kind: 'api', codes: ['export_running'], key: 'dep.running' },
492
+ { kind: 'api', codes: ['too_many_exports'], key: 'dep.too_many_exports' },
470
493
  ];
471
494
  /**
472
495
  * Regeln je Ausgang, nach den Code-Regeln und vor der Regel der Art: eine
@@ -945,6 +968,7 @@ const BESCHRIFTUNGEN_ROH = {
945
968
  'nav.vouchers': { text: 'Gutscheine' },
946
969
  'nav.open_drawer': { text: 'Kassenlade öffnen' },
947
970
  'nav.stocktake': { text: 'Inventur' },
971
+ 'nav.dep': { text: 'Prüfung (DEP)' },
948
972
  'nav.settings': { text: 'Einstellungen' },
949
973
  'nav.settings_locked': { text: 'nur mit Chef-Anmeldung' },
950
974
  'nav.logout': { text: 'Abmelden' },
@@ -1046,6 +1070,24 @@ const BESCHRIFTUNGEN_ROH = {
1046
1070
  'receipt.output_pdf_shared': { text: 'PDF geteilt' },
1047
1071
  'receipt.output_opened': { text: 'Link geöffnet ({count}×)', placeholders: ['count'] },
1048
1072
  'receipt.output_failed': { text: 'fehlgeschlagen' },
1073
+ // --- Prüfung (DEP) bei der Kassennachschau -----------------------------------
1074
+ 'dep.title': { text: 'Prüfung (DEP)' },
1075
+ 'dep.period': { text: 'Zeitraum' },
1076
+ 'dep.period_all': { text: 'Alles seit Inbetriebnahme' },
1077
+ 'dep.period_year': { text: 'Ein Jahr' },
1078
+ 'dep.period_quarter': { text: 'Ein Quartal' },
1079
+ 'dep.period_custom': { text: 'Eigener Zeitraum' },
1080
+ 'dep.from': { text: 'Von' },
1081
+ 'dep.to': { text: 'Bis' },
1082
+ 'dep.create': { text: 'Export erstellen' },
1083
+ 'dep.receipts': { text: '{count} Belege', placeholders: ['count'] },
1084
+ 'dep.save_usb': { text: 'Auf USB-Stick speichern' },
1085
+ 'dep.handover_link': { text: 'Link für den Prüfer' },
1086
+ 'dep.code': { text: 'Code' },
1087
+ 'dep.valid_until': { text: 'gültig bis {date}', placeholders: ['date'] },
1088
+ 'dep.revoke': { text: 'Widerrufen' },
1089
+ 'dep.checksum': { text: 'Prüfsumme (SHA-256)' },
1090
+ 'dep.new_export': { text: 'Neuer Export' },
1049
1091
  };
1050
1092
  exports.LABELS = BESCHRIFTUNGEN_ROH;
1051
1093
  /**
@@ -1,5 +1,5 @@
1
1
  /** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
2
- export declare const VOKABULAR_QUELLE = "f9d375a30bfb51addc8405dd6f5c24928ebc628166ae5ebf2b0c43d9f19701dd";
2
+ export declare const VOKABULAR_QUELLE = "ff400b73f31d963cb2051ca8b7a06cef0bf126483b528320e2a503a6035a7c59";
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 = "f9d375a30bfb51addc8405dd6f5c24928ebc628166ae5ebf2b0c43d9f19701dd";
7
+ exports.VOKABULAR_QUELLE = "ff400b73f31d963cb2051ca8b7a06cef0bf126483b528320e2a503a6035a7c59";
8
8
  /** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
9
9
  exports.SCHEMAS = {
10
10
  "getReceipt": {
@@ -4,4 +4,4 @@
4
4
  * Client-Version, Nachtrag §6). Ein Test haelt sie gleich mit `package.json`;
5
5
  * beim Anheben der Version beide Stellen aendern.
6
6
  */
7
- export declare const PACKAGE_VERSION = "1.19.0";
7
+ export declare const PACKAGE_VERSION = "1.21.0";
@@ -7,4 +7,4 @@ exports.PACKAGE_VERSION = void 0;
7
7
  * Client-Version, Nachtrag §6). Ein Test haelt sie gleich mit `package.json`;
8
8
  * beim Anheben der Version beide Stellen aendern.
9
9
  */
10
- exports.PACKAGE_VERSION = '1.19.0';
10
+ exports.PACKAGE_VERSION = '1.21.0';
@@ -4,6 +4,7 @@ import { type HobexPayOptions, type HobexRefundOptions } from '../payments/hobex
4
4
  import { type TransportOptions } from './transport.js';
5
5
  import { type CashregisterReportPeriod, type ReportV2, type ReportV2Options } from './reports.js';
6
6
  import { type CashboxStatus, type SignatureStatus } from './status.js';
7
+ import { type CreateDepExportOptions, type CreateDepExportResult, type DepExport, type DepExportFile, type DepHandoverLink, type GetDepExportFileOptions, type RevokedDepHandoverLink, type WaitForDepExportOptions } from './dep-export.js';
7
8
  import { type ListedReceipt, type ListReceiptsOptions, type ListReceiptsPage, type ListReceiptsView } from './list-receipts.js';
8
9
  import { type SendReceiptEmailOptions, type SendReceiptEmailResult, type LogReceiptOutputsOptions, type LogReceiptOutputsResult, type ListMyReceiptsOptions, type ReceiptList, type ReceiptWithCompany, type SellReceiptOptions, type CancelReceiptOptions, type CancelReceiptResult } from './receipts.js';
9
10
  /**
@@ -61,6 +62,24 @@ export interface KasseneckApi {
61
62
  listReceipts<V extends ListReceiptsView = 'summary'>(options: ListReceiptsOptions<V>): Promise<ListReceiptsPage<V>>;
62
63
  /** Alle Belege eines Tages oder Zeitraums, Seite fuer Seite geholt (hoechstens 100 Seiten). */
63
64
  listAllReceipts<V extends ListReceiptsView = 'summary'>(options: ListReceiptsOptions<V>): AsyncGenerator<ListedReceipt<V>, void, undefined>;
65
+ /** DEP-Export fuer die Kassennachschau einstellen (`createDepExport`, nur /v3); antwortet sofort, der Export laeuft im Hintergrund. */
66
+ createDepExport(options?: CreateDepExportOptions): Promise<CreateDepExportResult>;
67
+ /** Zustand, Kennzahlen, Befund und Pruefer-Links eines Exports (`getDepExport`). */
68
+ getDepExport(options: {
69
+ exportId: string;
70
+ }): Promise<DepExport>;
71
+ /** Wartet, bis der Export fertig ist (Abfrage 2 s, x1,5, hoechstens 15 s; Vorgabe 10 Minuten). */
72
+ waitForDepExport(options: WaitForDepExportOptions): Promise<DepExport>;
73
+ /** Eine Datei des Exports (dep, protocol, items, zip) laden und gegen die SHA-256-Summe pruefen. */
74
+ getDepExportFile(options: GetDepExportFileOptions): Promise<DepExportFile>;
75
+ /** Pruefer-Link (Adresse und 6-stelliger Code, 14 Tage) zu einem fertigen Export. */
76
+ createDepHandoverLink(options: {
77
+ exportId: string;
78
+ }): Promise<DepHandoverLink>;
79
+ /** Pruefer-Link der eigenen Kasse widerrufen. */
80
+ revokeDepHandoverLink(options: {
81
+ linkId: string;
82
+ }): Promise<RevokedDepHandoverLink>;
64
83
  /** Kassenbericht als PDF (v2): abgeschlossener Monat, Tag oder Zeitraum (Endpunkt `getCashregisterReport`). */
65
84
  getCashregisterReport(options: CashregisterReportPeriod): Promise<Uint8Array>;
66
85
  /** @deprecated Since 1.10.0: use getCashregisterReport. Tagesbericht als PDF (Kalendertag nach Wiener Zeit). */
@@ -1,8 +1,9 @@
1
1
  import { createStripeLink, stripeCaptureIntent, } from '../payments/stripe.js';
2
2
  import { hobexPay, hobexRefund } from '../payments/hobex.js';
3
- import { createTransport, createBinaryTransport } from './transport.js';
3
+ import { createTransport, createBinaryTransport, createFileOrDataTransport } from './transport.js';
4
4
  import { downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2 } from './reports.js';
5
5
  import { getCashboxStatus, getSignatureStatus } from './status.js';
6
+ import { createDepExport, createDepHandoverLink, getDepExport, getDepExportFile, revokeDepHandoverLink, waitForDepExport, } from './dep-export.js';
6
7
  import { listAllReceipts, listReceipts } from './list-receipts.js';
7
8
  import { sellReceipt, sellReceiptWithCompany, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, sendReceiptEmail, logReceiptOutputs, } from './receipts.js';
8
9
  import { listMyCashregisters } from './cashregisters.js';
@@ -12,6 +13,17 @@ export function createKasseneckApi(options) {
12
13
  // Zweiter Einstiegspunkt fuer die PDF-Downloads; dieselben Optionen,
13
14
  // dieselbe Anmeldung — nur die Antwort wird als Bytes gelesen.
14
15
  const rufenBinaer = createBinaryTransport(options);
16
+ // Fuer Dateien beliebiger Art (DEP-Export): Datei oder Lese-Link.
17
+ const rufenDatei = createFileOrDataTransport(options);
18
+ // Das globale fetch erst beim Folgen eines Lese-Links holen: ohne Link braucht es niemand.
19
+ const holen = (url, init) => {
20
+ if (options.fetch)
21
+ return options.fetch(url, init);
22
+ const umgebung = globalThis;
23
+ if (typeof umgebung.fetch !== 'function')
24
+ throw new Error('getDepExportFile: kein globales fetch vorhanden');
25
+ return umgebung.fetch(url, init);
26
+ };
15
27
  return {
16
28
  sellReceipt: (o) => sellReceipt(rufen, o),
17
29
  sellReceiptWithCompany: (o) => sellReceiptWithCompany(rufen, o),
@@ -28,6 +40,12 @@ export function createKasseneckApi(options) {
28
40
  getReportV2: (o) => getReportV2(rufen, o),
29
41
  listReceipts: (o) => listReceipts(rufen, o),
30
42
  listAllReceipts: (o) => listAllReceipts(rufen, o),
43
+ createDepExport: (o) => createDepExport(rufen, o),
44
+ getDepExport: (o) => getDepExport(rufen, o),
45
+ waitForDepExport: (o) => waitForDepExport(rufen, o),
46
+ getDepExportFile: (o) => getDepExportFile(rufenDatei, holen, o),
47
+ createDepHandoverLink: (o) => createDepHandoverLink(rufen, o),
48
+ revokeDepHandoverLink: (o) => revokeDepHandoverLink(rufen, o),
31
49
  getCashregisterReport: (options) => getCashregisterReport(rufenBinaer, options),
32
50
  downloadDailyReport: (date) => downloadDailyReport(rufenBinaer, date),
33
51
  downloadMonthlyReport: (reportMonth) => downloadMonthlyReport(rufenBinaer, reportMonth),
@@ -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 { 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", "listReceipts", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "recordInvoicePayment", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "reportCustomerContract", "requestCustomerSignature", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift", "logReceiptOutputs"];
15
+ import type { FileOrData, FileOrDataCallOptions, PdfOrData, TransportBodyFields, TransportCallOptions } from './transport.js';
16
+ export declare const ALL_CALLS: readonly ["activateCashregister", "cancelInvoice", "cancelReceipt", "createCreditNote", "createCustomer", "createCustomerCashregister", "createDepExport", "createDepHandoverLink", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCashregisterReport", "getCustomer", "getCustomerCredentials", "getCustomerSignatureStatus", "getDepExport", "getDepExportFile", "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", "listReceipts", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "recordInvoicePayment", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "reportCustomerContract", "requestCustomerSignature", "revokeDepHandoverLink", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift", "logReceiptOutputs"];
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,15 @@ export type ApiCall = typeof ALL_CALLS[number];
21
21
  * (`fixtures/v3/v3-vokabular.json`, `endpoints.public`, umbenannt nach
22
22
  * `names`). Ein Test haelt beide Listen deckungsgleich.
23
23
  */
24
- export declare const PUBLIC_CALLS: readonly ["createReceipt", "getReceipt", "cancelReceipt", "sendReceiptEmail", "generateFullReceiptId", "downloadReceipt", "getFirstReceiptDate", "getReportV2", "downloadReport", "downloadDailyReport", "getCashregisterReport", "createPaymentLinkStripe", "stripeCaptureIntent", "hobexPayApi", "hobexRefundApi", "hobexGetStatus", "financeWebService", "listMyTipRecipients", "getPartnerInfo", "createPartnerCustomer", "checkPartnerCustomerEmail", "listPartnerCustomers", "getPartnerCustomer", "sendPartnerCustomerFonLink", "createPartnerWebhook", "updatePartnerWebhook", "deletePartnerWebhook", "listPartnerWebhooks", "sendPartnerWebhookTest", "rotatePartnerWebhookSecret", "listPartnerWebhookDeliveries", "requestCustomerSignature", "getCustomerSignatureStatus", "createCustomerCashregister", "activateCashregister", "listCustomerCashregisters", "getCustomerCredentials", "reportCustomerContract", "getPartnerBilling", "getPartnerBillingMonth", "createCustomer", "getCustomer", "updateCustomer", "searchCustomers", "issueInvoice", "cancelInvoice", "createCreditNote", "getInvoice", "listInvoices", "getInvoicePdf", "getInvoiceXml", "getInvoiceSetupStatus", "listBrands", "recordInvoicePayment", "createInvoiceItem", "updateInvoiceItem", "withdrawInvoiceItem", "getInvoiceItem", "listInvoiceItems", "setCustomerMandate", "revokeCustomerMandate", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder", "listReceipts"];
24
+ export declare const PUBLIC_CALLS: readonly ["createReceipt", "getReceipt", "cancelReceipt", "sendReceiptEmail", "generateFullReceiptId", "downloadReceipt", "getFirstReceiptDate", "getReportV2", "downloadReport", "downloadDailyReport", "getCashregisterReport", "createPaymentLinkStripe", "stripeCaptureIntent", "hobexPayApi", "hobexRefundApi", "hobexGetStatus", "financeWebService", "listMyTipRecipients", "getPartnerInfo", "createPartnerCustomer", "checkPartnerCustomerEmail", "listPartnerCustomers", "getPartnerCustomer", "sendPartnerCustomerFonLink", "createPartnerWebhook", "updatePartnerWebhook", "deletePartnerWebhook", "listPartnerWebhooks", "sendPartnerWebhookTest", "rotatePartnerWebhookSecret", "listPartnerWebhookDeliveries", "requestCustomerSignature", "getCustomerSignatureStatus", "createCustomerCashregister", "activateCashregister", "listCustomerCashregisters", "getCustomerCredentials", "reportCustomerContract", "getPartnerBilling", "getPartnerBillingMonth", "createCustomer", "getCustomer", "updateCustomer", "searchCustomers", "issueInvoice", "cancelInvoice", "createCreditNote", "getInvoice", "listInvoices", "getInvoicePdf", "getInvoiceXml", "getInvoiceSetupStatus", "listBrands", "recordInvoicePayment", "createInvoiceItem", "updateInvoiceItem", "withdrawInvoiceItem", "getInvoiceItem", "listInvoiceItems", "setCustomerMandate", "revokeCustomerMandate", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder", "listReceipts", "createDepExport", "getDepExport", "getDepExportFile", "createDepHandoverLink", "revokeDepHandoverLink"];
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
- * `endpoints.register`. Sechs davon sind zugleich oeffentlich; die Kasse ruft
29
- * sie trotzdem ueber diesen Weg (ein Dialekt je Client, Nachtrag §5.2).
28
+ * `endpoints.register`. Elf davon sind zugleich oeffentlich (sechs Beleg-Aufrufe und
29
+ * die fuenf DEP-Aufrufe); die Kasse ruft sie trotzdem ueber diesen Weg (ein Dialekt
30
+ * je Client, Nachtrag §5.2).
30
31
  */
31
- export declare const POS_CALLS: readonly ["pairRegisterDevice", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "registerUserLogin", "registerPinLogin", "renewRegisterSession", "endRegisterSession", "unpairRegisterDevice", "listMyCashregisters", "listMyReceipts", "getReceipt", "createReceipt", "generateFullReceiptId", "cancelReceipt", "sendReceiptEmail", "listMyArticleGroups", "listMyArticles", "getKasseSettings", "setMyKasseSettings", "setMyKasseLogo", "setMyRegisterDeviceSettings", "listMyPrinters", "createPrintJob", "getPrintJob", "listMyTipRecipients", "listMyStockLocations", "listMyStock", "setMyCashregisterStockLocation", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift", "logReceiptOutputs"];
32
+ export declare const POS_CALLS: readonly ["pairRegisterDevice", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "registerUserLogin", "registerPinLogin", "renewRegisterSession", "endRegisterSession", "unpairRegisterDevice", "listMyCashregisters", "listMyReceipts", "getReceipt", "createReceipt", "generateFullReceiptId", "cancelReceipt", "sendReceiptEmail", "listMyArticleGroups", "listMyArticles", "getKasseSettings", "setMyKasseSettings", "setMyKasseLogo", "setMyRegisterDeviceSettings", "listMyPrinters", "createPrintJob", "getPrintJob", "listMyTipRecipients", "listMyStockLocations", "listMyStock", "setMyCashregisterStockLocation", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift", "logReceiptOutputs", "createDepExport", "getDepExport", "getDepExportFile", "createDepHandoverLink", "revokeDepHandoverLink"];
32
33
  export type PublicCall = typeof PUBLIC_CALLS[number];
33
34
  export type PosCall = typeof POS_CALLS[number];
34
35
  /**
@@ -99,3 +100,5 @@ export type InternerTransport = <T = unknown>(functionName: ApiCall, params?: Re
99
100
  export type InternerBinaerTransport = (functionName: ApiCall, params?: Record<string, unknown>) => Promise<Uint8Array>;
100
101
  /** Wie `createPdfOrDataTransport` (transport.ts), nur mit bekanntem Aufrufnamen. */
101
102
  export type InternerPdfOderDatenTransport = (functionName: ApiCall, params?: Record<string, unknown>) => Promise<PdfOrData>;
103
+ /** Wie `createFileOrDataTransport` (transport.ts), nur mit bekanntem Aufrufnamen. */
104
+ export type InternerDateiOderDatenTransport = (functionName: ApiCall, params?: Record<string, unknown>, options?: FileOrDataCallOptions) => Promise<FileOrData>;
@@ -5,6 +5,8 @@ export const ALL_CALLS = [
5
5
  'createCreditNote',
6
6
  'createCustomer',
7
7
  'createCustomerCashregister',
8
+ 'createDepExport',
9
+ 'createDepHandoverLink',
8
10
  'createPartnerCustomer',
9
11
  'checkPartnerCustomerEmail',
10
12
  'createPartnerWebhook',
@@ -21,6 +23,8 @@ export const ALL_CALLS = [
21
23
  'getCustomer',
22
24
  'getCustomerCredentials',
23
25
  'getCustomerSignatureStatus',
26
+ 'getDepExport',
27
+ 'getDepExportFile',
24
28
  'getFirstReceiptDate',
25
29
  'getInvoice',
26
30
  'getInvoicePdf',
@@ -59,6 +63,7 @@ export const ALL_CALLS = [
59
63
  'renewRegisterSession',
60
64
  'reportCustomerContract',
61
65
  'requestCustomerSignature',
66
+ 'revokeDepHandoverLink',
62
67
  'searchCustomers',
63
68
  'sendPartnerCustomerFonLink',
64
69
  'sendPartnerWebhookTest',
@@ -265,12 +270,19 @@ export const PUBLIC_CALLS = [
265
270
  'getSignatureCardOrder',
266
271
  // Belege einer Kasse auflisten, nur unter /v3 (Nachfolger von getReportV2 fuer Listen).
267
272
  'listReceipts',
273
+ // DEP-Export fuer die Kassennachschau (Kassen-Token), nur unter /v3.
274
+ 'createDepExport',
275
+ 'getDepExport',
276
+ 'getDepExportFile',
277
+ 'createDepHandoverLink',
278
+ 'revokeDepHandoverLink',
268
279
  ];
269
280
  /**
270
281
  * Die Endpunkte des Kassenwegs (`https://kasse.kasseneck.at/api/v3/<name>`,
271
282
  * Web-Kasse: gleicher Ursprung `/api/v3`), in der Reihenfolge von
272
- * `endpoints.register`. Sechs davon sind zugleich oeffentlich; die Kasse ruft
273
- * sie trotzdem ueber diesen Weg (ein Dialekt je Client, Nachtrag §5.2).
283
+ * `endpoints.register`. Elf davon sind zugleich oeffentlich (sechs Beleg-Aufrufe und
284
+ * die fuenf DEP-Aufrufe); die Kasse ruft sie trotzdem ueber diesen Weg (ein Dialekt
285
+ * je Client, Nachtrag §5.2).
274
286
  */
275
287
  export const POS_CALLS = [
276
288
  'pairRegisterDevice',
@@ -320,6 +332,12 @@ export const POS_CALLS = [
320
332
  'closeMyShift',
321
333
  // Ausgaben eines Belegs melden: nur ueber den Kassenweg.
322
334
  'logReceiptOutputs',
335
+ // DEP fuer die Kassennachschau (Stufe 2): zugleich oeffentlich; an der Kasse nur fuer den Chef (manager_only).
336
+ 'createDepExport',
337
+ 'getDepExport',
338
+ 'getDepExportFile',
339
+ 'createDepHandoverLink',
340
+ 'revokeDepHandoverLink',
323
341
  ];
324
342
  /**
325
343
  * Die Aufrufe **mit Wirkung**, alphabetisch: sie legen etwas an, aendern oder
@@ -449,6 +467,15 @@ export const CALLS_WITHOUT_EFFECT = Object.freeze({
449
467
  getCustomer: 'read',
450
468
  getCustomerCredentials: 'read',
451
469
  getCustomerSignatureStatus: 'read',
470
+ // DEP-Export: ein verlorener Ausgang ist harmlos wiederholbar. createDepExport ist mit requestId idempotent, ohne nur
471
+ // doppelt (Grenze 20 je Tag, keine Buchung). createDepHandoverLink erzeugt bei Wiederholung einen zweiten Link (der
472
+ // alte steht in getDepExport().handoverLinks und ist widerrufbar; Preis hoechstens too_many_links). revokeDepHandoverLink
473
+ // ist idempotent.
474
+ createDepExport: 'repeatable',
475
+ createDepHandoverLink: 'repeatable',
476
+ revokeDepHandoverLink: 'repeatable',
477
+ getDepExport: 'read',
478
+ getDepExportFile: 'read',
452
479
  getFirstReceiptDate: 'read',
453
480
  getInvoice: 'read',
454
481
  getInvoiceItem: 'read',