@kreiseck/kasseneck-api 1.16.0 → 1.17.1

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 (70) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/client/receipts.js +8 -0
  3. package/dist/cjs/client/reports.d.ts +10 -9
  4. package/dist/cjs/client/reports.js +10 -9
  5. package/dist/cjs/index.d.ts +1 -1
  6. package/dist/cjs/models/voucher.d.ts +46 -4
  7. package/dist/cjs/models/voucher.js +58 -11
  8. package/dist/cjs/pos/artikel.d.ts +9 -0
  9. package/dist/cjs/pos/artikel.js +1 -0
  10. package/dist/cjs/pos/gutschein.d.ts +107 -2
  11. package/dist/cjs/pos/gutschein.js +124 -4
  12. package/dist/cjs/pos/index.d.ts +1 -1
  13. package/dist/cjs/pos/index.js +7 -3
  14. package/dist/cjs/pos/texte.d.ts +39 -0
  15. package/dist/cjs/pos/texte.js +22 -0
  16. package/dist/cjs/receipt/due.d.ts +20 -9
  17. package/dist/cjs/receipt/due.js +1 -0
  18. package/dist/cjs/receipt/gutschein-plan.d.ts +23 -7
  19. package/dist/cjs/receipt/gutschein-plan.js +67 -2
  20. package/dist/cjs/receipt/index.d.ts +1 -1
  21. package/dist/cjs/stored/draht.js +10 -2
  22. package/dist/cjs/stored/vokabular.d.ts +1 -1
  23. package/dist/cjs/stored/vokabular.js +84 -3
  24. package/dist/cjs/version.d.ts +1 -1
  25. package/dist/cjs/version.js +1 -1
  26. package/dist/esm/client/receipts.js +8 -0
  27. package/dist/esm/client/reports.d.ts +10 -9
  28. package/dist/esm/client/reports.js +10 -9
  29. package/dist/esm/index.d.ts +1 -1
  30. package/dist/esm/models/voucher.d.ts +46 -4
  31. package/dist/esm/models/voucher.js +56 -11
  32. package/dist/esm/pos/artikel.d.ts +9 -0
  33. package/dist/esm/pos/artikel.js +1 -0
  34. package/dist/esm/pos/gutschein.d.ts +107 -2
  35. package/dist/esm/pos/gutschein.js +123 -3
  36. package/dist/esm/pos/index.d.ts +1 -1
  37. package/dist/esm/pos/index.js +2 -2
  38. package/dist/esm/pos/texte.d.ts +39 -0
  39. package/dist/esm/pos/texte.js +22 -0
  40. package/dist/esm/receipt/due.d.ts +20 -9
  41. package/dist/esm/receipt/due.js +1 -0
  42. package/dist/esm/receipt/gutschein-plan.d.ts +23 -7
  43. package/dist/esm/receipt/gutschein-plan.js +68 -3
  44. package/dist/esm/receipt/index.d.ts +1 -1
  45. package/dist/esm/stored/draht.js +10 -2
  46. package/dist/esm/stored/vokabular.d.ts +1 -1
  47. package/dist/esm/stored/vokabular.js +84 -3
  48. package/dist/esm/version.d.ts +1 -1
  49. package/dist/esm/version.js +1 -1
  50. package/fixtures/hobex-hps-codes.json +1 -1
  51. package/fixtures/invoice-api.schema.json +1 -1
  52. package/fixtures/invoice-texts.json +1 -1
  53. package/fixtures/pos-texts.json +43 -2
  54. package/fixtures/receipt-due-voucher-generated.json +485 -483
  55. package/fixtures/surface.json +17 -1
  56. package/fixtures/v3/README.md +8 -1
  57. package/fixtures/v3/antworten/belege.json +27 -12
  58. package/fixtures/v3/antworten/belegmail.json +4 -1
  59. package/fixtures/v3/antworten/berichte.json +151 -0
  60. package/fixtures/v3/antworten/kasse-belege.json +27 -12
  61. package/fixtures/v3/antworten/kasse.json +366 -9
  62. package/fixtures/v3/antworten/lager.json +1 -1
  63. package/fixtures/v3/antworten/rechnungen.json +4 -1
  64. package/fixtures/v3/antworten/storno.json +4 -1
  65. package/fixtures/v3/stored/belege.json +4 -1
  66. package/fixtures/v3/stored/kasse.json +2 -2
  67. package/fixtures/v3/stored/rechnungen.json +4 -1
  68. package/fixtures/v3/v3-vokabular.json +417 -10
  69. package/fixtures/v3/zahlbetrag-faelle.json +29 -10
  70. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.16.0",
2
+ "version": "1.17.1",
3
3
  "baseUrls": {
4
4
  "public": "https://api.kasseneck.at/v3",
5
5
  "pos": "https://kasse.kasseneck.at/api/v3"
@@ -832,12 +832,20 @@
832
832
  "vehicle",
833
833
  "other"
834
834
  ],
835
+ "voucherAmountModes": [
836
+ "free",
837
+ "fixed"
838
+ ],
835
839
  "voucherKinds": [
836
840
  "multi_purpose",
837
841
  "single_purpose",
838
842
  "service",
839
843
  "promotion"
840
844
  ],
845
+ "voucherPayouts": [
846
+ "allowed",
847
+ "never"
848
+ ],
841
849
  "voucherStatuses": [
842
850
  "active",
843
851
  "used_up",
@@ -845,6 +853,14 @@
845
853
  "paid_out",
846
854
  "cancelled",
847
855
  "blocked"
856
+ ],
857
+ "voucherTypeKinds": [
858
+ "multi_purpose",
859
+ "single_purpose"
860
+ ],
861
+ "voucherTypeValidityPatterns": [
862
+ "unlimited",
863
+ "years"
848
864
  ]
849
865
  },
850
866
  "partner": {
@@ -14,7 +14,7 @@ Erzeugt von Jest-Tests in zwei Codebases (jede übersetzt mit ihrem eigenen Rand
14
14
 
15
15
  | Test | schreibt |
16
16
  | --- | --- |
17
- | `functions/test/unit/v3-vertrag-export.test.js` | `v3-vokabular.json`, `antworten/belege.json`, `antworten/kasse-belege.json`, `antworten/storno.json`, `antworten/belegmail.json`, `antworten/rechnungen.json`, `stored/belege.json`, `stored/rechnungen.json`, `zahlbetrag-faelle.json` |
17
+ | `functions/test/unit/v3-vertrag-export.test.js` | `v3-vokabular.json`, `antworten/belege.json`, `antworten/kasse-belege.json`, `antworten/storno.json`, `antworten/belegmail.json`, `antworten/rechnungen.json`, `antworten/berichte.json`, `stored/belege.json`, `stored/rechnungen.json`, `zahlbetrag-faelle.json` |
18
18
  | `functions/test/unit/v3-vertrag-export-kassenweg.test.js` | Teil `default` von `antworten/kasse.json` und `stored/kasse.json` (6 Beleg-Endpunkte der Kasse) |
19
19
  | `functions-kasse/test/unit/v3-vertrag-export.test.js` | Teil `kasse` derselben zwei Dateien (die übrigen 19 Kassen-Endpunkte) |
20
20
  | `functions-kasse/test/unit/v3-vertrag-export-lager.test.js` | `antworten/lager.json` (Lager-API, Stufe 5a) |
@@ -109,6 +109,13 @@ Code-Änderung zusammen einchecken.
109
109
  `platform_fallback`, Fehler).
110
110
  - **`antworten/rechnungen.json`**: Rechnungs-API (Probelauf, Festschreiben, Lesen,
111
111
  Liste, Storno, Gutschrift, Zahlung, Fehler).
112
+ - **`antworten/berichte.json`**: `getCashregisterReport` unter `/v3` (Kanal `api`), der
113
+ Binärweg. Ein Fall mit `file` ist die Datei: HTTP 200, `Content-Type: application/pdf`,
114
+ die Bytes beginnen mit `file.startsWith` (`%PDF-`); mehr vom PDF steht hier nicht, der
115
+ Rest hängt an Schrift und Satz. Jede Ablehnung kommt ebenfalls mit HTTP 200, als Hülle
116
+ mit Code (`period_not_closed` für den laufenden Monat und heute, `period_in_future`,
117
+ `invalid_period`). Ein Paket entscheidet an den ersten Bytes, nicht am Inhaltstyp, und
118
+ wirft die Hülle wie auf dem JSON-Weg.
112
119
  - **`antworten/kasse.json`**: alle 25 Kassen-Endpunkte unter `/api/v3`, je Fall
113
120
  (englischer Name) Methode, Aufrufer, Parameter, HTTP-Status, Kopfzeilen und Antwort.
114
121
  - **`antworten/lager.json`**: Lager-API unter `/v3` (Kanal `api`) in Ablaufreihenfolge an
@@ -1,14 +1,15 @@
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": "474a5fe11f758f005bce30cefb74b9e122284b09bf0a4677a4a7b16b19c33211",
5
- "inputsSha256": "6c693f1ef121a4f4e5d1670929ea336233c0c20476993264f989bdf4f548a797",
4
+ "sha256": "34ee7654a5df2ecf75982d65af731b9a501d978b4ef7fae041817cb2d4915343",
5
+ "inputsSha256": "931df962ad989229c326fa42dbfda9a5535c23bdd9a52425f19d53dfaa2d6abc",
6
6
  "backendPackage": "@kreiseck/kasseneck-api@0.35.0",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
9
9
  "functions-kasse/test/unit/fixtures/kassen-codes-v3.js",
10
10
  "functions/aktivierung-api-core.js",
11
11
  "functions/beleg-mail-core.js",
12
+ "functions/bericht-v2-liefern.js",
12
13
  "functions/gemeinsam/api-rand.js",
13
14
  "functions/gemeinsam/api-vokabular-v3.js",
14
15
  "functions/gemeinsam/beleg-toepfe.js",
@@ -19,6 +20,8 @@
19
20
  "functions/gemeinsam/zahlungen-core.js",
20
21
  "functions/invoice-api-core.js",
21
22
  "functions/invoice-api-endpoints.js",
23
+ "functions/report-endpoints.js",
24
+ "functions/report-v2.js",
22
25
  "functions/test/unit/fixtures/v3-belege/beleg-welt.js",
23
26
  "functions/test/unit/fixtures/v3-rechnungen/rechnungs-welt.js",
24
27
  "functions/test/unit/fixtures/vertrag-v3/ablage.js",
@@ -5153,6 +5156,7 @@
5153
5156
  "vouchers": [
5154
5157
  {
5155
5158
  "action": "sell",
5159
+ "typeId": "vt_ez20",
5156
5160
  "type": "single_purpose",
5157
5161
  "amountCents": 5000
5158
5162
  }
@@ -5200,7 +5204,10 @@
5200
5204
  "voucherType": "single_purpose",
5201
5205
  "amountCents": 5000,
5202
5206
  "vatRateBp": 2000,
5203
- "name": "Einzweckgutschein 20 %",
5207
+ "name": "Geschenkgutschein (Einzweckgutschein 20 %)",
5208
+ "typeId": "vt_ez20",
5209
+ "typeName": "Geschenkgutschein",
5210
+ "payout": "never",
5204
5211
  "code": "····-····-JJJ2",
5205
5212
  "codeSuffix": "JJJ2",
5206
5213
  "voucherId": "auto2"
@@ -5234,7 +5241,7 @@
5234
5241
  "layoutRuleset": 2,
5235
5242
  "items": [
5236
5243
  {
5237
- "name": "Einzweckgutschein 20 %",
5244
+ "name": "Geschenkgutschein (Einzweckgutschein 20 %)",
5238
5245
  "vat": 20,
5239
5246
  "vatRate": 20,
5240
5247
  "priceOne": 50,
@@ -5349,7 +5356,7 @@
5349
5356
  "kind": "columns",
5350
5357
  "columns": [
5351
5358
  {
5352
- "text": "1 x Einzweckgutschein 20 % ····-JJJ2",
5359
+ "text": "1 x Geschenkgutschein (Einzweckgutschein 20 %) ····-JJJ2",
5353
5360
  "width": 7,
5354
5361
  "align": "left"
5355
5362
  },
@@ -5495,10 +5502,12 @@
5495
5502
  "index": 0,
5496
5503
  "codeSuffix": "JJJ2",
5497
5504
  "faceValueCents": 5000,
5505
+ "typeId": "vt_ez20",
5506
+ "typeName": "Geschenkgutschein",
5498
5507
  "validity": {
5499
- "pattern": "1+3",
5500
- "redeemableUntil": "2027-09-26",
5501
- "refundableUntil": "2030-09-26",
5508
+ "pattern": "unlimited",
5509
+ "redeemableUntil": null,
5510
+ "refundableUntil": null,
5502
5511
  "validUntil": null
5503
5512
  }
5504
5513
  }
@@ -5516,7 +5525,7 @@
5516
5525
  "vouchers": [
5517
5526
  {
5518
5527
  "action": "sell",
5519
- "type": "multi_purpose",
5528
+ "typeId": "vt_mz",
5520
5529
  "amountCents": 5000
5521
5530
  }
5522
5531
  ],
@@ -5563,7 +5572,10 @@
5563
5572
  "voucherType": "multi_purpose",
5564
5573
  "value": 50,
5565
5574
  "valueCents": 5000,
5566
- "name": "Mehrzweckgutschein",
5575
+ "name": "Geschenkgutschein (Mehrzweckgutschein)",
5576
+ "typeId": "vt_mz",
5577
+ "typeName": "Geschenkgutschein",
5578
+ "payout": "allowed",
5567
5579
  "code": "····-····-NNNY",
5568
5580
  "codeSuffix": "NNNY",
5569
5581
  "voucherId": "auto4"
@@ -5852,10 +5864,13 @@
5852
5864
  "index": 0,
5853
5865
  "codeSuffix": "NNNY",
5854
5866
  "faceValueCents": 5000,
5867
+ "typeId": "vt_mz",
5868
+ "typeName": "Geschenkgutschein",
5855
5869
  "validity": {
5856
5870
  "pattern": "1+3",
5857
- "redeemableUntil": "2027-09-26",
5858
- "refundableUntil": "2030-09-26",
5871
+ "redeemableYears": 3,
5872
+ "redeemableUntil": "2029-09-26",
5873
+ "refundableUntil": "2032-09-26",
5859
5874
  "validUntil": null
5860
5875
  }
5861
5876
  }
@@ -2,13 +2,14 @@
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": "265bcf3e14cdea33ec3c4df399eb487d40c0d7793ee23d2ee12bcf664bcad550",
5
- "inputsSha256": "6c693f1ef121a4f4e5d1670929ea336233c0c20476993264f989bdf4f548a797",
5
+ "inputsSha256": "931df962ad989229c326fa42dbfda9a5535c23bdd9a52425f19d53dfaa2d6abc",
6
6
  "backendPackage": "@kreiseck/kasseneck-api@0.35.0",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
9
9
  "functions-kasse/test/unit/fixtures/kassen-codes-v3.js",
10
10
  "functions/aktivierung-api-core.js",
11
11
  "functions/beleg-mail-core.js",
12
+ "functions/bericht-v2-liefern.js",
12
13
  "functions/gemeinsam/api-rand.js",
13
14
  "functions/gemeinsam/api-vokabular-v3.js",
14
15
  "functions/gemeinsam/beleg-toepfe.js",
@@ -19,6 +20,8 @@
19
20
  "functions/gemeinsam/zahlungen-core.js",
20
21
  "functions/invoice-api-core.js",
21
22
  "functions/invoice-api-endpoints.js",
23
+ "functions/report-endpoints.js",
24
+ "functions/report-v2.js",
22
25
  "functions/test/unit/fixtures/v3-belege/beleg-welt.js",
23
26
  "functions/test/unit/fixtures/v3-rechnungen/rechnungs-welt.js",
24
27
  "functions/test/unit/fixtures/vertrag-v3/ablage.js",
@@ -0,0 +1,151 @@
1
+ {
2
+ "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
+ "_quelle": {
4
+ "sha256": "497fe59db3414bf3143c0102eedfd371e165ad2f1878e74a9e1e31bd9413f1b0",
5
+ "inputsSha256": "931df962ad989229c326fa42dbfda9a5535c23bdd9a52425f19d53dfaa2d6abc",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.35.0",
7
+ "inputs": [
8
+ "docs/api/fehlercodes.json",
9
+ "functions-kasse/test/unit/fixtures/kassen-codes-v3.js",
10
+ "functions/aktivierung-api-core.js",
11
+ "functions/beleg-mail-core.js",
12
+ "functions/bericht-v2-liefern.js",
13
+ "functions/gemeinsam/api-rand.js",
14
+ "functions/gemeinsam/api-vokabular-v3.js",
15
+ "functions/gemeinsam/beleg-toepfe.js",
16
+ "functions/gemeinsam/gutschein-beleg.js",
17
+ "functions/gemeinsam/storno-core.js",
18
+ "functions/gemeinsam/tip-core.js",
19
+ "functions/gemeinsam/vat-buckets.js",
20
+ "functions/gemeinsam/zahlungen-core.js",
21
+ "functions/invoice-api-core.js",
22
+ "functions/invoice-api-endpoints.js",
23
+ "functions/report-endpoints.js",
24
+ "functions/report-v2.js",
25
+ "functions/test/unit/fixtures/v3-belege/beleg-welt.js",
26
+ "functions/test/unit/fixtures/v3-rechnungen/rechnungs-welt.js",
27
+ "functions/test/unit/fixtures/vertrag-v3/ablage.js",
28
+ "functions/test/unit/fixtures/vertrag-v3/gutschein-belege.js",
29
+ "functions/test/unit/fixtures/vertrag-v3/vokabular.js",
30
+ "functions/test/unit/fixtures/vertrag-v3/zahlbetrag.js",
31
+ "functions/test/unit/helpers/kassen-fehlerstellen.js",
32
+ "functions/test/unit/v3-vertrag-export.test.js"
33
+ ]
34
+ },
35
+ "channel": "api",
36
+ "note": "Binaerweg: ein Fall mit file ist die Datei (HTTP 200, Content-Type application/pdf, die Bytes beginnen mit file.startsWith), ein Fall mit response die Ablehnung als Huelle, ebenfalls mit HTTP 200. Entschieden wird an den ersten Bytes, nicht am Inhaltstyp.",
37
+ "cases": [
38
+ {
39
+ "name": "report_closed_day",
40
+ "endpoint": "getCashregisterReport",
41
+ "path": "/v3/getCashregisterReport",
42
+ "params": {
43
+ "year": 2026,
44
+ "month": 9,
45
+ "day": 25
46
+ },
47
+ "httpStatus": 200,
48
+ "headers": {
49
+ "Kasseneck-Api-Version": "v3",
50
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version",
51
+ "Content-Type": "application/pdf",
52
+ "Content-Disposition": "attachment; filename=daily-report_KECK-1_2026-09-25.pdf"
53
+ },
54
+ "file": {
55
+ "startsWith": "%PDF-"
56
+ }
57
+ },
58
+ {
59
+ "name": "error_period_not_closed",
60
+ "endpoint": "getCashregisterReport",
61
+ "path": "/v3/getCashregisterReport",
62
+ "params": {
63
+ "year": 2026,
64
+ "month": 9
65
+ },
66
+ "httpStatus": 200,
67
+ "headers": {
68
+ "Kasseneck-Api-Version": "v3",
69
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
70
+ },
71
+ "response": {
72
+ "status": "error",
73
+ "message": "Ungültige Daten: Der Monat ist noch nicht abgeschlossen – Monatsbericht erst ab dem Folgemonat.",
74
+ "data": {
75
+ "code": "period_not_closed"
76
+ },
77
+ "code": "period_not_closed"
78
+ }
79
+ },
80
+ {
81
+ "name": "error_period_not_closed_today",
82
+ "endpoint": "getCashregisterReport",
83
+ "path": "/v3/getCashregisterReport",
84
+ "params": {
85
+ "year": 2026,
86
+ "month": 9,
87
+ "day": 26
88
+ },
89
+ "httpStatus": 200,
90
+ "headers": {
91
+ "Kasseneck-Api-Version": "v3",
92
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
93
+ },
94
+ "response": {
95
+ "status": "error",
96
+ "message": "Der Tag ist noch nicht abgeschlossen – der Tagesbericht ist ab morgen verfügbar.",
97
+ "data": {
98
+ "code": "period_not_closed"
99
+ },
100
+ "code": "period_not_closed"
101
+ }
102
+ },
103
+ {
104
+ "name": "error_period_in_future",
105
+ "endpoint": "getCashregisterReport",
106
+ "path": "/v3/getCashregisterReport",
107
+ "params": {
108
+ "year": 2026,
109
+ "month": 9,
110
+ "day": 27
111
+ },
112
+ "httpStatus": 200,
113
+ "headers": {
114
+ "Kasseneck-Api-Version": "v3",
115
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
116
+ },
117
+ "response": {
118
+ "status": "error",
119
+ "message": "Ungültige Daten: day liegt in der Zukunft.",
120
+ "data": {
121
+ "code": "period_in_future"
122
+ },
123
+ "code": "period_in_future"
124
+ }
125
+ },
126
+ {
127
+ "name": "error_invalid_period",
128
+ "endpoint": "getCashregisterReport",
129
+ "path": "/v3/getCashregisterReport",
130
+ "params": {
131
+ "year": 2026,
132
+ "month": 9,
133
+ "start": "2026-09-01",
134
+ "end": "2026-09-15"
135
+ },
136
+ "httpStatus": 200,
137
+ "headers": {
138
+ "Kasseneck-Api-Version": "v3",
139
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
140
+ },
141
+ "response": {
142
+ "status": "error",
143
+ "message": "Ungültige Daten: genau eine Form – year+month(, day) oder start+end.",
144
+ "data": {
145
+ "code": "invalid_period"
146
+ },
147
+ "code": "invalid_period"
148
+ }
149
+ }
150
+ ]
151
+ }
@@ -1,14 +1,15 @@
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": "ec87fe9ec152900f6fe85659e54d78a67de2271470e8564cd2c8eabb6197a4f1",
5
- "inputsSha256": "6c693f1ef121a4f4e5d1670929ea336233c0c20476993264f989bdf4f548a797",
4
+ "sha256": "3c75e607989f9f116b6c93de52fe8b48bc29103422f4bb8698baed64f89cc9b0",
5
+ "inputsSha256": "931df962ad989229c326fa42dbfda9a5535c23bdd9a52425f19d53dfaa2d6abc",
6
6
  "backendPackage": "@kreiseck/kasseneck-api@0.35.0",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
9
9
  "functions-kasse/test/unit/fixtures/kassen-codes-v3.js",
10
10
  "functions/aktivierung-api-core.js",
11
11
  "functions/beleg-mail-core.js",
12
+ "functions/bericht-v2-liefern.js",
12
13
  "functions/gemeinsam/api-rand.js",
13
14
  "functions/gemeinsam/api-vokabular-v3.js",
14
15
  "functions/gemeinsam/beleg-toepfe.js",
@@ -19,6 +20,8 @@
19
20
  "functions/gemeinsam/zahlungen-core.js",
20
21
  "functions/invoice-api-core.js",
21
22
  "functions/invoice-api-endpoints.js",
23
+ "functions/report-endpoints.js",
24
+ "functions/report-v2.js",
22
25
  "functions/test/unit/fixtures/v3-belege/beleg-welt.js",
23
26
  "functions/test/unit/fixtures/v3-rechnungen/rechnungs-welt.js",
24
27
  "functions/test/unit/fixtures/vertrag-v3/ablage.js",
@@ -4721,6 +4724,7 @@
4721
4724
  "vouchers": [
4722
4725
  {
4723
4726
  "action": "sell",
4727
+ "typeId": "vt_ez20",
4724
4728
  "type": "single_purpose",
4725
4729
  "amountCents": 5000
4726
4730
  }
@@ -4768,7 +4772,10 @@
4768
4772
  "voucherType": "single_purpose",
4769
4773
  "amountCents": 5000,
4770
4774
  "vatRateBp": 2000,
4771
- "name": "Einzweckgutschein 20 %",
4775
+ "name": "Geschenkgutschein (Einzweckgutschein 20 %)",
4776
+ "typeId": "vt_ez20",
4777
+ "typeName": "Geschenkgutschein",
4778
+ "payout": "never",
4772
4779
  "code": "····-····-JJJ2",
4773
4780
  "codeSuffix": "JJJ2",
4774
4781
  "voucherId": "auto2"
@@ -4804,7 +4811,7 @@
4804
4811
  "layoutRuleset": 2,
4805
4812
  "items": [
4806
4813
  {
4807
- "name": "Einzweckgutschein 20 %",
4814
+ "name": "Geschenkgutschein (Einzweckgutschein 20 %)",
4808
4815
  "vat": 20,
4809
4816
  "vatRate": 20,
4810
4817
  "priceOne": 50,
@@ -4919,7 +4926,7 @@
4919
4926
  "kind": "columns",
4920
4927
  "columns": [
4921
4928
  {
4922
- "text": "1 x Einzweckgutschein 20 % ····-JJJ2",
4929
+ "text": "1 x Geschenkgutschein (Einzweckgutschein 20 %) ····-JJJ2",
4923
4930
  "width": 7,
4924
4931
  "align": "left"
4925
4932
  },
@@ -5065,10 +5072,12 @@
5065
5072
  "index": 0,
5066
5073
  "codeSuffix": "JJJ2",
5067
5074
  "faceValueCents": 5000,
5075
+ "typeId": "vt_ez20",
5076
+ "typeName": "Geschenkgutschein",
5068
5077
  "validity": {
5069
- "pattern": "1+3",
5070
- "redeemableUntil": "2027-09-26",
5071
- "refundableUntil": "2030-09-26",
5078
+ "pattern": "unlimited",
5079
+ "redeemableUntil": null,
5080
+ "refundableUntil": null,
5072
5081
  "validUntil": null
5073
5082
  }
5074
5083
  }
@@ -5086,7 +5095,7 @@
5086
5095
  "vouchers": [
5087
5096
  {
5088
5097
  "action": "sell",
5089
- "type": "multi_purpose",
5098
+ "typeId": "vt_mz",
5090
5099
  "amountCents": 5000
5091
5100
  }
5092
5101
  ],
@@ -5133,7 +5142,10 @@
5133
5142
  "voucherType": "multi_purpose",
5134
5143
  "value": 50,
5135
5144
  "valueCents": 5000,
5136
- "name": "Mehrzweckgutschein",
5145
+ "name": "Geschenkgutschein (Mehrzweckgutschein)",
5146
+ "typeId": "vt_mz",
5147
+ "typeName": "Geschenkgutschein",
5148
+ "payout": "allowed",
5137
5149
  "code": "····-····-NNNY",
5138
5150
  "codeSuffix": "NNNY",
5139
5151
  "voucherId": "auto4"
@@ -5424,10 +5436,13 @@
5424
5436
  "index": 0,
5425
5437
  "codeSuffix": "NNNY",
5426
5438
  "faceValueCents": 5000,
5439
+ "typeId": "vt_mz",
5440
+ "typeName": "Geschenkgutschein",
5427
5441
  "validity": {
5428
5442
  "pattern": "1+3",
5429
- "redeemableUntil": "2027-09-26",
5430
- "refundableUntil": "2030-09-26",
5443
+ "redeemableYears": 3,
5444
+ "redeemableUntil": "2029-09-26",
5445
+ "refundableUntil": "2032-09-26",
5431
5446
  "validUntil": null
5432
5447
  }
5433
5448
  }