@kreiseck/kasseneck-api 0.31.0 → 1.0.0-rc.2

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 (712) hide show
  1. package/CHANGELOG.md +317 -0
  2. package/README.de.md +11 -7
  3. package/README.md +509 -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 +94 -19
  13. package/dist/cjs/client/errors.js +132 -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 +196 -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 +234 -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/cjs/{rechnung → invoice}/vertrag.d.ts +97 -71
  48. package/dist/cjs/{rechnung → invoice}/vertrag.js +144 -82
  49. package/dist/cjs/models/cancellation.d.ts +43 -24
  50. package/dist/cjs/models/cancellation.js +94 -46
  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-summary.d.ts +10 -4
  66. package/dist/cjs/models/receipt-summary.js +10 -4
  67. package/dist/cjs/models/receipt.d.ts +31 -2
  68. package/dist/cjs/models/receipt.js +12 -1
  69. package/dist/cjs/models/voucher.d.ts +7 -6
  70. package/dist/cjs/models/voucher.js +2 -7
  71. package/dist/cjs/partner/ablauf.d.ts +10 -10
  72. package/dist/cjs/partner/ablauf.js +29 -29
  73. package/dist/cjs/partner/api.d.ts +26 -23
  74. package/dist/cjs/partner/api.js +11 -13
  75. package/dist/cjs/partner/auth.d.ts +1 -1
  76. package/dist/cjs/partner/auth.js +2 -2
  77. package/dist/cjs/partner/betrieb.d.ts +7 -7
  78. package/dist/cjs/partner/betrieb.js +10 -10
  79. package/dist/cjs/partner/endpunkte.d.ts +27 -14
  80. package/dist/cjs/partner/endpunkte.js +80 -39
  81. package/dist/cjs/partner/fehler.d.ts +60 -30
  82. package/dist/cjs/partner/fehler.js +99 -43
  83. package/dist/cjs/partner/index.d.ts +13 -12
  84. package/dist/cjs/partner/index.js +35 -22
  85. package/dist/cjs/partner/secret.d.ts +3 -3
  86. package/dist/cjs/partner/secret.js +6 -6
  87. package/dist/cjs/partner/typen.d.ts +129 -71
  88. package/dist/cjs/partner/typen.js +76 -3
  89. package/dist/cjs/partner/webhook-signatur.d.ts +2 -2
  90. package/dist/cjs/partner/webhook-signatur.js +12 -12
  91. package/dist/cjs/partner/webhooks.d.ts +60 -32
  92. package/dist/cjs/partner/webhooks.js +40 -34
  93. package/dist/cjs/payments/hobex.d.ts +11 -3
  94. package/dist/cjs/payments/hobex.js +17 -5
  95. package/dist/cjs/payments/stripe.d.ts +5 -2
  96. package/dist/cjs/payments/stripe.js +10 -5
  97. package/dist/cjs/pos/artikel.d.ts +90 -0
  98. package/dist/cjs/pos/artikel.js +89 -0
  99. package/dist/cjs/pos/client.d.ts +27 -0
  100. package/dist/cjs/pos/client.js +144 -0
  101. package/dist/cjs/pos/drucker.d.ts +86 -0
  102. package/dist/cjs/pos/drucker.js +78 -0
  103. package/dist/cjs/pos/errors.d.ts +36 -0
  104. package/dist/cjs/pos/errors.js +95 -0
  105. package/dist/cjs/pos/index.d.ts +15 -0
  106. package/dist/cjs/pos/index.js +102 -0
  107. package/dist/cjs/pos/settings.d.ts +313 -0
  108. package/dist/cjs/pos/settings.js +376 -0
  109. package/dist/cjs/pos/texte.d.ts +883 -0
  110. package/dist/cjs/pos/texte.js +489 -0
  111. package/dist/cjs/{kasse → pos}/trinkgeld.d.ts +1 -1
  112. package/dist/cjs/{kasse → pos}/trinkgeld.js +2 -2
  113. package/dist/cjs/printing/escpos.d.ts +29 -29
  114. package/dist/cjs/printing/escpos.js +61 -61
  115. package/dist/cjs/printing/index.d.ts +2 -2
  116. package/dist/cjs/printing/index.js +17 -17
  117. package/dist/cjs/printing/qr-groesse.d.ts +38 -38
  118. package/dist/cjs/printing/qr-groesse.js +47 -47
  119. package/dist/cjs/printing/webusb.d.ts +2 -2
  120. package/dist/cjs/printing/webusb.js +4 -4
  121. package/dist/cjs/react/index.d.ts +21 -21
  122. package/dist/cjs/react/index.js +40 -30
  123. package/dist/cjs/receipt/bild.d.ts +4 -4
  124. package/dist/cjs/receipt/bild.js +11 -11
  125. package/dist/cjs/receipt/blatt.d.ts +46 -46
  126. package/dist/cjs/receipt/blatt.js +59 -59
  127. package/dist/cjs/receipt/discount.d.ts +1 -1
  128. package/dist/cjs/receipt/discount.js +8 -8
  129. package/dist/cjs/receipt/due.d.ts +86 -0
  130. package/dist/cjs/receipt/due.js +261 -0
  131. package/dist/cjs/receipt/epos.d.ts +22 -22
  132. package/dist/cjs/receipt/epos.js +45 -45
  133. package/dist/cjs/receipt/grid.d.ts +10 -10
  134. package/dist/cjs/receipt/grid.js +20 -20
  135. package/dist/cjs/receipt/index.d.ts +9 -8
  136. package/dist/cjs/receipt/index.js +26 -23
  137. package/dist/cjs/receipt/layout-escpos.d.ts +24 -24
  138. package/dist/cjs/receipt/layout-escpos.js +49 -49
  139. package/dist/cjs/receipt/layout.d.ts +28 -23
  140. package/dist/cjs/receipt/layout.js +45 -21
  141. package/dist/cjs/receipt/marke-daten.d.ts +8 -8
  142. package/dist/cjs/receipt/marke-daten.js +8 -8
  143. package/dist/cjs/receipt/marke.d.ts +7 -7
  144. package/dist/cjs/receipt/marke.js +10 -10
  145. package/dist/cjs/register/errors.d.ts +61 -0
  146. package/dist/cjs/register/errors.js +112 -0
  147. package/dist/cjs/register/index.d.ts +14 -1
  148. package/dist/cjs/register/index.js +20 -1
  149. package/dist/cjs/register/pairing.d.ts +55 -36
  150. package/dist/cjs/register/pairing.js +33 -29
  151. package/dist/cjs/register/session.d.ts +5 -5
  152. package/dist/cjs/register/session.js +7 -7
  153. package/dist/cjs/stored/draht.d.ts +45 -0
  154. package/dist/cjs/stored/draht.js +220 -0
  155. package/dist/cjs/stored/einstellungen.d.ts +23 -0
  156. package/dist/cjs/stored/einstellungen.js +200 -0
  157. package/dist/cjs/stored/index.d.ts +109 -0
  158. package/dist/cjs/stored/index.js +225 -0
  159. package/dist/cjs/stored/vokabular.d.ts +18 -0
  160. package/dist/cjs/stored/vokabular.js +389 -0
  161. package/dist/cjs/version.d.ts +7 -0
  162. package/dist/cjs/version.js +10 -0
  163. package/dist/cjs/vienna-time.d.ts +1 -1
  164. package/dist/cjs/vienna-time.js +2 -2
  165. package/dist/esm/client/api.d.ts +7 -6
  166. package/dist/esm/client/api.js +4 -4
  167. package/dist/esm/client/aufrufe.d.ts +29 -5
  168. package/dist/esm/client/aufrufe.js +111 -1
  169. package/dist/esm/client/auth.d.ts +2 -0
  170. package/dist/esm/client/auth.js +16 -1
  171. package/dist/esm/client/cashregisters.d.ts +1 -1
  172. package/dist/esm/client/cashregisters.js +2 -2
  173. package/dist/esm/client/errors.d.ts +94 -19
  174. package/dist/esm/client/errors.js +129 -27
  175. package/dist/esm/client/fehlercodes.d.ts +9 -0
  176. package/dist/esm/client/fehlercodes.js +32 -0
  177. package/dist/esm/client/index.d.ts +5 -5
  178. package/dist/esm/client/index.js +5 -5
  179. package/dist/esm/client/receipts.d.ts +131 -124
  180. package/dist/esm/client/receipts.js +195 -140
  181. package/dist/esm/client/reports.d.ts +26 -4
  182. package/dist/esm/client/reports.js +36 -4
  183. package/dist/esm/client/status.d.ts +3 -3
  184. package/dist/esm/client/status.js +7 -7
  185. package/dist/esm/client/transport.d.ts +56 -4
  186. package/dist/esm/client/transport.js +233 -24
  187. package/dist/esm/enums/vat-rate.d.ts +2 -2
  188. package/dist/esm/enums/vat-rate.js +1 -1
  189. package/dist/esm/index.d.ts +4 -3
  190. package/dist/esm/index.js +4 -3
  191. package/dist/{cjs/rechnung → esm/invoice}/api.d.ts +18 -17
  192. package/dist/esm/{rechnung → invoice}/api.js +6 -6
  193. package/dist/{cjs/rechnung → esm/invoice}/auth.d.ts +2 -2
  194. package/dist/esm/{rechnung → invoice}/auth.js +4 -4
  195. package/dist/{cjs/rechnung/rechnen.d.ts → esm/invoice/calc.d.ts} +27 -27
  196. package/dist/esm/{rechnung/rechnen.js → invoice/calc.js} +45 -45
  197. package/dist/{cjs/rechnung → esm/invoice}/endpunkte.d.ts +23 -21
  198. package/dist/esm/{rechnung → invoice}/endpunkte.js +52 -42
  199. package/dist/esm/invoice/fehler.d.ts +31 -0
  200. package/dist/esm/invoice/fehler.js +33 -0
  201. package/dist/esm/invoice/index.d.ts +21 -0
  202. package/dist/esm/invoice/index.js +20 -0
  203. package/dist/esm/{rechnung → invoice}/summen.d.ts +12 -12
  204. package/dist/esm/{rechnung → invoice}/summen.js +12 -12
  205. package/dist/esm/invoice/texte.d.ts +224 -0
  206. package/dist/esm/invoice/texte.js +421 -0
  207. package/dist/{cjs/rechnung → esm/invoice}/typen.d.ts +32 -11
  208. package/dist/esm/{rechnung → invoice}/vertrag.d.ts +97 -71
  209. package/dist/esm/{rechnung → invoice}/vertrag.js +143 -81
  210. package/dist/esm/models/cancellation.d.ts +43 -24
  211. package/dist/esm/models/cancellation.js +90 -45
  212. package/dist/esm/models/hobex-receipt.d.ts +3 -3
  213. package/dist/esm/models/hobex-receipt.js +35 -35
  214. package/dist/esm/models/index.d.ts +6 -5
  215. package/dist/esm/models/index.js +6 -5
  216. package/dist/esm/models/payment-errors.d.ts +32 -15
  217. package/dist/esm/models/payment-errors.js +77 -32
  218. package/dist/esm/models/receipt-company.d.ts +6 -5
  219. package/dist/esm/models/receipt-company.js +4 -4
  220. package/dist/esm/models/receipt-email.d.ts +32 -18
  221. package/dist/esm/models/receipt-email.js +65 -23
  222. package/dist/esm/models/receipt-errors.d.ts +39 -0
  223. package/dist/esm/models/receipt-errors.js +87 -0
  224. package/dist/esm/models/receipt-item.d.ts +9 -1
  225. package/dist/esm/models/receipt-item.js +3 -0
  226. package/dist/esm/models/receipt-summary.d.ts +10 -4
  227. package/dist/esm/models/receipt-summary.js +9 -3
  228. package/dist/esm/models/receipt.d.ts +31 -2
  229. package/dist/esm/models/receipt.js +12 -2
  230. package/dist/esm/models/voucher.d.ts +7 -6
  231. package/dist/esm/models/voucher.js +2 -7
  232. package/dist/esm/partner/ablauf.d.ts +10 -10
  233. package/dist/esm/partner/ablauf.js +27 -27
  234. package/dist/esm/partner/api.d.ts +26 -23
  235. package/dist/esm/partner/api.js +13 -15
  236. package/dist/esm/partner/auth.d.ts +1 -1
  237. package/dist/esm/partner/auth.js +2 -2
  238. package/dist/esm/partner/betrieb.d.ts +7 -7
  239. package/dist/esm/partner/betrieb.js +8 -8
  240. package/dist/esm/partner/endpunkte.d.ts +27 -14
  241. package/dist/esm/partner/endpunkte.js +79 -39
  242. package/dist/esm/partner/fehler.d.ts +60 -30
  243. package/dist/esm/partner/fehler.js +91 -35
  244. package/dist/esm/partner/index.d.ts +13 -12
  245. package/dist/esm/partner/index.js +12 -11
  246. package/dist/esm/partner/secret.d.ts +3 -3
  247. package/dist/esm/partner/secret.js +5 -5
  248. package/dist/esm/partner/typen.d.ts +129 -71
  249. package/dist/esm/partner/typen.js +75 -2
  250. package/dist/esm/partner/webhook-signatur.d.ts +2 -2
  251. package/dist/esm/partner/webhook-signatur.js +12 -12
  252. package/dist/esm/partner/webhooks.d.ts +60 -32
  253. package/dist/esm/partner/webhooks.js +38 -32
  254. package/dist/esm/payments/hobex.d.ts +11 -3
  255. package/dist/esm/payments/hobex.js +18 -6
  256. package/dist/esm/payments/stripe.d.ts +5 -2
  257. package/dist/esm/payments/stripe.js +11 -6
  258. package/dist/esm/pos/artikel.d.ts +90 -0
  259. package/dist/esm/pos/artikel.js +79 -0
  260. package/dist/esm/pos/client.d.ts +27 -0
  261. package/dist/esm/pos/client.js +137 -0
  262. package/dist/esm/pos/drucker.d.ts +86 -0
  263. package/dist/esm/pos/drucker.js +71 -0
  264. package/dist/esm/pos/errors.d.ts +36 -0
  265. package/dist/esm/pos/errors.js +88 -0
  266. package/dist/esm/pos/index.d.ts +15 -0
  267. package/dist/esm/pos/index.js +20 -0
  268. package/dist/esm/pos/settings.d.ts +313 -0
  269. package/dist/esm/pos/settings.js +367 -0
  270. package/dist/esm/pos/texte.d.ts +883 -0
  271. package/dist/esm/pos/texte.js +481 -0
  272. package/dist/esm/{kasse → pos}/trinkgeld.d.ts +1 -1
  273. package/dist/esm/{kasse → pos}/trinkgeld.js +2 -2
  274. package/dist/esm/printing/escpos.d.ts +29 -29
  275. package/dist/esm/printing/escpos.js +56 -56
  276. package/dist/esm/printing/index.d.ts +2 -2
  277. package/dist/esm/printing/index.js +2 -2
  278. package/dist/esm/printing/qr-groesse.d.ts +38 -38
  279. package/dist/esm/printing/qr-groesse.js +42 -42
  280. package/dist/esm/printing/webusb.d.ts +2 -2
  281. package/dist/esm/printing/webusb.js +4 -4
  282. package/dist/esm/react/index.d.ts +21 -21
  283. package/dist/esm/react/index.js +39 -29
  284. package/dist/esm/receipt/bild.d.ts +4 -4
  285. package/dist/esm/receipt/bild.js +11 -11
  286. package/dist/esm/receipt/blatt.d.ts +46 -46
  287. package/dist/esm/receipt/blatt.js +55 -55
  288. package/dist/esm/receipt/discount.d.ts +1 -1
  289. package/dist/esm/receipt/discount.js +7 -7
  290. package/dist/esm/receipt/due.d.ts +86 -0
  291. package/dist/esm/receipt/due.js +257 -0
  292. package/dist/esm/receipt/epos.d.ts +22 -22
  293. package/dist/esm/receipt/epos.js +47 -47
  294. package/dist/esm/receipt/grid.d.ts +10 -10
  295. package/dist/esm/receipt/grid.js +18 -18
  296. package/dist/esm/receipt/index.d.ts +9 -8
  297. package/dist/esm/receipt/index.js +9 -8
  298. package/dist/esm/receipt/layout-escpos.d.ts +24 -24
  299. package/dist/esm/receipt/layout-escpos.js +51 -51
  300. package/dist/esm/receipt/layout.d.ts +28 -23
  301. package/dist/esm/receipt/layout.js +44 -20
  302. package/dist/esm/receipt/marke-daten.d.ts +8 -8
  303. package/dist/esm/receipt/marke-daten.js +7 -7
  304. package/dist/esm/receipt/marke.d.ts +7 -7
  305. package/dist/esm/receipt/marke.js +10 -10
  306. package/dist/esm/register/errors.d.ts +61 -0
  307. package/dist/esm/register/errors.js +104 -0
  308. package/dist/esm/register/index.d.ts +14 -1
  309. package/dist/esm/register/index.js +13 -0
  310. package/dist/esm/register/pairing.d.ts +55 -36
  311. package/dist/esm/register/pairing.js +33 -29
  312. package/dist/esm/register/session.d.ts +5 -5
  313. package/dist/esm/register/session.js +7 -7
  314. package/dist/esm/stored/draht.d.ts +45 -0
  315. package/dist/esm/stored/draht.js +208 -0
  316. package/dist/esm/stored/einstellungen.d.ts +23 -0
  317. package/dist/esm/stored/einstellungen.js +196 -0
  318. package/dist/esm/stored/index.d.ts +109 -0
  319. package/dist/esm/stored/index.js +217 -0
  320. package/dist/esm/stored/vokabular.d.ts +18 -0
  321. package/dist/esm/stored/vokabular.js +386 -0
  322. package/dist/esm/version.d.ts +7 -0
  323. package/dist/esm/version.js +7 -0
  324. package/dist/esm/vienna-time.d.ts +1 -1
  325. package/dist/esm/vienna-time.js +2 -2
  326. package/fixtures/{erwartet/storno-rabatt.lines.json → expected/cancellation-discount.lines.json} +2 -2
  327. package/fixtures/expected/cancellation-discount.sheet32.json +248 -0
  328. package/fixtures/{erwartet/storno-rabatt.blatt48.json → expected/cancellation-discount.sheet48.json} +119 -119
  329. package/fixtures/{erwartet/storno-voll.lines.json → expected/cancellation-full.lines.json} +2 -2
  330. package/fixtures/expected/cancellation-full.sheet32.json +218 -0
  331. package/fixtures/{erwartet/storno-voll.blatt48.json → expected/cancellation-full.sheet48.json} +107 -107
  332. package/fixtures/{erwartet/storno-teil.lines.json → expected/cancellation-partial.lines.json} +2 -2
  333. package/fixtures/expected/cancellation-partial.sheet32.json +206 -0
  334. package/fixtures/{erwartet/storno-teil.blatt48.json → expected/cancellation-partial.sheet48.json} +101 -101
  335. package/fixtures/{erwartet/storno-split-voll.lines.json → expected/cancellation-split-full.lines.json} +2 -2
  336. package/fixtures/expected/cancellation-split-full.sheet32.json +320 -0
  337. package/fixtures/{erwartet/storno-split-voll.blatt48.json → expected/cancellation-split-full.sheet48.json} +158 -158
  338. package/fixtures/{erwartet/storno-split-teil.lines.json → expected/cancellation-split-partial.lines.json} +2 -2
  339. package/fixtures/expected/cancellation-split-partial.sheet32.json +230 -0
  340. package/fixtures/{erwartet/storno-split-teil.blatt48.json → expected/cancellation-split-partial.sheet48.json} +113 -113
  341. package/fixtures/{erwartet/karte-eigener.lines.json → expected/card-custom.lines.json} +1 -1
  342. package/fixtures/expected/card-custom.sheet32.json +158 -0
  343. package/fixtures/{erwartet/karte-eigener.blatt48.json → expected/card-custom.sheet48.json} +80 -80
  344. package/fixtures/{erwartet/karte-gptom-ios.lines.json → expected/card-gptom-ios.lines.json} +1 -1
  345. package/fixtures/expected/card-gptom-ios.sheet32.json +230 -0
  346. package/fixtures/{erwartet/karte-gptom-ios.blatt48.json → expected/card-gptom-ios.sheet48.json} +116 -116
  347. package/fixtures/{erwartet/karte-gptom.lines.json → expected/card-gptom.lines.json} +1 -1
  348. package/fixtures/expected/card-gptom.sheet32.json +230 -0
  349. package/fixtures/{erwartet/karte-gptom.blatt48.json → expected/card-gptom.sheet48.json} +116 -116
  350. package/fixtures/{erwartet/karte-hobex-cloud.lines.json → expected/card-hobex-cloud.lines.json} +1 -1
  351. package/fixtures/expected/card-hobex-cloud.sheet32.json +200 -0
  352. package/fixtures/{erwartet/karte-hobex-cloud.blatt48.json → expected/card-hobex-cloud.sheet48.json} +101 -101
  353. package/fixtures/{erwartet/karte-hobex-hps.lines.json → expected/card-hobex-hps.lines.json} +1 -1
  354. package/fixtures/expected/card-hobex-hps.sheet32.json +224 -0
  355. package/fixtures/{erwartet/karte-hobex-hps.blatt48.json → expected/card-hobex-hps.sheet48.json} +113 -113
  356. package/fixtures/{erwartet/karte-mypos.lines.json → expected/card-mypos.lines.json} +1 -1
  357. package/fixtures/expected/card-mypos.sheet32.json +254 -0
  358. package/fixtures/{erwartet/karte-mypos.blatt48.json → expected/card-mypos.sheet48.json} +122 -122
  359. package/fixtures/{erwartet/karte-stripe-eps.lines.json → expected/card-stripe-eps.lines.json} +1 -1
  360. package/fixtures/expected/card-stripe-eps.sheet32.json +194 -0
  361. package/fixtures/{erwartet/karte-stripe-eps.blatt48.json → expected/card-stripe-eps.sheet48.json} +98 -98
  362. package/fixtures/{erwartet/karte-stripe.lines.json → expected/card-stripe.lines.json} +1 -1
  363. package/fixtures/expected/card-stripe.sheet32.json +212 -0
  364. package/fixtures/{erwartet/karte-stripe.blatt48.json → expected/card-stripe.sheet48.json} +107 -107
  365. package/fixtures/{erwartet/karte-sumup.lines.json → expected/card-sumup.lines.json} +1 -1
  366. package/fixtures/expected/card-sumup.sheet32.json +218 -0
  367. package/fixtures/{erwartet/karte-sumup.blatt48.json → expected/card-sumup.sheet48.json} +104 -104
  368. package/fixtures/{erwartet/rabattzeilen.lines.json → expected/discount-lines.lines.json} +1 -1
  369. package/fixtures/expected/discount-lines.sheet32.json +200 -0
  370. package/fixtures/{erwartet/rabattzeilen.blatt48.json → expected/discount-lines.sheet48.json} +98 -98
  371. package/fixtures/{erwartet/rabatt-chef-trinkgeld.lines.json → expected/discount-owner-tip.lines.json} +1 -1
  372. package/fixtures/expected/discount-owner-tip.sheet32.json +212 -0
  373. package/fixtures/{erwartet/rabatt-chef-trinkgeld.blatt48.json → expected/discount-owner-tip.sheet48.json} +104 -104
  374. package/fixtures/{erwartet/rabatt-einfach.lines.json → expected/discount-simple.lines.json} +1 -1
  375. package/fixtures/expected/discount-simple.sheet32.json +182 -0
  376. package/fixtures/{erwartet/rabatt-einfach.blatt48.json → expected/discount-simple.sheet48.json} +89 -89
  377. package/fixtures/{erwartet/rabatt-trinkgeld.lines.json → expected/discount-tip.lines.json} +1 -1
  378. package/fixtures/expected/discount-tip.sheet32.json +212 -0
  379. package/fixtures/{erwartet/rabatt-trinkgeld.blatt48.json → expected/discount-tip.sheet48.json} +104 -104
  380. package/fixtures/{erwartet/rabatt-wertgutschein.lines.json → expected/discount-value-voucher.lines.json} +1 -1
  381. package/fixtures/expected/discount-value-voucher.sheet32.json +218 -0
  382. package/fixtures/{erwartet/rabatt-wertgutschein.blatt48.json → expected/discount-value-voucher.sheet48.json} +107 -107
  383. package/fixtures/{erwartet/langer-artikelname.lines.json → expected/long-item-name.lines.json} +1 -1
  384. package/fixtures/expected/long-item-name.sheet32.json +176 -0
  385. package/fixtures/{erwartet/langer-artikelname.blatt48.json → expected/long-item-name.sheet48.json} +86 -86
  386. package/fixtures/{erwartet/verkauf-karte.lines.json → expected/sale-card.lines.json} +1 -1
  387. package/fixtures/expected/sale-card.sheet32.json +176 -0
  388. package/fixtures/{erwartet/verkauf-karte.blatt48.json → expected/sale-card.sheet48.json} +86 -86
  389. package/fixtures/{erwartet/verkauf-bar.lines.json → expected/sale-cash.lines.json} +1 -1
  390. package/fixtures/expected/sale-cash.sheet32.json +176 -0
  391. package/fixtures/{erwartet/verkauf-bar.blatt48.json → expected/sale-cash.sheet48.json} +86 -86
  392. package/fixtures/{erwartet/verkauf-kleinunternehmer.lines.json → expected/sale-small-business.lines.json} +1 -1
  393. package/fixtures/expected/sale-small-business.sheet32.json +182 -0
  394. package/fixtures/{erwartet/verkauf-kleinunternehmer.blatt48.json → expected/sale-small-business.sheet48.json} +89 -89
  395. package/fixtures/{erwartet/signaturausfall-verkauf.lines.json → expected/signature-outage-sale.lines.json} +1 -1
  396. package/fixtures/expected/signature-outage-sale.sheet32.json +194 -0
  397. package/fixtures/{erwartet/signaturausfall-verkauf.blatt48.json → expected/signature-outage-sale.sheet48.json} +92 -92
  398. package/fixtures/{erwartet/split-karte-karte-bar.lines.json → expected/split-card-card-cash.lines.json} +1 -1
  399. package/fixtures/expected/split-card-card-cash.sheet32.json +356 -0
  400. package/fixtures/{erwartet/split-karte-karte-bar.blatt48.json → expected/split-card-card-cash.sheet48.json} +170 -170
  401. package/fixtures/{erwartet/split-bar-rueckgeld.lines.json → expected/split-cash-change.lines.json} +1 -1
  402. package/fixtures/expected/split-cash-change.sheet32.json +194 -0
  403. package/fixtures/{erwartet/split-bar-rueckgeld.blatt48.json → expected/split-cash-change.sheet48.json} +92 -92
  404. package/fixtures/{erwartet/split-langer-betrag.lines.json → expected/split-long-amount.lines.json} +1 -1
  405. package/fixtures/expected/split-long-amount.sheet32.json +266 -0
  406. package/fixtures/{erwartet/split-langer-betrag.blatt48.json → expected/split-long-amount.sheet48.json} +131 -131
  407. package/fixtures/{erwartet/split-eine-karte-trinkgeld.lines.json → expected/split-one-card-tip.lines.json} +1 -1
  408. package/fixtures/expected/split-one-card-tip.sheet32.json +242 -0
  409. package/fixtures/{erwartet/split-eine-karte-trinkgeld.blatt48.json → expected/split-one-card-tip.sheet48.json} +113 -113
  410. package/fixtures/{erwartet/split-tischrunde-trinkgeld.lines.json → expected/split-table-round-tip.lines.json} +1 -1
  411. package/fixtures/expected/split-table-round-tip.sheet32.json +470 -0
  412. package/fixtures/{erwartet/split-tischrunde-trinkgeld.blatt48.json → expected/split-table-round-tip.sheet48.json} +218 -218
  413. package/fixtures/{erwartet/split-trinkgeld-karte.lines.json → expected/split-tip-card.lines.json} +1 -1
  414. package/fixtures/expected/split-tip-card.sheet32.json +272 -0
  415. package/fixtures/{erwartet/split-trinkgeld-karte.blatt48.json → expected/split-tip-card.sheet48.json} +128 -128
  416. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.lines.json → expected/split-two-cards-same-provider.lines.json} +1 -1
  417. package/fixtures/expected/split-two-cards-same-provider.sheet32.json +326 -0
  418. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.blatt48.json → expected/split-two-cards-same-provider.sheet48.json} +149 -149
  419. package/fixtures/{erwartet/testkasse-verkauf.lines.json → expected/test-cashregister-sale.lines.json} +3 -3
  420. package/fixtures/expected/test-cashregister-sale.sheet32.json +224 -0
  421. package/fixtures/{erwartet/testkasse-verkauf.blatt48.json → expected/test-cashregister-sale.sheet48.json} +110 -110
  422. package/fixtures/{erwartet/testsignatur-verkauf.lines.json → expected/test-signature-sale.lines.json} +3 -3
  423. package/fixtures/expected/test-signature-sale.sheet32.json +236 -0
  424. package/fixtures/{erwartet/testsignatur-verkauf.blatt48.json → expected/test-signature-sale.sheet48.json} +110 -110
  425. package/fixtures/{erwartet → expected}/training.lines.json +2 -2
  426. package/fixtures/expected/training.sheet32.json +236 -0
  427. package/fixtures/{erwartet/training.blatt48.json → expected/training.sheet48.json} +110 -110
  428. package/fixtures/{erwartet/null-jahr.lines.json → expected/zero-annual.lines.json} +2 -2
  429. package/fixtures/expected/zero-annual.sheet32.json +212 -0
  430. package/fixtures/{erwartet/null-jahr.blatt48.json → expected/zero-annual.sheet48.json} +95 -95
  431. package/fixtures/{erwartet/null-schluss.lines.json → expected/zero-final.lines.json} +2 -2
  432. package/fixtures/expected/zero-final.sheet32.json +206 -0
  433. package/fixtures/{erwartet/null-schluss.blatt48.json → expected/zero-final.sheet48.json} +95 -95
  434. package/fixtures/{erwartet/null-pruef.lines.json → expected/zero-manual.lines.json} +2 -2
  435. package/fixtures/expected/zero-manual.sheet32.json +206 -0
  436. package/fixtures/{erwartet/null-pruef.blatt48.json → expected/zero-manual.sheet48.json} +95 -95
  437. package/fixtures/{erwartet/null-monat.lines.json → expected/zero-monthly.lines.json} +2 -2
  438. package/fixtures/expected/zero-monthly.sheet32.json +206 -0
  439. package/fixtures/{erwartet/null-monat.blatt48.json → expected/zero-monthly.sheet48.json} +95 -95
  440. package/fixtures/{erwartet/null-ausfall.lines.json → expected/zero-outage-end.lines.json} +2 -2
  441. package/fixtures/expected/zero-outage-end.sheet32.json +206 -0
  442. package/fixtures/{erwartet/null-ausfall.blatt48.json → expected/zero-outage-end.sheet48.json} +95 -95
  443. package/fixtures/{erwartet/null-start.lines.json → expected/zero-start.lines.json} +2 -2
  444. package/fixtures/expected/zero-start.sheet32.json +206 -0
  445. package/fixtures/{erwartet/null-start.blatt48.json → expected/zero-start.sheet48.json} +95 -95
  446. package/fixtures/hobex-hps-codes.json +12 -12
  447. package/fixtures/invoice-api-examples/brands-ok.json +8 -0
  448. package/fixtures/{rechnung-api-beispiele/credit-fehler-grund.json → invoice-api-examples/credit-error-reason.json} +6 -6
  449. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/credit-ok.json +6 -6
  450. package/fixtures/{rechnung-api-beispiele/customer-fehler-uid.json → invoice-api-examples/customer-error-vat-id.json} +4 -4
  451. package/fixtures/invoice-api-examples/customer-get-error-both.json +15 -0
  452. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/customer-ok.json +4 -4
  453. package/fixtures/{rechnung-api-beispiele/customer-search-fehler-leer.json → invoice-api-examples/customer-search-error-empty.json} +4 -4
  454. package/fixtures/{rechnung-api-beispiele/issue-rabatt.json → invoice-api-examples/issue-discount.json} +6 -6
  455. package/fixtures/{rechnung-api-beispiele/issue-englisch.json → invoice-api-examples/issue-english.json} +7 -7
  456. package/fixtures/{rechnung-api-beispiele/issue-fehler-cent.json → invoice-api-examples/issue-error-cent.json} +6 -6
  457. package/fixtures/{rechnung-api-beispiele/issue-fehler-sprache.json → invoice-api-examples/issue-error-language.json} +5 -5
  458. package/fixtures/{rechnung-api-beispiele/issue-fehler-negativ.json → invoice-api-examples/issue-error-negative.json} +6 -6
  459. package/fixtures/{rechnung-api-beispiele/issue-fehler-zahlungsart.json → invoice-api-examples/issue-error-payment-method.json} +8 -6
  460. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-beide.json → invoice-api-examples/issue-error-price-both.json} +6 -6
  461. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-fehlt.json → invoice-api-examples/issue-error-price-missing.json} +6 -6
  462. package/fixtures/{rechnung-api-beispiele/issue-fehler-menge.json → invoice-api-examples/issue-error-quantity.json} +6 -6
  463. package/fixtures/{rechnung-api-beispiele/issue-fehler-satz.json → invoice-api-examples/issue-error-rate.json} +6 -6
  464. package/fixtures/{rechnung-api-beispiele/issue-fehler-einheit.json → invoice-api-examples/issue-error-unit.json} +5 -5
  465. package/fixtures/{rechnung-api-beispiele/issue-fehler-unbekannt.json → invoice-api-examples/issue-error-unknown.json} +6 -6
  466. package/fixtures/{rechnung-api-beispiele/issue-brutto-20.json → invoice-api-examples/issue-gross-20.json} +6 -6
  467. package/fixtures/{rechnung-api-beispiele/issue-mikropreis.json → invoice-api-examples/issue-micro-price.json} +6 -6
  468. package/fixtures/{rechnung-api-beispiele/issue-gemischt.json → invoice-api-examples/issue-mixed.json} +6 -6
  469. package/fixtures/{rechnung-api-beispiele/issue-netto-20.json → invoice-api-examples/issue-net-20.json} +6 -6
  470. package/fixtures/{rechnung-api-beispiele/issue-bezahlt.json → invoice-api-examples/issue-paid.json} +7 -7
  471. package/fixtures/{rechnung-api-beispiele/issue-kleinunternehmer.json → invoice-api-examples/issue-small-business.json} +6 -6
  472. package/fixtures/invoice-api-examples/payment-error-on-site.json +17 -0
  473. package/fixtures/invoice-api-examples/payment-error-without-key.json +16 -0
  474. package/fixtures/invoice-api-examples/payment-recorded-later.json +14 -0
  475. package/fixtures/{rechnung-api-beispiele/setup-status-fehler-feld.json → invoice-api-examples/setup-status-error-field.json} +4 -4
  476. package/fixtures/invoice-api-examples/setup-status-ok.json +8 -0
  477. package/fixtures/{rechnung-api.schema.json → invoice-api.schema.json} +24 -24
  478. package/fixtures/{rechnung-rechnen-zufall.json → invoice-calc-random.json} +828 -828
  479. package/fixtures/{rechnung-rechnen.json → invoice-calc.json} +47 -47
  480. package/fixtures/invoice-texts.json +464 -0
  481. package/fixtures/{rechnung-summen.json → invoice-totals.json} +25 -25
  482. package/fixtures/{position-aus-euro.json → item-from-euro.json} +26 -26
  483. package/fixtures/manifest.json +252 -252
  484. package/fixtures/pos-message-cases.json +32 -0
  485. package/fixtures/pos-settings-defaults.json +149 -0
  486. package/fixtures/{kasse-texte.json → pos-texts.json} +416 -416
  487. package/fixtures/receipt-due-generated.json +1218 -0
  488. package/fixtures/{belege/storno-rabatt.json → receipts/cancellation-discount.json} +3 -3
  489. package/fixtures/{belege/storno-voll.json → receipts/cancellation-full.json} +3 -3
  490. package/fixtures/{belege/storno-teil.json → receipts/cancellation-partial.json} +3 -3
  491. package/fixtures/{belege/storno-split-voll.json → receipts/cancellation-split-full.json} +3 -3
  492. package/fixtures/{belege/storno-split-teil.json → receipts/cancellation-split-partial.json} +3 -3
  493. package/fixtures/{belege/karte-eigener.json → receipts/card-custom.json} +2 -2
  494. package/fixtures/{belege/karte-gptom-ios.json → receipts/card-gptom-ios.json} +2 -2
  495. package/fixtures/{belege/karte-gptom.json → receipts/card-gptom.json} +2 -2
  496. package/fixtures/{belege/karte-hobex-cloud.json → receipts/card-hobex-cloud.json} +2 -2
  497. package/fixtures/{belege/karte-hobex-hps.json → receipts/card-hobex-hps.json} +2 -2
  498. package/fixtures/{belege/karte-mypos.json → receipts/card-mypos.json} +2 -2
  499. package/fixtures/{belege/karte-stripe-eps.json → receipts/card-stripe-eps.json} +2 -2
  500. package/fixtures/{belege/karte-stripe.json → receipts/card-stripe.json} +2 -2
  501. package/fixtures/{belege/karte-sumup.json → receipts/card-sumup.json} +2 -2
  502. package/fixtures/{belege/rabattzeilen.json → receipts/discount-lines.json} +2 -2
  503. package/fixtures/{belege/rabatt-chef-trinkgeld.json → receipts/discount-owner-tip.json} +2 -2
  504. package/fixtures/{belege/rabatt-einfach.json → receipts/discount-simple.json} +2 -2
  505. package/fixtures/{belege/rabatt-trinkgeld.json → receipts/discount-tip.json} +2 -2
  506. package/fixtures/{belege/rabatt-wertgutschein.json → receipts/discount-value-voucher.json} +2 -2
  507. package/fixtures/{belege/langer-artikelname.json → receipts/long-item-name.json} +2 -2
  508. package/fixtures/{belege/verkauf-karte.json → receipts/sale-card.json} +2 -2
  509. package/fixtures/{belege/verkauf-bar.json → receipts/sale-cash.json} +2 -2
  510. package/fixtures/{belege/verkauf-kleinunternehmer.json → receipts/sale-small-business.json} +1 -1
  511. package/fixtures/{belege/signaturausfall-verkauf.json → receipts/signature-outage-sale.json} +2 -2
  512. package/fixtures/{belege/split-karte-karte-bar.json → receipts/split-card-card-cash.json} +2 -2
  513. package/fixtures/{belege/split-bar-rueckgeld.json → receipts/split-cash-change.json} +2 -2
  514. package/fixtures/{belege/split-langer-betrag.json → receipts/split-long-amount.json} +2 -2
  515. package/fixtures/{belege/split-eine-karte-trinkgeld.json → receipts/split-one-card-tip.json} +2 -2
  516. package/fixtures/{belege/split-tischrunde-trinkgeld.json → receipts/split-table-round-tip.json} +2 -2
  517. package/fixtures/{belege/split-trinkgeld-karte.json → receipts/split-tip-card.json} +2 -2
  518. package/fixtures/{belege/split-zwei-karten-gleicher-anbieter.json → receipts/split-two-cards-same-provider.json} +2 -2
  519. package/fixtures/{belege/testsignatur-verkauf.json → receipts/test-cashregister-sale.json} +3 -3
  520. package/fixtures/{belege/testkasse-verkauf.json → receipts/test-signature-sale.json} +3 -3
  521. package/fixtures/{belege → receipts}/training.json +2 -2
  522. package/fixtures/{belege/null-jahr.json → receipts/zero-annual.json} +5 -5
  523. package/fixtures/{belege/null-schluss.json → receipts/zero-final.json} +5 -5
  524. package/fixtures/{belege/null-pruef.json → receipts/zero-manual.json} +5 -5
  525. package/fixtures/{belege/null-monat.json → receipts/zero-monthly.json} +5 -5
  526. package/fixtures/{belege/null-ausfall.json → receipts/zero-outage-end.json} +5 -5
  527. package/fixtures/{belege/null-start.json → receipts/zero-start.json} +5 -5
  528. package/fixtures/renames-1.0.json +1490 -0
  529. package/fixtures/{kasse-settings-standard.json → stored/pos-settings-defaults.json} +7 -7
  530. package/fixtures/surface.json +877 -0
  531. package/fixtures/v3/README.md +125 -0
  532. package/fixtures/v3/antworten/belege.json +4738 -0
  533. package/fixtures/v3/antworten/belegmail.json +154 -0
  534. package/fixtures/v3/antworten/kasse-belege.json +4304 -0
  535. package/fixtures/v3/antworten/kasse.json +12716 -0
  536. package/fixtures/v3/antworten/rechnungen.json +1712 -0
  537. package/fixtures/v3/antworten/storno.json +737 -0
  538. package/fixtures/v3/stored/belege.json +502 -0
  539. package/fixtures/v3/stored/kasse.json +3461 -0
  540. package/fixtures/v3/stored/rechnungen.json +750 -0
  541. package/fixtures/v3/v3-vokabular.json +3375 -0
  542. package/fixtures/v3/zahlbetrag-faelle.json +794 -0
  543. package/package.json +32 -18
  544. package/dist/cjs/kasse/artikel.d.ts +0 -83
  545. package/dist/cjs/kasse/artikel.js +0 -79
  546. package/dist/cjs/kasse/client.d.ts +0 -10
  547. package/dist/cjs/kasse/client.js +0 -38
  548. package/dist/cjs/kasse/drucker.d.ts +0 -59
  549. package/dist/cjs/kasse/drucker.js +0 -50
  550. package/dist/cjs/kasse/index.d.ts +0 -13
  551. package/dist/cjs/kasse/index.js +0 -83
  552. package/dist/cjs/kasse/settings.d.ts +0 -229
  553. package/dist/cjs/kasse/settings.js +0 -172
  554. package/dist/cjs/kasse/texte.d.ts +0 -868
  555. package/dist/cjs/kasse/texte.js +0 -474
  556. package/dist/cjs/rechnung/fehler.d.ts +0 -21
  557. package/dist/cjs/rechnung/fehler.js +0 -44
  558. package/dist/cjs/rechnung/index.d.ts +0 -21
  559. package/dist/cjs/rechnung/index.js +0 -82
  560. package/dist/cjs/rechnung/texte.d.ts +0 -222
  561. package/dist/cjs/rechnung/texte.js +0 -425
  562. package/dist/esm/kasse/artikel.d.ts +0 -83
  563. package/dist/esm/kasse/artikel.js +0 -70
  564. package/dist/esm/kasse/client.d.ts +0 -10
  565. package/dist/esm/kasse/client.js +0 -33
  566. package/dist/esm/kasse/drucker.d.ts +0 -59
  567. package/dist/esm/kasse/drucker.js +0 -45
  568. package/dist/esm/kasse/index.d.ts +0 -13
  569. package/dist/esm/kasse/index.js +0 -18
  570. package/dist/esm/kasse/settings.d.ts +0 -229
  571. package/dist/esm/kasse/settings.js +0 -168
  572. package/dist/esm/kasse/texte.d.ts +0 -868
  573. package/dist/esm/kasse/texte.js +0 -466
  574. package/dist/esm/rechnung/fehler.d.ts +0 -21
  575. package/dist/esm/rechnung/fehler.js +0 -39
  576. package/dist/esm/rechnung/index.d.ts +0 -21
  577. package/dist/esm/rechnung/index.js +0 -20
  578. package/dist/esm/rechnung/texte.d.ts +0 -222
  579. package/dist/esm/rechnung/texte.js +0 -421
  580. package/fixtures/erwartet/karte-eigener.blatt32.json +0 -158
  581. package/fixtures/erwartet/karte-gptom-ios.blatt32.json +0 -230
  582. package/fixtures/erwartet/karte-gptom.blatt32.json +0 -230
  583. package/fixtures/erwartet/karte-hobex-cloud.blatt32.json +0 -200
  584. package/fixtures/erwartet/karte-hobex-hps.blatt32.json +0 -224
  585. package/fixtures/erwartet/karte-mypos.blatt32.json +0 -254
  586. package/fixtures/erwartet/karte-stripe-eps.blatt32.json +0 -194
  587. package/fixtures/erwartet/karte-stripe.blatt32.json +0 -212
  588. package/fixtures/erwartet/karte-sumup.blatt32.json +0 -218
  589. package/fixtures/erwartet/langer-artikelname.blatt32.json +0 -176
  590. package/fixtures/erwartet/null-ausfall.blatt32.json +0 -206
  591. package/fixtures/erwartet/null-jahr.blatt32.json +0 -212
  592. package/fixtures/erwartet/null-monat.blatt32.json +0 -206
  593. package/fixtures/erwartet/null-pruef.blatt32.json +0 -206
  594. package/fixtures/erwartet/null-schluss.blatt32.json +0 -206
  595. package/fixtures/erwartet/null-start.blatt32.json +0 -206
  596. package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt32.json +0 -212
  597. package/fixtures/erwartet/rabatt-einfach.blatt32.json +0 -182
  598. package/fixtures/erwartet/rabatt-trinkgeld.blatt32.json +0 -212
  599. package/fixtures/erwartet/rabatt-wertgutschein.blatt32.json +0 -218
  600. package/fixtures/erwartet/rabattzeilen.blatt32.json +0 -200
  601. package/fixtures/erwartet/signaturausfall-verkauf.blatt32.json +0 -194
  602. package/fixtures/erwartet/split-bar-rueckgeld.blatt32.json +0 -194
  603. package/fixtures/erwartet/split-eine-karte-trinkgeld.blatt32.json +0 -242
  604. package/fixtures/erwartet/split-karte-karte-bar.blatt32.json +0 -356
  605. package/fixtures/erwartet/split-langer-betrag.blatt32.json +0 -266
  606. package/fixtures/erwartet/split-tischrunde-trinkgeld.blatt32.json +0 -470
  607. package/fixtures/erwartet/split-trinkgeld-karte.blatt32.json +0 -272
  608. package/fixtures/erwartet/split-zwei-karten-gleicher-anbieter.blatt32.json +0 -326
  609. package/fixtures/erwartet/storno-rabatt.blatt32.json +0 -248
  610. package/fixtures/erwartet/storno-split-teil.blatt32.json +0 -230
  611. package/fixtures/erwartet/storno-split-voll.blatt32.json +0 -320
  612. package/fixtures/erwartet/storno-teil.blatt32.json +0 -206
  613. package/fixtures/erwartet/storno-voll.blatt32.json +0 -218
  614. package/fixtures/erwartet/testkasse-verkauf.blatt32.json +0 -224
  615. package/fixtures/erwartet/testsignatur-verkauf.blatt32.json +0 -236
  616. package/fixtures/erwartet/training.blatt32.json +0 -236
  617. package/fixtures/erwartet/verkauf-bar.blatt32.json +0 -176
  618. package/fixtures/erwartet/verkauf-karte.blatt32.json +0 -176
  619. package/fixtures/erwartet/verkauf-kleinunternehmer.blatt32.json +0 -182
  620. package/fixtures/kasse-meldungen-faelle.json +0 -32
  621. package/fixtures/oberflaeche.json +0 -558
  622. package/fixtures/rechnung-api-beispiele/brands-ok.json +0 -8
  623. package/fixtures/rechnung-api-beispiele/customer-get-fehler-beide.json +0 -15
  624. package/fixtures/rechnung-api-beispiele/setup-status-ok.json +0 -8
  625. package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +0 -14
  626. package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +0 -15
  627. package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +0 -14
  628. package/fixtures/rechnung-texte.json +0 -464
  629. /package/dist/cjs/{rechnung → invoice}/typen.js +0 -0
  630. /package/dist/esm/{rechnung → invoice}/typen.js +0 -0
  631. /package/fixtures/{erwartet/storno-rabatt.grid32.txt → expected/cancellation-discount.grid32.txt} +0 -0
  632. /package/fixtures/{erwartet/storno-rabatt.grid48.txt → expected/cancellation-discount.grid48.txt} +0 -0
  633. /package/fixtures/{erwartet/storno-voll.grid32.txt → expected/cancellation-full.grid32.txt} +0 -0
  634. /package/fixtures/{erwartet/storno-voll.grid48.txt → expected/cancellation-full.grid48.txt} +0 -0
  635. /package/fixtures/{erwartet/storno-teil.grid32.txt → expected/cancellation-partial.grid32.txt} +0 -0
  636. /package/fixtures/{erwartet/storno-teil.grid48.txt → expected/cancellation-partial.grid48.txt} +0 -0
  637. /package/fixtures/{erwartet/storno-split-voll.grid32.txt → expected/cancellation-split-full.grid32.txt} +0 -0
  638. /package/fixtures/{erwartet/storno-split-voll.grid48.txt → expected/cancellation-split-full.grid48.txt} +0 -0
  639. /package/fixtures/{erwartet/storno-split-teil.grid32.txt → expected/cancellation-split-partial.grid32.txt} +0 -0
  640. /package/fixtures/{erwartet/storno-split-teil.grid48.txt → expected/cancellation-split-partial.grid48.txt} +0 -0
  641. /package/fixtures/{erwartet/karte-eigener.grid32.txt → expected/card-custom.grid32.txt} +0 -0
  642. /package/fixtures/{erwartet/karte-eigener.grid48.txt → expected/card-custom.grid48.txt} +0 -0
  643. /package/fixtures/{erwartet/karte-gptom-ios.grid32.txt → expected/card-gptom-ios.grid32.txt} +0 -0
  644. /package/fixtures/{erwartet/karte-gptom-ios.grid48.txt → expected/card-gptom-ios.grid48.txt} +0 -0
  645. /package/fixtures/{erwartet/karte-gptom.grid32.txt → expected/card-gptom.grid32.txt} +0 -0
  646. /package/fixtures/{erwartet/karte-gptom.grid48.txt → expected/card-gptom.grid48.txt} +0 -0
  647. /package/fixtures/{erwartet/karte-hobex-cloud.grid32.txt → expected/card-hobex-cloud.grid32.txt} +0 -0
  648. /package/fixtures/{erwartet/karte-hobex-cloud.grid48.txt → expected/card-hobex-cloud.grid48.txt} +0 -0
  649. /package/fixtures/{erwartet/karte-hobex-hps.grid32.txt → expected/card-hobex-hps.grid32.txt} +0 -0
  650. /package/fixtures/{erwartet/karte-hobex-hps.grid48.txt → expected/card-hobex-hps.grid48.txt} +0 -0
  651. /package/fixtures/{erwartet/karte-mypos.grid32.txt → expected/card-mypos.grid32.txt} +0 -0
  652. /package/fixtures/{erwartet/karte-mypos.grid48.txt → expected/card-mypos.grid48.txt} +0 -0
  653. /package/fixtures/{erwartet/karte-stripe-eps.grid32.txt → expected/card-stripe-eps.grid32.txt} +0 -0
  654. /package/fixtures/{erwartet/karte-stripe-eps.grid48.txt → expected/card-stripe-eps.grid48.txt} +0 -0
  655. /package/fixtures/{erwartet/karte-stripe.grid32.txt → expected/card-stripe.grid32.txt} +0 -0
  656. /package/fixtures/{erwartet/karte-stripe.grid48.txt → expected/card-stripe.grid48.txt} +0 -0
  657. /package/fixtures/{erwartet/karte-sumup.grid32.txt → expected/card-sumup.grid32.txt} +0 -0
  658. /package/fixtures/{erwartet/karte-sumup.grid48.txt → expected/card-sumup.grid48.txt} +0 -0
  659. /package/fixtures/{erwartet/rabattzeilen.grid32.txt → expected/discount-lines.grid32.txt} +0 -0
  660. /package/fixtures/{erwartet/rabattzeilen.grid48.txt → expected/discount-lines.grid48.txt} +0 -0
  661. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid32.txt → expected/discount-owner-tip.grid32.txt} +0 -0
  662. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid48.txt → expected/discount-owner-tip.grid48.txt} +0 -0
  663. /package/fixtures/{erwartet/rabatt-einfach.grid32.txt → expected/discount-simple.grid32.txt} +0 -0
  664. /package/fixtures/{erwartet/rabatt-einfach.grid48.txt → expected/discount-simple.grid48.txt} +0 -0
  665. /package/fixtures/{erwartet/rabatt-trinkgeld.grid32.txt → expected/discount-tip.grid32.txt} +0 -0
  666. /package/fixtures/{erwartet/rabatt-trinkgeld.grid48.txt → expected/discount-tip.grid48.txt} +0 -0
  667. /package/fixtures/{erwartet/rabatt-wertgutschein.grid32.txt → expected/discount-value-voucher.grid32.txt} +0 -0
  668. /package/fixtures/{erwartet/rabatt-wertgutschein.grid48.txt → expected/discount-value-voucher.grid48.txt} +0 -0
  669. /package/fixtures/{erwartet/logo-probe-hoch.raster32.txt → expected/logo-sample-tall.raster32.txt} +0 -0
  670. /package/fixtures/{erwartet/logo-probe.raster32.txt → expected/logo-sample.raster32.txt} +0 -0
  671. /package/fixtures/{erwartet/langer-artikelname.grid32.txt → expected/long-item-name.grid32.txt} +0 -0
  672. /package/fixtures/{erwartet/langer-artikelname.grid48.txt → expected/long-item-name.grid48.txt} +0 -0
  673. /package/fixtures/{erwartet/verkauf-karte.grid32.txt → expected/sale-card.grid32.txt} +0 -0
  674. /package/fixtures/{erwartet/verkauf-karte.grid48.txt → expected/sale-card.grid48.txt} +0 -0
  675. /package/fixtures/{erwartet/verkauf-bar.grid32.txt → expected/sale-cash.grid32.txt} +0 -0
  676. /package/fixtures/{erwartet/verkauf-bar.grid48.txt → expected/sale-cash.grid48.txt} +0 -0
  677. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid32.txt → expected/sale-small-business.grid32.txt} +0 -0
  678. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid48.txt → expected/sale-small-business.grid48.txt} +0 -0
  679. /package/fixtures/{erwartet/signaturausfall-verkauf.grid32.txt → expected/signature-outage-sale.grid32.txt} +0 -0
  680. /package/fixtures/{erwartet/signaturausfall-verkauf.grid48.txt → expected/signature-outage-sale.grid48.txt} +0 -0
  681. /package/fixtures/{erwartet/split-karte-karte-bar.grid32.txt → expected/split-card-card-cash.grid32.txt} +0 -0
  682. /package/fixtures/{erwartet/split-karte-karte-bar.grid48.txt → expected/split-card-card-cash.grid48.txt} +0 -0
  683. /package/fixtures/{erwartet/split-bar-rueckgeld.grid32.txt → expected/split-cash-change.grid32.txt} +0 -0
  684. /package/fixtures/{erwartet/split-bar-rueckgeld.grid48.txt → expected/split-cash-change.grid48.txt} +0 -0
  685. /package/fixtures/{erwartet/split-langer-betrag.grid32.txt → expected/split-long-amount.grid32.txt} +0 -0
  686. /package/fixtures/{erwartet/split-langer-betrag.grid48.txt → expected/split-long-amount.grid48.txt} +0 -0
  687. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid32.txt → expected/split-one-card-tip.grid32.txt} +0 -0
  688. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid48.txt → expected/split-one-card-tip.grid48.txt} +0 -0
  689. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid32.txt → expected/split-table-round-tip.grid32.txt} +0 -0
  690. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid48.txt → expected/split-table-round-tip.grid48.txt} +0 -0
  691. /package/fixtures/{erwartet/split-trinkgeld-karte.grid32.txt → expected/split-tip-card.grid32.txt} +0 -0
  692. /package/fixtures/{erwartet/split-trinkgeld-karte.grid48.txt → expected/split-tip-card.grid48.txt} +0 -0
  693. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid32.txt → expected/split-two-cards-same-provider.grid32.txt} +0 -0
  694. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid48.txt → expected/split-two-cards-same-provider.grid48.txt} +0 -0
  695. /package/fixtures/{erwartet/testkasse-verkauf.grid32.txt → expected/test-cashregister-sale.grid32.txt} +0 -0
  696. /package/fixtures/{erwartet/testkasse-verkauf.grid48.txt → expected/test-cashregister-sale.grid48.txt} +0 -0
  697. /package/fixtures/{erwartet/testsignatur-verkauf.grid32.txt → expected/test-signature-sale.grid32.txt} +0 -0
  698. /package/fixtures/{erwartet/testsignatur-verkauf.grid48.txt → expected/test-signature-sale.grid48.txt} +0 -0
  699. /package/fixtures/{erwartet → expected}/training.grid32.txt +0 -0
  700. /package/fixtures/{erwartet → expected}/training.grid48.txt +0 -0
  701. /package/fixtures/{erwartet/null-jahr.grid32.txt → expected/zero-annual.grid32.txt} +0 -0
  702. /package/fixtures/{erwartet/null-jahr.grid48.txt → expected/zero-annual.grid48.txt} +0 -0
  703. /package/fixtures/{erwartet/null-schluss.grid32.txt → expected/zero-final.grid32.txt} +0 -0
  704. /package/fixtures/{erwartet/null-schluss.grid48.txt → expected/zero-final.grid48.txt} +0 -0
  705. /package/fixtures/{erwartet/null-pruef.grid32.txt → expected/zero-manual.grid32.txt} +0 -0
  706. /package/fixtures/{erwartet/null-pruef.grid48.txt → expected/zero-manual.grid48.txt} +0 -0
  707. /package/fixtures/{erwartet/null-monat.grid32.txt → expected/zero-monthly.grid32.txt} +0 -0
  708. /package/fixtures/{erwartet/null-monat.grid48.txt → expected/zero-monthly.grid48.txt} +0 -0
  709. /package/fixtures/{erwartet/null-ausfall.grid32.txt → expected/zero-outage-end.grid32.txt} +0 -0
  710. /package/fixtures/{erwartet/null-ausfall.grid48.txt → expected/zero-outage-end.grid48.txt} +0 -0
  711. /package/fixtures/{erwartet/null-start.grid32.txt → expected/zero-start.grid32.txt} +0 -0
  712. /package/fixtures/{erwartet/null-start.grid48.txt → expected/zero-start.grid48.txt} +0 -0
@@ -1,3 +1,4 @@
1
+ import { bekannterCode, feldfehlerVon } from '../client/fehlercodes.js';
1
2
  /**
2
3
  * Storno-Metadaten — Zwilling von `functions/storno-core.js`.
3
4
  *
@@ -7,65 +8,105 @@
7
8
  * Storno-Beleg) und die Liste der Stornos am Original (`cancellations`), aus
8
9
  * der sich die Restmengen ergeben.
9
10
  */
10
- /** Grund-Katalog: Codes wie im Backend, Anzeigetext fuer Bon und Bedienung. */
11
+ /**
12
+ * Grund-Katalog: Codes wie unter `/v3` (Katalog `STORNO_GRUND` des
13
+ * Backends), Anzeigetext fuer Bon und Bedienung. Der Anzeigetext bleibt
14
+ * deutsch, er steht so am Beleg.
15
+ */
11
16
  export const CANCELLATION_REASONS = Object.freeze({
12
- fehleingabe: 'Fehleingabe',
13
- kunde_storniert: 'Kunde hat storniert',
14
- falsche_zahlart: 'Falsche Zahlart',
15
- doppelt_erfasst: 'Doppelt erfasst',
16
- sonstiges: 'Sonstiges',
17
+ input_error: 'Fehleingabe',
18
+ customer_cancelled: 'Kunde hat storniert',
19
+ wrong_payment_method: 'Falsche Zahlart',
20
+ duplicate: 'Doppelt erfasst',
21
+ other: 'Sonstiges',
17
22
  });
18
23
  export function isCancellationReason(value) {
19
24
  return typeof value === 'string' && Object.prototype.hasOwnProperty.call(CANCELLATION_REASONS, value);
20
25
  }
21
26
  /**
22
- * Stabile Fehlercodes von `cancelReceipt` — Zwilling von
23
- * `functions/gemeinsam/storno-core.js` STORNO_FEHLERCODES. Das Backend legt sie bei
27
+ * Stabile Fehlercodes von `cancelReceipt` unter `/v3` (Vokabular
28
+ * `errorCodes.cancellation`, gleiche Reihenfolge). Das Backend legt sie bei
24
29
  * jedem fachlichen Fehler als `code` neben die Meldung; das Paket reicht sie
25
- * als [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text** —
30
+ * als [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text:**
26
31
  * die deutsche Meldung darf sich aendern, der Code nicht.
27
32
  *
28
- * Nur Auth-/Parameterfehler (Sitzung abgelaufen, Pflichtfeld fehlt) kommen
29
- * ohne Code; dort bleibt `code` undefined.
33
+ * Formfehler an `payments` selbst melden die Codes aus
34
+ * [PAYMENT_ERROR_CODES]. `cancellation_outcome_unknown` heisst: der Storno
35
+ * ist moeglicherweise gebucht (`outcome: 'unknown'`). Nie wiederholen,
36
+ * sondern das Original nachlesen (`getReceipt`, `cancellations[]`).
30
37
  *
31
- * Die vier `STORNO_PAYMENTS_…`/`STORNO_REFUND_…`-Codes gehoeren zur
32
- * Rueckzahlung je Zahlung (mehrere Zahlungen je Beleg); Formfehler an
33
- * `payments` selbst melden die Codes aus [PAYMENT_ERROR_CODES].
34
- * `STORNO_OUTCOME_UNKNOWN` heisst: der Storno-Beleg kann schon signiert sein,
35
- * die Reservierung bleibt offen – nicht erneut stornieren, die Belegliste
36
- * nach ein paar Minuten neu laden (unter `/v3`: `cancellation_outcome_unknown`).
37
- *
38
- * Die Werte hier sind die von `/v1` und intern. Unter `/v3` heissen die
39
- * Storno-Codes nach dem /v3-Vokabular anders (`already_cancelled`,
40
- * `cancellation_payments_required`, functions/gemeinsam/api-vokabular-v3.js);
41
- * diese Namen kommen mit der Umstellung des Pakets auf `/v3`.
42
- * [isCancellationErrorCode] prueft darum exakt.
38
+ * Dahinter (ab 1.0) die Codes, die Anmeldung und Rand auf diesem Endpunkt
39
+ * erzeugen koennen: `errorCodes.auth` ohne die sieben des Partner-Zugangs und
40
+ * `errorCodes.edge` (`not_found`, `dialect_mismatch`, `response_translation_failed`
41
+ * ...), zuletzt die Codes des Pakets (`route_missing`, `response_unreadable`).
42
+ * Die Zahlungscodes (`payment_method_not_supported` ...) stehen in
43
+ * [PAYMENT_ERROR_CODES]. Ein Code ausserhalb bleibt ueber
44
+ * `KasseneckApiError.code` lesbar.
43
45
  */
44
- export const CANCELLATION_ERROR_CODES = [
45
- 'beleg_nicht_gefunden', // Original fehlt oder gehoert nicht zu dieser Kasse
46
- 'belegart_nicht_stornierbar', // Original ist selbst Storno-, Null- oder Startbeleg
47
- 'trainingsbeleg', // Trainingsbelege werden nicht storniert
48
- 'bereits_storniert', // keine Restmenge mehr (auch beim positionslosen Beleg)
49
- 'position_ungueltig', // Index unbekannt oder doppelt
50
- 'menge_ueber_rest', // Menge nicht ganzzahlig >= 1 oder groesser als der Rest
51
- 'grund_unbekannt', // reason fehlt oder nicht im Katalog
52
- 'anmerkung_zu_lang', // note laenger als 200 Zeichen
53
- 'items_ungueltig', // items ist keine Liste
54
- 'kasse_nicht_zugewiesen', // Register-Benutzer darf diese Kasse nicht
55
- 'keine_berechtigung', // Register-Benutzer ohne Storno-Recht
56
- 'nur_eigene_belege', // Recht "eigene", fremder Beleg
57
- 'kasse_unvollstaendig', // api_key/token fehlen am Konto bzw. an der Kasse
58
- 'storno_fehlgeschlagen', // der Storno-Beleg selbst wurde abgelehnt (z. B. Signatur)
59
- // Mehrere Zahlungen je Beleg (Rueckzahlung je Zahlung):
60
- 'STORNO_PAYMENTS_REQUIRED', // Teilstorno eines Belegs mit mehreren Zahlungen ohne payments
61
- 'STORNO_REFUND_EXCEEDS_PAYMENT', // Rueckzahlungen auf eine Zahlung uebersteigen deren Rest
62
- 'STORNO_REFUND_REFERENCE_REQUIRED', // Karten-Rueckzahlung ohne refundOf einer Kartenzahlung
63
- 'STORNO_REFUND_REFERENCE_UNKNOWN', // refundOf nennt keine Zahlung des Originals
64
- 'STORNO_OUTCOME_UNKNOWN', // Ausgang offen: Storno-Beleg evtl. schon signiert, nicht wiederholen
65
- ];
46
+ export const CANCELLATION_ERROR_CODES = Object.freeze([
47
+ 'receipt_not_found', // Original fehlt oder gehoert nicht zu dieser Kasse
48
+ 'receipt_type_not_cancellable', // Original ist selbst Storno-, Null- oder Startbeleg
49
+ 'training_receipt', // Trainingsbelege werden nicht storniert
50
+ 'already_cancelled', // keine Restmenge mehr
51
+ 'invalid_line', // Index unbekannt oder doppelt
52
+ 'quantity_exceeds_remaining', // Menge nicht ganzzahlig >= 1 oder groesser als der Rest
53
+ 'unknown_reason', // reason fehlt oder nicht im Katalog
54
+ 'note_too_long', // note laenger als 200 Zeichen
55
+ 'invalid_items', // items ist keine Liste
56
+ 'cashregister_not_assigned', // Kassen-Benutzer darf diese Kasse nicht
57
+ 'not_permitted', // Kassen-Benutzer ohne Storno-Recht
58
+ 'own_receipts_only', // Recht "eigene", fremder Beleg
59
+ 'cashregister_incomplete', // api_key/token fehlen am Konto bzw. an der Kasse
60
+ 'cancellation_failed', // der Storno-Beleg selbst wurde abgelehnt (z. B. Signatur)
61
+ 'cancellation_payments_required', // Teilstorno eines Belegs mit mehreren Zahlungen ohne payments
62
+ 'cancellation_refund_exceeds_payment', // Rueckzahlungen auf eine Zahlung uebersteigen deren Rest
63
+ 'cancellation_refund_reference_required', // Karten-Rueckzahlung ohne refundOf einer Kartenzahlung
64
+ 'cancellation_refund_reference_unknown', // refundOf nennt keine Zahlung des Originals
65
+ 'cancellation_outcome_unknown', // Ausgang unklar: nachlesen, nie wiederholen
66
+ // Anmeldung und Rand (errorCodes.auth ohne Partner-Zugang, errorCodes.edge)
67
+ 'account_not_found',
68
+ 'admin_required',
69
+ 'cashregister_not_found',
70
+ 'cashregister_token_invalid',
71
+ 'cashregister_token_missing',
72
+ 'dialect_mismatch',
73
+ 'internal_translation_error',
74
+ 'live_not_enabled',
75
+ 'method_not_allowed',
76
+ 'mfa_required',
77
+ 'not_found',
78
+ 'register_user_no_business',
79
+ 'register_user_not_allowed',
80
+ 'register_user_not_found',
81
+ 'response_translation_failed',
82
+ 'session_expired',
83
+ 'session_other_cashregister',
84
+ 'unauthorized',
85
+ 'user_disabled',
86
+ 'user_verification_failed',
87
+ 'validation',
88
+ // Codes des Pakets (CLIENT_ERROR_CODES)
89
+ 'route_missing',
90
+ 'response_unreadable',
91
+ ]);
66
92
  export function isCancellationErrorCode(value) {
67
93
  return typeof value === 'string' && CANCELLATION_ERROR_CODES.includes(value);
68
94
  }
95
+ const CANCELLATION_BEKANNT = new Set(CANCELLATION_ERROR_CODES);
96
+ /** Der Code eines geworfenen Fehlers, wenn er in [CANCELLATION_ERROR_CODES] steht; sonst `undefined`. */
97
+ export function cancellationErrorCode(error) {
98
+ return bekannterCode(error, CANCELLATION_BEKANNT);
99
+ }
100
+ /**
101
+ * Kurzform fuer `catch (e) { if (isCancellationError(e, 'already_cancelled')) … }`.
102
+ * Ohne `code`: traegt der Fehler ueberhaupt einen Code aus [CANCELLATION_ERROR_CODES]?
103
+ */
104
+ export function isCancellationError(error, code) {
105
+ const gefunden = cancellationErrorCode(error);
106
+ return gefunden !== undefined && (code === undefined || gefunden === code);
107
+ }
108
+ /** Stornostand eines Belegs in der Belegliste (Katalog `STORNO_STAND`). */
109
+ export const CANCELLATION_STATUSES = Object.freeze(['none', 'partial', 'full']);
69
110
  /** Ab wann eine liegengebliebene Reservierung nicht mehr zaehlt (wie im Backend). */
70
111
  export const CANCELLATION_RESERVATION_MS = 120_000;
71
112
  /**
@@ -86,3 +127,7 @@ export function remainingQuantities(receipt, nowMs = Date.now()) {
86
127
  }
87
128
  return rest;
88
129
  }
130
+ /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
131
+ export function cancellationFieldErrors(error) {
132
+ return feldfehlerVon(error);
133
+ }
@@ -51,13 +51,13 @@ export interface HobexReceiptPayload {
51
51
  tip: number;
52
52
  cvm: string | number;
53
53
  }
54
- export declare function toHobexReceiptPayload(beleg: HobexReceipt): HobexReceiptPayload;
54
+ export declare function toHobexReceiptPayload(receipt: HobexReceipt): HobexReceiptPayload;
55
55
  export declare function fromHobexReceiptPayload(payload: HobexReceiptPayload): HobexReceipt;
56
56
  /**
57
57
  * Wandelt den Beleg in die `cardPaymentData`-Map, die auf dem Kasseneck-Beleg
58
58
  * landet (siehe [Receipt.cardPaymentData]). Bei HPS-Zahlungen kommen weitere
59
59
  * Felder dazu, die nur das lokale Terminal liefert.
60
60
  */
61
- export declare function hobexReceiptToCardPaymentData(beleg: HobexReceipt): Record<string, string>;
61
+ export declare function hobexReceiptToCardPaymentData(receipt: HobexReceipt): Record<string, string>;
62
62
  /** Kartenzahlung erfordert eine Unterschrift (CVM-Code `"1"`). */
63
- export declare function hobexReceiptNeedsSignature(beleg: HobexReceipt): boolean;
63
+ export declare function hobexReceiptNeedsSignature(receipt: HobexReceipt): boolean;
@@ -1,24 +1,24 @@
1
1
  import { CreditCardProvider } from '../enums/index.js';
2
2
  import { centsToEuro, euroToCents } from '../money.js';
3
- export function toHobexReceiptPayload(beleg) {
3
+ export function toHobexReceiptPayload(receipt) {
4
4
  return {
5
- transactionId: beleg.transactionId,
6
- tid: beleg.tid,
7
- receipt: beleg.receipt,
8
- approvalCode: beleg.approvalCode,
9
- reference: beleg.reference ?? null,
10
- transactionDate: beleg.transactionDate,
11
- cardNumber: beleg.cardNumber,
12
- cardExpiry: beleg.cardExpiry,
13
- brand: beleg.brand,
14
- cardIssuer: beleg.cardIssuer,
15
- responseCode: beleg.responseCode,
16
- transactionType: beleg.transactionType,
17
- currency: beleg.currency,
5
+ transactionId: receipt.transactionId,
6
+ tid: receipt.tid,
7
+ receipt: receipt.receipt,
8
+ approvalCode: receipt.approvalCode,
9
+ reference: receipt.reference ?? null,
10
+ transactionDate: receipt.transactionDate,
11
+ cardNumber: receipt.cardNumber,
12
+ cardExpiry: receipt.cardExpiry,
13
+ brand: receipt.brand,
14
+ cardIssuer: receipt.cardIssuer,
15
+ responseCode: receipt.responseCode,
16
+ transactionType: receipt.transactionType,
17
+ currency: receipt.currency,
18
18
  // Euro-Umwandlung nur hier, an der Terminal-API-Grenze — siehe Kommentar oben.
19
- amount: centsToEuro(beleg.amountCents),
20
- tip: centsToEuro(beleg.tipCents),
21
- cvm: beleg.cvm,
19
+ amount: centsToEuro(receipt.amountCents),
20
+ tip: centsToEuro(receipt.tipCents),
21
+ cvm: receipt.cvm,
22
22
  };
23
23
  }
24
24
  export function fromHobexReceiptPayload(payload) {
@@ -60,28 +60,28 @@ export function fromHobexReceiptPayload(payload) {
60
60
  * landet (siehe [Receipt.cardPaymentData]). Bei HPS-Zahlungen kommen weitere
61
61
  * Felder dazu, die nur das lokale Terminal liefert.
62
62
  */
63
- export function hobexReceiptToCardPaymentData(beleg) {
63
+ export function hobexReceiptToCardPaymentData(receipt) {
64
64
  const data = {
65
- transactionId: beleg.transactionId,
66
- date: beleg.transactionDate,
67
- tid: beleg.tid,
68
- no: beleg.receipt,
69
- type: beleg.transactionType,
70
- cardBrand: beleg.brand,
71
- cardNumber: beleg.cardNumber,
72
- responseCode: beleg.responseCode,
73
- cvm: beleg.cvm,
65
+ transactionId: receipt.transactionId,
66
+ date: receipt.transactionDate,
67
+ tid: receipt.tid,
68
+ no: receipt.receipt,
69
+ type: receipt.transactionType,
70
+ cardBrand: receipt.brand,
71
+ cardNumber: receipt.cardNumber,
72
+ responseCode: receipt.responseCode,
73
+ cvm: receipt.cvm,
74
74
  };
75
- if (beleg.creditCardProvider === CreditCardProvider.hobexHps) {
76
- data.approvalCode = beleg.approvalCode;
77
- data.cardExpiry = beleg.cardExpiry;
78
- data.cardIssuer = beleg.cardIssuer;
79
- data.amount = centsToEuro(beleg.amountCents).toFixed(2);
80
- data.currency = beleg.currency;
75
+ if (receipt.creditCardProvider === CreditCardProvider.hobexHps) {
76
+ data.approvalCode = receipt.approvalCode;
77
+ data.cardExpiry = receipt.cardExpiry;
78
+ data.cardIssuer = receipt.cardIssuer;
79
+ data.amount = centsToEuro(receipt.amountCents).toFixed(2);
80
+ data.currency = receipt.currency;
81
81
  }
82
82
  return data;
83
83
  }
84
84
  /** Kartenzahlung erfordert eine Unterschrift (CVM-Code `"1"`). */
85
- export function hobexReceiptNeedsSignature(beleg) {
86
- return beleg.cvm === '1';
85
+ export function hobexReceiptNeedsSignature(receipt) {
86
+ return receipt.cvm === '1';
87
87
  }
@@ -1,13 +1,14 @@
1
1
  export { type ReceiptItem, type ReceiptItemPayload, type ReceiptItemPayloadRead, toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, receiptItemIsValid, negateReceiptItem, type TipRecipient, isTipItem, isDiscountItem, } from './receipt-item.js';
2
2
  export { type Voucher, type VoucherPayload, toVoucherPayload, fromVoucherPayload, voucherIsValid } from './voucher.js';
3
- export { type Receipt, type ReceiptPayload, type ReceiptPayloadRead, toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, } from './receipt.js';
4
- export { type CancellationOf, type CancellationItem, type Cancellation, type CancellationReason, type CancellationErrorCode, CANCELLATION_REASONS, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, remainingQuantities, } from './cancellation.js';
3
+ export { type Receipt, type RegistrationInfo, type ReceiptPayload, type ReceiptPayloadRead, toReceiptPayload, fromReceiptPayload, readRegistrationInfo, receiptSubSumCents, receiptSumCents, } from './receipt.js';
4
+ export { type CancellationOf, type CancellationItem, type Cancellation, type CancellationReason, type CancellationErrorCode, type CancellationStatus, CANCELLATION_REASONS, CANCELLATION_STATUSES, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, cancellationErrorCode, isCancellationError, cancellationFieldErrors, type CancellationFieldError, remainingQuantities, } from './cancellation.js';
5
5
  export { type ReceiptPayment, type ReceiptPaymentPayload, type ReceiptPaymentInput, fromReceiptPaymentPayload, toReceiptPaymentPayload, } from './receipt-payment.js';
6
- export { type PaymentErrorCode, PAYMENT_ERROR_CODES, isPaymentErrorCode } from './payment-errors.js';
7
- export { type ReceiptEmailErrorCode, RECEIPT_EMAIL_ERROR_CODES, isReceiptEmailErrorCode, } from './receipt-email.js';
6
+ export { type PaymentErrorCode, PAYMENT_ERROR_CODES, isPaymentErrorCode, paymentErrorCode, isPaymentError, paymentFieldErrors, type PaymentFieldError } from './payment-errors.js';
7
+ export { type ReceiptEmailErrorCode, type ReceiptEmailVia, RECEIPT_EMAIL_ERROR_CODES, RECEIPT_EMAIL_SEND_ERROR_CODES, type ReceiptEmailSendErrorCode, RECEIPT_EMAIL_VIAS, isReceiptEmailErrorCode, receiptEmailErrorCode, isReceiptEmailError, receiptEmailFieldErrors, type ReceiptEmailFieldError, } from './receipt-email.js';
8
+ export { type ReceiptErrorCode, type ReceiptFieldError, RECEIPT_ERROR_CODES, isReceiptErrorCode, receiptErrorCode, isReceiptError, receiptFieldErrors, } from './receipt-errors.js';
8
9
  export { type ReceiptCompany, type ReceiptCompanyPayload, fromReceiptCompanyPayload, receiptCompanyTaxInfo, } from './receipt-company.js';
9
10
  export { type Cashregister, type CashregisterOnboarding, type CashregisterPayload, type CashregisterOnboardingPayload, fromCashregisterPayload, } from './cashregister.js';
10
- export { type ReceiptSummary, type ReceiptSummaryPayload, fromReceiptSummaryPayload, type ZeroKind, ZERO_KINDS, istZeroKind } from './receipt-summary.js';
11
+ export { type ReceiptSummary, type ReceiptSummaryPayload, fromReceiptSummaryPayload, type ZeroKind, ZERO_KINDS, isZeroKind } from './receipt-summary.js';
11
12
  export { type ReportMonth, reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, } from './report-month.js';
12
13
  export { type StripeUrlSession, type StripeUrlSessionPayload, toStripeUrlSessionPayload, fromStripeUrlSessionPayload, } from './stripe-url-session.js';
13
14
  export { type HobexReceipt, type HobexReceiptPayload, toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './hobex-receipt.js';
@@ -1,13 +1,14 @@
1
1
  export { toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, receiptItemIsValid, negateReceiptItem, isTipItem, isDiscountItem, } from './receipt-item.js';
2
2
  export { toVoucherPayload, fromVoucherPayload, voucherIsValid } from './voucher.js';
3
- export { toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, } from './receipt.js';
4
- export { CANCELLATION_REASONS, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, remainingQuantities, } from './cancellation.js';
3
+ export { toReceiptPayload, fromReceiptPayload, readRegistrationInfo, receiptSubSumCents, receiptSumCents, } from './receipt.js';
4
+ export { CANCELLATION_REASONS, CANCELLATION_STATUSES, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, cancellationErrorCode, isCancellationError, cancellationFieldErrors, remainingQuantities, } from './cancellation.js';
5
5
  export { fromReceiptPaymentPayload, toReceiptPaymentPayload, } from './receipt-payment.js';
6
- export { PAYMENT_ERROR_CODES, isPaymentErrorCode } from './payment-errors.js';
7
- export { RECEIPT_EMAIL_ERROR_CODES, isReceiptEmailErrorCode, } from './receipt-email.js';
6
+ export { PAYMENT_ERROR_CODES, isPaymentErrorCode, paymentErrorCode, isPaymentError, paymentFieldErrors } from './payment-errors.js';
7
+ export { RECEIPT_EMAIL_ERROR_CODES, RECEIPT_EMAIL_SEND_ERROR_CODES, RECEIPT_EMAIL_VIAS, isReceiptEmailErrorCode, receiptEmailErrorCode, isReceiptEmailError, receiptEmailFieldErrors, } from './receipt-email.js';
8
+ export { RECEIPT_ERROR_CODES, isReceiptErrorCode, receiptErrorCode, isReceiptError, receiptFieldErrors, } from './receipt-errors.js';
8
9
  export { fromReceiptCompanyPayload, receiptCompanyTaxInfo, } from './receipt-company.js';
9
10
  export { fromCashregisterPayload, } from './cashregister.js';
10
- export { fromReceiptSummaryPayload, ZERO_KINDS, istZeroKind } from './receipt-summary.js';
11
+ export { fromReceiptSummaryPayload, ZERO_KINDS, isZeroKind } from './receipt-summary.js';
11
12
  export { reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, } from './report-month.js';
12
13
  export { toStripeUrlSessionPayload, fromStripeUrlSessionPayload, } from './stripe-url-session.js';
13
14
  export { toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './hobex-receipt.js';
@@ -1,22 +1,39 @@
1
+ import { KasseneckApiError } from '../client/errors.js';
1
2
  /**
2
- * Mehrere Zahlungen je Beleg — Fehlercode-Katalog, Zwilling von
3
- * `functions/gemeinsam/zahlungen-core.js` ZAHLUNGS_FEHLERCODES (gleiche
4
- * Codes, gleiche Reihenfolge).
3
+ * Mehrere Zahlungen je Beleg: Fehlercodes unter `/v3` (Vokabular
4
+ * `errorCodes.payments`, gleiche Codes, gleiche Reihenfolge).
5
5
  *
6
6
  * `createReceipt` und `cancelReceipt` legen sie bei jedem Fehler rund um
7
- * `payments` (und bei den Aufrufer-Vorbedingungen wie `PAYMENTS_CONFLICT`)
8
- * als `code` neben die Meldung; das Paket reicht sie als
9
- * [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text** — die
7
+ * `payments` als `code` neben die Meldung; das Paket reicht sie als
8
+ * [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text:** die
10
9
  * deutsche Meldung darf sich aendern, der Code nicht.
11
10
  *
12
- * Schreibweise: auf `/v1`, `/v2` und intern kommen die Codes gross
13
- * (`PAYMENTS_SUM_MISMATCH`), unter `/v3` schreibt der Rand des Backends sie
14
- * klein (`payments_sum_mismatch`, functions/gemeinsam/api-vokabular-v3.js:
15
- * jeder dieser Codes 1:1 in Kleinschreibung, anders als die Storno-Codes).
16
- * [isPaymentErrorCode] erkennt beide; wer selbst vergleicht, vergleicht
17
- * `code.toUpperCase()`.
11
+ * `payments_sum_mismatch` traegt den Zahlbetrag des Servers in
12
+ * `details.expectedCents` (siehe [paymentsExpectedCents]). Der Fehler
13
+ * verbraucht keine Belegnummer; das Paket wiederholt trotzdem nie selbst,
14
+ * denn eine Kartenzahlung ist schon belastet.
15
+ *
16
+ * Dahinter (ab 1.0) die Codes, die Anmeldung und Rand auf diesem Endpunkt
17
+ * erzeugen koennen: `errorCodes.auth` ohne die sieben des Partner-Zugangs und
18
+ * `errorCodes.edge` (`not_found`, `dialect_mismatch`, `response_translation_failed`
19
+ * ...) und zuletzt `route_missing` (Code des Pakets). Ein Code ausserhalb
20
+ * bleibt ueber `KasseneckApiError.code` lesbar.
18
21
  */
19
- export declare const PAYMENT_ERROR_CODES: readonly ["PAYMENTS_INVALID", "PAYMENT_METHOD_INVALID", "PAYMENT_AMOUNT_INVALID", "PAYMENT_TENDERED_INVALID", "PAYMENT_PROVIDER_INVALID", "PAYMENT_PROVIDER_NOT_ALLOWED", "PAYMENTS_SUM_MISMATCH", "PAYMENTS_DUE_NEGATIVE", "PAYMENTS_NOT_ALLOWED", "PAYMENTS_CONFLICT", "PAYMENTS_REQUIRED", "PAYMENT_METHOD_NOT_SUPPORTED", "TIP_PAYMENT_METHOD_INVALID", "TIP_PAYMENT_METHOD_REQUIRED", "TIP_EXCEEDS_PAYMENT", "PAYMENT_REFUND_NOT_ALLOWED", "PAYMENT_TIP_INVALID", "TIP_CONFLICT"];
22
+ export declare const PAYMENT_ERROR_CODES: readonly ["payments_invalid", "payment_method_invalid", "payment_amount_invalid", "payment_tendered_invalid", "payment_provider_invalid", "payment_provider_not_allowed", "payments_sum_mismatch", "payments_due_negative", "payments_not_allowed", "payments_conflict", "payments_required", "payment_method_not_supported", "tip_payment_method_invalid", "tip_payment_method_required", "tip_exceeds_payment", "payment_refund_not_allowed", "payment_tip_invalid", "tip_conflict", "account_not_found", "admin_required", "cashregister_not_assigned", "cashregister_not_found", "cashregister_token_invalid", "cashregister_token_missing", "dialect_mismatch", "internal_translation_error", "live_not_enabled", "method_not_allowed", "mfa_required", "not_found", "register_user_no_business", "register_user_not_allowed", "register_user_not_found", "response_translation_failed", "session_expired", "session_other_cashregister", "unauthorized", "user_disabled", "user_verification_failed", "validation", "route_missing"];
20
23
  export type PaymentErrorCode = (typeof PAYMENT_ERROR_CODES)[number];
21
- /** Erkennt einen Code aus [PAYMENT_ERROR_CODES] — gross (`/v1`) wie klein (`/v3`). */
22
- export declare function isPaymentErrorCode(value: unknown): value is PaymentErrorCode | Lowercase<PaymentErrorCode>;
24
+ /** Erkennt einen Code aus [PAYMENT_ERROR_CODES], exakt (klein, wie unter `/v3`). */
25
+ export declare function isPaymentErrorCode(value: unknown): value is PaymentErrorCode;
26
+ /** Der Code eines geworfenen Fehlers, wenn er in [PAYMENT_ERROR_CODES] steht; sonst `undefined`. */
27
+ export declare function paymentErrorCode(error: unknown): PaymentErrorCode | undefined;
28
+ /**
29
+ * Kurzform fuer `catch (e) { if (isPaymentError(e, 'payments_sum_mismatch')) … }`.
30
+ * Ohne `code`: traegt der Fehler ueberhaupt einen Code aus [PAYMENT_ERROR_CODES]?
31
+ */
32
+ export declare function isPaymentError(error: unknown, code?: PaymentErrorCode): error is KasseneckApiError;
33
+ /** Ein Feldfehler aus `data.errors[]` einer `validation`-Antwort von `payments[]`. */
34
+ export interface PaymentFieldError {
35
+ field: string;
36
+ message: string;
37
+ }
38
+ /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
39
+ export declare function paymentFieldErrors(error: unknown): PaymentFieldError[];
@@ -1,42 +1,87 @@
1
+ import { bekannterCode, feldfehlerVon } from '../client/fehlercodes.js';
1
2
  /**
2
- * Mehrere Zahlungen je Beleg — Fehlercode-Katalog, Zwilling von
3
- * `functions/gemeinsam/zahlungen-core.js` ZAHLUNGS_FEHLERCODES (gleiche
4
- * Codes, gleiche Reihenfolge).
3
+ * Mehrere Zahlungen je Beleg: Fehlercodes unter `/v3` (Vokabular
4
+ * `errorCodes.payments`, gleiche Codes, gleiche Reihenfolge).
5
5
  *
6
6
  * `createReceipt` und `cancelReceipt` legen sie bei jedem Fehler rund um
7
- * `payments` (und bei den Aufrufer-Vorbedingungen wie `PAYMENTS_CONFLICT`)
8
- * als `code` neben die Meldung; das Paket reicht sie als
9
- * [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text** — die
7
+ * `payments` als `code` neben die Meldung; das Paket reicht sie als
8
+ * [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text:** die
10
9
  * deutsche Meldung darf sich aendern, der Code nicht.
11
10
  *
12
- * Schreibweise: auf `/v1`, `/v2` und intern kommen die Codes gross
13
- * (`PAYMENTS_SUM_MISMATCH`), unter `/v3` schreibt der Rand des Backends sie
14
- * klein (`payments_sum_mismatch`, functions/gemeinsam/api-vokabular-v3.js:
15
- * jeder dieser Codes 1:1 in Kleinschreibung, anders als die Storno-Codes).
16
- * [isPaymentErrorCode] erkennt beide; wer selbst vergleicht, vergleicht
17
- * `code.toUpperCase()`.
11
+ * `payments_sum_mismatch` traegt den Zahlbetrag des Servers in
12
+ * `details.expectedCents` (siehe [paymentsExpectedCents]). Der Fehler
13
+ * verbraucht keine Belegnummer; das Paket wiederholt trotzdem nie selbst,
14
+ * denn eine Kartenzahlung ist schon belastet.
15
+ *
16
+ * Dahinter (ab 1.0) die Codes, die Anmeldung und Rand auf diesem Endpunkt
17
+ * erzeugen koennen: `errorCodes.auth` ohne die sieben des Partner-Zugangs und
18
+ * `errorCodes.edge` (`not_found`, `dialect_mismatch`, `response_translation_failed`
19
+ * ...) und zuletzt `route_missing` (Code des Pakets). Ein Code ausserhalb
20
+ * bleibt ueber `KasseneckApiError.code` lesbar.
18
21
  */
19
22
  export const PAYMENT_ERROR_CODES = Object.freeze([
20
- 'PAYMENTS_INVALID', // payments ist keine Liste oder hat mehr als 20 Eintraege
21
- 'PAYMENT_METHOD_INVALID', // Zahlart unbekannt oder mixed
22
- 'PAYMENT_AMOUNT_INVALID', // amountCents keine Ganzzahl, 0 oder falsches Vorzeichen
23
- 'PAYMENT_TENDERED_INVALID', // tenderedCents an Nicht-Bar-Zahlung, zu klein oder am Storno
24
- 'PAYMENT_PROVIDER_INVALID', // Karte ohne/mit unbekanntem provider, providerPaymentId fehlt
25
- 'PAYMENT_PROVIDER_NOT_ALLOWED', // Anbieterfelder an einer Zahlung, die weder Karte noch online ist
26
- 'PAYMENTS_SUM_MISMATCH', // Summe != Zahlbetrag (Antwort nennt data.expectedCents)
27
- 'PAYMENTS_DUE_NEGATIVE', // Zahlbetrag < 0 (Wertgutschein groesser als der Beleg)
28
- 'PAYMENTS_NOT_ALLOWED', // Null-/Startbeleg mit Zahlungen, alter Storno-Weg
29
- 'PAYMENTS_CONFLICT', // payments zusammen mit paymentMethod oder Kartenfeldern
30
- 'PAYMENTS_REQUIRED', // /v3 ohne payments
31
- 'PAYMENT_METHOD_NOT_SUPPORTED', // paymentMethod/Kartenfelder unter /v3
32
- 'TIP_PAYMENT_METHOD_INVALID', // Trinkgeld-Zahlart kommt in payments nicht vor
33
- 'TIP_PAYMENT_METHOD_REQUIRED', // mehrere Zahlarten, tip.paymentMethod fehlt
34
- 'TIP_EXCEEDS_PAYMENT', // Trinkgeld uebersteigt die Zahlungen seiner Zahlart
35
- 'PAYMENT_REFUND_NOT_ALLOWED', // refundOf ausserhalb eines Stornos oder kein String
36
- 'PAYMENT_TIP_INVALID', // tipCents keine Ganzzahl, <= 0, > amountCents oder nicht am Verkauf
37
- 'TIP_CONFLICT', // tip und payments[].tipCents zugleich
23
+ 'payments_invalid', // payments ist keine Liste oder hat mehr als 20 Eintraege
24
+ 'payment_method_invalid', // Zahlart unbekannt oder mixed
25
+ 'payment_amount_invalid', // amountCents keine Ganzzahl, 0 oder falsches Vorzeichen
26
+ 'payment_tendered_invalid', // tenderedCents an Nicht-Bar-Zahlung, zu klein oder am Storno
27
+ 'payment_provider_invalid', // Karte ohne/mit unbekanntem provider, providerPaymentId fehlt
28
+ 'payment_provider_not_allowed', // Anbieterfelder an einer Zahlung, die weder Karte noch online ist
29
+ 'payments_sum_mismatch', // Summe != Zahlbetrag (details.expectedCents)
30
+ 'payments_due_negative', // Zahlbetrag < 0 (Wertgutschein groesser als der Beleg)
31
+ 'payments_not_allowed', // Null-/Startbeleg mit Zahlungen
32
+ 'payments_conflict', // payments zusammen mit paymentMethod oder Kartenfeldern
33
+ 'payments_required', // ohne payments
34
+ 'payment_method_not_supported', // paymentMethod/Kartenfelder am Beleg
35
+ 'tip_payment_method_invalid', // Trinkgeld-Zahlart kommt in payments nicht vor
36
+ 'tip_payment_method_required', // mehrere Zahlarten, tip.paymentMethod fehlt
37
+ 'tip_exceeds_payment', // Trinkgeld uebersteigt die Zahlungen seiner Zahlart
38
+ 'payment_refund_not_allowed', // refundOf ausserhalb eines Stornos oder kein String
39
+ 'payment_tip_invalid', // tipCents keine Ganzzahl, <= 0, > amountCents oder nicht am Verkauf
40
+ 'tip_conflict', // tip und payments[].tipCents zugleich
41
+ // Anmeldung und Rand (errorCodes.auth ohne Partner-Zugang, errorCodes.edge)
42
+ 'account_not_found',
43
+ 'admin_required',
44
+ 'cashregister_not_assigned',
45
+ 'cashregister_not_found',
46
+ 'cashregister_token_invalid',
47
+ 'cashregister_token_missing',
48
+ 'dialect_mismatch',
49
+ 'internal_translation_error',
50
+ 'live_not_enabled',
51
+ 'method_not_allowed',
52
+ 'mfa_required',
53
+ 'not_found',
54
+ 'register_user_no_business',
55
+ 'register_user_not_allowed',
56
+ 'register_user_not_found',
57
+ 'response_translation_failed',
58
+ 'session_expired',
59
+ 'session_other_cashregister',
60
+ 'unauthorized',
61
+ 'user_disabled',
62
+ 'user_verification_failed',
63
+ 'validation',
64
+ // Code des Pakets (CLIENT_ERROR_CODES; response_unreadable nur an signierenden Aufrufen)
65
+ 'route_missing',
38
66
  ]);
39
- /** Erkennt einen Code aus [PAYMENT_ERROR_CODES] — gross (`/v1`) wie klein (`/v3`). */
67
+ /** Erkennt einen Code aus [PAYMENT_ERROR_CODES], exakt (klein, wie unter `/v3`). */
40
68
  export function isPaymentErrorCode(value) {
41
- return typeof value === 'string' && PAYMENT_ERROR_CODES.includes(value.toUpperCase());
69
+ return typeof value === 'string' && PAYMENT_ERROR_CODES.includes(value);
70
+ }
71
+ const PAYMENT_BEKANNT = new Set(PAYMENT_ERROR_CODES);
72
+ /** Der Code eines geworfenen Fehlers, wenn er in [PAYMENT_ERROR_CODES] steht; sonst `undefined`. */
73
+ export function paymentErrorCode(error) {
74
+ return bekannterCode(error, PAYMENT_BEKANNT);
75
+ }
76
+ /**
77
+ * Kurzform fuer `catch (e) { if (isPaymentError(e, 'payments_sum_mismatch')) … }`.
78
+ * Ohne `code`: traegt der Fehler ueberhaupt einen Code aus [PAYMENT_ERROR_CODES]?
79
+ */
80
+ export function isPaymentError(error, code) {
81
+ const gefunden = paymentErrorCode(error);
82
+ return gefunden !== undefined && (code === undefined || gefunden === code);
83
+ }
84
+ /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
85
+ export function paymentFieldErrors(error) {
86
+ return feldfehlerVon(error);
42
87
  }
@@ -4,7 +4,8 @@
4
4
  * (`toMetadataJson`/`fromMetadata`).
5
5
  *
6
6
  * Das Backend liefert sie **neben** dem Beleg: `getReceipt` und `createReceipt`
7
- * legen Firma, Anschrift, Steuernummer, UID, Fusszeilen, Logo-Adresse und das
7
+ * legen Firma, Anschrift, Steuernummer (`taxNumber`), UID (`vatId`),
8
+ * Fusszeilen, Logo-Adresse und das
8
9
  * Kleinunternehmer-Kennzeichen direkt in die Antwort (functions/index.js).
9
10
  * Zum RKSV-Kernbeleg gehoeren sie nicht — sie betreffen ausschliesslich die
10
11
  * Darstellung. Deshalb stehen sie hier als eigenes Modell und nicht in
@@ -23,9 +24,9 @@ export interface ReceiptCompany {
23
24
  city: string;
24
25
  phone: string;
25
26
  /** UID (Umsatzsteuer-Identifikationsnummer); fehlt bei Kleinunternehmern. */
26
- uid?: string;
27
+ vatId?: string;
27
28
  /** Steuernummer des Finanzamts. */
28
- taxnr: string;
29
+ taxNumber: string;
29
30
  /** Kleinunternehmer nach § 6 Abs 1 Z 27 UStG (keine USt im Ausweis). */
30
31
  isSmallBusiness: boolean;
31
32
  footer1: string;
@@ -51,8 +52,8 @@ export interface ReceiptCompanyPayload {
51
52
  zip?: string | null;
52
53
  city?: string | null;
53
54
  phone?: string | null;
54
- uid?: string | null;
55
- taxnr?: string | null;
55
+ vatId?: string | null;
56
+ taxNumber?: string | null;
56
57
  is_small_business?: boolean | null;
57
58
  footer1?: string | null;
58
59
  footer2?: string | null;
@@ -20,7 +20,7 @@ export function fromReceiptCompanyPayload(payload) {
20
20
  zip: text(payload.zip),
21
21
  city: text(payload.city),
22
22
  phone: text(payload.phone),
23
- taxnr: text(payload.taxnr),
23
+ taxNumber: text(payload.taxNumber),
24
24
  isSmallBusiness: payload.is_small_business === true,
25
25
  footer1: text(payload.footer1),
26
26
  footer2: text(payload.footer2),
@@ -29,8 +29,8 @@ export function fromReceiptCompanyPayload(payload) {
29
29
  };
30
30
  // Die vier Kann-Felder bleiben weg, wenn sie leer sind — ein leerer String
31
31
  // in `footer3` erzeugte sonst eine leere Zeile auf dem Beleg.
32
- if (payload.uid)
33
- firma.uid = payload.uid;
32
+ if (payload.vatId)
33
+ firma.vatId = payload.vatId;
34
34
  if (payload.footer3)
35
35
  firma.footer3 = payload.footer3;
36
36
  if (payload.footer4)
@@ -44,5 +44,5 @@ export function fromReceiptCompanyPayload(payload) {
44
44
  * wenn es eine gibt, sonst die Steuernummer.
45
45
  */
46
46
  export function receiptCompanyTaxInfo(company) {
47
- return company.uid !== undefined && company.uid.length > 0 ? company.uid : company.taxnr;
47
+ return company.vatId !== undefined && company.vatId.length > 0 ? company.vatId : company.taxNumber;
48
48
  }
@@ -1,22 +1,36 @@
1
+ import { KasseneckApiError } from '../client/errors.js';
2
+ /** Die Codes des Versands selbst (`errorCodes.receiptEmail`); jeder hat einen Satz im Textkatalog. */
3
+ export declare const RECEIPT_EMAIL_SEND_ERROR_CODES: readonly ["invalid_address", "receipt_not_found", "too_many_requests", "send_failed"];
4
+ export type ReceiptEmailSendErrorCode = (typeof RECEIPT_EMAIL_SEND_ERROR_CODES)[number];
1
5
  /**
2
- * Beleg per E-Mail — Zwilling von `functions/beleg-mail-core.js`.
3
- *
4
- * Hier steht nur der Fehlercode-Katalog: der Aufruf selbst ist
5
- * [sendReceiptEmail] (client/receipts.ts), und was verschickt wird, ist ein
6
- * **Link auf die oeffentliche Belegseite** — der Beleg selbst bleibt
7
- * unberuehrt (BAO §131/RKSV), das Versandprotokoll fuehrt das Backend in einer
8
- * Unter-Sammlung neben ihm.
6
+ * Fehlercodes von `sendReceiptEmail` unter `/v3`: die Versandcodes
7
+ * ([RECEIPT_EMAIL_SEND_ERROR_CODES]) und dahinter (ab 1.0) die Codes, die
8
+ * Anmeldung und Rand auf diesem Endpunkt erzeugen koennen: `errorCodes.auth`
9
+ * ohne die sieben des Partner-Zugangs und `errorCodes.edge` (`not_found`,
10
+ * `dialect_mismatch`, `response_translation_failed` ...). Das Paket reicht sie
11
+ * als [KasseneckApiError.code] durch; ein Code ausserhalb bleibt dort lesbar.
12
+ * Zuletzt `route_missing` (Code des Pakets).
9
13
  */
10
- /**
11
- * Stabile Fehlercodes von `sendReceiptEmail` — Zwilling von
12
- * `beleg-mail-core.js` FEHLERCODES. Das Backend legt sie bei jedem fachlichen
13
- * Fehler als `code` neben die Meldung; das Paket reicht sie als
14
- * [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text** — die
15
- * deutsche Meldung darf sich aendern, der Code nicht.
16
- *
17
- * Nur Auth-/Parameterfehler (Sitzung abgelaufen, Pflichtfeld fehlt) kommen
18
- * ohne Code; dort bleibt `code` undefined.
19
- */
20
- export declare const RECEIPT_EMAIL_ERROR_CODES: readonly ["adresse_ungueltig", "beleg_nicht_gefunden", "zu_oft", "versand_fehlgeschlagen"];
14
+ export declare const RECEIPT_EMAIL_ERROR_CODES: readonly ["invalid_address", "receipt_not_found", "too_many_requests", "send_failed", "account_not_found", "admin_required", "cashregister_not_assigned", "cashregister_not_found", "cashregister_token_invalid", "cashregister_token_missing", "dialect_mismatch", "internal_translation_error", "live_not_enabled", "method_not_allowed", "mfa_required", "not_found", "register_user_no_business", "register_user_not_allowed", "register_user_not_found", "response_translation_failed", "session_expired", "session_other_cashregister", "unauthorized", "user_disabled", "user_verification_failed", "validation", "route_missing"];
21
15
  export type ReceiptEmailErrorCode = (typeof RECEIPT_EMAIL_ERROR_CODES)[number];
22
16
  export declare function isReceiptEmailErrorCode(value: unknown): value is ReceiptEmailErrorCode;
17
+ /** Der Code eines geworfenen Fehlers, wenn er in [RECEIPT_EMAIL_ERROR_CODES] steht; sonst `undefined`. */
18
+ export declare function receiptEmailErrorCode(error: unknown): ReceiptEmailErrorCode | undefined;
19
+ /**
20
+ * Kurzform fuer `catch (e) { if (isReceiptEmailError(e, 'too_many_requests')) … }`.
21
+ * Ohne `code`: traegt der Fehler ueberhaupt einen Code aus [RECEIPT_EMAIL_ERROR_CODES]?
22
+ */
23
+ export declare function isReceiptEmailError(error: unknown, code?: ReceiptEmailErrorCode): error is KasseneckApiError;
24
+ /**
25
+ * Versandweg der Belegmail (Katalog `MAILWEG`): Postfach des Betriebs,
26
+ * Plattform, oder Plattform als Rueckfall, weil das eigene Postfach scheiterte.
27
+ */
28
+ export declare const RECEIPT_EMAIL_VIAS: readonly ["own", "platform", "platform_fallback"];
29
+ export type ReceiptEmailVia = (typeof RECEIPT_EMAIL_VIAS)[number];
30
+ /** Ein Feldfehler aus `data.errors[]` einer `validation`-Antwort von `sendReceiptEmail`. */
31
+ export interface ReceiptEmailFieldError {
32
+ field: string;
33
+ message: string;
34
+ }
35
+ /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
36
+ export declare function receiptEmailFieldErrors(error: unknown): ReceiptEmailFieldError[];