@kreiseck/kasseneck-api 1.11.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +2 -1
  3. package/dist/cjs/client/aufrufe.d.ts +4 -4
  4. package/dist/cjs/client/aufrufe.js +15 -0
  5. package/dist/cjs/client/receipts.d.ts +5 -0
  6. package/dist/cjs/client/receipts.js +65 -6
  7. package/dist/cjs/enums/voucher-action.d.ts +2 -0
  8. package/dist/cjs/enums/voucher-action.js +2 -0
  9. package/dist/cjs/enums/voucher-type.d.ts +10 -0
  10. package/dist/cjs/enums/voucher-type.js +10 -0
  11. package/dist/cjs/index.d.ts +3 -3
  12. package/dist/cjs/index.js +9 -3
  13. package/dist/cjs/models/index.d.ts +3 -3
  14. package/dist/cjs/models/index.js +7 -2
  15. package/dist/cjs/models/receipt-errors.d.ts +1 -1
  16. package/dist/cjs/models/receipt-errors.js +2 -0
  17. package/dist/cjs/models/receipt-item.d.ts +11 -3
  18. package/dist/cjs/models/receipt-item.js +22 -1
  19. package/dist/cjs/models/receipt.d.ts +31 -1
  20. package/dist/cjs/models/receipt.js +45 -5
  21. package/dist/cjs/models/voucher.d.ts +57 -4
  22. package/dist/cjs/models/voucher.js +111 -3
  23. package/dist/cjs/partner/fehler.d.ts +1 -1
  24. package/dist/cjs/partner/fehler.js +2 -0
  25. package/dist/cjs/partner/index.d.ts +1 -1
  26. package/dist/cjs/partner/typen.d.ts +7 -1
  27. package/dist/cjs/partner/typen.js +3 -0
  28. package/dist/cjs/pos/client.d.ts +2 -1
  29. package/dist/cjs/pos/client.js +3 -1
  30. package/dist/cjs/pos/gutschein.d.ts +90 -0
  31. package/dist/cjs/pos/gutschein.js +164 -0
  32. package/dist/cjs/pos/index.d.ts +3 -2
  33. package/dist/cjs/pos/index.js +13 -2
  34. package/dist/cjs/pos/settings.d.ts +3 -0
  35. package/dist/cjs/pos/settings.js +12 -10
  36. package/dist/cjs/pos/texte.d.ts +156 -0
  37. package/dist/cjs/pos/texte.js +72 -1
  38. package/dist/cjs/react/index.js +8 -2
  39. package/dist/cjs/receipt/due.d.ts +83 -2
  40. package/dist/cjs/receipt/due.js +202 -36
  41. package/dist/cjs/receipt/grid.js +13 -1
  42. package/dist/cjs/receipt/gutschein-plan.d.ts +104 -0
  43. package/dist/cjs/receipt/gutschein-plan.js +360 -0
  44. package/dist/cjs/receipt/index.d.ts +1 -1
  45. package/dist/cjs/receipt/index.js +3 -0
  46. package/dist/cjs/receipt/layout.js +186 -10
  47. package/dist/cjs/register/pairing.d.ts +21 -1
  48. package/dist/cjs/register/pairing.js +17 -0
  49. package/dist/cjs/stored/bon-layout.d.ts +8 -0
  50. package/dist/cjs/stored/bon-layout.js +23 -0
  51. package/dist/cjs/stored/draht.d.ts +3 -1
  52. package/dist/cjs/stored/draht.js +53 -6
  53. package/dist/cjs/stored/einstellungen.js +2 -1
  54. package/dist/cjs/stored/gutscheine.d.ts +3 -0
  55. package/dist/cjs/stored/gutscheine.js +60 -0
  56. package/dist/cjs/stored/index.js +2 -17
  57. package/dist/cjs/stored/vokabular.d.ts +6 -4
  58. package/dist/cjs/stored/vokabular.js +48 -2
  59. package/dist/cjs/version.d.ts +1 -1
  60. package/dist/cjs/version.js +1 -1
  61. package/dist/esm/client/aufrufe.d.ts +4 -4
  62. package/dist/esm/client/aufrufe.js +15 -0
  63. package/dist/esm/client/receipts.d.ts +5 -0
  64. package/dist/esm/client/receipts.js +66 -8
  65. package/dist/esm/enums/voucher-action.d.ts +2 -0
  66. package/dist/esm/enums/voucher-action.js +2 -0
  67. package/dist/esm/enums/voucher-type.d.ts +10 -0
  68. package/dist/esm/enums/voucher-type.js +10 -0
  69. package/dist/esm/index.d.ts +3 -3
  70. package/dist/esm/index.js +3 -3
  71. package/dist/esm/models/index.d.ts +3 -3
  72. package/dist/esm/models/index.js +3 -3
  73. package/dist/esm/models/receipt-errors.d.ts +1 -1
  74. package/dist/esm/models/receipt-errors.js +2 -0
  75. package/dist/esm/models/receipt-item.d.ts +11 -3
  76. package/dist/esm/models/receipt-item.js +20 -1
  77. package/dist/esm/models/receipt.d.ts +31 -1
  78. package/dist/esm/models/receipt.js +44 -5
  79. package/dist/esm/models/voucher.d.ts +57 -4
  80. package/dist/esm/models/voucher.js +108 -3
  81. package/dist/esm/partner/fehler.d.ts +1 -1
  82. package/dist/esm/partner/fehler.js +2 -0
  83. package/dist/esm/partner/index.d.ts +1 -1
  84. package/dist/esm/partner/typen.d.ts +7 -1
  85. package/dist/esm/partner/typen.js +3 -0
  86. package/dist/esm/pos/client.d.ts +2 -1
  87. package/dist/esm/pos/client.js +3 -1
  88. package/dist/esm/pos/gutschein.d.ts +90 -0
  89. package/dist/esm/pos/gutschein.js +158 -0
  90. package/dist/esm/pos/index.d.ts +3 -2
  91. package/dist/esm/pos/index.js +4 -2
  92. package/dist/esm/pos/settings.d.ts +3 -0
  93. package/dist/esm/pos/settings.js +2 -0
  94. package/dist/esm/pos/texte.d.ts +156 -0
  95. package/dist/esm/pos/texte.js +70 -0
  96. package/dist/esm/react/index.js +8 -2
  97. package/dist/esm/receipt/due.d.ts +83 -2
  98. package/dist/esm/receipt/due.js +198 -34
  99. package/dist/esm/receipt/grid.js +13 -1
  100. package/dist/esm/receipt/gutschein-plan.d.ts +104 -0
  101. package/dist/esm/receipt/gutschein-plan.js +352 -0
  102. package/dist/esm/receipt/index.d.ts +1 -1
  103. package/dist/esm/receipt/index.js +1 -1
  104. package/dist/esm/receipt/layout.js +187 -11
  105. package/dist/esm/register/pairing.d.ts +21 -1
  106. package/dist/esm/register/pairing.js +16 -0
  107. package/dist/esm/stored/bon-layout.d.ts +8 -0
  108. package/dist/esm/stored/bon-layout.js +20 -0
  109. package/dist/esm/stored/draht.d.ts +3 -1
  110. package/dist/esm/stored/draht.js +52 -6
  111. package/dist/esm/stored/einstellungen.js +3 -2
  112. package/dist/esm/stored/gutscheine.d.ts +3 -0
  113. package/dist/esm/stored/gutscheine.js +56 -0
  114. package/dist/esm/stored/index.js +2 -17
  115. package/dist/esm/stored/vokabular.d.ts +6 -4
  116. package/dist/esm/stored/vokabular.js +48 -2
  117. package/dist/esm/version.d.ts +1 -1
  118. package/dist/esm/version.js +1 -1
  119. package/fixtures/expected/voucher-cancellation.grid32.txt +30 -0
  120. package/fixtures/expected/voucher-cancellation.grid48.txt +29 -0
  121. package/fixtures/expected/voucher-cancellation.lines.json +252 -0
  122. package/fixtures/expected/voucher-cancellation.sheet32.json +206 -0
  123. package/fixtures/expected/voucher-cancellation.sheet48.json +200 -0
  124. package/fixtures/expected/voucher-multi-purpose-redeem.grid32.txt +25 -0
  125. package/fixtures/expected/voucher-multi-purpose-redeem.grid48.txt +25 -0
  126. package/fixtures/expected/voucher-multi-purpose-redeem.lines.json +259 -0
  127. package/fixtures/expected/voucher-multi-purpose-redeem.sheet32.json +176 -0
  128. package/fixtures/expected/voucher-multi-purpose-redeem.sheet48.json +176 -0
  129. package/fixtures/expected/voucher-multi-purpose-sale.grid32.txt +24 -0
  130. package/fixtures/expected/voucher-multi-purpose-sale.grid48.txt +23 -0
  131. package/fixtures/expected/voucher-multi-purpose-sale.lines.json +216 -0
  132. package/fixtures/expected/voucher-multi-purpose-sale.sheet32.json +170 -0
  133. package/fixtures/expected/voucher-multi-purpose-sale.sheet48.json +164 -0
  134. package/fixtures/expected/voucher-payout.grid32.txt +23 -0
  135. package/fixtures/expected/voucher-payout.grid48.txt +22 -0
  136. package/fixtures/expected/voucher-payout.lines.json +216 -0
  137. package/fixtures/expected/voucher-payout.sheet32.json +164 -0
  138. package/fixtures/expected/voucher-payout.sheet48.json +158 -0
  139. package/fixtures/expected/voucher-service-redeem.grid32.txt +26 -0
  140. package/fixtures/expected/voucher-service-redeem.grid48.txt +25 -0
  141. package/fixtures/expected/voucher-service-redeem.lines.json +261 -0
  142. package/fixtures/expected/voucher-service-redeem.sheet32.json +182 -0
  143. package/fixtures/expected/voucher-service-redeem.sheet48.json +176 -0
  144. package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid32.txt +30 -0
  145. package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid48.txt +29 -0
  146. package/fixtures/expected/voucher-single-purpose-redeem-exempt.lines.json +331 -0
  147. package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet32.json +206 -0
  148. package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet48.json +200 -0
  149. package/fixtures/expected/voucher-single-purpose-redeem.grid32.txt +25 -0
  150. package/fixtures/expected/voucher-single-purpose-redeem.grid48.txt +24 -0
  151. package/fixtures/expected/voucher-single-purpose-redeem.lines.json +246 -0
  152. package/fixtures/expected/voucher-single-purpose-redeem.sheet32.json +176 -0
  153. package/fixtures/expected/voucher-single-purpose-redeem.sheet48.json +170 -0
  154. package/fixtures/expected/voucher-single-purpose-sale.grid32.txt +26 -0
  155. package/fixtures/expected/voucher-single-purpose-sale.grid48.txt +24 -0
  156. package/fixtures/expected/voucher-single-purpose-sale.lines.json +225 -0
  157. package/fixtures/expected/voucher-single-purpose-sale.sheet32.json +182 -0
  158. package/fixtures/expected/voucher-single-purpose-sale.sheet48.json +170 -0
  159. package/fixtures/hobex-hps-codes.json +1 -1
  160. package/fixtures/invoice-api.schema.json +1 -1
  161. package/fixtures/invoice-texts.json +1 -1
  162. package/fixtures/manifest.json +64 -0
  163. package/fixtures/pos-texts.json +170 -1
  164. package/fixtures/receipt-due-generated.json +1 -1
  165. package/fixtures/receipt-due-voucher-generated.json +494 -0
  166. package/fixtures/receipts/voucher-cancellation.json +76 -0
  167. package/fixtures/receipts/voucher-multi-purpose-redeem.json +62 -0
  168. package/fixtures/receipts/voucher-multi-purpose-sale.json +63 -0
  169. package/fixtures/receipts/voucher-payout.json +65 -0
  170. package/fixtures/receipts/voucher-service-redeem.json +82 -0
  171. package/fixtures/receipts/voucher-single-purpose-redeem-exempt.json +86 -0
  172. package/fixtures/receipts/voucher-single-purpose-redeem.json +71 -0
  173. package/fixtures/receipts/voucher-single-purpose-sale.json +88 -0
  174. package/fixtures/surface.json +35 -5
  175. package/fixtures/v3/antworten/belege.json +3405 -3
  176. package/fixtures/v3/antworten/belegmail.json +5 -2
  177. package/fixtures/v3/antworten/kasse-belege.json +3423 -3
  178. package/fixtures/v3/antworten/kasse.json +621 -14
  179. package/fixtures/v3/antworten/lager.json +1 -1
  180. package/fixtures/v3/antworten/rechnungen.json +5 -2
  181. package/fixtures/v3/antworten/storno.json +214 -3
  182. package/fixtures/v3/stored/belege.json +5 -2
  183. package/fixtures/v3/stored/kasse.json +225 -4
  184. package/fixtures/v3/stored/rechnungen.json +5 -2
  185. package/fixtures/v3/v3-vokabular.json +1375 -23
  186. package/fixtures/v3/zahlbetrag-faelle.json +293 -3
  187. package/package.json +4 -1
@@ -2,7 +2,7 @@
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
4
  "sha256": "6d19c6313438a44d5f522bcaf248de293c6e285dd891185a773e05e9eef6f45b",
5
- "inputsSha256": "705f21389f9dbc257c7cacba82f0a8f825f9e5e5e620efc9b431d3f42cbe883b",
5
+ "inputsSha256": "8964087ce41330a1e6a9970f7bacc09c70aad4e123a1b8d87b38de796bc9fad8",
6
6
  "backendPackage": "@kreiseck/kasseneck-api@0.14.0",
7
7
  "inputs": [
8
8
  "functions-kasse/article-endpoints.js",
@@ -2,15 +2,17 @@
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
4
  "sha256": "9d0f4b0fa978c67a77ae7a29d26fed60ae294fc597f9c23a7a27b8fcba4a8f0d",
5
- "inputsSha256": "95fd7b1f3704811d3a3f79b1dbb6aea668e8c0e3a663e5b0ca9c07f2e11e37b5",
6
- "backendPackage": "@kreiseck/kasseneck-api@0.33.0",
5
+ "inputsSha256": "29f295ee139942d79758255d7b6284e2810477e4e22249d9b703c0110129e78b",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.33.1",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
9
9
  "functions-kasse/test/unit/fixtures/kassen-codes-v3.js",
10
+ "functions/aktivierung-api-core.js",
10
11
  "functions/beleg-mail-core.js",
11
12
  "functions/gemeinsam/api-rand.js",
12
13
  "functions/gemeinsam/api-vokabular-v3.js",
13
14
  "functions/gemeinsam/beleg-toepfe.js",
15
+ "functions/gemeinsam/gutschein-beleg.js",
14
16
  "functions/gemeinsam/storno-core.js",
15
17
  "functions/gemeinsam/tip-core.js",
16
18
  "functions/gemeinsam/vat-buckets.js",
@@ -20,6 +22,7 @@
20
22
  "functions/test/unit/fixtures/v3-belege/beleg-welt.js",
21
23
  "functions/test/unit/fixtures/v3-rechnungen/rechnungs-welt.js",
22
24
  "functions/test/unit/fixtures/vertrag-v3/ablage.js",
25
+ "functions/test/unit/fixtures/vertrag-v3/gutschein-belege.js",
23
26
  "functions/test/unit/fixtures/vertrag-v3/vokabular.js",
24
27
  "functions/test/unit/fixtures/vertrag-v3/zahlbetrag.js",
25
28
  "functions/test/unit/helpers/kassen-fehlerstellen.js",
@@ -1,16 +1,18 @@
1
1
  {
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
- "sha256": "86c7d842017f818e348b80ebebdce8492cfcbd76e388cba9de41a5c888114e6a",
5
- "inputsSha256": "95fd7b1f3704811d3a3f79b1dbb6aea668e8c0e3a663e5b0ca9c07f2e11e37b5",
6
- "backendPackage": "@kreiseck/kasseneck-api@0.33.0",
4
+ "sha256": "c5db01aa176f4449a18bf0affdf984a8b3fef75b9e3344721cb03cb3a6fdb272",
5
+ "inputsSha256": "29f295ee139942d79758255d7b6284e2810477e4e22249d9b703c0110129e78b",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.33.1",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
9
9
  "functions-kasse/test/unit/fixtures/kassen-codes-v3.js",
10
+ "functions/aktivierung-api-core.js",
10
11
  "functions/beleg-mail-core.js",
11
12
  "functions/gemeinsam/api-rand.js",
12
13
  "functions/gemeinsam/api-vokabular-v3.js",
13
14
  "functions/gemeinsam/beleg-toepfe.js",
15
+ "functions/gemeinsam/gutschein-beleg.js",
14
16
  "functions/gemeinsam/storno-core.js",
15
17
  "functions/gemeinsam/tip-core.js",
16
18
  "functions/gemeinsam/vat-buckets.js",
@@ -20,6 +22,7 @@
20
22
  "functions/test/unit/fixtures/v3-belege/beleg-welt.js",
21
23
  "functions/test/unit/fixtures/v3-rechnungen/rechnungs-welt.js",
22
24
  "functions/test/unit/fixtures/vertrag-v3/ablage.js",
25
+ "functions/test/unit/fixtures/vertrag-v3/gutschein-belege.js",
23
26
  "functions/test/unit/fixtures/vertrag-v3/vokabular.js",
24
27
  "functions/test/unit/fixtures/vertrag-v3/zahlbetrag.js",
25
28
  "functions/test/unit/helpers/kassen-fehlerstellen.js",
@@ -376,6 +379,109 @@
376
379
  "code": "receipt_not_found"
377
380
  }
378
381
  },
382
+ {
383
+ "channel": "api",
384
+ "name": "cancel_redeemed_multi_purpose_voucher",
385
+ "endpoint": "cancelReceipt",
386
+ "path": "/v3/cancelReceipt",
387
+ "params": {
388
+ "reason": "input_error",
389
+ "payments": [
390
+ {
391
+ "method": "cash",
392
+ "amountCents": -490,
393
+ "refundOf": "p1"
394
+ }
395
+ ],
396
+ "cashregisterId": "KECK-1",
397
+ "originalReceiptId": "KECK-1-ID-5"
398
+ },
399
+ "httpStatus": 200,
400
+ "headers": {
401
+ "Kasseneck-Api-Version": "v3",
402
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
403
+ },
404
+ "response": {
405
+ "status": "success",
406
+ "message": "",
407
+ "data": {
408
+ "cancellationOf": {
409
+ "receiptId": "KECK-1-ID-5",
410
+ "fullReceiptId": "00000000000000000000000000000000.000000000000000000000000000000000000000000000000000000008d3ea402",
411
+ "timeStamp": "2026-09-26T10:00:00"
412
+ },
413
+ "remaining": [
414
+ 0
415
+ ],
416
+ "receipt": {
417
+ "counter": 10,
418
+ "receiptType": "cancellation",
419
+ "zeroKind": null,
420
+ "receiptId": "KECK-1-ID-10",
421
+ "cashregisterId": "KECK-1",
422
+ "timeStamp": "2026-09-26T10:00:00",
423
+ "vouchers": [
424
+ {
425
+ "action": "redeem",
426
+ "type": "value",
427
+ "code": "····-····-5KNZ",
428
+ "name": "Gutschein",
429
+ "value": 17.5,
430
+ "voucherType": "multi_purpose",
431
+ "voucherId": "gmz1",
432
+ "valueCents": 1750,
433
+ "codeSuffix": "5KNZ"
434
+ }
435
+ ],
436
+ "paymentMethod": "cash",
437
+ "customerDetails": null,
438
+ "legalMessage": "STORNO zu KECK-1-ID-5 – Fehleingabe",
439
+ "customProjectId": null,
440
+ "creditCardProvider": null,
441
+ "amountRateStandard": -22.4,
442
+ "amountRateReduced1": 0,
443
+ "amountRateReduced2": 0,
444
+ "amountRateZero": 0,
445
+ "amountRateSpecial": 0,
446
+ "turnoverCounterAES256ICM": "C8hNRzjBX9Jz1rP64uIZZA==",
447
+ "signaturePreviousReceipt": "dETi/1Jv73U=",
448
+ "certificateSerialNumber": "ABC123",
449
+ "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000004dddd2a",
450
+ "payments": [
451
+ {
452
+ "id": "p1",
453
+ "method": "cash",
454
+ "amountCents": -490,
455
+ "refundOf": "p1"
456
+ }
457
+ ],
458
+ "sig": "eyJhbGciOiJFUzI1NiJ9.X1IxLUFUMTAwX0tFQ0stMV9LRUNLLTEtSUQtMTBfMjAyNi0wOS0yNlQxMDowMDowMF8tMjIsNDBfMCwwMF8wLDAwXzAsMDBfMCwwMF9VMVJQX0FCQzEyM19kRVRpLzFKdjczVT0.tr8bqyCQvn4jZjGfoa0YBPWoqMKFrDhdGxaLnyElofTz_UZZV1vTUf-rf4Ns6y7Q_1K2fdwwqq2Qu1k2kUcZCw",
459
+ "signatureSuccess": true,
460
+ "qr": "_R1-AT100_KECK-1_KECK-1-ID-10_2026-09-26T10:00:00_-22,40_0,00_0,00_0,00_0,00_U1RP_ABC123_dETi/1Jv73U=_tr8bqyCQvn4jZjGfoa0YBPWoqMKFrDhdGxaLnyElofTz/UZZV1vTUf+rf4Ns6y7Q/1K2fdwwqq2Qu1k2kUcZCw==",
461
+ "cancellationOf": {
462
+ "receiptId": "KECK-1-ID-5",
463
+ "fullReceiptId": "00000000000000000000000000000000.000000000000000000000000000000000000000000000000000000008d3ea402",
464
+ "timeStamp": "2026-09-26T10:00:00"
465
+ },
466
+ "cancellationReason": "input_error",
467
+ "headerVersionId": "auto1",
468
+ "layoutRuleset": 2,
469
+ "items": [
470
+ {
471
+ "name": "Blumenstrauß",
472
+ "quantity": 1,
473
+ "unitPriceCents": -2240,
474
+ "vatRate": 20,
475
+ "amount": 1,
476
+ "vat": 20,
477
+ "priceOneCents": -2240,
478
+ "priceOne": -22.4
479
+ }
480
+ ]
481
+ }
482
+ }
483
+ }
484
+ },
379
485
  {
380
486
  "channel": "app",
381
487
  "name": "cancel_full_card_refund",
@@ -732,6 +838,111 @@
732
838
  },
733
839
  "code": "receipt_not_found"
734
840
  }
841
+ },
842
+ {
843
+ "channel": "app",
844
+ "name": "cancel_redeemed_multi_purpose_voucher",
845
+ "endpoint": "cancelReceipt",
846
+ "path": "/api/v3/cancelReceipt",
847
+ "params": {
848
+ "reason": "input_error",
849
+ "payments": [
850
+ {
851
+ "method": "cash",
852
+ "amountCents": -490,
853
+ "refundOf": "p1"
854
+ }
855
+ ],
856
+ "cashregisterId": "KECK-1",
857
+ "originalReceiptId": "KECK-1-ID-5"
858
+ },
859
+ "httpStatus": 200,
860
+ "headers": {
861
+ "Kasseneck-Api-Version": "v3",
862
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
863
+ },
864
+ "response": {
865
+ "status": "success",
866
+ "message": "",
867
+ "data": {
868
+ "cancellationOf": {
869
+ "receiptId": "KECK-1-ID-5",
870
+ "fullReceiptId": "00000000000000000000000000000000.000000000000000000000000000000000000000000000000000000008d3ea402",
871
+ "timeStamp": "2026-09-26T10:00:00"
872
+ },
873
+ "remaining": [
874
+ 0
875
+ ],
876
+ "receipt": {
877
+ "counter": 10,
878
+ "receiptType": "cancellation",
879
+ "zeroKind": null,
880
+ "receiptId": "KECK-1-ID-10",
881
+ "cashregisterId": "KECK-1",
882
+ "timeStamp": "2026-09-26T10:00:00",
883
+ "vouchers": [
884
+ {
885
+ "action": "redeem",
886
+ "type": "value",
887
+ "code": "····-····-5KNZ",
888
+ "name": "Gutschein",
889
+ "value": 17.5,
890
+ "voucherType": "multi_purpose",
891
+ "voucherId": "gmz1",
892
+ "valueCents": 1750,
893
+ "codeSuffix": "5KNZ"
894
+ }
895
+ ],
896
+ "paymentMethod": "cash",
897
+ "customerDetails": null,
898
+ "legalMessage": "STORNO zu KECK-1-ID-5 – Fehleingabe",
899
+ "customProjectId": null,
900
+ "creditCardProvider": null,
901
+ "cardPaymentId": null,
902
+ "cardPaymentData": null,
903
+ "amountRateStandard": -22.4,
904
+ "amountRateReduced1": 0,
905
+ "amountRateReduced2": 0,
906
+ "amountRateZero": 0,
907
+ "amountRateSpecial": 0,
908
+ "turnoverCounterAES256ICM": "C8hNRzjBX9Jz1rP64uIZZA==",
909
+ "signaturePreviousReceipt": "dETi/1Jv73U=",
910
+ "certificateSerialNumber": "ABC123",
911
+ "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000004dddd2a",
912
+ "payments": [
913
+ {
914
+ "id": "p1",
915
+ "method": "cash",
916
+ "amountCents": -490,
917
+ "refundOf": "p1"
918
+ }
919
+ ],
920
+ "sig": "eyJhbGciOiJFUzI1NiJ9.X1IxLUFUMTAwX0tFQ0stMV9LRUNLLTEtSUQtMTBfMjAyNi0wOS0yNlQxMDowMDowMF8tMjIsNDBfMCwwMF8wLDAwXzAsMDBfMCwwMF9VMVJQX0FCQzEyM19kRVRpLzFKdjczVT0.tr8bqyCQvn4jZjGfoa0YBPWoqMKFrDhdGxaLnyElofTz_UZZV1vTUf-rf4Ns6y7Q_1K2fdwwqq2Qu1k2kUcZCw",
921
+ "signatureSuccess": true,
922
+ "qr": "_R1-AT100_KECK-1_KECK-1-ID-10_2026-09-26T10:00:00_-22,40_0,00_0,00_0,00_0,00_U1RP_ABC123_dETi/1Jv73U=_tr8bqyCQvn4jZjGfoa0YBPWoqMKFrDhdGxaLnyElofTz/UZZV1vTUf+rf4Ns6y7Q/1K2fdwwqq2Qu1k2kUcZCw==",
923
+ "cancellationOf": {
924
+ "receiptId": "KECK-1-ID-5",
925
+ "fullReceiptId": "00000000000000000000000000000000.000000000000000000000000000000000000000000000000000000008d3ea402",
926
+ "timeStamp": "2026-09-26T10:00:00"
927
+ },
928
+ "cancellationReason": "input_error",
929
+ "headerVersionId": "auto1",
930
+ "layoutRuleset": 2,
931
+ "items": [
932
+ {
933
+ "name": "Blumenstrauß",
934
+ "quantity": 1,
935
+ "unitPriceCents": -2240,
936
+ "vatRate": 20,
937
+ "amount": 1,
938
+ "vat": 20,
939
+ "priceOneCents": -2240,
940
+ "priceOne": -22.4
941
+ }
942
+ ]
943
+ }
944
+ }
945
+ }
735
946
  }
736
947
  ]
737
948
  }
@@ -2,15 +2,17 @@
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
4
  "sha256": "2781c0716b6ba63ef2c14eb5a3e6abab37adf42af72c9aee60bbbb1ebd716cf1",
5
- "inputsSha256": "95fd7b1f3704811d3a3f79b1dbb6aea668e8c0e3a663e5b0ca9c07f2e11e37b5",
6
- "backendPackage": "@kreiseck/kasseneck-api@0.33.0",
5
+ "inputsSha256": "29f295ee139942d79758255d7b6284e2810477e4e22249d9b703c0110129e78b",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.33.1",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
9
9
  "functions-kasse/test/unit/fixtures/kassen-codes-v3.js",
10
+ "functions/aktivierung-api-core.js",
10
11
  "functions/beleg-mail-core.js",
11
12
  "functions/gemeinsam/api-rand.js",
12
13
  "functions/gemeinsam/api-vokabular-v3.js",
13
14
  "functions/gemeinsam/beleg-toepfe.js",
15
+ "functions/gemeinsam/gutschein-beleg.js",
14
16
  "functions/gemeinsam/storno-core.js",
15
17
  "functions/gemeinsam/tip-core.js",
16
18
  "functions/gemeinsam/vat-buckets.js",
@@ -20,6 +22,7 @@
20
22
  "functions/test/unit/fixtures/v3-belege/beleg-welt.js",
21
23
  "functions/test/unit/fixtures/v3-rechnungen/rechnungs-welt.js",
22
24
  "functions/test/unit/fixtures/vertrag-v3/ablage.js",
25
+ "functions/test/unit/fixtures/vertrag-v3/gutschein-belege.js",
23
26
  "functions/test/unit/fixtures/vertrag-v3/vokabular.js",
24
27
  "functions/test/unit/fixtures/vertrag-v3/zahlbetrag.js",
25
28
  "functions/test/unit/helpers/kassen-fehlerstellen.js",
@@ -2,10 +2,10 @@
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
4
  "default": {
5
- "sha256": "7a9ab24d57ab048d549628bd7e64e5e8b723b25bfbee035d883c9d6f9bafef3b",
5
+ "sha256": "2cc77736cae05b3d7c2e67d59bd6bd7cfb9f5484eed54cf236e3a412ab9e78f9",
6
6
  "head": [],
7
- "inputsSha256": "3b6c5c73af674b969019c273f50068879923cee243dafa490e0c7335107c4e79",
8
- "backendPackage": "@kreiseck/kasseneck-api@0.33.0",
7
+ "inputsSha256": "684e236f4e84e7befba5ebda44021eefc4de50a6f2507cf4de5b456e9a2ed790",
8
+ "backendPackage": "@kreiseck/kasseneck-api@0.33.1",
9
9
  "inputs": [
10
10
  "functions-kasse/test/unit/fixtures/kassen-welt.js",
11
11
  "functions/gemeinsam/api-rand.js",
@@ -24,7 +24,7 @@
24
24
  "note",
25
25
  "baseline"
26
26
  ],
27
- "inputsSha256": "88ae97429f7c74025f6549ac46a0db291a0407bd070e875cc93c2fc3d3f1d6d3",
27
+ "inputsSha256": "1efd9f548d9b578193c3dbf4aae041f4ffaa1adcaba01a7c5e2df7ba882efa94",
28
28
  "backendPackage": "@kreiseck/kasseneck-api@0.14.0",
29
29
  "inputs": [
30
30
  "functions-kasse/gemeinsam/api-rand.js",
@@ -4933,6 +4933,227 @@
4933
4933
  }
4934
4934
  }
4935
4935
  },
4936
+ "checkVoucher": {
4937
+ "codebase": "default",
4938
+ "cases": {
4939
+ "unknown": {
4940
+ "rate_limits/gutscheinpruef_kasse_87c57ff9e564bac5e069fdb2b4a812c9_2026092610": {
4941
+ "fehl": 1,
4942
+ "loeschenAb": "2026-09-26T10:00:00.000Z"
4943
+ },
4944
+ "rate_limits/gutscheinpruef_konto_88ddbabbd47036960630df27c625f9c1": {
4945
+ "count": 1,
4946
+ "windowStart": 1790409600000
4947
+ }
4948
+ },
4949
+ "success_cashier": {
4950
+ "rate_limits/gutscheinpruef_konto_88ddbabbd47036960630df27c625f9c1": {
4951
+ "count": 1,
4952
+ "windowStart": 1790409600000
4953
+ }
4954
+ },
4955
+ "success_service": {
4956
+ "rate_limits/gutscheinpruef_konto_88ddbabbd47036960630df27c625f9c1": {
4957
+ "count": 1,
4958
+ "windowStart": 1790409600000
4959
+ }
4960
+ },
4961
+ "success_exempt": {
4962
+ "rate_limits/gutscheinpruef_konto_88ddbabbd47036960630df27c625f9c1": {
4963
+ "count": 1,
4964
+ "windowStart": 1790409600000
4965
+ }
4966
+ },
4967
+ "success_device": {
4968
+ "rate_limits/gutscheinpruef_konto_88ddbabbd47036960630df27c625f9c1": {
4969
+ "count": 1,
4970
+ "windowStart": 1790409600000
4971
+ }
4972
+ }
4973
+ }
4974
+ },
4975
+ "reprintVoucherLabel": {
4976
+ "codebase": "default",
4977
+ "cases": {
4978
+ "success_manager": {
4979
+ "users/kw_betrieb1/gutscheine/gmz1": {
4980
+ "art": "mehrzweck",
4981
+ "status": "aktiv",
4982
+ "nennwertCents": 5000,
4983
+ "saldoCents": 3200,
4984
+ "satzBp": null,
4985
+ "artikel": null,
4986
+ "kleinunternehmer": false,
4987
+ "zahlartVerkauf": "cash",
4988
+ "gueltigkeit": {
4989
+ "muster": "1+3",
4990
+ "einloesbarBis": "2027-09-20",
4991
+ "rueckzahlbarBis": "2030-09-20",
4992
+ "gueltigBis": null
4993
+ },
4994
+ "ausgabe": {
4995
+ "receiptId": "KASSE1-ID-9",
4996
+ "fullReceiptId": null,
4997
+ "cashregisterId": "KASSE1",
4998
+ "at": 1790323200000,
4999
+ "tag": "2026-09-20"
5000
+ },
5001
+ "codeHash": "95b7fb7dace205b0dc7d7cd461413e182bde6dae82a8855371b3c89e03c706e7",
5002
+ "codeEnde": "7DHP",
5003
+ "druck": {
5004
+ "anzahl": 1,
5005
+ "zuletztAt": 1790409600000
5006
+ },
5007
+ "angelegtAt": 1790323200000,
5008
+ "geaendertAt": 1790409600000
5009
+ },
5010
+ "users/kw_betrieb1/kassen_protokoll/auto1": {
5011
+ "zeit": 1790409600000,
5012
+ "bereich": "gutschein",
5013
+ "aktion": "nachgedruckt",
5014
+ "quelle": "kasse",
5015
+ "von": {
5016
+ "uid": "ru_chef",
5017
+ "rolle": "kassenbenutzer",
5018
+ "name": "Anna Chef"
5019
+ },
5020
+ "geraetId": null,
5021
+ "antragId": null,
5022
+ "aenderungen": [
5023
+ {
5024
+ "feld": "druck.anzahl",
5025
+ "alt": 0,
5026
+ "neu": 1
5027
+ }
5028
+ ],
5029
+ "gutschein": {
5030
+ "id": "gmz1",
5031
+ "name": "····-····-7DHP"
5032
+ }
5033
+ }
5034
+ },
5035
+ "success_service": {
5036
+ "users/kw_betrieb1/gutscheine/gls1": {
5037
+ "art": "leistung",
5038
+ "status": "aktiv",
5039
+ "nennwertCents": 10500,
5040
+ "stueck": 3,
5041
+ "stueckOffen": 2,
5042
+ "satzBp": 2000,
5043
+ "artikel": {
5044
+ "id": "art_mani",
5045
+ "name": "Manikuere",
5046
+ "satzBp": 2000,
5047
+ "preisCents": 3500
5048
+ },
5049
+ "kleinunternehmer": false,
5050
+ "zahlartVerkauf": "cash",
5051
+ "gueltigkeit": {
5052
+ "muster": "unbefristet",
5053
+ "einloesbarBis": null,
5054
+ "rueckzahlbarBis": null,
5055
+ "gueltigBis": null
5056
+ },
5057
+ "ausgabe": {
5058
+ "receiptId": "KASSE1-ID-8",
5059
+ "fullReceiptId": null,
5060
+ "cashregisterId": "KASSE1",
5061
+ "at": 1790323200000,
5062
+ "tag": "2026-09-20"
5063
+ },
5064
+ "codeHash": "159c6aeccb504ccc9b0a113f3ebbb011b8902f5282b76099433468aa60e983c7",
5065
+ "codeEnde": "7DJG",
5066
+ "druck": {
5067
+ "anzahl": 1,
5068
+ "zuletztAt": 1790409600000
5069
+ },
5070
+ "angelegtAt": 1790323200000,
5071
+ "geaendertAt": 1790409600000
5072
+ },
5073
+ "users/kw_betrieb1/kassen_protokoll/auto1": {
5074
+ "zeit": 1790409600000,
5075
+ "bereich": "gutschein",
5076
+ "aktion": "nachgedruckt",
5077
+ "quelle": "kasse",
5078
+ "von": {
5079
+ "uid": "ru_chef",
5080
+ "rolle": "kassenbenutzer",
5081
+ "name": "Anna Chef"
5082
+ },
5083
+ "geraetId": null,
5084
+ "antragId": null,
5085
+ "aenderungen": [
5086
+ {
5087
+ "feld": "druck.anzahl",
5088
+ "alt": 0,
5089
+ "neu": 1
5090
+ }
5091
+ ],
5092
+ "gutschein": {
5093
+ "id": "gls1",
5094
+ "name": "····-····-7DJG"
5095
+ }
5096
+ }
5097
+ },
5098
+ "success_device": {
5099
+ "users/kw_betrieb1/gutscheine/gmz1": {
5100
+ "art": "mehrzweck",
5101
+ "status": "aktiv",
5102
+ "nennwertCents": 5000,
5103
+ "saldoCents": 3200,
5104
+ "satzBp": null,
5105
+ "artikel": null,
5106
+ "kleinunternehmer": false,
5107
+ "zahlartVerkauf": "cash",
5108
+ "gueltigkeit": {
5109
+ "muster": "1+3",
5110
+ "einloesbarBis": "2027-09-20",
5111
+ "rueckzahlbarBis": "2030-09-20",
5112
+ "gueltigBis": null
5113
+ },
5114
+ "ausgabe": {
5115
+ "receiptId": "KASSE1-ID-9",
5116
+ "fullReceiptId": null,
5117
+ "cashregisterId": "KASSE1",
5118
+ "at": 1790323200000,
5119
+ "tag": "2026-09-20"
5120
+ },
5121
+ "codeHash": "95b7fb7dace205b0dc7d7cd461413e182bde6dae82a8855371b3c89e03c706e7",
5122
+ "codeEnde": "7DHP",
5123
+ "druck": {
5124
+ "anzahl": 1,
5125
+ "zuletztAt": 1790409600000
5126
+ },
5127
+ "angelegtAt": 1790323200000,
5128
+ "geaendertAt": 1790409600000
5129
+ },
5130
+ "users/kw_betrieb1/kassen_protokoll/auto1": {
5131
+ "zeit": 1790409600000,
5132
+ "bereich": "gutschein",
5133
+ "aktion": "nachgedruckt",
5134
+ "quelle": "kasse",
5135
+ "von": {
5136
+ "uid": null,
5137
+ "rolle": "geraet",
5138
+ "name": null
5139
+ },
5140
+ "geraetId": null,
5141
+ "antragId": null,
5142
+ "aenderungen": [
5143
+ {
5144
+ "feld": "druck.anzahl",
5145
+ "alt": 0,
5146
+ "neu": 1
5147
+ }
5148
+ ],
5149
+ "gutschein": {
5150
+ "id": "gmz1",
5151
+ "name": "····-····-7DHP"
5152
+ }
5153
+ }
5154
+ }
5155
+ }
5156
+ },
4936
5157
  "getMyDrawerState": {
4937
5158
  "codebase": "kasse",
4938
5159
  "cases": {
@@ -2,15 +2,17 @@
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
4
  "sha256": "364d5c9d290532b0a41d1077ee9fdd1b78f69a1372e98d8bad405e5893b0ad53",
5
- "inputsSha256": "95fd7b1f3704811d3a3f79b1dbb6aea668e8c0e3a663e5b0ca9c07f2e11e37b5",
6
- "backendPackage": "@kreiseck/kasseneck-api@0.33.0",
5
+ "inputsSha256": "29f295ee139942d79758255d7b6284e2810477e4e22249d9b703c0110129e78b",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.33.1",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
9
9
  "functions-kasse/test/unit/fixtures/kassen-codes-v3.js",
10
+ "functions/aktivierung-api-core.js",
10
11
  "functions/beleg-mail-core.js",
11
12
  "functions/gemeinsam/api-rand.js",
12
13
  "functions/gemeinsam/api-vokabular-v3.js",
13
14
  "functions/gemeinsam/beleg-toepfe.js",
15
+ "functions/gemeinsam/gutschein-beleg.js",
14
16
  "functions/gemeinsam/storno-core.js",
15
17
  "functions/gemeinsam/tip-core.js",
16
18
  "functions/gemeinsam/vat-buckets.js",
@@ -20,6 +22,7 @@
20
22
  "functions/test/unit/fixtures/v3-belege/beleg-welt.js",
21
23
  "functions/test/unit/fixtures/v3-rechnungen/rechnungs-welt.js",
22
24
  "functions/test/unit/fixtures/vertrag-v3/ablage.js",
25
+ "functions/test/unit/fixtures/vertrag-v3/gutschein-belege.js",
23
26
  "functions/test/unit/fixtures/vertrag-v3/vokabular.js",
24
27
  "functions/test/unit/fixtures/vertrag-v3/zahlbetrag.js",
25
28
  "functions/test/unit/helpers/kassen-fehlerstellen.js",