@kreiseck/kasseneck-api 1.17.0 → 1.18.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 (204) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/cjs/client/list-receipts.d.ts +3 -0
  3. package/dist/cjs/client/list-receipts.js +6 -0
  4. package/dist/cjs/client/receipts.d.ts +6 -0
  5. package/dist/cjs/client/receipts.js +6 -0
  6. package/dist/cjs/client/reports.d.ts +10 -9
  7. package/dist/cjs/client/reports.js +10 -9
  8. package/dist/cjs/models/index.d.ts +1 -0
  9. package/dist/cjs/models/index.js +6 -1
  10. package/dist/cjs/models/manual-receipt.d.ts +45 -0
  11. package/dist/cjs/models/manual-receipt.js +58 -0
  12. package/dist/cjs/models/receipt-summary.d.ts +4 -0
  13. package/dist/cjs/models/receipt-summary.js +6 -0
  14. package/dist/cjs/models/receipt.d.ts +4 -0
  15. package/dist/cjs/models/receipt.js +6 -0
  16. package/dist/cjs/receipt/layout.js +57 -0
  17. package/dist/cjs/stored/vokabular.d.ts +1 -1
  18. package/dist/cjs/stored/vokabular.js +23 -2
  19. package/dist/cjs/version.d.ts +1 -1
  20. package/dist/cjs/version.js +1 -1
  21. package/dist/esm/client/list-receipts.d.ts +3 -0
  22. package/dist/esm/client/list-receipts.js +6 -0
  23. package/dist/esm/client/receipts.d.ts +6 -0
  24. package/dist/esm/client/receipts.js +6 -0
  25. package/dist/esm/client/reports.d.ts +10 -9
  26. package/dist/esm/client/reports.js +10 -9
  27. package/dist/esm/models/index.d.ts +1 -0
  28. package/dist/esm/models/index.js +1 -0
  29. package/dist/esm/models/manual-receipt.d.ts +45 -0
  30. package/dist/esm/models/manual-receipt.js +53 -0
  31. package/dist/esm/models/receipt-summary.d.ts +4 -0
  32. package/dist/esm/models/receipt-summary.js +6 -0
  33. package/dist/esm/models/receipt.d.ts +4 -0
  34. package/dist/esm/models/receipt.js +6 -0
  35. package/dist/esm/receipt/layout.js +57 -0
  36. package/dist/esm/stored/vokabular.d.ts +1 -1
  37. package/dist/esm/stored/vokabular.js +23 -2
  38. package/dist/esm/version.d.ts +1 -1
  39. package/dist/esm/version.js +1 -1
  40. package/fixtures/expected/manual-receipt-range-device-failure-count.grid32.txt +36 -0
  41. package/fixtures/expected/manual-receipt-range-device-failure-count.grid48.txt +36 -0
  42. package/fixtures/expected/manual-receipt-range-device-failure-count.lines.json +299 -0
  43. package/fixtures/expected/manual-receipt-range-device-failure-count.sheet32.json +242 -0
  44. package/fixtures/expected/manual-receipt-range-device-failure-count.sheet48.json +242 -0
  45. package/fixtures/expected/manual-receipt-range-device-failure-no-count.grid32.txt +36 -0
  46. package/fixtures/expected/manual-receipt-range-device-failure-no-count.grid48.txt +36 -0
  47. package/fixtures/expected/manual-receipt-range-device-failure-no-count.lines.json +299 -0
  48. package/fixtures/expected/manual-receipt-range-device-failure-no-count.sheet32.json +242 -0
  49. package/fixtures/expected/manual-receipt-range-device-failure-no-count.sheet48.json +242 -0
  50. package/fixtures/expected/manual-receipt-range-network-outage-count.grid32.txt +33 -0
  51. package/fixtures/expected/manual-receipt-range-network-outage-count.grid48.txt +33 -0
  52. package/fixtures/expected/manual-receipt-range-network-outage-count.lines.json +259 -0
  53. package/fixtures/expected/manual-receipt-range-network-outage-count.sheet32.json +224 -0
  54. package/fixtures/expected/manual-receipt-range-network-outage-count.sheet48.json +224 -0
  55. package/fixtures/expected/manual-receipt-range-network-outage-no-count.grid32.txt +33 -0
  56. package/fixtures/expected/manual-receipt-range-network-outage-no-count.grid48.txt +33 -0
  57. package/fixtures/expected/manual-receipt-range-network-outage-no-count.lines.json +259 -0
  58. package/fixtures/expected/manual-receipt-range-network-outage-no-count.sheet32.json +224 -0
  59. package/fixtures/expected/manual-receipt-range-network-outage-no-count.sheet48.json +224 -0
  60. package/fixtures/expected/manual-receipt-range-other-count.grid32.txt +36 -0
  61. package/fixtures/expected/manual-receipt-range-other-count.grid48.txt +36 -0
  62. package/fixtures/expected/manual-receipt-range-other-count.lines.json +299 -0
  63. package/fixtures/expected/manual-receipt-range-other-count.sheet32.json +242 -0
  64. package/fixtures/expected/manual-receipt-range-other-count.sheet48.json +242 -0
  65. package/fixtures/expected/manual-receipt-range-other-no-count.grid32.txt +36 -0
  66. package/fixtures/expected/manual-receipt-range-other-no-count.grid48.txt +36 -0
  67. package/fixtures/expected/manual-receipt-range-other-no-count.lines.json +299 -0
  68. package/fixtures/expected/manual-receipt-range-other-no-count.sheet32.json +242 -0
  69. package/fixtures/expected/manual-receipt-range-other-no-count.sheet48.json +242 -0
  70. package/fixtures/expected/manual-receipt-range-power-outage-count.grid32.txt +37 -0
  71. package/fixtures/expected/manual-receipt-range-power-outage-count.grid48.txt +37 -0
  72. package/fixtures/expected/manual-receipt-range-power-outage-count.lines.json +305 -0
  73. package/fixtures/expected/manual-receipt-range-power-outage-count.sheet32.json +248 -0
  74. package/fixtures/expected/manual-receipt-range-power-outage-count.sheet48.json +248 -0
  75. package/fixtures/expected/manual-receipt-range-power-outage-no-count.grid32.txt +37 -0
  76. package/fixtures/expected/manual-receipt-range-power-outage-no-count.grid48.txt +37 -0
  77. package/fixtures/expected/manual-receipt-range-power-outage-no-count.lines.json +305 -0
  78. package/fixtures/expected/manual-receipt-range-power-outage-no-count.sheet32.json +248 -0
  79. package/fixtures/expected/manual-receipt-range-power-outage-no-count.sheet48.json +248 -0
  80. package/fixtures/expected/manual-receipt-range-system-outage-count.grid32.txt +33 -0
  81. package/fixtures/expected/manual-receipt-range-system-outage-count.grid48.txt +33 -0
  82. package/fixtures/expected/manual-receipt-range-system-outage-count.lines.json +259 -0
  83. package/fixtures/expected/manual-receipt-range-system-outage-count.sheet32.json +224 -0
  84. package/fixtures/expected/manual-receipt-range-system-outage-count.sheet48.json +224 -0
  85. package/fixtures/expected/manual-receipt-range-system-outage-no-count.grid32.txt +33 -0
  86. package/fixtures/expected/manual-receipt-range-system-outage-no-count.grid48.txt +33 -0
  87. package/fixtures/expected/manual-receipt-range-system-outage-no-count.lines.json +259 -0
  88. package/fixtures/expected/manual-receipt-range-system-outage-no-count.sheet32.json +224 -0
  89. package/fixtures/expected/manual-receipt-range-system-outage-no-count.sheet48.json +224 -0
  90. package/fixtures/expected/manual-receipt-single-device-failure-no-time.grid32.txt +31 -0
  91. package/fixtures/expected/manual-receipt-single-device-failure-no-time.grid48.txt +31 -0
  92. package/fixtures/expected/manual-receipt-single-device-failure-no-time.lines.json +253 -0
  93. package/fixtures/expected/manual-receipt-single-device-failure-no-time.sheet32.json +212 -0
  94. package/fixtures/expected/manual-receipt-single-device-failure-no-time.sheet48.json +212 -0
  95. package/fixtures/expected/manual-receipt-single-device-failure-time.grid32.txt +31 -0
  96. package/fixtures/expected/manual-receipt-single-device-failure-time.grid48.txt +31 -0
  97. package/fixtures/expected/manual-receipt-single-device-failure-time.lines.json +253 -0
  98. package/fixtures/expected/manual-receipt-single-device-failure-time.sheet32.json +212 -0
  99. package/fixtures/expected/manual-receipt-single-device-failure-time.sheet48.json +212 -0
  100. package/fixtures/expected/manual-receipt-single-network-outage-no-time.grid32.txt +32 -0
  101. package/fixtures/expected/manual-receipt-single-network-outage-no-time.grid48.txt +31 -0
  102. package/fixtures/expected/manual-receipt-single-network-outage-no-time.lines.json +253 -0
  103. package/fixtures/expected/manual-receipt-single-network-outage-no-time.sheet32.json +218 -0
  104. package/fixtures/expected/manual-receipt-single-network-outage-no-time.sheet48.json +212 -0
  105. package/fixtures/expected/manual-receipt-single-network-outage-time.grid32.txt +32 -0
  106. package/fixtures/expected/manual-receipt-single-network-outage-time.grid48.txt +31 -0
  107. package/fixtures/expected/manual-receipt-single-network-outage-time.lines.json +253 -0
  108. package/fixtures/expected/manual-receipt-single-network-outage-time.sheet32.json +218 -0
  109. package/fixtures/expected/manual-receipt-single-network-outage-time.sheet48.json +212 -0
  110. package/fixtures/expected/manual-receipt-single-other-no-time.grid32.txt +35 -0
  111. package/fixtures/expected/manual-receipt-single-other-no-time.grid48.txt +34 -0
  112. package/fixtures/expected/manual-receipt-single-other-no-time.lines.json +299 -0
  113. package/fixtures/expected/manual-receipt-single-other-no-time.sheet32.json +236 -0
  114. package/fixtures/expected/manual-receipt-single-other-no-time.sheet48.json +230 -0
  115. package/fixtures/expected/manual-receipt-single-other-time.grid32.txt +35 -0
  116. package/fixtures/expected/manual-receipt-single-other-time.grid48.txt +34 -0
  117. package/fixtures/expected/manual-receipt-single-other-time.lines.json +299 -0
  118. package/fixtures/expected/manual-receipt-single-other-time.sheet32.json +236 -0
  119. package/fixtures/expected/manual-receipt-single-other-time.sheet48.json +230 -0
  120. package/fixtures/expected/manual-receipt-single-outside-premises-no-time.grid32.txt +31 -0
  121. package/fixtures/expected/manual-receipt-single-outside-premises-no-time.grid48.txt +31 -0
  122. package/fixtures/expected/manual-receipt-single-outside-premises-no-time.lines.json +247 -0
  123. package/fixtures/expected/manual-receipt-single-outside-premises-no-time.sheet32.json +212 -0
  124. package/fixtures/expected/manual-receipt-single-outside-premises-no-time.sheet48.json +212 -0
  125. package/fixtures/expected/manual-receipt-single-outside-premises-time.grid32.txt +31 -0
  126. package/fixtures/expected/manual-receipt-single-outside-premises-time.grid48.txt +31 -0
  127. package/fixtures/expected/manual-receipt-single-outside-premises-time.lines.json +247 -0
  128. package/fixtures/expected/manual-receipt-single-outside-premises-time.sheet32.json +212 -0
  129. package/fixtures/expected/manual-receipt-single-outside-premises-time.sheet48.json +212 -0
  130. package/fixtures/expected/manual-receipt-single-power-outage-no-time.grid32.txt +35 -0
  131. package/fixtures/expected/manual-receipt-single-power-outage-no-time.grid48.txt +34 -0
  132. package/fixtures/expected/manual-receipt-single-power-outage-no-time.lines.json +299 -0
  133. package/fixtures/expected/manual-receipt-single-power-outage-no-time.sheet32.json +236 -0
  134. package/fixtures/expected/manual-receipt-single-power-outage-no-time.sheet48.json +230 -0
  135. package/fixtures/expected/manual-receipt-single-power-outage-time.grid32.txt +35 -0
  136. package/fixtures/expected/manual-receipt-single-power-outage-time.grid48.txt +34 -0
  137. package/fixtures/expected/manual-receipt-single-power-outage-time.lines.json +299 -0
  138. package/fixtures/expected/manual-receipt-single-power-outage-time.sheet32.json +236 -0
  139. package/fixtures/expected/manual-receipt-single-power-outage-time.sheet48.json +230 -0
  140. package/fixtures/expected/manual-receipt-single-small-business.grid32.txt +34 -0
  141. package/fixtures/expected/manual-receipt-single-small-business.grid48.txt +33 -0
  142. package/fixtures/expected/manual-receipt-single-small-business.lines.json +257 -0
  143. package/fixtures/expected/manual-receipt-single-small-business.sheet32.json +230 -0
  144. package/fixtures/expected/manual-receipt-single-small-business.sheet48.json +224 -0
  145. package/fixtures/expected/manual-receipt-single-system-outage-no-time.grid32.txt +32 -0
  146. package/fixtures/expected/manual-receipt-single-system-outage-no-time.grid48.txt +31 -0
  147. package/fixtures/expected/manual-receipt-single-system-outage-no-time.lines.json +253 -0
  148. package/fixtures/expected/manual-receipt-single-system-outage-no-time.sheet32.json +218 -0
  149. package/fixtures/expected/manual-receipt-single-system-outage-no-time.sheet48.json +212 -0
  150. package/fixtures/expected/manual-receipt-single-system-outage-time.grid32.txt +32 -0
  151. package/fixtures/expected/manual-receipt-single-system-outage-time.grid48.txt +31 -0
  152. package/fixtures/expected/manual-receipt-single-system-outage-time.lines.json +253 -0
  153. package/fixtures/expected/manual-receipt-single-system-outage-time.sheet32.json +218 -0
  154. package/fixtures/expected/manual-receipt-single-system-outage-time.sheet48.json +212 -0
  155. package/fixtures/expected/zero-outage-end-period.grid32.txt +35 -0
  156. package/fixtures/expected/zero-outage-end-period.grid48.txt +31 -0
  157. package/fixtures/expected/zero-outage-end-period.lines.json +230 -0
  158. package/fixtures/expected/zero-outage-end-period.sheet32.json +236 -0
  159. package/fixtures/expected/zero-outage-end-period.sheet48.json +212 -0
  160. package/fixtures/hobex-hps-codes.json +1 -1
  161. package/fixtures/invoice-api.schema.json +1 -1
  162. package/fixtures/invoice-texts.json +1 -1
  163. package/fixtures/manifest.json +192 -0
  164. package/fixtures/pos-texts.json +1 -1
  165. package/fixtures/receipts/manual-receipt-range-device-failure-count.json +56 -0
  166. package/fixtures/receipts/manual-receipt-range-device-failure-no-count.json +55 -0
  167. package/fixtures/receipts/manual-receipt-range-network-outage-count.json +50 -0
  168. package/fixtures/receipts/manual-receipt-range-network-outage-no-count.json +49 -0
  169. package/fixtures/receipts/manual-receipt-range-other-count.json +57 -0
  170. package/fixtures/receipts/manual-receipt-range-other-no-count.json +56 -0
  171. package/fixtures/receipts/manual-receipt-range-power-outage-count.json +56 -0
  172. package/fixtures/receipts/manual-receipt-range-power-outage-no-count.json +55 -0
  173. package/fixtures/receipts/manual-receipt-range-system-outage-count.json +50 -0
  174. package/fixtures/receipts/manual-receipt-range-system-outage-no-count.json +49 -0
  175. package/fixtures/receipts/manual-receipt-single-device-failure-no-time.json +48 -0
  176. package/fixtures/receipts/manual-receipt-single-device-failure-time.json +49 -0
  177. package/fixtures/receipts/manual-receipt-single-network-outage-no-time.json +49 -0
  178. package/fixtures/receipts/manual-receipt-single-network-outage-time.json +50 -0
  179. package/fixtures/receipts/manual-receipt-single-other-no-time.json +55 -0
  180. package/fixtures/receipts/manual-receipt-single-other-time.json +56 -0
  181. package/fixtures/receipts/manual-receipt-single-outside-premises-no-time.json +48 -0
  182. package/fixtures/receipts/manual-receipt-single-outside-premises-time.json +49 -0
  183. package/fixtures/receipts/manual-receipt-single-power-outage-no-time.json +54 -0
  184. package/fixtures/receipts/manual-receipt-single-power-outage-time.json +55 -0
  185. package/fixtures/receipts/manual-receipt-single-small-business.json +48 -0
  186. package/fixtures/receipts/manual-receipt-single-system-outage-no-time.json +49 -0
  187. package/fixtures/receipts/manual-receipt-single-system-outage-time.json +50 -0
  188. package/fixtures/receipts/zero-outage-end-period.json +43 -0
  189. package/fixtures/surface.json +1 -1
  190. package/fixtures/v3/README.md +8 -1
  191. package/fixtures/v3/antworten/belege.json +484 -3
  192. package/fixtures/v3/antworten/belegmail.json +5 -2
  193. package/fixtures/v3/antworten/berichte.json +151 -0
  194. package/fixtures/v3/antworten/kasse-belege.json +436 -3
  195. package/fixtures/v3/antworten/kasse.json +3 -3
  196. package/fixtures/v3/antworten/lager.json +1 -1
  197. package/fixtures/v3/antworten/rechnungen.json +5 -2
  198. package/fixtures/v3/antworten/storno.json +5 -2
  199. package/fixtures/v3/stored/belege.json +60 -3
  200. package/fixtures/v3/stored/kasse.json +3 -3
  201. package/fixtures/v3/stored/rechnungen.json +5 -2
  202. package/fixtures/v3/v3-vokabular.json +178 -9
  203. package/fixtures/v3/zahlbetrag-faelle.json +5 -2
  204. package/package.json +1 -1
@@ -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": "f7f7091faee9c671b006237afa8c7dbba340d0120105259fce69ddad3bf10d93",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.36.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": "3c75e607989f9f116b6c93de52fe8b48bc29103422f4bb8698baed64f89cc9b0",
5
- "inputsSha256": "2fc82d7d936fbb7e239ae5ce0eb3166a12034a6dc6f3d94482b33ef92068be26",
6
- "backendPackage": "@kreiseck/kasseneck-api@0.35.0",
4
+ "sha256": "d354e8a1424c465dab37d166dbda8c9a9ed0b4021e0564dfe23f744ecc4f4918",
5
+ "inputsSha256": "f7f7091faee9c671b006237afa8c7dbba340d0120105259fce69ddad3bf10d93",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.36.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",
@@ -4711,6 +4714,436 @@
4711
4714
  "code": "receipt_not_found"
4712
4715
  }
4713
4716
  },
4717
+ {
4718
+ "name": "sale_manual_receipt",
4719
+ "endpoint": "createReceipt",
4720
+ "path": "/api/v3/createReceipt",
4721
+ "params": {
4722
+ "receiptType": "standard",
4723
+ "items": [
4724
+ {
4725
+ "name": "Behandlung",
4726
+ "amount": 1,
4727
+ "priceOneCents": 12000,
4728
+ "vat": 0
4729
+ }
4730
+ ],
4731
+ "payments": [
4732
+ {
4733
+ "method": "cash",
4734
+ "amountCents": 12000
4735
+ }
4736
+ ],
4737
+ "manualReceipt": {
4738
+ "number": "H-17",
4739
+ "date": "2026-09-25",
4740
+ "time": "14:30",
4741
+ "reason": "network_outage"
4742
+ }
4743
+ },
4744
+ "httpStatus": 200,
4745
+ "headers": {
4746
+ "Kasseneck-Api-Version": "v3",
4747
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
4748
+ },
4749
+ "response": {
4750
+ "status": "success",
4751
+ "message": "",
4752
+ "data": {
4753
+ "is_small_business": false,
4754
+ "company": "Bäckerei Kornblum",
4755
+ "phone": "+43 1 234",
4756
+ "street": "Hauptplatz 1",
4757
+ "zip": "1010",
4758
+ "city": "Wien",
4759
+ "footer1": "Danke",
4760
+ "footer2": null,
4761
+ "footer3": null,
4762
+ "footer4": null,
4763
+ "logo_url": null,
4764
+ "kreiseck_logo": false,
4765
+ "thanks_message": "Bis bald",
4766
+ "receipt": {
4767
+ "counter": 9,
4768
+ "receiptType": "standard",
4769
+ "zeroKind": null,
4770
+ "receiptId": "KECK-1-ID-9",
4771
+ "cashregisterId": "KECK-1",
4772
+ "timeStamp": "2026-09-26T10:00:00",
4773
+ "vouchers": [],
4774
+ "paymentMethod": "cash",
4775
+ "customerDetails": null,
4776
+ "legalMessage": null,
4777
+ "customProjectId": null,
4778
+ "creditCardProvider": null,
4779
+ "cardPaymentId": null,
4780
+ "cardPaymentData": null,
4781
+ "amountRateStandard": 0,
4782
+ "amountRateReduced1": 0,
4783
+ "amountRateReduced2": 0,
4784
+ "amountRateZero": 120,
4785
+ "amountRateSpecial": 0,
4786
+ "turnoverCounterAES256ICM": "TBYB9m2bWcnljmcjdebbLQ==",
4787
+ "signaturePreviousReceipt": "rXWdCT1GHhM=",
4788
+ "certificateSerialNumber": "ABC123",
4789
+ "fullReceiptId": "00000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000f34182c3",
4790
+ "payments": [
4791
+ {
4792
+ "id": "p1",
4793
+ "method": "cash",
4794
+ "amountCents": 12000
4795
+ }
4796
+ ],
4797
+ "sig": "eyJhbGciOiJFUzI1NiJ9.X1IxLUFUMTAwX0tFQ0stMV9LRUNLLTEtSUQtOV8yMDI2LTA5LTI2VDEwOjAwOjAwXzAsMDBfMCwwMF8wLDAwXzEyMCwwMF8wLDAwX1RCWUI5bTJiX0FCQzEyM19yWFdkQ1QxR0hoTT0.DdN3NqCojZl5CNuTYbwOhBxNNvWenBgTVe34mpFO6iwVkzmTnaMfXWzix7th-fQ9x2mRqf4FPKSkiKON_zrCKA",
4798
+ "signatureSuccess": true,
4799
+ "qr": "_R1-AT100_KECK-1_KECK-1-ID-9_2026-09-26T10:00:00_0,00_0,00_0,00_120,00_0,00_TBYB9m2b_ABC123_rXWdCT1GHhM=_DdN3NqCojZl5CNuTYbwOhBxNNvWenBgTVe34mpFO6iwVkzmTnaMfXWzix7th+fQ9x2mRqf4FPKSkiKON/zrCKA==",
4800
+ "headerVersionId": "auto1",
4801
+ "layoutRuleset": 2,
4802
+ "items": [
4803
+ {
4804
+ "name": "Behandlung",
4805
+ "amount": 1,
4806
+ "priceOneCents": 12000,
4807
+ "vat": 0,
4808
+ "priceOne": 120
4809
+ }
4810
+ ],
4811
+ "manualReceipt": {
4812
+ "number": "H-17",
4813
+ "date": "2026-09-25",
4814
+ "time": "14:30",
4815
+ "reason": "network_outage"
4816
+ }
4817
+ },
4818
+ "taxNumber": "91-123/4565",
4819
+ "vatId": "ATU12345675",
4820
+ "headerVersionId": "auto1",
4821
+ "registrationInfo": null,
4822
+ "testCashregister": true,
4823
+ "testSignature": false,
4824
+ "logo_scale": "M",
4825
+ "layout": {
4826
+ "paperSize": "mm80",
4827
+ "ruleset": 2,
4828
+ "lines": [
4829
+ {
4830
+ "kind": "banner",
4831
+ "text": "TESTKASSE — kein gültiger Beleg",
4832
+ "tone": "warning"
4833
+ },
4834
+ {
4835
+ "kind": "text",
4836
+ "text": "Bäckerei Kornblum",
4837
+ "align": "center",
4838
+ "bold": true
4839
+ },
4840
+ {
4841
+ "kind": "text",
4842
+ "text": "Hauptplatz 1",
4843
+ "align": "center",
4844
+ "bold": false
4845
+ },
4846
+ {
4847
+ "kind": "text",
4848
+ "text": "1010 Wien",
4849
+ "align": "center",
4850
+ "bold": false
4851
+ },
4852
+ {
4853
+ "kind": "text",
4854
+ "text": "ATU12345675",
4855
+ "align": "center",
4856
+ "bold": false
4857
+ },
4858
+ {
4859
+ "kind": "text",
4860
+ "text": "+43 1 234",
4861
+ "align": "center",
4862
+ "bold": false
4863
+ },
4864
+ {
4865
+ "kind": "space",
4866
+ "lines": 1
4867
+ },
4868
+ {
4869
+ "kind": "banner",
4870
+ "text": "NACHERFASSUNG",
4871
+ "tone": "receipt_type"
4872
+ },
4873
+ {
4874
+ "kind": "text",
4875
+ "text": "nach Ausfall der Kasse",
4876
+ "align": "center",
4877
+ "bold": false
4878
+ },
4879
+ {
4880
+ "kind": "text",
4881
+ "text": "Grund: Internet",
4882
+ "align": "center",
4883
+ "bold": false
4884
+ },
4885
+ {
4886
+ "kind": "space",
4887
+ "lines": 1
4888
+ },
4889
+ {
4890
+ "kind": "text",
4891
+ "text": "Handbeleg Nr. H-17",
4892
+ "align": "center",
4893
+ "bold": false
4894
+ },
4895
+ {
4896
+ "kind": "text",
4897
+ "text": "vom 25.09.2026, 14:30 Uhr",
4898
+ "align": "center",
4899
+ "bold": false
4900
+ },
4901
+ {
4902
+ "kind": "text",
4903
+ "text": "USt: Duplikat des Handbelegs",
4904
+ "align": "center",
4905
+ "bold": false
4906
+ },
4907
+ {
4908
+ "kind": "space",
4909
+ "lines": 1
4910
+ },
4911
+ {
4912
+ "kind": "columns",
4913
+ "columns": [
4914
+ {
4915
+ "text": "Datum:",
4916
+ "width": 4,
4917
+ "align": "left"
4918
+ },
4919
+ {
4920
+ "text": "26.09.2026 10:00:00",
4921
+ "width": 8,
4922
+ "align": "right"
4923
+ }
4924
+ ]
4925
+ },
4926
+ {
4927
+ "kind": "columns",
4928
+ "columns": [
4929
+ {
4930
+ "text": "Kassen-ID:",
4931
+ "width": 6,
4932
+ "align": "left"
4933
+ },
4934
+ {
4935
+ "text": "KECK-1",
4936
+ "width": 6,
4937
+ "align": "right"
4938
+ }
4939
+ ]
4940
+ },
4941
+ {
4942
+ "kind": "columns",
4943
+ "columns": [
4944
+ {
4945
+ "text": "Beleg-ID:",
4946
+ "width": 6,
4947
+ "align": "left"
4948
+ },
4949
+ {
4950
+ "text": "KECK-1-ID-9",
4951
+ "width": 6,
4952
+ "align": "right"
4953
+ }
4954
+ ]
4955
+ },
4956
+ {
4957
+ "kind": "space",
4958
+ "lines": 1
4959
+ },
4960
+ {
4961
+ "kind": "columns",
4962
+ "columns": [
4963
+ {
4964
+ "text": "1 x Behandlung",
4965
+ "width": 7,
4966
+ "align": "left"
4967
+ },
4968
+ {
4969
+ "text": "120,00 D",
4970
+ "width": 5,
4971
+ "align": "right"
4972
+ }
4973
+ ]
4974
+ },
4975
+ {
4976
+ "kind": "space",
4977
+ "lines": 1
4978
+ },
4979
+ {
4980
+ "kind": "columns",
4981
+ "columns": [
4982
+ {
4983
+ "text": "MwSt%",
4984
+ "width": 3,
4985
+ "align": "left"
4986
+ },
4987
+ {
4988
+ "text": "MwSt",
4989
+ "width": 4,
4990
+ "align": "left"
4991
+ },
4992
+ {
4993
+ "text": "Netto",
4994
+ "width": 3,
4995
+ "align": "left"
4996
+ },
4997
+ {
4998
+ "text": "Brutto",
4999
+ "width": 2,
5000
+ "align": "right"
5001
+ }
5002
+ ]
5003
+ },
5004
+ {
5005
+ "kind": "columns",
5006
+ "columns": [
5007
+ {
5008
+ "text": "D 0%",
5009
+ "width": 3,
5010
+ "align": "left"
5011
+ },
5012
+ {
5013
+ "text": "0,00",
5014
+ "width": 4,
5015
+ "align": "left"
5016
+ },
5017
+ {
5018
+ "text": "120,00",
5019
+ "width": 3,
5020
+ "align": "left"
5021
+ },
5022
+ {
5023
+ "text": "120,00",
5024
+ "width": 2,
5025
+ "align": "right"
5026
+ }
5027
+ ]
5028
+ },
5029
+ {
5030
+ "kind": "rule",
5031
+ "char": "-"
5032
+ },
5033
+ {
5034
+ "kind": "columns",
5035
+ "columns": [
5036
+ {
5037
+ "text": "Gesamt:",
5038
+ "width": 6,
5039
+ "align": "left"
5040
+ },
5041
+ {
5042
+ "text": "120,00 €",
5043
+ "width": 6,
5044
+ "align": "right"
5045
+ }
5046
+ ]
5047
+ },
5048
+ {
5049
+ "kind": "columns",
5050
+ "columns": [
5051
+ {
5052
+ "text": "Zahlungsart:",
5053
+ "width": 6,
5054
+ "align": "left"
5055
+ },
5056
+ {
5057
+ "text": "Barzahlung",
5058
+ "width": 6,
5059
+ "align": "right"
5060
+ }
5061
+ ]
5062
+ },
5063
+ {
5064
+ "kind": "space",
5065
+ "lines": 1
5066
+ },
5067
+ {
5068
+ "kind": "qr",
5069
+ "data": "_R1-AT100_KECK-1_KECK-1-ID-9_2026-09-26T10:00:00_0,00_0,00_0,00_120,00_0,00_TBYB9m2b_ABC123_rXWdCT1GHhM=_DdN3NqCojZl5CNuTYbwOhBxNNvWenBgTVe34mpFO6iwVkzmTnaMfXWzix7th+fQ9x2mRqf4FPKSkiKON/zrCKA=="
5070
+ },
5071
+ {
5072
+ "kind": "space",
5073
+ "lines": 1
5074
+ },
5075
+ {
5076
+ "kind": "space",
5077
+ "lines": 1
5078
+ },
5079
+ {
5080
+ "kind": "text",
5081
+ "text": "Bis bald",
5082
+ "align": "center",
5083
+ "bold": false
5084
+ },
5085
+ {
5086
+ "kind": "text",
5087
+ "text": "Danke",
5088
+ "align": "center",
5089
+ "bold": false
5090
+ },
5091
+ {
5092
+ "kind": "space",
5093
+ "lines": 1
5094
+ },
5095
+ {
5096
+ "kind": "banner",
5097
+ "text": "TESTKASSE — kein gültiger Beleg",
5098
+ "tone": "warning"
5099
+ }
5100
+ ]
5101
+ }
5102
+ }
5103
+ }
5104
+ },
5105
+ {
5106
+ "name": "error_manual_receipt_duplicate",
5107
+ "endpoint": "createReceipt",
5108
+ "path": "/api/v3/createReceipt",
5109
+ "params": {
5110
+ "receiptType": "standard",
5111
+ "items": [
5112
+ {
5113
+ "name": "Behandlung",
5114
+ "amount": 1,
5115
+ "priceOneCents": 12000,
5116
+ "vat": 0
5117
+ }
5118
+ ],
5119
+ "payments": [
5120
+ {
5121
+ "method": "cash",
5122
+ "amountCents": 12000
5123
+ }
5124
+ ],
5125
+ "manualReceipt": {
5126
+ "number": "H-17",
5127
+ "date": "2026-09-25",
5128
+ "time": "14:30",
5129
+ "reason": "network_outage"
5130
+ }
5131
+ },
5132
+ "httpStatus": 200,
5133
+ "headers": {
5134
+ "Kasseneck-Api-Version": "v3",
5135
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
5136
+ },
5137
+ "response": {
5138
+ "status": "error",
5139
+ "message": "Dieser Handbeleg ist auf dieser Kasse für diesen Tag schon nacherfasst.",
5140
+ "data": {
5141
+ "code": "manual_receipt_duplicate",
5142
+ "receiptId": "KECK-1-ID-9"
5143
+ },
5144
+ "code": "manual_receipt_duplicate"
5145
+ }
5146
+ },
4714
5147
  {
4715
5148
  "name": "sale_single_purpose_voucher",
4716
5149
  "endpoint": "createReceipt",
@@ -4,8 +4,8 @@
4
4
  "default": {
5
5
  "sha256": "1c9e54a06b1851753d793301dd351bc9179079bcc53fa4a5205959a34373e172",
6
6
  "head": [],
7
- "inputsSha256": "c18e7adc7420e634394fb1b1e738dc18aeed9d31cc7d2ac5847d3e06b9ca7130",
8
- "backendPackage": "@kreiseck/kasseneck-api@0.35.0",
7
+ "inputsSha256": "f75bd64e874cb1a2712d4057a0d58930d60b6bb07e36fecd6adbd0d91bba3878",
8
+ "backendPackage": "@kreiseck/kasseneck-api@0.36.0",
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
  "channel",
25
25
  "note"
26
26
  ],
27
- "inputsSha256": "7567e06f91a415e03ce4c459050006f7b3f4e06644f5731559261d05f0eb23a5",
27
+ "inputsSha256": "325a168fe57e8d6205a00d3faae8d5599080c187d721a276b07d28f623499fd6",
28
28
  "backendPackage": "@kreiseck/kasseneck-api@0.14.0",
29
29
  "inputs": [
30
30
  "functions-kasse/gemeinsam/api-rand.js",
@@ -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": "407c79805f7927a0335eecff1888408b6153f5a38d8b85e7d57e004eb4832ad9",
5
+ "inputsSha256": "971cbbae43b71b6ccc006ab34522e45d7e61ac1b696c19793c078ba3ec1ebee0",
6
6
  "backendPackage": "@kreiseck/kasseneck-api@0.14.0",
7
7
  "inputs": [
8
8
  "functions-kasse/article-endpoints.js",
@@ -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": "a5d2e578f0ee866e539320866624dc9337459479bfcdcb955c8c3b821cd1c689",
5
- "inputsSha256": "2fc82d7d936fbb7e239ae5ce0eb3166a12034a6dc6f3d94482b33ef92068be26",
6
- "backendPackage": "@kreiseck/kasseneck-api@0.35.0",
5
+ "inputsSha256": "f7f7091faee9c671b006237afa8c7dbba340d0120105259fce69ddad3bf10d93",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.36.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",