@kreiseck/kasseneck-api 0.30.0 → 1.0.0-rc.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 (717) hide show
  1. package/CHANGELOG.md +433 -0
  2. package/README.de.md +11 -7
  3. package/README.md +486 -126
  4. package/dist/cjs/client/api.d.ts +7 -6
  5. package/dist/cjs/client/api.js +2 -2
  6. package/dist/cjs/client/aufrufe.d.ts +29 -5
  7. package/dist/cjs/client/aufrufe.js +114 -2
  8. package/dist/cjs/client/auth.d.ts +2 -0
  9. package/dist/cjs/client/auth.js +17 -1
  10. package/dist/cjs/client/cashregisters.d.ts +1 -1
  11. package/dist/cjs/client/cashregisters.js +2 -2
  12. package/dist/cjs/client/errors.d.ts +78 -19
  13. package/dist/cjs/client/errors.js +107 -28
  14. package/dist/cjs/client/fehlercodes.d.ts +9 -0
  15. package/dist/cjs/client/fehlercodes.js +36 -0
  16. package/dist/cjs/client/index.d.ts +5 -5
  17. package/dist/cjs/client/index.js +11 -3
  18. package/dist/cjs/client/receipts.d.ts +131 -124
  19. package/dist/cjs/client/receipts.js +214 -137
  20. package/dist/cjs/client/reports.d.ts +26 -4
  21. package/dist/cjs/client/reports.js +37 -4
  22. package/dist/cjs/client/status.d.ts +3 -3
  23. package/dist/cjs/client/status.js +7 -7
  24. package/dist/cjs/client/transport.d.ts +56 -4
  25. package/dist/cjs/client/transport.js +222 -25
  26. package/dist/cjs/enums/vat-rate.d.ts +2 -2
  27. package/dist/cjs/enums/vat-rate.js +1 -1
  28. package/dist/cjs/index.d.ts +4 -3
  29. package/dist/cjs/index.js +42 -13
  30. package/dist/{esm/rechnung → cjs/invoice}/api.d.ts +18 -17
  31. package/dist/cjs/{rechnung → invoice}/api.js +6 -6
  32. package/dist/{esm/rechnung → cjs/invoice}/auth.d.ts +2 -2
  33. package/dist/cjs/{rechnung → invoice}/auth.js +5 -5
  34. package/dist/{esm/rechnung/rechnen.d.ts → cjs/invoice/calc.d.ts} +27 -27
  35. package/dist/cjs/{rechnung/rechnen.js → invoice/calc.js} +54 -54
  36. package/dist/{esm/rechnung → cjs/invoice}/endpunkte.d.ts +23 -21
  37. package/dist/cjs/{rechnung → invoice}/endpunkte.js +52 -42
  38. package/dist/cjs/invoice/fehler.d.ts +31 -0
  39. package/dist/cjs/invoice/fehler.js +39 -0
  40. package/dist/cjs/invoice/index.d.ts +21 -0
  41. package/dist/cjs/invoice/index.js +86 -0
  42. package/dist/cjs/{rechnung → invoice}/summen.d.ts +12 -12
  43. package/dist/cjs/{rechnung → invoice}/summen.js +14 -14
  44. package/dist/cjs/invoice/texte.d.ts +224 -0
  45. package/dist/cjs/invoice/texte.js +425 -0
  46. package/dist/{esm/rechnung → cjs/invoice}/typen.d.ts +32 -11
  47. package/dist/{esm/rechnung → cjs/invoice}/vertrag.d.ts +97 -71
  48. package/dist/cjs/{rechnung → invoice}/vertrag.js +144 -82
  49. package/dist/cjs/models/cancellation.d.ts +53 -21
  50. package/dist/cjs/models/cancellation.js +94 -42
  51. package/dist/cjs/models/hobex-receipt.d.ts +3 -3
  52. package/dist/cjs/models/hobex-receipt.js +35 -35
  53. package/dist/cjs/models/index.d.ts +6 -5
  54. package/dist/cjs/models/index.js +22 -2
  55. package/dist/cjs/models/payment-errors.d.ts +32 -15
  56. package/dist/cjs/models/payment-errors.js +80 -32
  57. package/dist/cjs/models/receipt-company.d.ts +6 -5
  58. package/dist/cjs/models/receipt-company.js +4 -4
  59. package/dist/cjs/models/receipt-email.d.ts +32 -18
  60. package/dist/cjs/models/receipt-email.js +69 -24
  61. package/dist/cjs/models/receipt-errors.d.ts +39 -0
  62. package/dist/cjs/models/receipt-errors.js +94 -0
  63. package/dist/cjs/models/receipt-item.d.ts +9 -1
  64. package/dist/cjs/models/receipt-item.js +3 -0
  65. package/dist/cjs/models/receipt-payment.d.ts +2 -1
  66. package/dist/cjs/models/receipt-summary.d.ts +10 -4
  67. package/dist/cjs/models/receipt-summary.js +10 -4
  68. package/dist/cjs/models/receipt.d.ts +31 -2
  69. package/dist/cjs/models/receipt.js +28 -1
  70. package/dist/cjs/models/voucher.d.ts +7 -6
  71. package/dist/cjs/models/voucher.js +2 -7
  72. package/dist/cjs/partner/ablauf.d.ts +10 -10
  73. package/dist/cjs/partner/ablauf.js +29 -29
  74. package/dist/cjs/partner/api.d.ts +26 -23
  75. package/dist/cjs/partner/api.js +11 -13
  76. package/dist/cjs/partner/auth.d.ts +1 -1
  77. package/dist/cjs/partner/auth.js +2 -2
  78. package/dist/cjs/partner/betrieb.d.ts +7 -7
  79. package/dist/cjs/partner/betrieb.js +10 -10
  80. package/dist/cjs/partner/endpunkte.d.ts +27 -14
  81. package/dist/cjs/partner/endpunkte.js +80 -39
  82. package/dist/cjs/partner/fehler.d.ts +60 -30
  83. package/dist/cjs/partner/fehler.js +99 -43
  84. package/dist/cjs/partner/index.d.ts +13 -12
  85. package/dist/cjs/partner/index.js +35 -22
  86. package/dist/cjs/partner/secret.d.ts +3 -3
  87. package/dist/cjs/partner/secret.js +6 -6
  88. package/dist/cjs/partner/typen.d.ts +129 -71
  89. package/dist/cjs/partner/typen.js +76 -3
  90. package/dist/cjs/partner/webhook-signatur.d.ts +2 -2
  91. package/dist/cjs/partner/webhook-signatur.js +12 -12
  92. package/dist/cjs/partner/webhooks.d.ts +60 -32
  93. package/dist/cjs/partner/webhooks.js +40 -34
  94. package/dist/cjs/payments/hobex-hps/transaction-response.js +28 -28
  95. package/dist/cjs/payments/hobex.d.ts +2 -2
  96. package/dist/cjs/payments/hobex.js +4 -4
  97. package/dist/cjs/payments/stripe.d.ts +2 -2
  98. package/dist/cjs/payments/stripe.js +4 -4
  99. package/dist/cjs/pos/artikel.d.ts +90 -0
  100. package/dist/cjs/pos/artikel.js +89 -0
  101. package/dist/cjs/pos/client.d.ts +27 -0
  102. package/dist/cjs/pos/client.js +144 -0
  103. package/dist/cjs/pos/drucker.d.ts +86 -0
  104. package/dist/cjs/pos/drucker.js +78 -0
  105. package/dist/cjs/pos/errors.d.ts +36 -0
  106. package/dist/cjs/pos/errors.js +95 -0
  107. package/dist/cjs/pos/index.d.ts +15 -0
  108. package/dist/cjs/pos/index.js +102 -0
  109. package/dist/cjs/pos/settings.d.ts +313 -0
  110. package/dist/cjs/pos/settings.js +376 -0
  111. package/dist/cjs/pos/texte.d.ts +883 -0
  112. package/dist/cjs/pos/texte.js +489 -0
  113. package/dist/cjs/{kasse → pos}/trinkgeld.d.ts +1 -1
  114. package/dist/cjs/{kasse → pos}/trinkgeld.js +2 -2
  115. package/dist/cjs/printing/escpos.d.ts +29 -29
  116. package/dist/cjs/printing/escpos.js +61 -61
  117. package/dist/cjs/printing/index.d.ts +2 -2
  118. package/dist/cjs/printing/index.js +17 -17
  119. package/dist/cjs/printing/qr-groesse.d.ts +38 -38
  120. package/dist/cjs/printing/qr-groesse.js +47 -47
  121. package/dist/cjs/printing/webusb.d.ts +2 -2
  122. package/dist/cjs/printing/webusb.js +4 -4
  123. package/dist/cjs/react/index.d.ts +21 -21
  124. package/dist/cjs/react/index.js +40 -30
  125. package/dist/cjs/receipt/bild.d.ts +4 -4
  126. package/dist/cjs/receipt/bild.js +11 -11
  127. package/dist/cjs/receipt/blatt.d.ts +46 -46
  128. package/dist/cjs/receipt/blatt.js +59 -59
  129. package/dist/cjs/receipt/discount.d.ts +1 -1
  130. package/dist/cjs/receipt/discount.js +8 -8
  131. package/dist/cjs/receipt/due.d.ts +86 -0
  132. package/dist/cjs/receipt/due.js +261 -0
  133. package/dist/cjs/receipt/epos.d.ts +22 -22
  134. package/dist/cjs/receipt/epos.js +45 -45
  135. package/dist/cjs/receipt/grid.d.ts +10 -10
  136. package/dist/cjs/receipt/grid.js +20 -20
  137. package/dist/cjs/receipt/index.d.ts +9 -8
  138. package/dist/cjs/receipt/index.js +26 -23
  139. package/dist/cjs/receipt/layout-escpos.d.ts +24 -24
  140. package/dist/cjs/receipt/layout-escpos.js +49 -49
  141. package/dist/cjs/receipt/layout.d.ts +28 -23
  142. package/dist/cjs/receipt/layout.js +45 -21
  143. package/dist/cjs/receipt/marke-daten.d.ts +8 -8
  144. package/dist/cjs/receipt/marke-daten.js +8 -8
  145. package/dist/cjs/receipt/marke.d.ts +7 -7
  146. package/dist/cjs/receipt/marke.js +10 -10
  147. package/dist/cjs/register/errors.d.ts +61 -0
  148. package/dist/cjs/register/errors.js +112 -0
  149. package/dist/cjs/register/index.d.ts +14 -1
  150. package/dist/cjs/register/index.js +20 -1
  151. package/dist/cjs/register/pairing.d.ts +55 -36
  152. package/dist/cjs/register/pairing.js +33 -29
  153. package/dist/cjs/register/session.d.ts +5 -5
  154. package/dist/cjs/register/session.js +7 -7
  155. package/dist/cjs/stored/draht.d.ts +45 -0
  156. package/dist/cjs/stored/draht.js +220 -0
  157. package/dist/cjs/stored/einstellungen.d.ts +23 -0
  158. package/dist/cjs/stored/einstellungen.js +200 -0
  159. package/dist/cjs/stored/index.d.ts +109 -0
  160. package/dist/cjs/stored/index.js +225 -0
  161. package/dist/cjs/stored/vokabular.d.ts +18 -0
  162. package/dist/cjs/stored/vokabular.js +389 -0
  163. package/dist/cjs/version.d.ts +7 -0
  164. package/dist/cjs/version.js +10 -0
  165. package/dist/cjs/vienna-time.d.ts +1 -1
  166. package/dist/cjs/vienna-time.js +2 -2
  167. package/dist/esm/client/api.d.ts +7 -6
  168. package/dist/esm/client/api.js +4 -4
  169. package/dist/esm/client/aufrufe.d.ts +29 -5
  170. package/dist/esm/client/aufrufe.js +111 -1
  171. package/dist/esm/client/auth.d.ts +2 -0
  172. package/dist/esm/client/auth.js +16 -1
  173. package/dist/esm/client/cashregisters.d.ts +1 -1
  174. package/dist/esm/client/cashregisters.js +2 -2
  175. package/dist/esm/client/errors.d.ts +78 -19
  176. package/dist/esm/client/errors.js +105 -27
  177. package/dist/esm/client/fehlercodes.d.ts +9 -0
  178. package/dist/esm/client/fehlercodes.js +32 -0
  179. package/dist/esm/client/index.d.ts +5 -5
  180. package/dist/esm/client/index.js +5 -5
  181. package/dist/esm/client/receipts.d.ts +131 -124
  182. package/dist/esm/client/receipts.js +213 -140
  183. package/dist/esm/client/reports.d.ts +26 -4
  184. package/dist/esm/client/reports.js +36 -4
  185. package/dist/esm/client/status.d.ts +3 -3
  186. package/dist/esm/client/status.js +7 -7
  187. package/dist/esm/client/transport.d.ts +56 -4
  188. package/dist/esm/client/transport.js +221 -24
  189. package/dist/esm/enums/vat-rate.d.ts +2 -2
  190. package/dist/esm/enums/vat-rate.js +1 -1
  191. package/dist/esm/index.d.ts +4 -3
  192. package/dist/esm/index.js +4 -3
  193. package/dist/{cjs/rechnung → esm/invoice}/api.d.ts +18 -17
  194. package/dist/esm/{rechnung → invoice}/api.js +6 -6
  195. package/dist/{cjs/rechnung → esm/invoice}/auth.d.ts +2 -2
  196. package/dist/esm/{rechnung → invoice}/auth.js +4 -4
  197. package/dist/{cjs/rechnung/rechnen.d.ts → esm/invoice/calc.d.ts} +27 -27
  198. package/dist/esm/{rechnung/rechnen.js → invoice/calc.js} +45 -45
  199. package/dist/{cjs/rechnung → esm/invoice}/endpunkte.d.ts +23 -21
  200. package/dist/esm/{rechnung → invoice}/endpunkte.js +52 -42
  201. package/dist/esm/invoice/fehler.d.ts +31 -0
  202. package/dist/esm/invoice/fehler.js +33 -0
  203. package/dist/esm/invoice/index.d.ts +21 -0
  204. package/dist/esm/invoice/index.js +20 -0
  205. package/dist/esm/{rechnung → invoice}/summen.d.ts +12 -12
  206. package/dist/esm/{rechnung → invoice}/summen.js +12 -12
  207. package/dist/esm/invoice/texte.d.ts +224 -0
  208. package/dist/esm/invoice/texte.js +421 -0
  209. package/dist/{cjs/rechnung → esm/invoice}/typen.d.ts +32 -11
  210. package/dist/{cjs/rechnung → esm/invoice}/vertrag.d.ts +97 -71
  211. package/dist/esm/{rechnung → invoice}/vertrag.js +143 -81
  212. package/dist/esm/models/cancellation.d.ts +53 -21
  213. package/dist/esm/models/cancellation.js +90 -41
  214. package/dist/esm/models/hobex-receipt.d.ts +3 -3
  215. package/dist/esm/models/hobex-receipt.js +35 -35
  216. package/dist/esm/models/index.d.ts +6 -5
  217. package/dist/esm/models/index.js +6 -5
  218. package/dist/esm/models/payment-errors.d.ts +32 -15
  219. package/dist/esm/models/payment-errors.js +77 -32
  220. package/dist/esm/models/receipt-company.d.ts +6 -5
  221. package/dist/esm/models/receipt-company.js +4 -4
  222. package/dist/esm/models/receipt-email.d.ts +32 -18
  223. package/dist/esm/models/receipt-email.js +65 -23
  224. package/dist/esm/models/receipt-errors.d.ts +39 -0
  225. package/dist/esm/models/receipt-errors.js +87 -0
  226. package/dist/esm/models/receipt-item.d.ts +9 -1
  227. package/dist/esm/models/receipt-item.js +3 -0
  228. package/dist/esm/models/receipt-payment.d.ts +2 -1
  229. package/dist/esm/models/receipt-summary.d.ts +10 -4
  230. package/dist/esm/models/receipt-summary.js +9 -3
  231. package/dist/esm/models/receipt.d.ts +31 -2
  232. package/dist/esm/models/receipt.js +28 -2
  233. package/dist/esm/models/voucher.d.ts +7 -6
  234. package/dist/esm/models/voucher.js +2 -7
  235. package/dist/esm/partner/ablauf.d.ts +10 -10
  236. package/dist/esm/partner/ablauf.js +27 -27
  237. package/dist/esm/partner/api.d.ts +26 -23
  238. package/dist/esm/partner/api.js +13 -15
  239. package/dist/esm/partner/auth.d.ts +1 -1
  240. package/dist/esm/partner/auth.js +2 -2
  241. package/dist/esm/partner/betrieb.d.ts +7 -7
  242. package/dist/esm/partner/betrieb.js +8 -8
  243. package/dist/esm/partner/endpunkte.d.ts +27 -14
  244. package/dist/esm/partner/endpunkte.js +79 -39
  245. package/dist/esm/partner/fehler.d.ts +60 -30
  246. package/dist/esm/partner/fehler.js +91 -35
  247. package/dist/esm/partner/index.d.ts +13 -12
  248. package/dist/esm/partner/index.js +12 -11
  249. package/dist/esm/partner/secret.d.ts +3 -3
  250. package/dist/esm/partner/secret.js +5 -5
  251. package/dist/esm/partner/typen.d.ts +129 -71
  252. package/dist/esm/partner/typen.js +75 -2
  253. package/dist/esm/partner/webhook-signatur.d.ts +2 -2
  254. package/dist/esm/partner/webhook-signatur.js +12 -12
  255. package/dist/esm/partner/webhooks.d.ts +60 -32
  256. package/dist/esm/partner/webhooks.js +38 -32
  257. package/dist/esm/payments/hobex-hps/transaction-response.js +28 -28
  258. package/dist/esm/payments/hobex.d.ts +2 -2
  259. package/dist/esm/payments/hobex.js +4 -4
  260. package/dist/esm/payments/stripe.d.ts +2 -2
  261. package/dist/esm/payments/stripe.js +4 -4
  262. package/dist/esm/pos/artikel.d.ts +90 -0
  263. package/dist/esm/pos/artikel.js +79 -0
  264. package/dist/esm/pos/client.d.ts +27 -0
  265. package/dist/esm/pos/client.js +137 -0
  266. package/dist/esm/pos/drucker.d.ts +86 -0
  267. package/dist/esm/pos/drucker.js +71 -0
  268. package/dist/esm/pos/errors.d.ts +36 -0
  269. package/dist/esm/pos/errors.js +88 -0
  270. package/dist/esm/pos/index.d.ts +15 -0
  271. package/dist/esm/pos/index.js +20 -0
  272. package/dist/esm/pos/settings.d.ts +313 -0
  273. package/dist/esm/pos/settings.js +367 -0
  274. package/dist/esm/pos/texte.d.ts +883 -0
  275. package/dist/esm/pos/texte.js +481 -0
  276. package/dist/esm/{kasse → pos}/trinkgeld.d.ts +1 -1
  277. package/dist/esm/{kasse → pos}/trinkgeld.js +2 -2
  278. package/dist/esm/printing/escpos.d.ts +29 -29
  279. package/dist/esm/printing/escpos.js +56 -56
  280. package/dist/esm/printing/index.d.ts +2 -2
  281. package/dist/esm/printing/index.js +2 -2
  282. package/dist/esm/printing/qr-groesse.d.ts +38 -38
  283. package/dist/esm/printing/qr-groesse.js +42 -42
  284. package/dist/esm/printing/webusb.d.ts +2 -2
  285. package/dist/esm/printing/webusb.js +4 -4
  286. package/dist/esm/react/index.d.ts +21 -21
  287. package/dist/esm/react/index.js +39 -29
  288. package/dist/esm/receipt/bild.d.ts +4 -4
  289. package/dist/esm/receipt/bild.js +11 -11
  290. package/dist/esm/receipt/blatt.d.ts +46 -46
  291. package/dist/esm/receipt/blatt.js +55 -55
  292. package/dist/esm/receipt/discount.d.ts +1 -1
  293. package/dist/esm/receipt/discount.js +7 -7
  294. package/dist/esm/receipt/due.d.ts +86 -0
  295. package/dist/esm/receipt/due.js +257 -0
  296. package/dist/esm/receipt/epos.d.ts +22 -22
  297. package/dist/esm/receipt/epos.js +47 -47
  298. package/dist/esm/receipt/grid.d.ts +10 -10
  299. package/dist/esm/receipt/grid.js +18 -18
  300. package/dist/esm/receipt/index.d.ts +9 -8
  301. package/dist/esm/receipt/index.js +9 -8
  302. package/dist/esm/receipt/layout-escpos.d.ts +24 -24
  303. package/dist/esm/receipt/layout-escpos.js +51 -51
  304. package/dist/esm/receipt/layout.d.ts +28 -23
  305. package/dist/esm/receipt/layout.js +44 -20
  306. package/dist/esm/receipt/marke-daten.d.ts +8 -8
  307. package/dist/esm/receipt/marke-daten.js +7 -7
  308. package/dist/esm/receipt/marke.d.ts +7 -7
  309. package/dist/esm/receipt/marke.js +10 -10
  310. package/dist/esm/register/errors.d.ts +61 -0
  311. package/dist/esm/register/errors.js +104 -0
  312. package/dist/esm/register/index.d.ts +14 -1
  313. package/dist/esm/register/index.js +13 -0
  314. package/dist/esm/register/pairing.d.ts +55 -36
  315. package/dist/esm/register/pairing.js +33 -29
  316. package/dist/esm/register/session.d.ts +5 -5
  317. package/dist/esm/register/session.js +7 -7
  318. package/dist/esm/stored/draht.d.ts +45 -0
  319. package/dist/esm/stored/draht.js +208 -0
  320. package/dist/esm/stored/einstellungen.d.ts +23 -0
  321. package/dist/esm/stored/einstellungen.js +196 -0
  322. package/dist/esm/stored/index.d.ts +109 -0
  323. package/dist/esm/stored/index.js +217 -0
  324. package/dist/esm/stored/vokabular.d.ts +18 -0
  325. package/dist/esm/stored/vokabular.js +386 -0
  326. package/dist/esm/version.d.ts +7 -0
  327. package/dist/esm/version.js +7 -0
  328. package/dist/esm/vienna-time.d.ts +1 -1
  329. package/dist/esm/vienna-time.js +2 -2
  330. package/fixtures/{erwartet/storno-rabatt.lines.json → expected/cancellation-discount.lines.json} +2 -2
  331. package/fixtures/expected/cancellation-discount.sheet32.json +248 -0
  332. package/fixtures/{erwartet/storno-rabatt.blatt48.json → expected/cancellation-discount.sheet48.json} +119 -119
  333. package/fixtures/{erwartet/storno-voll.lines.json → expected/cancellation-full.lines.json} +2 -2
  334. package/fixtures/expected/cancellation-full.sheet32.json +218 -0
  335. package/fixtures/{erwartet/storno-voll.blatt48.json → expected/cancellation-full.sheet48.json} +107 -107
  336. package/fixtures/{erwartet/storno-teil.lines.json → expected/cancellation-partial.lines.json} +2 -2
  337. package/fixtures/expected/cancellation-partial.sheet32.json +206 -0
  338. package/fixtures/{erwartet/storno-teil.blatt48.json → expected/cancellation-partial.sheet48.json} +101 -101
  339. package/fixtures/{erwartet/storno-split-voll.lines.json → expected/cancellation-split-full.lines.json} +2 -2
  340. package/fixtures/expected/cancellation-split-full.sheet32.json +320 -0
  341. package/fixtures/{erwartet/storno-split-voll.blatt48.json → expected/cancellation-split-full.sheet48.json} +158 -158
  342. package/fixtures/{erwartet/storno-split-teil.lines.json → expected/cancellation-split-partial.lines.json} +2 -2
  343. package/fixtures/expected/cancellation-split-partial.sheet32.json +230 -0
  344. package/fixtures/{erwartet/storno-split-teil.blatt48.json → expected/cancellation-split-partial.sheet48.json} +113 -113
  345. package/fixtures/{erwartet/karte-eigener.lines.json → expected/card-custom.lines.json} +1 -1
  346. package/fixtures/expected/card-custom.sheet32.json +158 -0
  347. package/fixtures/{erwartet/karte-eigener.blatt48.json → expected/card-custom.sheet48.json} +80 -80
  348. package/fixtures/{erwartet/karte-gptom-ios.lines.json → expected/card-gptom-ios.lines.json} +1 -1
  349. package/fixtures/expected/card-gptom-ios.sheet32.json +230 -0
  350. package/fixtures/{erwartet/karte-gptom-ios.blatt48.json → expected/card-gptom-ios.sheet48.json} +116 -116
  351. package/fixtures/{erwartet/karte-gptom.lines.json → expected/card-gptom.lines.json} +1 -1
  352. package/fixtures/expected/card-gptom.sheet32.json +230 -0
  353. package/fixtures/{erwartet/karte-gptom.blatt48.json → expected/card-gptom.sheet48.json} +116 -116
  354. package/fixtures/{erwartet/karte-hobex-cloud.lines.json → expected/card-hobex-cloud.lines.json} +1 -1
  355. package/fixtures/expected/card-hobex-cloud.sheet32.json +200 -0
  356. package/fixtures/{erwartet/karte-hobex-cloud.blatt48.json → expected/card-hobex-cloud.sheet48.json} +101 -101
  357. package/fixtures/{erwartet/karte-hobex-hps.lines.json → expected/card-hobex-hps.lines.json} +1 -1
  358. package/fixtures/expected/card-hobex-hps.sheet32.json +224 -0
  359. package/fixtures/{erwartet/karte-hobex-hps.blatt48.json → expected/card-hobex-hps.sheet48.json} +113 -113
  360. package/fixtures/{erwartet/karte-mypos.lines.json → expected/card-mypos.lines.json} +1 -1
  361. package/fixtures/expected/card-mypos.sheet32.json +254 -0
  362. package/fixtures/{erwartet/karte-mypos.blatt48.json → expected/card-mypos.sheet48.json} +122 -122
  363. package/fixtures/{erwartet/karte-stripe-eps.lines.json → expected/card-stripe-eps.lines.json} +1 -1
  364. package/fixtures/expected/card-stripe-eps.sheet32.json +194 -0
  365. package/fixtures/{erwartet/karte-stripe-eps.blatt48.json → expected/card-stripe-eps.sheet48.json} +98 -98
  366. package/fixtures/{erwartet/karte-stripe.lines.json → expected/card-stripe.lines.json} +1 -1
  367. package/fixtures/expected/card-stripe.sheet32.json +212 -0
  368. package/fixtures/{erwartet/karte-stripe.blatt48.json → expected/card-stripe.sheet48.json} +107 -107
  369. package/fixtures/{erwartet/karte-sumup.lines.json → expected/card-sumup.lines.json} +1 -1
  370. package/fixtures/expected/card-sumup.sheet32.json +218 -0
  371. package/fixtures/{erwartet/karte-sumup.blatt48.json → expected/card-sumup.sheet48.json} +104 -104
  372. package/fixtures/{erwartet/rabattzeilen.lines.json → expected/discount-lines.lines.json} +1 -1
  373. package/fixtures/expected/discount-lines.sheet32.json +200 -0
  374. package/fixtures/{erwartet/rabattzeilen.blatt48.json → expected/discount-lines.sheet48.json} +98 -98
  375. package/fixtures/{erwartet/rabatt-chef-trinkgeld.lines.json → expected/discount-owner-tip.lines.json} +1 -1
  376. package/fixtures/expected/discount-owner-tip.sheet32.json +212 -0
  377. package/fixtures/{erwartet/rabatt-chef-trinkgeld.blatt48.json → expected/discount-owner-tip.sheet48.json} +104 -104
  378. package/fixtures/{erwartet/rabatt-einfach.lines.json → expected/discount-simple.lines.json} +1 -1
  379. package/fixtures/expected/discount-simple.sheet32.json +182 -0
  380. package/fixtures/{erwartet/rabatt-einfach.blatt48.json → expected/discount-simple.sheet48.json} +89 -89
  381. package/fixtures/{erwartet/rabatt-trinkgeld.lines.json → expected/discount-tip.lines.json} +1 -1
  382. package/fixtures/expected/discount-tip.sheet32.json +212 -0
  383. package/fixtures/{erwartet/rabatt-trinkgeld.blatt48.json → expected/discount-tip.sheet48.json} +104 -104
  384. package/fixtures/{erwartet/rabatt-wertgutschein.lines.json → expected/discount-value-voucher.lines.json} +1 -1
  385. package/fixtures/expected/discount-value-voucher.sheet32.json +218 -0
  386. package/fixtures/{erwartet/rabatt-wertgutschein.blatt48.json → expected/discount-value-voucher.sheet48.json} +107 -107
  387. package/fixtures/{erwartet/langer-artikelname.lines.json → expected/long-item-name.lines.json} +1 -1
  388. package/fixtures/expected/long-item-name.sheet32.json +176 -0
  389. package/fixtures/{erwartet/langer-artikelname.blatt48.json → expected/long-item-name.sheet48.json} +86 -86
  390. package/fixtures/{erwartet/verkauf-karte.lines.json → expected/sale-card.lines.json} +1 -1
  391. package/fixtures/expected/sale-card.sheet32.json +176 -0
  392. package/fixtures/{erwartet/verkauf-karte.blatt48.json → expected/sale-card.sheet48.json} +86 -86
  393. package/fixtures/{erwartet/verkauf-bar.lines.json → expected/sale-cash.lines.json} +1 -1
  394. package/fixtures/expected/sale-cash.sheet32.json +176 -0
  395. package/fixtures/{erwartet/verkauf-bar.blatt48.json → expected/sale-cash.sheet48.json} +86 -86
  396. package/fixtures/{erwartet/verkauf-kleinunternehmer.lines.json → expected/sale-small-business.lines.json} +1 -1
  397. package/fixtures/expected/sale-small-business.sheet32.json +182 -0
  398. package/fixtures/{erwartet/verkauf-kleinunternehmer.blatt48.json → expected/sale-small-business.sheet48.json} +89 -89
  399. package/fixtures/{erwartet/signaturausfall-verkauf.lines.json → expected/signature-outage-sale.lines.json} +1 -1
  400. package/fixtures/expected/signature-outage-sale.sheet32.json +194 -0
  401. package/fixtures/{erwartet/signaturausfall-verkauf.blatt48.json → expected/signature-outage-sale.sheet48.json} +92 -92
  402. package/fixtures/{erwartet/split-karte-karte-bar.lines.json → expected/split-card-card-cash.lines.json} +1 -1
  403. package/fixtures/expected/split-card-card-cash.sheet32.json +356 -0
  404. package/fixtures/{erwartet/split-karte-karte-bar.blatt48.json → expected/split-card-card-cash.sheet48.json} +170 -170
  405. package/fixtures/{erwartet/split-bar-rueckgeld.lines.json → expected/split-cash-change.lines.json} +1 -1
  406. package/fixtures/expected/split-cash-change.sheet32.json +194 -0
  407. package/fixtures/{erwartet/split-bar-rueckgeld.blatt48.json → expected/split-cash-change.sheet48.json} +92 -92
  408. package/fixtures/{erwartet/split-langer-betrag.lines.json → expected/split-long-amount.lines.json} +1 -1
  409. package/fixtures/expected/split-long-amount.sheet32.json +266 -0
  410. package/fixtures/{erwartet/split-langer-betrag.blatt48.json → expected/split-long-amount.sheet48.json} +131 -131
  411. package/fixtures/{erwartet/split-eine-karte-trinkgeld.lines.json → expected/split-one-card-tip.lines.json} +1 -1
  412. package/fixtures/expected/split-one-card-tip.sheet32.json +242 -0
  413. package/fixtures/{erwartet/split-eine-karte-trinkgeld.blatt48.json → expected/split-one-card-tip.sheet48.json} +113 -113
  414. package/fixtures/{erwartet/split-tischrunde-trinkgeld.lines.json → expected/split-table-round-tip.lines.json} +1 -1
  415. package/fixtures/expected/split-table-round-tip.sheet32.json +470 -0
  416. package/fixtures/{erwartet/split-tischrunde-trinkgeld.blatt48.json → expected/split-table-round-tip.sheet48.json} +218 -218
  417. package/fixtures/{erwartet/split-trinkgeld-karte.lines.json → expected/split-tip-card.lines.json} +1 -1
  418. package/fixtures/expected/split-tip-card.sheet32.json +272 -0
  419. package/fixtures/{erwartet/split-trinkgeld-karte.blatt48.json → expected/split-tip-card.sheet48.json} +128 -128
  420. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.lines.json → expected/split-two-cards-same-provider.lines.json} +1 -1
  421. package/fixtures/expected/split-two-cards-same-provider.sheet32.json +326 -0
  422. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.blatt48.json → expected/split-two-cards-same-provider.sheet48.json} +149 -149
  423. package/fixtures/{erwartet/testkasse-verkauf.lines.json → expected/test-cashregister-sale.lines.json} +3 -3
  424. package/fixtures/expected/test-cashregister-sale.sheet32.json +224 -0
  425. package/fixtures/{erwartet/testkasse-verkauf.blatt48.json → expected/test-cashregister-sale.sheet48.json} +110 -110
  426. package/fixtures/{erwartet/testsignatur-verkauf.lines.json → expected/test-signature-sale.lines.json} +3 -3
  427. package/fixtures/expected/test-signature-sale.sheet32.json +236 -0
  428. package/fixtures/{erwartet/testsignatur-verkauf.blatt48.json → expected/test-signature-sale.sheet48.json} +110 -110
  429. package/fixtures/{erwartet → expected}/training.lines.json +2 -2
  430. package/fixtures/expected/training.sheet32.json +236 -0
  431. package/fixtures/{erwartet/training.blatt48.json → expected/training.sheet48.json} +110 -110
  432. package/fixtures/{erwartet/null-jahr.lines.json → expected/zero-annual.lines.json} +2 -2
  433. package/fixtures/expected/zero-annual.sheet32.json +212 -0
  434. package/fixtures/{erwartet/null-jahr.blatt48.json → expected/zero-annual.sheet48.json} +95 -95
  435. package/fixtures/{erwartet/null-schluss.lines.json → expected/zero-final.lines.json} +2 -2
  436. package/fixtures/expected/zero-final.sheet32.json +206 -0
  437. package/fixtures/{erwartet/null-schluss.blatt48.json → expected/zero-final.sheet48.json} +95 -95
  438. package/fixtures/{erwartet/null-pruef.lines.json → expected/zero-manual.lines.json} +2 -2
  439. package/fixtures/expected/zero-manual.sheet32.json +206 -0
  440. package/fixtures/{erwartet/null-pruef.blatt48.json → expected/zero-manual.sheet48.json} +95 -95
  441. package/fixtures/{erwartet/null-monat.lines.json → expected/zero-monthly.lines.json} +2 -2
  442. package/fixtures/expected/zero-monthly.sheet32.json +206 -0
  443. package/fixtures/{erwartet/null-monat.blatt48.json → expected/zero-monthly.sheet48.json} +95 -95
  444. package/fixtures/{erwartet/null-ausfall.lines.json → expected/zero-outage-end.lines.json} +2 -2
  445. package/fixtures/expected/zero-outage-end.sheet32.json +206 -0
  446. package/fixtures/{erwartet/null-ausfall.blatt48.json → expected/zero-outage-end.sheet48.json} +95 -95
  447. package/fixtures/{erwartet/null-start.lines.json → expected/zero-start.lines.json} +2 -2
  448. package/fixtures/expected/zero-start.sheet32.json +206 -0
  449. package/fixtures/{erwartet/null-start.blatt48.json → expected/zero-start.sheet48.json} +95 -95
  450. package/fixtures/hobex-hps-codes.json +40 -40
  451. package/fixtures/invoice-api-examples/brands-ok.json +8 -0
  452. package/fixtures/{rechnung-api-beispiele/credit-fehler-grund.json → invoice-api-examples/credit-error-reason.json} +6 -6
  453. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/credit-ok.json +6 -6
  454. package/fixtures/{rechnung-api-beispiele/customer-fehler-uid.json → invoice-api-examples/customer-error-vat-id.json} +4 -4
  455. package/fixtures/invoice-api-examples/customer-get-error-both.json +15 -0
  456. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/customer-ok.json +4 -4
  457. package/fixtures/{rechnung-api-beispiele/customer-search-fehler-leer.json → invoice-api-examples/customer-search-error-empty.json} +4 -4
  458. package/fixtures/{rechnung-api-beispiele/issue-rabatt.json → invoice-api-examples/issue-discount.json} +6 -6
  459. package/fixtures/{rechnung-api-beispiele/issue-englisch.json → invoice-api-examples/issue-english.json} +7 -7
  460. package/fixtures/{rechnung-api-beispiele/issue-fehler-cent.json → invoice-api-examples/issue-error-cent.json} +6 -6
  461. package/fixtures/{rechnung-api-beispiele/issue-fehler-sprache.json → invoice-api-examples/issue-error-language.json} +5 -5
  462. package/fixtures/{rechnung-api-beispiele/issue-fehler-negativ.json → invoice-api-examples/issue-error-negative.json} +6 -6
  463. package/fixtures/{rechnung-api-beispiele/issue-fehler-zahlungsart.json → invoice-api-examples/issue-error-payment-method.json} +8 -6
  464. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-beide.json → invoice-api-examples/issue-error-price-both.json} +6 -6
  465. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-fehlt.json → invoice-api-examples/issue-error-price-missing.json} +6 -6
  466. package/fixtures/{rechnung-api-beispiele/issue-fehler-menge.json → invoice-api-examples/issue-error-quantity.json} +6 -6
  467. package/fixtures/{rechnung-api-beispiele/issue-fehler-satz.json → invoice-api-examples/issue-error-rate.json} +6 -6
  468. package/fixtures/{rechnung-api-beispiele/issue-fehler-einheit.json → invoice-api-examples/issue-error-unit.json} +5 -5
  469. package/fixtures/{rechnung-api-beispiele/issue-fehler-unbekannt.json → invoice-api-examples/issue-error-unknown.json} +6 -6
  470. package/fixtures/{rechnung-api-beispiele/issue-brutto-20.json → invoice-api-examples/issue-gross-20.json} +6 -6
  471. package/fixtures/{rechnung-api-beispiele/issue-mikropreis.json → invoice-api-examples/issue-micro-price.json} +6 -6
  472. package/fixtures/{rechnung-api-beispiele/issue-gemischt.json → invoice-api-examples/issue-mixed.json} +6 -6
  473. package/fixtures/{rechnung-api-beispiele/issue-netto-20.json → invoice-api-examples/issue-net-20.json} +6 -6
  474. package/fixtures/{rechnung-api-beispiele/issue-bezahlt.json → invoice-api-examples/issue-paid.json} +7 -7
  475. package/fixtures/{rechnung-api-beispiele/issue-kleinunternehmer.json → invoice-api-examples/issue-small-business.json} +6 -6
  476. package/fixtures/invoice-api-examples/payment-error-on-site.json +17 -0
  477. package/fixtures/invoice-api-examples/payment-error-without-key.json +16 -0
  478. package/fixtures/invoice-api-examples/payment-recorded-later.json +14 -0
  479. package/fixtures/{rechnung-api-beispiele/setup-status-fehler-feld.json → invoice-api-examples/setup-status-error-field.json} +4 -4
  480. package/fixtures/invoice-api-examples/setup-status-ok.json +8 -0
  481. package/fixtures/{rechnung-api.schema.json → invoice-api.schema.json} +24 -24
  482. package/fixtures/{rechnung-rechnen-zufall.json → invoice-calc-random.json} +828 -828
  483. package/fixtures/{rechnung-rechnen.json → invoice-calc.json} +47 -47
  484. package/fixtures/invoice-texts.json +464 -0
  485. package/fixtures/{rechnung-summen.json → invoice-totals.json} +25 -25
  486. package/fixtures/{position-aus-euro.json → item-from-euro.json} +26 -26
  487. package/fixtures/manifest.json +252 -252
  488. package/fixtures/pos-message-cases.json +32 -0
  489. package/fixtures/pos-settings-defaults.json +149 -0
  490. package/fixtures/pos-texts.json +957 -0
  491. package/fixtures/receipt-due-generated.json +1218 -0
  492. package/fixtures/{belege/storno-rabatt.json → receipts/cancellation-discount.json} +3 -3
  493. package/fixtures/{belege/storno-voll.json → receipts/cancellation-full.json} +3 -3
  494. package/fixtures/{belege/storno-teil.json → receipts/cancellation-partial.json} +3 -3
  495. package/fixtures/{belege/storno-split-voll.json → receipts/cancellation-split-full.json} +3 -3
  496. package/fixtures/{belege/storno-split-teil.json → receipts/cancellation-split-partial.json} +3 -3
  497. package/fixtures/{belege/karte-eigener.json → receipts/card-custom.json} +2 -2
  498. package/fixtures/{belege/karte-gptom-ios.json → receipts/card-gptom-ios.json} +2 -2
  499. package/fixtures/{belege/karte-gptom.json → receipts/card-gptom.json} +2 -2
  500. package/fixtures/{belege/karte-hobex-cloud.json → receipts/card-hobex-cloud.json} +2 -2
  501. package/fixtures/{belege/karte-hobex-hps.json → receipts/card-hobex-hps.json} +2 -2
  502. package/fixtures/{belege/karte-mypos.json → receipts/card-mypos.json} +2 -2
  503. package/fixtures/{belege/karte-stripe-eps.json → receipts/card-stripe-eps.json} +2 -2
  504. package/fixtures/{belege/karte-stripe.json → receipts/card-stripe.json} +2 -2
  505. package/fixtures/{belege/karte-sumup.json → receipts/card-sumup.json} +2 -2
  506. package/fixtures/{belege/rabattzeilen.json → receipts/discount-lines.json} +2 -2
  507. package/fixtures/{belege/rabatt-chef-trinkgeld.json → receipts/discount-owner-tip.json} +2 -2
  508. package/fixtures/{belege/rabatt-einfach.json → receipts/discount-simple.json} +2 -2
  509. package/fixtures/{belege/rabatt-trinkgeld.json → receipts/discount-tip.json} +2 -2
  510. package/fixtures/{belege/rabatt-wertgutschein.json → receipts/discount-value-voucher.json} +2 -2
  511. package/fixtures/{belege/langer-artikelname.json → receipts/long-item-name.json} +2 -2
  512. package/fixtures/{belege/verkauf-karte.json → receipts/sale-card.json} +2 -2
  513. package/fixtures/{belege/verkauf-bar.json → receipts/sale-cash.json} +2 -2
  514. package/fixtures/{belege/verkauf-kleinunternehmer.json → receipts/sale-small-business.json} +1 -1
  515. package/fixtures/{belege/signaturausfall-verkauf.json → receipts/signature-outage-sale.json} +2 -2
  516. package/fixtures/{belege/split-karte-karte-bar.json → receipts/split-card-card-cash.json} +2 -2
  517. package/fixtures/{belege/split-bar-rueckgeld.json → receipts/split-cash-change.json} +2 -2
  518. package/fixtures/{belege/split-langer-betrag.json → receipts/split-long-amount.json} +2 -2
  519. package/fixtures/{belege/split-eine-karte-trinkgeld.json → receipts/split-one-card-tip.json} +2 -2
  520. package/fixtures/{belege/split-tischrunde-trinkgeld.json → receipts/split-table-round-tip.json} +2 -2
  521. package/fixtures/{belege/split-trinkgeld-karte.json → receipts/split-tip-card.json} +2 -2
  522. package/fixtures/{belege/split-zwei-karten-gleicher-anbieter.json → receipts/split-two-cards-same-provider.json} +2 -2
  523. package/fixtures/{belege/testsignatur-verkauf.json → receipts/test-cashregister-sale.json} +3 -3
  524. package/fixtures/{belege/testkasse-verkauf.json → receipts/test-signature-sale.json} +3 -3
  525. package/fixtures/{belege → receipts}/training.json +2 -2
  526. package/fixtures/{belege/null-jahr.json → receipts/zero-annual.json} +5 -5
  527. package/fixtures/{belege/null-schluss.json → receipts/zero-final.json} +5 -5
  528. package/fixtures/{belege/null-pruef.json → receipts/zero-manual.json} +5 -5
  529. package/fixtures/{belege/null-monat.json → receipts/zero-monthly.json} +5 -5
  530. package/fixtures/{belege/null-ausfall.json → receipts/zero-outage-end.json} +5 -5
  531. package/fixtures/{belege/null-start.json → receipts/zero-start.json} +5 -5
  532. package/fixtures/renames-1.0.json +1490 -0
  533. package/fixtures/{kasse-settings-standard.json → stored/pos-settings-defaults.json} +10 -8
  534. package/fixtures/surface.json +877 -0
  535. package/fixtures/v3/README.md +125 -0
  536. package/fixtures/v3/antworten/belege.json +4738 -0
  537. package/fixtures/v3/antworten/belegmail.json +154 -0
  538. package/fixtures/v3/antworten/kasse-belege.json +4304 -0
  539. package/fixtures/v3/antworten/kasse.json +12716 -0
  540. package/fixtures/v3/antworten/rechnungen.json +1712 -0
  541. package/fixtures/v3/antworten/storno.json +737 -0
  542. package/fixtures/v3/stored/belege.json +502 -0
  543. package/fixtures/v3/stored/kasse.json +3461 -0
  544. package/fixtures/v3/stored/rechnungen.json +750 -0
  545. package/fixtures/v3/v3-vokabular.json +3375 -0
  546. package/fixtures/v3/zahlbetrag-faelle.json +794 -0
  547. package/package.json +32 -18
  548. package/dist/cjs/kasse/artikel.d.ts +0 -83
  549. package/dist/cjs/kasse/artikel.js +0 -79
  550. package/dist/cjs/kasse/client.d.ts +0 -10
  551. package/dist/cjs/kasse/client.js +0 -38
  552. package/dist/cjs/kasse/drucker.d.ts +0 -59
  553. package/dist/cjs/kasse/drucker.js +0 -50
  554. package/dist/cjs/kasse/index.d.ts +0 -13
  555. package/dist/cjs/kasse/index.js +0 -79
  556. package/dist/cjs/kasse/settings.d.ts +0 -227
  557. package/dist/cjs/kasse/settings.js +0 -169
  558. package/dist/cjs/kasse/texte.d.ts +0 -458
  559. package/dist/cjs/kasse/texte.js +0 -244
  560. package/dist/cjs/rechnung/fehler.d.ts +0 -21
  561. package/dist/cjs/rechnung/fehler.js +0 -44
  562. package/dist/cjs/rechnung/index.d.ts +0 -21
  563. package/dist/cjs/rechnung/index.js +0 -82
  564. package/dist/cjs/rechnung/texte.d.ts +0 -222
  565. package/dist/cjs/rechnung/texte.js +0 -425
  566. package/dist/esm/kasse/artikel.d.ts +0 -83
  567. package/dist/esm/kasse/artikel.js +0 -70
  568. package/dist/esm/kasse/client.d.ts +0 -10
  569. package/dist/esm/kasse/client.js +0 -33
  570. package/dist/esm/kasse/drucker.d.ts +0 -59
  571. package/dist/esm/kasse/drucker.js +0 -45
  572. package/dist/esm/kasse/index.d.ts +0 -13
  573. package/dist/esm/kasse/index.js +0 -18
  574. package/dist/esm/kasse/settings.d.ts +0 -227
  575. package/dist/esm/kasse/settings.js +0 -165
  576. package/dist/esm/kasse/texte.d.ts +0 -458
  577. package/dist/esm/kasse/texte.js +0 -238
  578. package/dist/esm/rechnung/fehler.d.ts +0 -21
  579. package/dist/esm/rechnung/fehler.js +0 -39
  580. package/dist/esm/rechnung/index.d.ts +0 -21
  581. package/dist/esm/rechnung/index.js +0 -20
  582. package/dist/esm/rechnung/texte.d.ts +0 -222
  583. package/dist/esm/rechnung/texte.js +0 -421
  584. package/fixtures/erwartet/karte-eigener.blatt32.json +0 -158
  585. package/fixtures/erwartet/karte-gptom-ios.blatt32.json +0 -230
  586. package/fixtures/erwartet/karte-gptom.blatt32.json +0 -230
  587. package/fixtures/erwartet/karte-hobex-cloud.blatt32.json +0 -200
  588. package/fixtures/erwartet/karte-hobex-hps.blatt32.json +0 -224
  589. package/fixtures/erwartet/karte-mypos.blatt32.json +0 -254
  590. package/fixtures/erwartet/karte-stripe-eps.blatt32.json +0 -194
  591. package/fixtures/erwartet/karte-stripe.blatt32.json +0 -212
  592. package/fixtures/erwartet/karte-sumup.blatt32.json +0 -218
  593. package/fixtures/erwartet/langer-artikelname.blatt32.json +0 -176
  594. package/fixtures/erwartet/null-ausfall.blatt32.json +0 -206
  595. package/fixtures/erwartet/null-jahr.blatt32.json +0 -212
  596. package/fixtures/erwartet/null-monat.blatt32.json +0 -206
  597. package/fixtures/erwartet/null-pruef.blatt32.json +0 -206
  598. package/fixtures/erwartet/null-schluss.blatt32.json +0 -206
  599. package/fixtures/erwartet/null-start.blatt32.json +0 -206
  600. package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt32.json +0 -212
  601. package/fixtures/erwartet/rabatt-einfach.blatt32.json +0 -182
  602. package/fixtures/erwartet/rabatt-trinkgeld.blatt32.json +0 -212
  603. package/fixtures/erwartet/rabatt-wertgutschein.blatt32.json +0 -218
  604. package/fixtures/erwartet/rabattzeilen.blatt32.json +0 -200
  605. package/fixtures/erwartet/signaturausfall-verkauf.blatt32.json +0 -194
  606. package/fixtures/erwartet/split-bar-rueckgeld.blatt32.json +0 -194
  607. package/fixtures/erwartet/split-eine-karte-trinkgeld.blatt32.json +0 -242
  608. package/fixtures/erwartet/split-karte-karte-bar.blatt32.json +0 -356
  609. package/fixtures/erwartet/split-langer-betrag.blatt32.json +0 -266
  610. package/fixtures/erwartet/split-tischrunde-trinkgeld.blatt32.json +0 -470
  611. package/fixtures/erwartet/split-trinkgeld-karte.blatt32.json +0 -272
  612. package/fixtures/erwartet/split-zwei-karten-gleicher-anbieter.blatt32.json +0 -326
  613. package/fixtures/erwartet/storno-rabatt.blatt32.json +0 -248
  614. package/fixtures/erwartet/storno-split-teil.blatt32.json +0 -230
  615. package/fixtures/erwartet/storno-split-voll.blatt32.json +0 -320
  616. package/fixtures/erwartet/storno-teil.blatt32.json +0 -206
  617. package/fixtures/erwartet/storno-voll.blatt32.json +0 -218
  618. package/fixtures/erwartet/testkasse-verkauf.blatt32.json +0 -224
  619. package/fixtures/erwartet/testsignatur-verkauf.blatt32.json +0 -236
  620. package/fixtures/erwartet/training.blatt32.json +0 -236
  621. package/fixtures/erwartet/verkauf-bar.blatt32.json +0 -176
  622. package/fixtures/erwartet/verkauf-karte.blatt32.json +0 -176
  623. package/fixtures/erwartet/verkauf-kleinunternehmer.blatt32.json +0 -182
  624. package/fixtures/kasse-meldungen-faelle.json +0 -32
  625. package/fixtures/kasse-texte.json +0 -513
  626. package/fixtures/oberflaeche.json +0 -557
  627. package/fixtures/rechnung-api-beispiele/brands-ok.json +0 -8
  628. package/fixtures/rechnung-api-beispiele/customer-get-fehler-beide.json +0 -15
  629. package/fixtures/rechnung-api-beispiele/setup-status-ok.json +0 -8
  630. package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +0 -14
  631. package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +0 -15
  632. package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +0 -14
  633. package/fixtures/rechnung-texte.json +0 -464
  634. /package/dist/cjs/{rechnung → invoice}/typen.js +0 -0
  635. /package/dist/esm/{rechnung → invoice}/typen.js +0 -0
  636. /package/fixtures/{erwartet/storno-rabatt.grid32.txt → expected/cancellation-discount.grid32.txt} +0 -0
  637. /package/fixtures/{erwartet/storno-rabatt.grid48.txt → expected/cancellation-discount.grid48.txt} +0 -0
  638. /package/fixtures/{erwartet/storno-voll.grid32.txt → expected/cancellation-full.grid32.txt} +0 -0
  639. /package/fixtures/{erwartet/storno-voll.grid48.txt → expected/cancellation-full.grid48.txt} +0 -0
  640. /package/fixtures/{erwartet/storno-teil.grid32.txt → expected/cancellation-partial.grid32.txt} +0 -0
  641. /package/fixtures/{erwartet/storno-teil.grid48.txt → expected/cancellation-partial.grid48.txt} +0 -0
  642. /package/fixtures/{erwartet/storno-split-voll.grid32.txt → expected/cancellation-split-full.grid32.txt} +0 -0
  643. /package/fixtures/{erwartet/storno-split-voll.grid48.txt → expected/cancellation-split-full.grid48.txt} +0 -0
  644. /package/fixtures/{erwartet/storno-split-teil.grid32.txt → expected/cancellation-split-partial.grid32.txt} +0 -0
  645. /package/fixtures/{erwartet/storno-split-teil.grid48.txt → expected/cancellation-split-partial.grid48.txt} +0 -0
  646. /package/fixtures/{erwartet/karte-eigener.grid32.txt → expected/card-custom.grid32.txt} +0 -0
  647. /package/fixtures/{erwartet/karte-eigener.grid48.txt → expected/card-custom.grid48.txt} +0 -0
  648. /package/fixtures/{erwartet/karte-gptom-ios.grid32.txt → expected/card-gptom-ios.grid32.txt} +0 -0
  649. /package/fixtures/{erwartet/karte-gptom-ios.grid48.txt → expected/card-gptom-ios.grid48.txt} +0 -0
  650. /package/fixtures/{erwartet/karte-gptom.grid32.txt → expected/card-gptom.grid32.txt} +0 -0
  651. /package/fixtures/{erwartet/karte-gptom.grid48.txt → expected/card-gptom.grid48.txt} +0 -0
  652. /package/fixtures/{erwartet/karte-hobex-cloud.grid32.txt → expected/card-hobex-cloud.grid32.txt} +0 -0
  653. /package/fixtures/{erwartet/karte-hobex-cloud.grid48.txt → expected/card-hobex-cloud.grid48.txt} +0 -0
  654. /package/fixtures/{erwartet/karte-hobex-hps.grid32.txt → expected/card-hobex-hps.grid32.txt} +0 -0
  655. /package/fixtures/{erwartet/karte-hobex-hps.grid48.txt → expected/card-hobex-hps.grid48.txt} +0 -0
  656. /package/fixtures/{erwartet/karte-mypos.grid32.txt → expected/card-mypos.grid32.txt} +0 -0
  657. /package/fixtures/{erwartet/karte-mypos.grid48.txt → expected/card-mypos.grid48.txt} +0 -0
  658. /package/fixtures/{erwartet/karte-stripe-eps.grid32.txt → expected/card-stripe-eps.grid32.txt} +0 -0
  659. /package/fixtures/{erwartet/karte-stripe-eps.grid48.txt → expected/card-stripe-eps.grid48.txt} +0 -0
  660. /package/fixtures/{erwartet/karte-stripe.grid32.txt → expected/card-stripe.grid32.txt} +0 -0
  661. /package/fixtures/{erwartet/karte-stripe.grid48.txt → expected/card-stripe.grid48.txt} +0 -0
  662. /package/fixtures/{erwartet/karte-sumup.grid32.txt → expected/card-sumup.grid32.txt} +0 -0
  663. /package/fixtures/{erwartet/karte-sumup.grid48.txt → expected/card-sumup.grid48.txt} +0 -0
  664. /package/fixtures/{erwartet/rabattzeilen.grid32.txt → expected/discount-lines.grid32.txt} +0 -0
  665. /package/fixtures/{erwartet/rabattzeilen.grid48.txt → expected/discount-lines.grid48.txt} +0 -0
  666. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid32.txt → expected/discount-owner-tip.grid32.txt} +0 -0
  667. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid48.txt → expected/discount-owner-tip.grid48.txt} +0 -0
  668. /package/fixtures/{erwartet/rabatt-einfach.grid32.txt → expected/discount-simple.grid32.txt} +0 -0
  669. /package/fixtures/{erwartet/rabatt-einfach.grid48.txt → expected/discount-simple.grid48.txt} +0 -0
  670. /package/fixtures/{erwartet/rabatt-trinkgeld.grid32.txt → expected/discount-tip.grid32.txt} +0 -0
  671. /package/fixtures/{erwartet/rabatt-trinkgeld.grid48.txt → expected/discount-tip.grid48.txt} +0 -0
  672. /package/fixtures/{erwartet/rabatt-wertgutschein.grid32.txt → expected/discount-value-voucher.grid32.txt} +0 -0
  673. /package/fixtures/{erwartet/rabatt-wertgutschein.grid48.txt → expected/discount-value-voucher.grid48.txt} +0 -0
  674. /package/fixtures/{erwartet/logo-probe-hoch.raster32.txt → expected/logo-sample-tall.raster32.txt} +0 -0
  675. /package/fixtures/{erwartet/logo-probe.raster32.txt → expected/logo-sample.raster32.txt} +0 -0
  676. /package/fixtures/{erwartet/langer-artikelname.grid32.txt → expected/long-item-name.grid32.txt} +0 -0
  677. /package/fixtures/{erwartet/langer-artikelname.grid48.txt → expected/long-item-name.grid48.txt} +0 -0
  678. /package/fixtures/{erwartet/verkauf-karte.grid32.txt → expected/sale-card.grid32.txt} +0 -0
  679. /package/fixtures/{erwartet/verkauf-karte.grid48.txt → expected/sale-card.grid48.txt} +0 -0
  680. /package/fixtures/{erwartet/verkauf-bar.grid32.txt → expected/sale-cash.grid32.txt} +0 -0
  681. /package/fixtures/{erwartet/verkauf-bar.grid48.txt → expected/sale-cash.grid48.txt} +0 -0
  682. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid32.txt → expected/sale-small-business.grid32.txt} +0 -0
  683. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid48.txt → expected/sale-small-business.grid48.txt} +0 -0
  684. /package/fixtures/{erwartet/signaturausfall-verkauf.grid32.txt → expected/signature-outage-sale.grid32.txt} +0 -0
  685. /package/fixtures/{erwartet/signaturausfall-verkauf.grid48.txt → expected/signature-outage-sale.grid48.txt} +0 -0
  686. /package/fixtures/{erwartet/split-karte-karte-bar.grid32.txt → expected/split-card-card-cash.grid32.txt} +0 -0
  687. /package/fixtures/{erwartet/split-karte-karte-bar.grid48.txt → expected/split-card-card-cash.grid48.txt} +0 -0
  688. /package/fixtures/{erwartet/split-bar-rueckgeld.grid32.txt → expected/split-cash-change.grid32.txt} +0 -0
  689. /package/fixtures/{erwartet/split-bar-rueckgeld.grid48.txt → expected/split-cash-change.grid48.txt} +0 -0
  690. /package/fixtures/{erwartet/split-langer-betrag.grid32.txt → expected/split-long-amount.grid32.txt} +0 -0
  691. /package/fixtures/{erwartet/split-langer-betrag.grid48.txt → expected/split-long-amount.grid48.txt} +0 -0
  692. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid32.txt → expected/split-one-card-tip.grid32.txt} +0 -0
  693. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid48.txt → expected/split-one-card-tip.grid48.txt} +0 -0
  694. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid32.txt → expected/split-table-round-tip.grid32.txt} +0 -0
  695. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid48.txt → expected/split-table-round-tip.grid48.txt} +0 -0
  696. /package/fixtures/{erwartet/split-trinkgeld-karte.grid32.txt → expected/split-tip-card.grid32.txt} +0 -0
  697. /package/fixtures/{erwartet/split-trinkgeld-karte.grid48.txt → expected/split-tip-card.grid48.txt} +0 -0
  698. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid32.txt → expected/split-two-cards-same-provider.grid32.txt} +0 -0
  699. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid48.txt → expected/split-two-cards-same-provider.grid48.txt} +0 -0
  700. /package/fixtures/{erwartet/testkasse-verkauf.grid32.txt → expected/test-cashregister-sale.grid32.txt} +0 -0
  701. /package/fixtures/{erwartet/testkasse-verkauf.grid48.txt → expected/test-cashregister-sale.grid48.txt} +0 -0
  702. /package/fixtures/{erwartet/testsignatur-verkauf.grid32.txt → expected/test-signature-sale.grid32.txt} +0 -0
  703. /package/fixtures/{erwartet/testsignatur-verkauf.grid48.txt → expected/test-signature-sale.grid48.txt} +0 -0
  704. /package/fixtures/{erwartet → expected}/training.grid32.txt +0 -0
  705. /package/fixtures/{erwartet → expected}/training.grid48.txt +0 -0
  706. /package/fixtures/{erwartet/null-jahr.grid32.txt → expected/zero-annual.grid32.txt} +0 -0
  707. /package/fixtures/{erwartet/null-jahr.grid48.txt → expected/zero-annual.grid48.txt} +0 -0
  708. /package/fixtures/{erwartet/null-schluss.grid32.txt → expected/zero-final.grid32.txt} +0 -0
  709. /package/fixtures/{erwartet/null-schluss.grid48.txt → expected/zero-final.grid48.txt} +0 -0
  710. /package/fixtures/{erwartet/null-pruef.grid32.txt → expected/zero-manual.grid32.txt} +0 -0
  711. /package/fixtures/{erwartet/null-pruef.grid48.txt → expected/zero-manual.grid48.txt} +0 -0
  712. /package/fixtures/{erwartet/null-monat.grid32.txt → expected/zero-monthly.grid32.txt} +0 -0
  713. /package/fixtures/{erwartet/null-monat.grid48.txt → expected/zero-monthly.grid48.txt} +0 -0
  714. /package/fixtures/{erwartet/null-ausfall.grid32.txt → expected/zero-outage-end.grid32.txt} +0 -0
  715. /package/fixtures/{erwartet/null-ausfall.grid48.txt → expected/zero-outage-end.grid48.txt} +0 -0
  716. /package/fixtures/{erwartet/null-start.grid32.txt → expected/zero-start.grid32.txt} +0 -0
  717. /package/fixtures/{erwartet/null-start.grid48.txt → expected/zero-start.grid48.txt} +0 -0
@@ -1,4 +1,4 @@
1
- export const AUFRUFE = [
1
+ export const ALL_CALLS = [
2
2
  'activateCashregister',
3
3
  'cancelInvoice',
4
4
  'cancelReceipt',
@@ -30,6 +30,7 @@ export const AUFRUFE = [
30
30
  'getPartnerInfo',
31
31
  'getPrintJob',
32
32
  'getReceipt',
33
+ 'getReportV2',
33
34
  'hobexPayApi',
34
35
  'hobexRefundApi',
35
36
  'issueInvoice',
@@ -52,11 +53,13 @@ export const AUFRUFE = [
52
53
  'registerPinLogin',
53
54
  'registerUserLogin',
54
55
  'renewRegisterSession',
56
+ 'reportCustomerContract',
55
57
  'requestCustomerSignature',
56
58
  'searchCustomers',
57
59
  'sendPartnerCustomerFonLink',
58
60
  'sendPartnerWebhookTest',
59
61
  'sendReceiptEmail',
62
+ 'setMyKasseLogo',
60
63
  'setMyKasseSettings',
61
64
  'setMyRegisterDeviceSettings',
62
65
  'stripeCaptureIntent',
@@ -65,3 +68,110 @@ export const AUFRUFE = [
65
68
  'updateCustomer',
66
69
  'updatePartnerWebhook',
67
70
  ];
71
+ /**
72
+ * Die oeffentlichen Endpunkte unter `/v3` (`https://api.kasseneck.at/v3/<name>`),
73
+ * mit ihrem **aeusseren** Namen und in der Reihenfolge des Backend-Vertrags
74
+ * (`fixtures/v3/v3-vokabular.json`, `endpoints.public`, umbenannt nach
75
+ * `names`). Ein Test haelt beide Listen deckungsgleich.
76
+ */
77
+ export const PUBLIC_CALLS = [
78
+ 'createReceipt',
79
+ 'getReceipt',
80
+ 'cancelReceipt',
81
+ 'sendReceiptEmail',
82
+ 'generateFullReceiptId',
83
+ 'downloadReceipt',
84
+ 'getFirstReceiptDate',
85
+ 'getReportV2',
86
+ 'downloadReport',
87
+ 'downloadDailyReport',
88
+ 'createPaymentLinkStripe',
89
+ 'stripeCaptureIntent',
90
+ 'hobexPayApi',
91
+ 'hobexRefundApi',
92
+ 'hobexGetStatus',
93
+ 'financeWebService',
94
+ 'listMyTipRecipients',
95
+ 'getPartnerInfo',
96
+ 'createPartnerCustomer',
97
+ 'checkPartnerCustomerEmail',
98
+ 'listPartnerCustomers',
99
+ 'getPartnerCustomer',
100
+ 'sendPartnerCustomerFonLink',
101
+ 'createPartnerWebhook',
102
+ 'updatePartnerWebhook',
103
+ 'deletePartnerWebhook',
104
+ 'listPartnerWebhooks',
105
+ 'sendPartnerWebhookTest',
106
+ 'rotatePartnerWebhookSecret',
107
+ 'listPartnerWebhookDeliveries',
108
+ 'requestCustomerSignature',
109
+ 'getCustomerSignatureStatus',
110
+ 'createCustomerCashregister',
111
+ 'activateCashregister',
112
+ 'listCustomerCashregisters',
113
+ 'getCustomerCredentials',
114
+ 'reportCustomerContract',
115
+ 'createCustomer',
116
+ 'getCustomer',
117
+ 'updateCustomer',
118
+ 'searchCustomers',
119
+ 'issueInvoice',
120
+ 'cancelInvoice',
121
+ 'createCreditNote',
122
+ 'getInvoice',
123
+ 'listInvoices',
124
+ 'getInvoicePdf',
125
+ 'getInvoiceXml',
126
+ 'getInvoiceSetupStatus',
127
+ 'listBrands',
128
+ 'recordInvoicePayment',
129
+ ];
130
+ /**
131
+ * Die Endpunkte des Kassenwegs (`https://kasse.kasseneck.at/api/v3/<name>`,
132
+ * Web-Kasse: gleicher Ursprung `/api/v3`), in der Reihenfolge von
133
+ * `endpoints.register`. Sechs davon sind zugleich oeffentlich; die Kasse ruft
134
+ * sie trotzdem ueber diesen Weg (ein Dialekt je Client, Nachtrag §5.2).
135
+ */
136
+ export const POS_CALLS = [
137
+ 'pairRegisterDevice',
138
+ 'listRegisterUsersForDevice',
139
+ 'listRegisterSessionsForDevice',
140
+ 'registerUserLogin',
141
+ 'registerPinLogin',
142
+ 'renewRegisterSession',
143
+ 'endRegisterSession',
144
+ 'unpairRegisterDevice',
145
+ 'listMyCashregisters',
146
+ 'listMyReceipts',
147
+ 'getReceipt',
148
+ 'createReceipt',
149
+ 'generateFullReceiptId',
150
+ 'cancelReceipt',
151
+ 'sendReceiptEmail',
152
+ 'listMyArticleGroups',
153
+ 'listMyArticles',
154
+ 'getKasseSettings',
155
+ 'setMyKasseSettings',
156
+ 'setMyKasseLogo',
157
+ 'setMyRegisterDeviceSettings',
158
+ 'listMyPrinters',
159
+ 'createPrintJob',
160
+ 'getPrintJob',
161
+ 'listMyTipRecipients',
162
+ ];
163
+ const OEFFENTLICH = new Set(PUBLIC_CALLS);
164
+ const KASSENWEG = new Set(POS_CALLS);
165
+ const NUR_KASSE = new Set(POS_CALLS.filter((name) => !OEFFENTLICH.has(name)));
166
+ /** Einer der 25 Aufrufe des Kassenwegs. */
167
+ export function isPosCall(name) {
168
+ return KASSENWEG.has(name);
169
+ }
170
+ /**
171
+ * Nur ueber den Kassenweg erreichbar (19 Namen): unter `api.kasseneck.at/v3`
172
+ * gibt es sie nicht. Der Transport schickt sie darum ohne eigene Basis an
173
+ * [POS_BASE_URL] statt an die oeffentliche Basis.
174
+ */
175
+ export function isPosOnlyCall(name) {
176
+ return NUR_KASSE.has(name);
177
+ }
@@ -48,5 +48,7 @@ export interface RegisterUserAuthOptions {
48
48
  }
49
49
  /** Anmeldung per API-Schluessel und Kassen-Token (Geraete, POS-Apps, Dritte). */
50
50
  export declare function apiKeyAuth(options: ApiKeyAuthOptions): KasseneckAuth;
51
+ /** Nur fuer den Transport; nicht Teil der oeffentlichen Oberflaeche. */
52
+ export declare function isRegisterUserAuth(auth: KasseneckAuth): boolean;
51
53
  /** Anmeldung eines Kassen-Benutzers der Browser-Kasse (ID-Token + Sitzung). */
52
54
  export declare function registerUserAuth(options: RegisterUserAuthOptions): KasseneckAuth;
@@ -42,13 +42,26 @@ export function apiKeyAuth(options) {
42
42
  params: {},
43
43
  });
44
44
  }
45
+ /**
46
+ * Anmeldungen der Kassen-Benutzer. Ein Transport mit einer davon ruft ohne
47
+ * eigene Basis **jeden** Aufruf ueber den Kassenweg (`kasse.kasseneck.at/api/v3`,
48
+ * Kanal `app`), auch die sechs oeffentlichen: die Kasse spricht einen Dialekt
49
+ * und braucht am Beleg die Anbieterdaten der Kartenzahlung (Nachtrag §5.2, §8).
50
+ * Eine Menge statt eines Felds am Funktionsobjekt: niemand kann eine fremde
51
+ * Anmeldung von aussen zur Kassen-Anmeldung erklaeren.
52
+ */
53
+ const KASSENWEG = new WeakSet();
54
+ /** Nur fuer den Transport; nicht Teil der oeffentlichen Oberflaeche. */
55
+ export function isRegisterUserAuth(auth) {
56
+ return KASSENWEG.has(auth);
57
+ }
45
58
  /** Anmeldung eines Kassen-Benutzers der Browser-Kasse (ID-Token + Sitzung). */
46
59
  export function registerUserAuth(options) {
47
60
  if (!options.cashregisterId) {
48
61
  throw new KasseneckAuthError('registerUserAuth: cashregisterId fehlt');
49
62
  }
50
63
  const { getIdToken, getSessionId, cashregisterId } = options;
51
- return async () => {
64
+ const anmeldung = async () => {
52
65
  // Beides bei JEDEM Aufruf frisch — siehe Modulkommentar (Ablaufzeiten).
53
66
  const [idToken, sessionId] = await Promise.all([getIdToken(), getSessionId()]);
54
67
  if (!idToken) {
@@ -65,4 +78,6 @@ export function registerUserAuth(options) {
65
78
  params: { cashregisterId },
66
79
  };
67
80
  };
81
+ KASSENWEG.add(anmeldung);
82
+ return anmeldung;
68
83
  }
@@ -18,4 +18,4 @@ import type { InternerTransport } from './aufrufe.js';
18
18
  *
19
19
  * Ohne diesen Aufruf kann eine Browser-Kasse ihre Kasse nicht auswaehlen.
20
20
  */
21
- export declare function listMyCashregisters(rufen: InternerTransport): Promise<Cashregister[]>;
21
+ export declare function listMyCashregisters(transport: InternerTransport): Promise<Cashregister[]>;
@@ -18,8 +18,8 @@ import { KasseneckValidationError } from './errors.js';
18
18
  *
19
19
  * Ohne diesen Aufruf kann eine Browser-Kasse ihre Kasse nicht auswaehlen.
20
20
  */
21
- export async function listMyCashregisters(rufen) {
22
- const daten = await rufen('listMyCashregisters');
21
+ export async function listMyCashregisters(transport) {
22
+ const daten = await transport('listMyCashregisters');
23
23
  const liste = daten?.cashregisters;
24
24
  if (!Array.isArray(liste)) {
25
25
  throw new KasseneckValidationError('listMyCashregisters', 'Antwort enthaelt keine Kassenliste (data.cashregisters fehlt)', 'response');
@@ -11,24 +11,39 @@
11
11
  * `'response'`: das Backend meldete Erfolg, die Nutzlast enthielt aber
12
12
  * nicht, was der Aufruf zusagt.
13
13
  *
14
- * - `KasseneckApiError` — **fachlicher** Fehler. Das Backend antwortet immer
15
- * mit HTTP 200 und legt Erfolg/Misserfolg in den Rumpf
16
- * (`{status:'success'|'error', message, data}`, siehe `successResponse`/
17
- * `errorResponse` im Backend). Ein `status:'error'` heisst: die Anfrage kam
18
- * an und wurde abgelehnt (gesperrte Kasse, fehlendes Modul, ungueltiger
19
- * Parameter). Wiederholen hilft nicht.
14
+ * - `KasseneckApiError`: **fachlicher** Fehler mit `code`. Das Backend legt
15
+ * Erfolg/Misserfolg in den Rumpf (`{status:'success'|'error', message,
16
+ * code, data}`, siehe `successResponse`/`errorResponse` im Backend), meist
17
+ * unter HTTP 200, unter `/v3` bei unbekanntem Endpunkt auch unter HTTP 404
18
+ * (`not_found`). Dazu kommen drei Codes des Pakets selbst:
19
+ * `route_missing` (HTTP 200 mit HTML: die Auffangregel der
20
+ * Single-Page-App hat geantwortet, der Aufruf kam nie an),
21
+ * `dialect_mismatch` (Antwort ohne Kennzeichen `Kasseneck-Api-Version: v3`:
22
+ * ein Rand ohne `/v3` hat geantwortet, **Ausgang unklar**) und
23
+ * `response_unreadable` (ein signierender Aufruf meldete Erfolg, die
24
+ * Antwort traegt aber nicht, was er zusagt: **Ausgang unklar**).
25
+ * **Entscheidend ist `outcome`:** `'rejected'` heisst abgelehnt, nichts
26
+ * geschehen, Wiederholen hilft nicht. `'unknown'` heisst: der Vorgang kann
27
+ * ausgefuehrt sein (bei `createReceipt` ein signierter Beleg). Dann **nie
28
+ * wiederholen**, sondern das Ergebnis nachlesen (Belegliste, `getReceipt`).
20
29
  * - `KasseneckHttpError` — die Antwort war **keine** verwertbare Huelle:
21
- * HTTP 500/404, leerer Rumpf, oder HTTP 200 mit HTML statt JSON (typisch,
22
- * wenn ein Aufruf mangels Rewrite auf der Single-Page-App landet). Beim
30
+ * HTTP 500/404 ohne Huelle, leerer Rumpf oder Text statt JSON. Beim
23
31
  * Bericht-Download gelten dieselben Gruende fuer alles, was kein PDF ist.
24
- * `reason` trennt die Faelle maschinenlesbar.
32
+ * `reason` trennt die Faelle maschinenlesbar. Auf einem signierenden
33
+ * Aufruf hat HTTP 5xx `outcome: 'unknown'`, ebenso HTTP 200 mit
34
+ * Kennzeichen, aber leerem oder unlesbarem Rumpf.
25
35
  * - `KasseneckNetworkError` — die Antwort kam gar nicht: Netz weg, DNS,
26
- * abgebrochene Verbindung oder Zeitueberschreitung (`timedOut`).
36
+ * abgebrochene Verbindung oder Zeitueberschreitung (`timedOut`). Auch hier
37
+ * gilt `outcome`: war die Anfrage schon unterwegs und ist der Aufruf einer
38
+ * der signierenden (`createReceipt`, `cancelReceipt`, `financeWebService`),
39
+ * ist er `'unknown'`.
27
40
  * - `KasseneckAuthError` — es kam nicht einmal zur Anfrage, weil die Anmeldung
28
41
  * scheiterte (fehlende Zugangsdaten, oder der Token-/Sitzungsgeber warf).
29
42
  * In der Browser-Kasse mit ihrer 90-Sekunden-Sitzung ist das Alltag, kein
30
43
  * Sonderfall.
31
44
  *
45
+ * [isOutcomeUnknown] fasst das fuer jede Fehlerart zusammen.
46
+ *
32
47
  * **Geheimnisse gehoeren in keinen dieser Fehler.** Fehlermeldungen landen in
33
48
  * Protokollen und Fehlerdiensten; weder `api_key`, Kassen-Token, ID-
34
49
  * ID-Token noch Sitzungsbezeichner duerfen dorthin. Deshalb tragen die Fehler
@@ -87,6 +102,21 @@ export declare function causeDigest(ursache: unknown, geheimnisse: readonly stri
87
102
  * demselben Grund **keinen** Vorgabewert.
88
103
  */
89
104
  export declare function fehlerDetails(daten: unknown, geheimnisse: readonly string[]): Record<string, unknown>;
105
+ /**
106
+ * Ausgang eines gescheiterten Aufrufs. `'rejected'`: nichts geschehen.
107
+ * `'unknown'`: der Vorgang kann ausgefuehrt sein; nie wiederholen, sondern
108
+ * das Ergebnis nachlesen.
109
+ */
110
+ export type ErrorOutcome = 'unknown' | 'rejected';
111
+ /**
112
+ * Codes, die das Paket selbst vergibt, nicht der Server: `route_missing`
113
+ * (HTML statt Backend, der Aufruf kam nie an) und `response_unreadable`
114
+ * (ein signierender Aufruf meldete Erfolg, die Antwort ist aber unlesbar;
115
+ * Ausgang unklar). `dialect_mismatch` vergibt das Paket ebenfalls, der Code
116
+ * gehoert aber schon zum Rand des Servers (`errorCodes.edge`).
117
+ */
118
+ export declare const CLIENT_ERROR_CODES: readonly ["route_missing", "response_unreadable"];
119
+ export type ClientErrorCode = (typeof CLIENT_ERROR_CODES)[number];
90
120
  export declare class KasseneckApiError extends Error {
91
121
  readonly name = "KasseneckApiError";
92
122
  /** Aufgerufene Backend-Funktion, z. B. `createReceipt`. */
@@ -109,21 +139,37 @@ export declare class KasseneckApiError extends Error {
109
139
  * beilegt. Immer ein Objekt, notfalls ein leeres.
110
140
  */
111
141
  readonly details: Record<string, unknown>;
142
+ /**
143
+ * `'unknown'` bei `dialect_mismatch`, `receipt_outcome_unknown`,
144
+ * `cancellation_outcome_unknown`, `response_unreadable` (Erfolg gemeldet,
145
+ * Antwort eines signierenden Aufrufs aber unlesbar) und
146
+ * `response_translation_failed` (ausser mit `details.handled === false`);
147
+ * sonst `'rejected'`. Bei `'unknown'` nie wiederholen, sondern nachlesen.
148
+ */
149
+ readonly outcome: ErrorOutcome;
112
150
  constructor(functionName: string, serverMessage: string, details?: Record<string, unknown>, code?: string);
113
151
  }
114
152
  /** Warum die Antwort keine verwertbare Huelle war. */
115
153
  export type HttpFailureReason = 'server-error' | 'empty-body' | 'not-json' | 'missing-status';
116
- /** Antwort ohne verwertbare Huelle (HTTP-Fehler, leerer Rumpf, HTML statt JSON). */
154
+ /** Antwort ohne verwertbare Huelle (HTTP-Fehler ohne Huelle, leerer Rumpf, Text statt JSON). */
117
155
  export declare class KasseneckHttpError extends Error {
118
156
  readonly name = "KasseneckHttpError";
119
157
  readonly functionName: string;
120
- /** HTTP-Statuscode der Antwort (bei HTML-statt-JSON durchaus 200). */
158
+ /** HTTP-Statuscode der Antwort (bei Text statt JSON durchaus 200). */
121
159
  readonly statusCode: number;
122
160
  /** Inhaltstyp der Antwort, falls die Gegenstelle einen gesetzt hat. */
123
161
  readonly contentType: string | undefined;
124
162
  /** Maschinenlesbarer Grund — trennt den Rewrite-Fall vom 500er ohne Textparsen. */
125
163
  readonly reason: HttpFailureReason;
126
- constructor(functionName: string, statusCode: number, contentType: string | undefined, reason: HttpFailureReason);
164
+ /**
165
+ * `'unknown'` auf einem signierenden Aufruf (`createReceipt`,
166
+ * `cancelReceipt`, `financeWebService`) bei HTTP 5xx und bei HTTP 200 mit
167
+ * Kennzeichen, aber unlesbarem Rumpf (`empty-body`, `not-json` auch bei
168
+ * `text/html`, `missing-status`): der Handler kann gelaufen sein, nie wiederholen,
169
+ * sondern nachlesen. Sonst `'rejected'` (auch 4xx).
170
+ */
171
+ readonly outcome: ErrorOutcome;
172
+ constructor(functionName: string, statusCode: number, contentType: string | undefined, reason: HttpFailureReason, outcome?: ErrorOutcome);
127
173
  }
128
174
  /** Es kam keine Antwort: Netzfehler oder Zeitueberschreitung. */
129
175
  export declare class KasseneckNetworkError extends Error {
@@ -137,7 +183,13 @@ export declare class KasseneckNetworkError extends Error {
137
183
  readonly causeName: string | undefined;
138
184
  /** Code der zugrunde liegenden Ursache, sofern unbedenklich (z. B. `ECONNREFUSED`). */
139
185
  readonly causeCode: string | undefined;
140
- constructor(functionName: string, timedOut: boolean, timeoutMs: number, ursache?: CauseDigest);
186
+ /**
187
+ * `'unknown'`, wenn die Anfrage schon unterwegs war und der Aufruf signiert
188
+ * (`createReceipt`, `cancelReceipt`, `financeWebService`): dann nie
189
+ * wiederholen, sondern nachlesen. Sonst `'rejected'`.
190
+ */
191
+ readonly outcome: ErrorOutcome;
192
+ constructor(functionName: string, timedOut: boolean, timeoutMs: number, cause?: CauseDigest, outcome?: ErrorOutcome);
141
193
  }
142
194
  /**
143
195
  * Die Anmeldung scheiterte — es ging keine Anfrage raus.
@@ -185,8 +237,15 @@ export declare class KasseneckValidationError extends Error {
185
237
  }
186
238
  /** Alle Fehler, die dieses Paket wirft. */
187
239
  export type KasseneckError = KasseneckApiError | KasseneckHttpError | KasseneckNetworkError | KasseneckAuthError | KasseneckValidationError;
188
- export declare function isKasseneckApiError(fehler: unknown): fehler is KasseneckApiError;
189
- export declare function isKasseneckHttpError(fehler: unknown): fehler is KasseneckHttpError;
190
- export declare function isKasseneckNetworkError(fehler: unknown): fehler is KasseneckNetworkError;
191
- export declare function isKasseneckAuthError(fehler: unknown): fehler is KasseneckAuthError;
192
- export declare function isKasseneckValidationError(fehler: unknown): fehler is KasseneckValidationError;
240
+ /**
241
+ * Ist der Ausgang dieses Fehlers unklar (`outcome === 'unknown'`)? Dann den
242
+ * Aufruf **nicht wiederholen**, sondern das Ergebnis nachlesen. Gilt fuer
243
+ * jede Fehlerart; nur [KasseneckApiError], [KasseneckHttpError] und
244
+ * [KasseneckNetworkError] koennen `'unknown'` sein.
245
+ */
246
+ export declare function isOutcomeUnknown(error: unknown): boolean;
247
+ export declare function isKasseneckApiError(error: unknown): error is KasseneckApiError;
248
+ export declare function isKasseneckHttpError(error: unknown): error is KasseneckHttpError;
249
+ export declare function isKasseneckNetworkError(error: unknown): error is KasseneckNetworkError;
250
+ export declare function isKasseneckAuthError(error: unknown): error is KasseneckAuthError;
251
+ export declare function isKasseneckValidationError(error: unknown): error is KasseneckValidationError;
@@ -11,24 +11,39 @@
11
11
  * `'response'`: das Backend meldete Erfolg, die Nutzlast enthielt aber
12
12
  * nicht, was der Aufruf zusagt.
13
13
  *
14
- * - `KasseneckApiError` — **fachlicher** Fehler. Das Backend antwortet immer
15
- * mit HTTP 200 und legt Erfolg/Misserfolg in den Rumpf
16
- * (`{status:'success'|'error', message, data}`, siehe `successResponse`/
17
- * `errorResponse` im Backend). Ein `status:'error'` heisst: die Anfrage kam
18
- * an und wurde abgelehnt (gesperrte Kasse, fehlendes Modul, ungueltiger
19
- * Parameter). Wiederholen hilft nicht.
14
+ * - `KasseneckApiError`: **fachlicher** Fehler mit `code`. Das Backend legt
15
+ * Erfolg/Misserfolg in den Rumpf (`{status:'success'|'error', message,
16
+ * code, data}`, siehe `successResponse`/`errorResponse` im Backend), meist
17
+ * unter HTTP 200, unter `/v3` bei unbekanntem Endpunkt auch unter HTTP 404
18
+ * (`not_found`). Dazu kommen drei Codes des Pakets selbst:
19
+ * `route_missing` (HTTP 200 mit HTML: die Auffangregel der
20
+ * Single-Page-App hat geantwortet, der Aufruf kam nie an),
21
+ * `dialect_mismatch` (Antwort ohne Kennzeichen `Kasseneck-Api-Version: v3`:
22
+ * ein Rand ohne `/v3` hat geantwortet, **Ausgang unklar**) und
23
+ * `response_unreadable` (ein signierender Aufruf meldete Erfolg, die
24
+ * Antwort traegt aber nicht, was er zusagt: **Ausgang unklar**).
25
+ * **Entscheidend ist `outcome`:** `'rejected'` heisst abgelehnt, nichts
26
+ * geschehen, Wiederholen hilft nicht. `'unknown'` heisst: der Vorgang kann
27
+ * ausgefuehrt sein (bei `createReceipt` ein signierter Beleg). Dann **nie
28
+ * wiederholen**, sondern das Ergebnis nachlesen (Belegliste, `getReceipt`).
20
29
  * - `KasseneckHttpError` — die Antwort war **keine** verwertbare Huelle:
21
- * HTTP 500/404, leerer Rumpf, oder HTTP 200 mit HTML statt JSON (typisch,
22
- * wenn ein Aufruf mangels Rewrite auf der Single-Page-App landet). Beim
30
+ * HTTP 500/404 ohne Huelle, leerer Rumpf oder Text statt JSON. Beim
23
31
  * Bericht-Download gelten dieselben Gruende fuer alles, was kein PDF ist.
24
- * `reason` trennt die Faelle maschinenlesbar.
32
+ * `reason` trennt die Faelle maschinenlesbar. Auf einem signierenden
33
+ * Aufruf hat HTTP 5xx `outcome: 'unknown'`, ebenso HTTP 200 mit
34
+ * Kennzeichen, aber leerem oder unlesbarem Rumpf.
25
35
  * - `KasseneckNetworkError` — die Antwort kam gar nicht: Netz weg, DNS,
26
- * abgebrochene Verbindung oder Zeitueberschreitung (`timedOut`).
36
+ * abgebrochene Verbindung oder Zeitueberschreitung (`timedOut`). Auch hier
37
+ * gilt `outcome`: war die Anfrage schon unterwegs und ist der Aufruf einer
38
+ * der signierenden (`createReceipt`, `cancelReceipt`, `financeWebService`),
39
+ * ist er `'unknown'`.
27
40
  * - `KasseneckAuthError` — es kam nicht einmal zur Anfrage, weil die Anmeldung
28
41
  * scheiterte (fehlende Zugangsdaten, oder der Token-/Sitzungsgeber warf).
29
42
  * In der Browser-Kasse mit ihrer 90-Sekunden-Sitzung ist das Alltag, kein
30
43
  * Sonderfall.
31
44
  *
45
+ * [isOutcomeUnknown] fasst das fuer jede Fehlerart zusammen.
46
+ *
32
47
  * **Geheimnisse gehoeren in keinen dieser Fehler.** Fehlermeldungen landen in
33
48
  * Protokollen und Fehlerdiensten; weder `api_key`, Kassen-Token, ID-
34
49
  * ID-Token noch Sitzungsbezeichner duerfen dorthin. Deshalb tragen die Fehler
@@ -187,6 +202,34 @@ function feldHinweis(details) {
187
202
  const mehr = teile.length > 5 ? ` (+${teile.length - 5} weitere)` : '';
188
203
  return ` [${teile.slice(0, 5).join('; ')}${mehr}]`;
189
204
  }
205
+ /**
206
+ * Codes, deren Ausgang unklar ist. `response_translation_failed` nur, wenn
207
+ * der Rand nicht ausdruecklich `handled: false` meldet (Handler lief und
208
+ * lehnte ab); `handled: true` oder `null` heisst ausgefuehrt bzw. unbekannt.
209
+ */
210
+ const AUSGANG_UNKLAR_CODES = new Set([
211
+ 'dialect_mismatch',
212
+ 'receipt_outcome_unknown',
213
+ 'cancellation_outcome_unknown',
214
+ 'response_unreadable',
215
+ ]);
216
+ function ausgangAusCode(code, details) {
217
+ if (code === undefined)
218
+ return 'rejected';
219
+ if (AUSGANG_UNKLAR_CODES.has(code))
220
+ return 'unknown';
221
+ if (code === 'response_translation_failed' && details['handled'] !== false)
222
+ return 'unknown';
223
+ return 'rejected';
224
+ }
225
+ /**
226
+ * Codes, die das Paket selbst vergibt, nicht der Server: `route_missing`
227
+ * (HTML statt Backend, der Aufruf kam nie an) und `response_unreadable`
228
+ * (ein signierender Aufruf meldete Erfolg, die Antwort ist aber unlesbar;
229
+ * Ausgang unklar). `dialect_mismatch` vergibt das Paket ebenfalls, der Code
230
+ * gehoert aber schon zum Rand des Servers (`errorCodes.edge`).
231
+ */
232
+ export const CLIENT_ERROR_CODES = Object.freeze(['route_missing', 'response_unreadable']);
190
233
  export class KasseneckApiError extends Error {
191
234
  name = 'KasseneckApiError';
192
235
  /** Aufgerufene Backend-Funktion, z. B. `createReceipt`. */
@@ -209,6 +252,14 @@ export class KasseneckApiError extends Error {
209
252
  * beilegt. Immer ein Objekt, notfalls ein leeres.
210
253
  */
211
254
  details;
255
+ /**
256
+ * `'unknown'` bei `dialect_mismatch`, `receipt_outcome_unknown`,
257
+ * `cancellation_outcome_unknown`, `response_unreadable` (Erfolg gemeldet,
258
+ * Antwort eines signierenden Aufrufs aber unlesbar) und
259
+ * `response_translation_failed` (ausser mit `details.handled === false`);
260
+ * sonst `'rejected'`. Bei `'unknown'` nie wiederholen, sondern nachlesen.
261
+ */
262
+ outcome;
212
263
  constructor(functionName, serverMessage, details = {}, code) {
213
264
  super(`${functionName} fehlgeschlagen: ${serverMessage}${feldHinweis(details)}`);
214
265
  this.functionName = functionName;
@@ -218,6 +269,7 @@ export class KasseneckApiError extends Error {
218
269
  // den Details. So bleibt die Klasse fuer beide Ablageorte dieselbe.
219
270
  const kandidat = code !== undefined ? code : details['code'];
220
271
  this.code = typeof kandidat === 'string' && BEZEICHNER.test(kandidat) ? kandidat : undefined;
272
+ this.outcome = ausgangAusCode(this.code, details);
221
273
  }
222
274
  }
223
275
  const GRUND_TEXT = {
@@ -226,23 +278,32 @@ const GRUND_TEXT = {
226
278
  'not-json': 'Antwort ist kein JSON',
227
279
  'missing-status': 'Antwort ohne Statusfeld',
228
280
  };
229
- /** Antwort ohne verwertbare Huelle (HTTP-Fehler, leerer Rumpf, HTML statt JSON). */
281
+ /** Antwort ohne verwertbare Huelle (HTTP-Fehler ohne Huelle, leerer Rumpf, Text statt JSON). */
230
282
  export class KasseneckHttpError extends Error {
231
283
  name = 'KasseneckHttpError';
232
284
  functionName;
233
- /** HTTP-Statuscode der Antwort (bei HTML-statt-JSON durchaus 200). */
285
+ /** HTTP-Statuscode der Antwort (bei Text statt JSON durchaus 200). */
234
286
  statusCode;
235
287
  /** Inhaltstyp der Antwort, falls die Gegenstelle einen gesetzt hat. */
236
288
  contentType;
237
289
  /** Maschinenlesbarer Grund — trennt den Rewrite-Fall vom 500er ohne Textparsen. */
238
290
  reason;
239
- constructor(functionName, statusCode, contentType, reason) {
291
+ /**
292
+ * `'unknown'` auf einem signierenden Aufruf (`createReceipt`,
293
+ * `cancelReceipt`, `financeWebService`) bei HTTP 5xx und bei HTTP 200 mit
294
+ * Kennzeichen, aber unlesbarem Rumpf (`empty-body`, `not-json` auch bei
295
+ * `text/html`, `missing-status`): der Handler kann gelaufen sein, nie wiederholen,
296
+ * sondern nachlesen. Sonst `'rejected'` (auch 4xx).
297
+ */
298
+ outcome;
299
+ constructor(functionName, statusCode, contentType, reason, outcome = 'rejected') {
240
300
  const typHinweis = contentType ? `, Inhaltstyp ${contentType}` : '';
241
301
  super(`${functionName} fehlgeschlagen: ${GRUND_TEXT[reason]} (HTTP ${statusCode}${typHinweis})`);
242
302
  this.functionName = functionName;
243
303
  this.statusCode = statusCode;
244
304
  this.contentType = contentType;
245
305
  this.reason = reason;
306
+ this.outcome = outcome;
246
307
  }
247
308
  }
248
309
  /** Es kam keine Antwort: Netzfehler oder Zeitueberschreitung. */
@@ -257,15 +318,22 @@ export class KasseneckNetworkError extends Error {
257
318
  causeName;
258
319
  /** Code der zugrunde liegenden Ursache, sofern unbedenklich (z. B. `ECONNREFUSED`). */
259
320
  causeCode;
260
- constructor(functionName, timedOut, timeoutMs, ursache = {}) {
321
+ /**
322
+ * `'unknown'`, wenn die Anfrage schon unterwegs war und der Aufruf signiert
323
+ * (`createReceipt`, `cancelReceipt`, `financeWebService`): dann nie
324
+ * wiederholen, sondern nachlesen. Sonst `'rejected'`.
325
+ */
326
+ outcome;
327
+ constructor(functionName, timedOut, timeoutMs, cause = {}, outcome = 'rejected') {
261
328
  const grund = timedOut ? `Zeitueberschreitung nach ${timeoutMs} ms` : 'Netzwerkfehler';
262
- const codeHinweis = ursache.causeCode ? ` (${ursache.causeCode})` : '';
329
+ const codeHinweis = cause.causeCode ? ` (${cause.causeCode})` : '';
263
330
  super(`${functionName} fehlgeschlagen: ${grund}${codeHinweis}`);
264
331
  this.functionName = functionName;
265
332
  this.timedOut = timedOut;
266
333
  this.timeoutMs = timeoutMs;
267
- this.causeName = ursache.causeName;
268
- this.causeCode = ursache.causeCode;
334
+ this.causeName = cause.causeName;
335
+ this.causeCode = cause.causeCode;
336
+ this.outcome = outcome;
269
337
  }
270
338
  }
271
339
  /**
@@ -317,18 +385,28 @@ export class KasseneckValidationError extends Error {
317
385
  this.scope = scope;
318
386
  }
319
387
  }
320
- export function isKasseneckApiError(fehler) {
321
- return fehler instanceof KasseneckApiError;
388
+ /**
389
+ * Ist der Ausgang dieses Fehlers unklar (`outcome === 'unknown'`)? Dann den
390
+ * Aufruf **nicht wiederholen**, sondern das Ergebnis nachlesen. Gilt fuer
391
+ * jede Fehlerart; nur [KasseneckApiError], [KasseneckHttpError] und
392
+ * [KasseneckNetworkError] koennen `'unknown'` sein.
393
+ */
394
+ export function isOutcomeUnknown(error) {
395
+ return ((error instanceof KasseneckApiError || error instanceof KasseneckHttpError || error instanceof KasseneckNetworkError)
396
+ && error.outcome === 'unknown');
397
+ }
398
+ export function isKasseneckApiError(error) {
399
+ return error instanceof KasseneckApiError;
322
400
  }
323
- export function isKasseneckHttpError(fehler) {
324
- return fehler instanceof KasseneckHttpError;
401
+ export function isKasseneckHttpError(error) {
402
+ return error instanceof KasseneckHttpError;
325
403
  }
326
- export function isKasseneckNetworkError(fehler) {
327
- return fehler instanceof KasseneckNetworkError;
404
+ export function isKasseneckNetworkError(error) {
405
+ return error instanceof KasseneckNetworkError;
328
406
  }
329
- export function isKasseneckAuthError(fehler) {
330
- return fehler instanceof KasseneckAuthError;
407
+ export function isKasseneckAuthError(error) {
408
+ return error instanceof KasseneckAuthError;
331
409
  }
332
- export function isKasseneckValidationError(fehler) {
333
- return fehler instanceof KasseneckValidationError;
410
+ export function isKasseneckValidationError(error) {
411
+ return error instanceof KasseneckValidationError;
334
412
  }
@@ -0,0 +1,9 @@
1
+ /** Der Code des Fehlers, wenn er in `bekannt` steht; sonst `undefined`. */
2
+ export declare function bekannterCode<C extends string>(error: unknown, bekannt: ReadonlySet<string>): C | undefined;
3
+ /** Ein Feldfehler aus `data.errors[]` einer `validation`-Antwort. */
4
+ export interface Feldfehler {
5
+ field: string;
6
+ message: string;
7
+ }
8
+ /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
9
+ export declare function feldfehlerVon(error: unknown): Feldfehler[];
@@ -0,0 +1,32 @@
1
+ import { KasseneckApiError } from './errors.js';
2
+ /*
3
+ * Gemeinsame Bausteine der Fehlerhelfer je Teilpfad (Belege, Storno,
4
+ * Zahlungen, Belegmail, Kasse, Anmeldung, Rechnung, Partner). Jeder Teilpfad
5
+ * bietet dieselbe Form: eine Codeliste, `isXErrorCode(wert)`,
6
+ * `xErrorCode(fehler)`, `isXError(fehler, code?)` und die Feldfehler einer
7
+ * `validation`-Antwort. Paketintern, nicht Teil der Oberflaeche.
8
+ */
9
+ /** Der Code des Fehlers, wenn er in `bekannt` steht; sonst `undefined`. */
10
+ export function bekannterCode(error, bekannt) {
11
+ if (!(error instanceof KasseneckApiError))
12
+ return undefined;
13
+ const code = error.code;
14
+ return code !== undefined && bekannt.has(code) ? code : undefined;
15
+ }
16
+ /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
17
+ export function feldfehlerVon(error) {
18
+ if (!(error instanceof KasseneckApiError))
19
+ return [];
20
+ const roh = error.details['errors'];
21
+ if (!Array.isArray(roh))
22
+ return [];
23
+ const raus = [];
24
+ for (const eintrag of roh) {
25
+ if (eintrag === null || typeof eintrag !== 'object')
26
+ continue;
27
+ const { field, message } = eintrag;
28
+ if (typeof field === 'string' && typeof message === 'string')
29
+ raus.push({ field, message });
30
+ }
31
+ return raus;
32
+ }
@@ -1,9 +1,9 @@
1
1
  export { type AuthCredentials, type KasseneckAuth, type ApiKeyAuthOptions, type RegisterUserAuthOptions, apiKeyAuth, registerUserAuth, } from './auth.js';
2
- export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type KasseneckTransport, type KasseneckBinaryTransport, createTransport, createBinaryTransport, } from './transport.js';
3
- export { AUFRUFE, type Aufruf, } from './aufrufe.js';
4
- export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, } from './errors.js';
5
- export { type ReceiptCommonOptions, type SellReceiptOptions, type SellReceiptWithPaymentsOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type CreateCancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, cancelReceipt, type CancelReceiptResult, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, } from './receipts.js';
2
+ export { DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type KasseneckTransport, type KasseneckBinaryTransport, createTransport, createBinaryTransport, } from './transport.js';
3
+ export { ALL_CALLS, type ApiCall, PUBLIC_CALLS, POS_CALLS, type PublicCall, type PosCall, } from './aufrufe.js';
4
+ export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, type ErrorOutcome, CLIENT_ERROR_CODES, type ClientErrorCode, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, } from './errors.js';
5
+ export { type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, type CancelReceiptResult, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, } from './receipts.js';
6
6
  export { listMyCashregisters } from './cashregisters.js';
7
- export { downloadDailyReport, downloadMonthlyReport } from './reports.js';
7
+ export { downloadDailyReport, downloadMonthlyReport, getReportV2, type ReportV2, type ReportV2Metadata, type ReportV2Options } from './reports.js';
8
8
  export { type CashboxStatus, type SignatureStatus, getCashboxStatus, getSignatureStatus, } from './status.js';
9
9
  export { type KasseneckApi, createKasseneckApi } from './api.js';
@@ -1,9 +1,9 @@
1
1
  export { apiKeyAuth, registerUserAuth, } from './auth.js';
2
- export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, createTransport, createBinaryTransport, } from './transport.js';
3
- export { AUFRUFE, } from './aufrufe.js';
4
- export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, } from './errors.js';
5
- export { sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, checkVoucherCombinationError, sendReceiptEmail, } from './receipts.js';
2
+ export { DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, createTransport, createBinaryTransport, } from './transport.js';
3
+ export { ALL_CALLS, PUBLIC_CALLS, POS_CALLS, } from './aufrufe.js';
4
+ export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, CLIENT_ERROR_CODES, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, } from './errors.js';
5
+ export { sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, checkVoucherCombinationError, sendReceiptEmail, } from './receipts.js';
6
6
  export { listMyCashregisters } from './cashregisters.js';
7
- export { downloadDailyReport, downloadMonthlyReport } from './reports.js';
7
+ export { downloadDailyReport, downloadMonthlyReport, getReportV2 } from './reports.js';
8
8
  export { getCashboxStatus, getSignatureStatus, } from './status.js';
9
9
  export { createKasseneckApi } from './api.js';