@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
@@ -11,7 +11,7 @@
11
11
  * PLZ, Gericht) macht das Backend mit `@kreiseck/validator` — sie hier zu
12
12
  * wiederholen hiesse, zwei Wahrheiten zu haben, von denen eine veraltet.
13
13
  * Ein Formfehler kommt als `KasseneckApiError` mit `code:"validation"` zurueck;
14
- * `partnerFeldFehler(fehler)` macht `data.errors[]` daraus. **Es entsteht dabei
14
+ * `partnerFieldErrors(fehler)` macht `data.errors[]` daraus. **Es entsteht dabei
15
15
  * nichts** — der Aufruf ist folgenlos wiederholbar.
16
16
  *
17
17
  * Nach dem Senden wird nichts hart gecastet: fehlt ein zugesagtes Feld, wirft
@@ -86,8 +86,8 @@ function pflicht(wert, vorgang, feld) {
86
86
  * Der guenstigste Selbsttest beim Hochfahren: er beweist Schluessel, Umgebung
87
87
  * und Rechte in einem Aufruf.
88
88
  */
89
- export async function getPartnerInfo(rufen) {
90
- const daten = objekt(await rufen('getPartnerInfo'));
89
+ export async function getPartnerInfo(transport) {
90
+ const daten = objekt(await transport('getPartnerInfo'));
91
91
  const partner = verlangt(daten['partner'], 'getPartnerInfo', 'partner');
92
92
  const key = objekt(daten['key']);
93
93
  return {
@@ -145,18 +145,18 @@ export async function getPartnerInfo(rufen) {
145
145
  * — auch dann, wenn der Rumpf inzwischen abweicht. Die eigene Kundennummer ist
146
146
  * der natuerliche Wert dafuer.
147
147
  */
148
- export async function createPartnerCustomer(rufen, optionen) {
149
- const appId = pflicht(optionen?.appId, 'createPartnerCustomer', 'appId');
150
- const betrieb = optionen?.business;
148
+ export async function createPartnerCustomer(transport, options) {
149
+ const appId = pflicht(options?.appId, 'createPartnerCustomer', 'appId');
150
+ const betrieb = options?.business;
151
151
  if (betrieb === null || typeof betrieb !== 'object') {
152
152
  throw new KasseneckValidationError('createPartnerCustomer', 'business fehlt', 'request');
153
153
  }
154
- const daten = objekt(await rufen('createPartnerCustomer', {
154
+ const daten = objekt(await transport('createPartnerCustomer', {
155
155
  appId,
156
156
  business: betrieb,
157
- idempotencyKey: optionen.idempotencyKey,
158
- access: optionen.access,
159
- env: optionen.env,
157
+ idempotencyKey: options.idempotencyKey,
158
+ access: options.access,
159
+ env: options.env,
160
160
  }));
161
161
  const customerId = textOderNull(daten['customerId']);
162
162
  if (!customerId) {
@@ -176,14 +176,14 @@ export async function createPartnerCustomer(rufen, optionen) {
176
176
  };
177
177
  }
178
178
  /** Betriebe dieses Partners, seitenweise. `cursor` aus der Antwort setzt fort. */
179
- export async function listPartnerCustomers(rufen, optionen = {}) {
180
- if (optionen.limit !== undefined && (!Number.isInteger(optionen.limit) || optionen.limit < 1 || optionen.limit > 200)) {
179
+ export async function listPartnerCustomers(transport, options = {}) {
180
+ if (options.limit !== undefined && (!Number.isInteger(options.limit) || options.limit < 1 || options.limit > 200)) {
181
181
  throw new KasseneckValidationError('listPartnerCustomers', 'limit muss zwischen 1 und 200 liegen', 'request');
182
182
  }
183
- const daten = objekt(await rufen('listPartnerCustomers', {
184
- status: optionen.status,
185
- limit: optionen.limit,
186
- cursor: optionen.cursor,
183
+ const daten = objekt(await transport('listPartnerCustomers', {
184
+ status: options.status,
185
+ limit: options.limit,
186
+ cursor: options.cursor,
187
187
  }));
188
188
  return {
189
189
  customers: liste(daten['customers']).map(kundenZeile),
@@ -233,9 +233,9 @@ function avvStand(wert) {
233
233
  return { ...v, mode: textOderNull(wert['mode']) };
234
234
  }
235
235
  /** Ein Betrieb mit allem, was der Partner ueber ihn sehen darf — nie Geheimnisse. */
236
- export async function getPartnerCustomer(rufen, customerId) {
236
+ export async function getPartnerCustomer(transport, customerId) {
237
237
  const id = pflicht(customerId, 'getPartnerCustomer', 'customerId');
238
- const daten = objekt(await rufen('getPartnerCustomer', { customerId: id }));
238
+ const daten = objekt(await transport('getPartnerCustomer', { customerId: id }));
239
239
  const k = verlangt(daten['customer'], 'getPartnerCustomer', 'customer');
240
240
  const fon = objekt(k['fon']);
241
241
  const zugang = k['access'];
@@ -280,16 +280,16 @@ export async function getPartnerCustomer(rufen, customerId) {
280
280
  * einem ganzen ausgefuellten Formular auf. Die Antwort sagt NUR ja oder nein —
281
281
  * nie, wem die Adresse gehoert.
282
282
  */
283
- export async function checkPartnerCustomerEmail(rufen, email) {
283
+ export async function checkPartnerCustomerEmail(transport, email) {
284
284
  const adresse = typeof email === 'string' ? email.trim() : '';
285
285
  if (!adresse)
286
286
  throw new KasseneckValidationError('checkPartnerCustomerEmail', 'email fehlt', 'request');
287
- const daten = objekt(await rufen('checkPartnerCustomerEmail', { email: adresse }));
287
+ const daten = objekt(await transport('checkPartnerCustomerEmail', { email: adresse }));
288
288
  return daten['available'] === true;
289
289
  }
290
- export async function sendPartnerCustomerFonLink(rufen, customerId) {
290
+ export async function sendPartnerCustomerFonLink(transport, customerId) {
291
291
  const id = pflicht(customerId, 'sendPartnerCustomerFonLink', 'customerId');
292
- const daten = objekt(await rufen('sendPartnerCustomerFonLink', { customerId: id }));
292
+ const daten = objekt(await transport('sendPartnerCustomerFonLink', { customerId: id }));
293
293
  return {
294
294
  customerId: text(daten['customerId'], id),
295
295
  sentTo: text(daten['sentTo']),
@@ -346,12 +346,12 @@ function antrag(eintrag) {
346
346
  * Abschluss kommt als Ereignis `signature.ready`, nicht als Antwort auf diesen
347
347
  * Aufruf.
348
348
  */
349
- export async function requestCustomerSignature(rufen, customerId, optionen = {}) {
349
+ export async function requestCustomerSignature(transport, customerId, options = {}) {
350
350
  const id = pflicht(customerId, 'requestCustomerSignature', 'customerId');
351
- const daten = objekt(await rufen('requestCustomerSignature', {
351
+ const daten = objekt(await transport('requestCustomerSignature', {
352
352
  customerId: id,
353
- kind: optionen.kind,
354
- additional: optionen.additional,
353
+ kind: options.kind,
354
+ additional: options.additional,
355
355
  }));
356
356
  return {
357
357
  request: antrag(verlangt(daten['request'], 'requestCustomerSignature', 'request')),
@@ -385,9 +385,9 @@ function signaturEinzeln(eintrag) {
385
385
  };
386
386
  }
387
387
  /** Stand der Signatur eines Betriebs samt aller Signaturen, Antraege und des FON-Zugangs. */
388
- export async function getCustomerSignatureStatus(rufen, customerId) {
388
+ export async function getCustomerSignatureStatus(transport, customerId) {
389
389
  const id = pflicht(customerId, 'getCustomerSignatureStatus', 'customerId');
390
- const daten = objekt(await rufen('getCustomerSignatureStatus', { customerId: id }));
390
+ const daten = objekt(await transport('getCustomerSignatureStatus', { customerId: id }));
391
391
  const signatur = objekt(daten['signature']);
392
392
  const fon = objekt(daten['fon']);
393
393
  return {
@@ -447,12 +447,12 @@ function kasse(eintrag) {
447
447
  * Hoechstens 20 Kassen je Betrieb (`cashregister_limit`); ohne gebuchtes Modul
448
448
  * `module_inactive`.
449
449
  */
450
- export async function createCustomerCashregister(rufen, optionen) {
451
- const id = pflicht(optionen?.customerId, 'createCustomerCashregister', 'customerId');
452
- const daten = objekt(await rufen('createCustomerCashregister', {
450
+ export async function createCustomerCashregister(transport, options) {
451
+ const id = pflicht(options?.customerId, 'createCustomerCashregister', 'customerId');
452
+ const daten = objekt(await transport('createCustomerCashregister', {
453
453
  customerId: id,
454
- automatic: optionen.automatic,
455
- signatureRequestId: optionen.signatureRequestId,
454
+ automatic: options.automatic,
455
+ signatureRequestId: options.signatureRequestId,
456
456
  }));
457
457
  const ib = objekt(daten['activation']);
458
458
  return {
@@ -476,19 +476,19 @@ export async function createCustomerCashregister(rufen, optionen) {
476
476
  * veraendernde Aufruf dieses Clients, der ohne Idempotenzschluessel gefahrlos
477
477
  * wiederholbar ist — weil der Server ihn so gebaut hat.
478
478
  */
479
- export async function activateCashregister(rufen, customerId, cashregisterId) {
479
+ export async function activateCashregister(transport, customerId, cashregisterId) {
480
480
  const kunde = pflicht(customerId, 'activateCashregister', 'customerId');
481
481
  const kassenId = pflicht(cashregisterId, 'activateCashregister', 'cashregisterId');
482
- const daten = objekt(await rufen('activateCashregister', { customerId: kunde, cashregisterId: kassenId }));
482
+ const daten = objekt(await transport('activateCashregister', { customerId: kunde, cashregisterId: kassenId }));
483
483
  return {
484
484
  cashregister: kasse(verlangt(daten['cashregister'], 'activateCashregister', 'cashregister')),
485
485
  unchanged: jaNein(daten['unchanged']),
486
486
  };
487
487
  }
488
488
  /** Die Kassen eines Betriebs samt Stand der Inbetriebnahme — **nie** Token. */
489
- export async function listCustomerCashregisters(rufen, customerId) {
489
+ export async function listCustomerCashregisters(transport, customerId) {
490
490
  const id = pflicht(customerId, 'listCustomerCashregisters', 'customerId');
491
- const daten = objekt(await rufen('listCustomerCashregisters', { customerId: id }));
491
+ const daten = objekt(await transport('listCustomerCashregisters', { customerId: id }));
492
492
  return {
493
493
  customerId: text(daten['customerId'], id),
494
494
  cashregisters: liste(daten['cashregisters']).map(kasse),
@@ -511,9 +511,9 @@ export async function listCustomerCashregisters(rufen, customerId) {
511
511
  * Zeichenketten-Umwandlung zeigen eine Maske, heraus kommt man nur ueber
512
512
  * `.reveal()`.
513
513
  */
514
- export async function getCustomerCredentials(rufen, customerId) {
514
+ export async function getCustomerCredentials(transport, customerId) {
515
515
  const id = pflicht(customerId, 'getCustomerCredentials', 'customerId');
516
- const daten = objekt(await rufen('getCustomerCredentials', { customerId: id }));
516
+ const daten = objekt(await transport('getCustomerCredentials', { customerId: id }));
517
517
  return {
518
518
  customerId: text(daten['customerId'], id),
519
519
  companyName: text(daten['companyName']),
@@ -531,3 +531,43 @@ export async function getCustomerCredentials(rufen, customerId) {
531
531
  note: text(daten['note']),
532
532
  };
533
533
  }
534
+ // ---------------------------------------------------------------------------
535
+ // Vertraege
536
+ // ---------------------------------------------------------------------------
537
+ /**
538
+ * Meldet eine Zustimmung des Betriebs, die der Partner **in Vollmacht**
539
+ * eingeholt hat (Endpunkt `reportCustomerContract`, unter `/v1`
540
+ * `reportCustomerVertrag`). Braucht die Berechtigung `customers:write`.
541
+ *
542
+ * Vor dem Senden prueft dieser Client nur, dass jede Pflichtangabe da ist und
543
+ * `acceptedAt` eine Zahl ist. Ob die Art erlaubt ist (`kind_not_allowed`), die
544
+ * Fassung gilt (`unknown_version`, `no_version`) und der Text derselbe ist
545
+ * (`text_changed`), entscheidet der Server. Eine schon bestaetigte Fassung
546
+ * kommt als `already_accepted` mit `data.contractId`; das ist kein Schaden,
547
+ * sondern die Bestaetigung, dass es sie gibt.
548
+ */
549
+ export async function reportCustomerContract(transport, options) {
550
+ const vorgang = 'reportCustomerContract';
551
+ const o = objekt(options);
552
+ const customerId = pflicht(o['customerId'], vorgang, 'customerId');
553
+ const kind = pflicht(o['kind'], vorgang, 'kind');
554
+ const version = pflicht(o['version'], vorgang, 'version');
555
+ const textHash = pflicht(o['textHash'], vorgang, 'textHash');
556
+ const name = pflicht(o['name'], vorgang, 'name');
557
+ const signerRole = pflicht(o['signerRole'], vorgang, 'signerRole');
558
+ const acceptedAt = o['acceptedAt'];
559
+ if (acceptedAt !== undefined && (typeof acceptedAt !== 'number' || !Number.isFinite(acceptedAt))) {
560
+ throw new KasseneckValidationError(vorgang, 'acceptedAt muss eine Zahl sein (Unix-Millisekunden)', 'request');
561
+ }
562
+ const daten = objekt(await transport(vorgang, { customerId, kind, version, textHash, name, signerRole, acceptedAt }));
563
+ const contractId = daten['contractId'];
564
+ if (typeof contractId !== 'string' || !contractId) {
565
+ throw new KasseneckValidationError(vorgang, 'Antwort enthaelt keine contractId', 'response');
566
+ }
567
+ return {
568
+ contractId,
569
+ confirmedAt: zahlOderNull(daten['confirmedAt']),
570
+ kind: text(daten['kind'], kind),
571
+ version: text(daten['version'], version),
572
+ };
573
+ }
@@ -17,13 +17,13 @@
17
17
  * im Backend (Abzug aus `partner-core.FEHLER_KATALOG`); ein Code, den nur eine
18
18
  * Seite kennt, ist fuer einen Aufrufer nicht von „gibt es nicht" zu
19
19
  * unterscheiden. Deshalb stehen hier BEIDE Flaechen: die der Schnittstelle
20
- * ([PARTNER_FEHLER_CODES]) und die des Partner-Portals
21
- * ([PARTNER_PORTAL_FEHLER_CODES]).
20
+ * ([PARTNER_ERROR_CODES]) und die des Partner-Portals
21
+ * ([PARTNER_PORTAL_ERROR_CODES]).
22
22
  *
23
23
  * **Seit 0.29.0 englisch, wie der Rest von `/v3`.** Dieser Client spricht seit
24
24
  * 0.28.0 ausschliesslich `/v3` (`PARTNER_BASE_URL`): die paar deutschen Codes,
25
25
  * die der Server bis dahin noch roh durchreichte, kommen jetzt genauso englisch
26
- * an wie alle anderen. [PARTNER_FEHLER_CODES] fuehrt deshalb ausnahmslos die
26
+ * an wie alle anderen. [PARTNER_ERROR_CODES] fuehrt deshalb ausnahmslos die
27
27
  * `/v3`-Schreibweise aus `fehlercodes.json`s `v3`-Zuordnung (deutsch -> englisch);
28
28
  * ein Aufrufer bekommt vom Server nie mehr die deutsche Form.
29
29
  *
@@ -36,16 +36,24 @@
36
36
  *
37
37
  * **Die Vertrags-Codes (`kind_not_allowed`, `mode_not_allowed`,
38
38
  * `power_of_attorney_missing`, `not_found`, `no_version`,
39
- * `unknown_version`, `text_changed`, `already_accepted`) stehen hier, obwohl
40
- * dieses Paket `reportCustomerContract` nicht anbietet.** Der Katalog des
41
- * Backends fuehrt sie mit `flaeche: 'api'`/`'beide'`, dieselbe Regel wie bei
42
- * den Portal-Codes oben: vollstaendig heisst vollstaendig, auch fuer einen
43
- * Endpunkt, den (noch) kein Aufruf dieses Clients ausloest. Ein Server-Update,
44
- * das den Endpunkt ergaenzt, bräuchte dann keinen zweiten Fehlerkatalog-Umbau.
45
- * `not_required` fehlt bewusst: derselbe gemeinsame Server-Zweig wie die
46
- * anderen sechs, aber ueber die Partner-API nicht erreichbar (der Server hat
47
- * ihn aus `FEHLER_KATALOG` entfernt, siehe `partner-core.js` im Backend).
39
+ * `unknown_version`, `text_changed`, `already_accepted`)** kommen aus
40
+ * `reportCustomerContract` (seit 1.0 in diesem Paket). `not_required` fehlt
41
+ * bewusst: derselbe gemeinsame Server-Zweig, aber ueber die Partner-API nicht
42
+ * erreichbar (der Server hat ihn aus `FEHLER_KATALOG` entfernt, siehe
43
+ * `partner-core.js` im Backend).
44
+ *
45
+ * **Seit 1.0 ist [PARTNER_ERROR_CODES] genau `errorCodes.partner` des
46
+ * Vertrags-Exports** (`fixtures/v3/v3-vokabular.json`); ein Test haelt beide
47
+ * gleich. Dazu kommen die Anmelde- und Anfragecodes, die `/v3` seit
48
+ * 2026-09-27 auch an Partner-Aufrufen setzt ([PARTNER_REQUEST_ERROR_CODES]).
49
+ *
50
+ * **Ein unbekannter Code ist kein Fehler dieses Pakets.** Der Server darf
51
+ * Fehlern, die heute keinen Code tragen, spaeter einen geben (vorhandene Codes
52
+ * aendern sich nie). [partnerErrorAdvice] antwortet darauf mit einem
53
+ * Rueckfallsatz statt `undefined`, die Erkenner mit `false`; geworfen wird
54
+ * nie.
48
55
  */
56
+ import { KasseneckApiError } from '../client/errors.js';
49
57
  /**
50
58
  * Alle Codes, die die **Schnittstelle** kennt. Als Liste und nicht nur als
51
59
  * Typ, damit ein Aufrufer sie zur Laufzeit durchgehen kann (Katalogseite,
@@ -53,7 +61,7 @@
53
61
  *
54
62
  * Reihenfolge und Bestand wie im Abzug des Backends.
55
63
  */
56
- export declare const PARTNER_FEHLER_CODES: readonly ["validation", "rate_limited", "app_not_found", "app_not_accepted", "live_not_allowed", "customer_exists", "customer_conflict", "customer_limit", "access_not_allowed", "email_taken", "no_email", "tax_number_missing", "fon_missing", "signature_pending", "signature_missing", "signature_unknown", "signature_ambiguous", "signature_not_ready", "signature_limit", "signature_failed", "module_inactive", "cashregister_limit", "cashregister_not_found", "contracts_pending", "kind_not_allowed", "mode_not_allowed", "power_of_attorney_missing", "not_found", "no_version", "unknown_version", "text_changed", "already_accepted", "activation_failed", "webhook_limit", "webhook_inactive", "event_not_subscribed"];
64
+ export declare const PARTNER_ERROR_CODES: readonly ["validation", "rate_limited", "app_not_found", "app_not_accepted", "live_not_allowed", "customer_exists", "customer_conflict", "customer_limit", "access_not_allowed", "email_taken", "no_email", "tax_number_missing", "fon_missing", "signature_pending", "signature_missing", "signature_unknown", "signature_ambiguous", "signature_not_ready", "signature_limit", "signature_failed", "module_inactive", "cashregister_limit", "cashregister_not_found", "contracts_pending", "kind_not_allowed", "mode_not_allowed", "power_of_attorney_missing", "not_found", "no_version", "unknown_version", "text_changed", "already_accepted", "activation_failed", "webhook_limit", "webhook_inactive", "event_not_subscribed"];
57
65
  /**
58
66
  * Die Codes, die nur im **Partner-Portal** entstehen — beim Pflegen der App,
59
67
  * der Schluessel, der Mitglieder und der Signaturkarten.
@@ -63,25 +71,47 @@ export declare const PARTNER_FEHLER_CODES: readonly ["validation", "rate_limited
63
71
  * Wer eine Katalogseite baut oder eine fremde Antwort einsortiert, findet
64
72
  * damit jeden Code des Backends wieder.
65
73
  */
66
- export declare const PARTNER_PORTAL_FEHLER_CODES: readonly ["app_locked", "version_locked", "invalid_transition", "no_accepted_app", "consent", "key_limit", "last_owner", "auth_user_exists", "card_missing", "card_duplicate", "card_not_verified", "already_assigned"];
67
- export type PartnerFehlerCode = typeof PARTNER_FEHLER_CODES[number];
68
- export type PartnerPortalFehlerCode = typeof PARTNER_PORTAL_FEHLER_CODES[number];
69
- /** Ein Code aus einer der beiden Flaechen. */
70
- export type PartnerCode = PartnerFehlerCode | PartnerPortalFehlerCode;
71
- export declare function istPartnerFehlerCode(wert: unknown): wert is PartnerFehlerCode;
72
- export declare function istPartnerPortalFehlerCode(wert: unknown): wert is PartnerPortalFehlerCode;
74
+ export declare const PARTNER_PORTAL_ERROR_CODES: readonly ["app_locked", "version_locked", "invalid_transition", "no_accepted_app", "consent", "key_limit", "last_owner", "auth_user_exists", "card_missing", "card_duplicate", "card_not_verified", "already_assigned"];
75
+ /**
76
+ * Codes der Anmeldung und der Anfragepruefung, die `/v3` auch an
77
+ * Partner-Aufrufen setzt (Partner-Doku, Abschnitt Fehlercodes; im
78
+ * Vertrags-Export unter `errorCodes.auth`). Unter `/v1` kamen diese Fehler
79
+ * ohne Code. `validation` und `rate_limited` stehen schon in
80
+ * [PARTNER_ERROR_CODES]. Dahinter die Codes des Rands (`errorCodes.edge`,
81
+ * soweit nicht schon im Katalog; `not_found` und `validation` stehen dort)
82
+ * und `route_missing`, den das Paket selbst vergibt.
83
+ */
84
+ export declare const PARTNER_REQUEST_ERROR_CODES: readonly ["method_not_allowed", "unauthorized", "partner_locked", "scope_missing", "internal_translation_error", "dialect_mismatch", "response_translation_failed", "route_missing"];
85
+ export type PartnerErrorCode = typeof PARTNER_ERROR_CODES[number];
86
+ export type PartnerPortalErrorCode = typeof PARTNER_PORTAL_ERROR_CODES[number];
87
+ export type PartnerRequestErrorCode = typeof PARTNER_REQUEST_ERROR_CODES[number];
88
+ /** Ein Code aus einer der Flaechen, die dieses Paket kennt. */
89
+ export type PartnerCode = PartnerErrorCode | PartnerPortalErrorCode | PartnerRequestErrorCode;
73
90
  /**
74
- * Der Handlungssatz zu einem Code — aus beiden Flaechen. `undefined` fuer
75
- * einen Code, den dieses Paket nicht kennt; ein erfundener Satz waere
76
- * schlimmer als keiner.
91
+ * `true` fuer einen Code, den ein Partner-Aufruf liefern kann: aus
92
+ * [PARTNER_ERROR_CODES] (Katalog) oder [PARTNER_REQUEST_ERROR_CODES]
93
+ * (Anmeldung, Rand, Paket). Alles andere, auch Unsinn, ist `false`.
77
94
  */
78
- export declare function partnerFehlerRat(code: string): string | undefined;
95
+ export declare function isPartnerErrorCode(value: unknown): value is PartnerErrorCode | PartnerRequestErrorCode;
96
+ /** `true` fuer einen Code aus [PARTNER_PORTAL_ERROR_CODES]; alles andere ist `false`. */
97
+ export declare function isPartnerPortalErrorCode(value: unknown): value is PartnerPortalErrorCode;
98
+ /**
99
+ * Der Handlungssatz zu einem Code, aus allen Flaechen. Fuer einen Code, den
100
+ * dieses Paket nicht kennt (oder fuer Unsinn), kommt ein Rueckfallsatz; die
101
+ * Funktion wirft nie.
102
+ */
103
+ export declare function partnerErrorAdvice(code: string): string;
79
104
  /** Der Fehlercode eines geworfenen Fehlers — `undefined`, wenn es keiner der unseren ist. */
80
- export declare function partnerFehlerCode(error: unknown): string | undefined;
81
- /** Kurzform fuer `catch (e) { if (istPartnerFehler(e, 'signature_missing')) … }`. */
82
- export declare function istPartnerFehler(error: unknown, code: PartnerCode): boolean;
105
+ export declare function partnerErrorCode(error: unknown): string | undefined;
106
+ /**
107
+ * Kurzform fuer `catch (e) { if (isPartnerError(e, 'signature_missing')) … }`.
108
+ * Mit `code` nimmt sie auch Codes, die dieses Paket (noch) nicht kennt.
109
+ * Ohne `code`: traegt der Fehler einen Code, den ein Partner-Aufruf liefern
110
+ * kann ([isPartnerErrorCode])?
111
+ */
112
+ export declare function isPartnerError(error: unknown, code?: PartnerCode | (string & {})): error is KasseneckApiError;
83
113
  /** Ein Feldfehler aus `data.errors[]` einer `validation`-Antwort. */
84
- export interface PartnerFeldFehler {
114
+ export interface PartnerFieldError {
85
115
  /**
86
116
  * Der Feldpfad, so wie er im gesendeten Betrieb steht — verschachtelt und je
87
117
  * Kontakt: `address.zip`, `taxDetails.taxNumber`, `contacts.0.email`.
@@ -90,9 +120,9 @@ export interface PartnerFeldFehler {
90
120
  message: string;
91
121
  }
92
122
  /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
93
- export declare function partnerFeldFehler(error: unknown): PartnerFeldFehler[];
123
+ export declare function partnerFieldErrors(error: unknown): PartnerFieldError[];
94
124
  /**
95
125
  * Wie lange `rate_limited` noch gilt, in Sekunden. `undefined`, wenn der
96
126
  * Fehler kein `rate_limited` ist oder das Backend keine Angabe macht.
97
127
  */
98
- export declare function partnerWartezeitSek(error: unknown): number | undefined;
128
+ export declare function partnerRetryAfterSec(error: unknown): number | undefined;
@@ -17,13 +17,13 @@
17
17
  * im Backend (Abzug aus `partner-core.FEHLER_KATALOG`); ein Code, den nur eine
18
18
  * Seite kennt, ist fuer einen Aufrufer nicht von „gibt es nicht" zu
19
19
  * unterscheiden. Deshalb stehen hier BEIDE Flaechen: die der Schnittstelle
20
- * ([PARTNER_FEHLER_CODES]) und die des Partner-Portals
21
- * ([PARTNER_PORTAL_FEHLER_CODES]).
20
+ * ([PARTNER_ERROR_CODES]) und die des Partner-Portals
21
+ * ([PARTNER_PORTAL_ERROR_CODES]).
22
22
  *
23
23
  * **Seit 0.29.0 englisch, wie der Rest von `/v3`.** Dieser Client spricht seit
24
24
  * 0.28.0 ausschliesslich `/v3` (`PARTNER_BASE_URL`): die paar deutschen Codes,
25
25
  * die der Server bis dahin noch roh durchreichte, kommen jetzt genauso englisch
26
- * an wie alle anderen. [PARTNER_FEHLER_CODES] fuehrt deshalb ausnahmslos die
26
+ * an wie alle anderen. [PARTNER_ERROR_CODES] fuehrt deshalb ausnahmslos die
27
27
  * `/v3`-Schreibweise aus `fehlercodes.json`s `v3`-Zuordnung (deutsch -> englisch);
28
28
  * ein Aufrufer bekommt vom Server nie mehr die deutsche Form.
29
29
  *
@@ -36,15 +36,22 @@
36
36
  *
37
37
  * **Die Vertrags-Codes (`kind_not_allowed`, `mode_not_allowed`,
38
38
  * `power_of_attorney_missing`, `not_found`, `no_version`,
39
- * `unknown_version`, `text_changed`, `already_accepted`) stehen hier, obwohl
40
- * dieses Paket `reportCustomerContract` nicht anbietet.** Der Katalog des
41
- * Backends fuehrt sie mit `flaeche: 'api'`/`'beide'`, dieselbe Regel wie bei
42
- * den Portal-Codes oben: vollstaendig heisst vollstaendig, auch fuer einen
43
- * Endpunkt, den (noch) kein Aufruf dieses Clients ausloest. Ein Server-Update,
44
- * das den Endpunkt ergaenzt, bräuchte dann keinen zweiten Fehlerkatalog-Umbau.
45
- * `not_required` fehlt bewusst: derselbe gemeinsame Server-Zweig wie die
46
- * anderen sechs, aber ueber die Partner-API nicht erreichbar (der Server hat
47
- * ihn aus `FEHLER_KATALOG` entfernt, siehe `partner-core.js` im Backend).
39
+ * `unknown_version`, `text_changed`, `already_accepted`)** kommen aus
40
+ * `reportCustomerContract` (seit 1.0 in diesem Paket). `not_required` fehlt
41
+ * bewusst: derselbe gemeinsame Server-Zweig, aber ueber die Partner-API nicht
42
+ * erreichbar (der Server hat ihn aus `FEHLER_KATALOG` entfernt, siehe
43
+ * `partner-core.js` im Backend).
44
+ *
45
+ * **Seit 1.0 ist [PARTNER_ERROR_CODES] genau `errorCodes.partner` des
46
+ * Vertrags-Exports** (`fixtures/v3/v3-vokabular.json`); ein Test haelt beide
47
+ * gleich. Dazu kommen die Anmelde- und Anfragecodes, die `/v3` seit
48
+ * 2026-09-27 auch an Partner-Aufrufen setzt ([PARTNER_REQUEST_ERROR_CODES]).
49
+ *
50
+ * **Ein unbekannter Code ist kein Fehler dieses Pakets.** Der Server darf
51
+ * Fehlern, die heute keinen Code tragen, spaeter einen geben (vorhandene Codes
52
+ * aendern sich nie). [partnerErrorAdvice] antwortet darauf mit einem
53
+ * Rueckfallsatz statt `undefined`, die Erkenner mit `false`; geworfen wird
54
+ * nie.
48
55
  */
49
56
  import { KasseneckApiError } from '../client/errors.js';
50
57
  /**
@@ -54,7 +61,7 @@ import { KasseneckApiError } from '../client/errors.js';
54
61
  *
55
62
  * Reihenfolge und Bestand wie im Abzug des Backends.
56
63
  */
57
- export const PARTNER_FEHLER_CODES = [
64
+ export const PARTNER_ERROR_CODES = [
58
65
  // Eingabe, Konto und Takt
59
66
  'validation',
60
67
  'rate_limited',
@@ -84,8 +91,7 @@ export const PARTNER_FEHLER_CODES = [
84
91
  'cashregister_limit',
85
92
  'cashregister_not_found',
86
93
  'contracts_pending',
87
- // Vertraege (reportCustomerContract: dieses Paket bietet den Endpunkt nicht
88
- // an, der Katalog fuehrt die Codes trotzdem vollstaendig, siehe oben)
94
+ // Vertraege (reportCustomerContract)
89
95
  'kind_not_allowed',
90
96
  'mode_not_allowed',
91
97
  'power_of_attorney_missing',
@@ -109,7 +115,7 @@ export const PARTNER_FEHLER_CODES = [
109
115
  * Wer eine Katalogseite baut oder eine fremde Antwort einsortiert, findet
110
116
  * damit jeden Code des Backends wieder.
111
117
  */
112
- export const PARTNER_PORTAL_FEHLER_CODES = [
118
+ export const PARTNER_PORTAL_ERROR_CODES = [
113
119
  'app_locked',
114
120
  'version_locked',
115
121
  'invalid_transition',
@@ -123,11 +129,40 @@ export const PARTNER_PORTAL_FEHLER_CODES = [
123
129
  'card_not_verified',
124
130
  'already_assigned',
125
131
  ];
126
- export function istPartnerFehlerCode(wert) {
127
- return typeof wert === 'string' && PARTNER_FEHLER_CODES.includes(wert);
132
+ /**
133
+ * Codes der Anmeldung und der Anfragepruefung, die `/v3` auch an
134
+ * Partner-Aufrufen setzt (Partner-Doku, Abschnitt Fehlercodes; im
135
+ * Vertrags-Export unter `errorCodes.auth`). Unter `/v1` kamen diese Fehler
136
+ * ohne Code. `validation` und `rate_limited` stehen schon in
137
+ * [PARTNER_ERROR_CODES]. Dahinter die Codes des Rands (`errorCodes.edge`,
138
+ * soweit nicht schon im Katalog; `not_found` und `validation` stehen dort)
139
+ * und `route_missing`, den das Paket selbst vergibt.
140
+ */
141
+ export const PARTNER_REQUEST_ERROR_CODES = [
142
+ 'method_not_allowed',
143
+ 'unauthorized',
144
+ 'partner_locked',
145
+ 'scope_missing',
146
+ // Rand (errorCodes.edge, soweit nicht im Katalog) und Code des Pakets
147
+ 'internal_translation_error',
148
+ 'dialect_mismatch',
149
+ 'response_translation_failed',
150
+ 'route_missing',
151
+ ];
152
+ function enthaelt(liste, wert) {
153
+ return typeof wert === 'string' && liste.includes(wert);
154
+ }
155
+ /**
156
+ * `true` fuer einen Code, den ein Partner-Aufruf liefern kann: aus
157
+ * [PARTNER_ERROR_CODES] (Katalog) oder [PARTNER_REQUEST_ERROR_CODES]
158
+ * (Anmeldung, Rand, Paket). Alles andere, auch Unsinn, ist `false`.
159
+ */
160
+ export function isPartnerErrorCode(value) {
161
+ return enthaelt(PARTNER_ERROR_CODES, value) || enthaelt(PARTNER_REQUEST_ERROR_CODES, value);
128
162
  }
129
- export function istPartnerPortalFehlerCode(wert) {
130
- return typeof wert === 'string' && PARTNER_PORTAL_FEHLER_CODES.includes(wert);
163
+ /** `true` fuer einen Code aus [PARTNER_PORTAL_ERROR_CODES]; alles andere ist `false`. */
164
+ export function isPartnerPortalErrorCode(value) {
165
+ return enthaelt(PARTNER_PORTAL_ERROR_CODES, value);
131
166
  }
132
167
  /**
133
168
  * Was der Aufrufer tun muss. Ein Satz je Code, in der zweiten Person — nicht
@@ -164,10 +199,7 @@ const RAT = {
164
199
  cashregister_not_found: 'Diese cashregisterId gibt es bei diesem Betrieb nicht.',
165
200
  contracts_pending: 'Nur live: der Betrieb hat Auftragsverarbeitungs- und Nutzungsvertrag noch nicht bestaetigt. An der Kasse aendert sich nichts. Den Betrieb ueber den Einrichtungs-Link bestaetigen lassen (sendPartnerCustomerFonLink, Stand in avv/terms von getPartnerCustomer), danach activateCashregister erneut.',
166
201
  // -- Vertraege (reportCustomerContract) ------------------------------------
167
- // Dieser Client bietet den Endpunkt (noch) nicht an; die Codes stehen hier
168
- // nur fuer die Katalogseite und fuer einen Aufrufer, der die rohe Antwort
169
- // selbst auswertet (siehe Kopfkommentar der Datei).
170
- kind_not_allowed: 'reportCustomerContract mit einer anderen Art als "avv". Der Vollmachtsweg nimmt nur den Auftragsverarbeitungsvertrag entgegen. Dieser Client bietet den Endpunkt nicht an.',
202
+ kind_not_allowed: 'reportCustomerContract mit einer anderen Art als "avv". Der Vollmachtsweg nimmt nur den Auftragsverarbeitungsvertrag entgegen; den Nutzungsvertrag bestaetigt der Betrieb selbst ueber den Einrichtungs-Link.',
171
203
  mode_not_allowed: 'Der Vollmachtsweg ist fuer dieses Partner-Konto nicht freigeschaltet. Kasseneck fragen (hello@kasseneck.at).',
172
204
  power_of_attorney_missing: 'Der Partnervertrag mit dem Vollmachts-Kapitel ist noch nicht bestaetigt. Erst danach nimmt der Vollmachtsweg Meldungen entgegen.',
173
205
  not_found: 'Die genannte customerId gehoert nicht zu diesem Partner-Konto oder existiert nicht. listPartnerCustomers nennt die eigenen.',
@@ -179,6 +211,15 @@ const RAT = {
179
211
  webhook_limit: 'Hoechstens 10 Webhook-Endpunkte je Partner. Einen ungenutzten loeschen.',
180
212
  webhook_inactive: 'Der Webhook steht auf active:false. Zuerst aktivieren, dann erneut proben.',
181
213
  event_not_subscribed: 'Der Endpunkt abonniert dieses Ereignis nicht — auch eine Probe bekommt nur, was in seiner events-Liste steht. events erweitern und erneut versuchen.',
214
+ // -- Anmeldung und Anfrage -----------------------------------------------
215
+ method_not_allowed: 'Die Anfrage war kein POST. Jeder Aufruf der Partner-API geht als POST mit JSON-Rumpf.',
216
+ unauthorized: 'Kein, ein ungueltiger oder ein widerrufener Partner-Schluessel. Den Schluessel im Partner-Portal pruefen bzw. einen neuen erzeugen.',
217
+ partner_locked: 'Das Partner-Konto ist gesperrt. Kasseneck fragen (hello@kasseneck.at).',
218
+ scope_missing: 'Dem Schluessel fehlt eine Berechtigung, die dieser Aufruf braucht (data.scope). Einen Schluessel mit dieser Berechtigung erzeugen.',
219
+ internal_translation_error: 'Der Server konnte die Anfrage nicht in seine innere Form uebersetzen. Nichts wurde ausgefuehrt; hello@kasseneck.at mit Aufruf und Zeitpunkt melden.',
220
+ dialect_mismatch: 'Die Antwort kam nicht vom /v3-Rand (Kennzeichen fehlt), der Ausgang ist unklar. Nicht blind wiederholen: den Stand mit getPartnerCustomer bzw. listCustomerCashregisters nachlesen.',
221
+ response_translation_failed: 'Der Server konnte seine Antwort nicht uebersetzen. Mit details.handled === false lief nichts; sonst kann der Aufruf ausgefuehrt sein, dann den Stand nachlesen statt wiederholen.',
222
+ route_missing: 'Statt des Backends kam eine HTML-Seite: die Basisadresse stimmt nicht (PARTNER_BASE_URL bzw. eigener Proxy). Der Aufruf kam nie an.',
182
223
  // -- Partner-Portal -------------------------------------------------------
183
224
  app_locked: 'Name, Verteilungen und Kontakt einer App sind fest, sobald eine Version geprueft wird. Aenderungen daran gehen ueber Kasseneck.',
184
225
  version_locked: 'Diese App-Version wird geprueft oder ist abgenommen. Fuer Aenderungen eine neue Version anlegen.',
@@ -194,23 +235,38 @@ const RAT = {
194
235
  already_assigned: 'Fuer diesen Antrag sind bereits Kartendaten eingetragen; ein zweiter Satz ueberschreibt nichts.',
195
236
  };
196
237
  /**
197
- * Der Handlungssatz zu einem Code — aus beiden Flaechen. `undefined` fuer
198
- * einen Code, den dieses Paket nicht kennt; ein erfundener Satz waere
199
- * schlimmer als keiner.
238
+ * Der Rueckfall fuer einen Code, den dieses Paket nicht kennt: kein geratener
239
+ * Handgriff, sondern der Hinweis, wo die Auskunft steht.
240
+ */
241
+ const RUECKFALL = 'Dieser Code ist diesem Paket nicht bekannt (neuer als diese Fassung). Die Meldung des Servers (message) sagt, was geschah; im Zweifel wie einen Fehler ohne Code behandeln und hello@kasseneck.at fragen.';
242
+ /**
243
+ * Der Handlungssatz zu einem Code, aus allen Flaechen. Fuer einen Code, den
244
+ * dieses Paket nicht kennt (oder fuer Unsinn), kommt ein Rueckfallsatz; die
245
+ * Funktion wirft nie.
200
246
  */
201
- export function partnerFehlerRat(code) {
247
+ export function partnerErrorAdvice(code) {
248
+ if (typeof code !== 'string' || !Object.prototype.hasOwnProperty.call(RAT, code))
249
+ return RUECKFALL;
202
250
  return RAT[code];
203
251
  }
204
252
  /** Der Fehlercode eines geworfenen Fehlers — `undefined`, wenn es keiner der unseren ist. */
205
- export function partnerFehlerCode(error) {
253
+ export function partnerErrorCode(error) {
206
254
  return error instanceof KasseneckApiError ? error.code : undefined;
207
255
  }
208
- /** Kurzform fuer `catch (e) { if (istPartnerFehler(e, 'signature_missing')) … }`. */
209
- export function istPartnerFehler(error, code) {
210
- return partnerFehlerCode(error) === code;
256
+ /**
257
+ * Kurzform fuer `catch (e) { if (isPartnerError(e, 'signature_missing')) … }`.
258
+ * Mit `code` nimmt sie auch Codes, die dieses Paket (noch) nicht kennt.
259
+ * Ohne `code`: traegt der Fehler einen Code, den ein Partner-Aufruf liefern
260
+ * kann ([isPartnerErrorCode])?
261
+ */
262
+ export function isPartnerError(error, code) {
263
+ const gefunden = partnerErrorCode(error);
264
+ if (gefunden === undefined)
265
+ return false;
266
+ return code === undefined ? isPartnerErrorCode(gefunden) : gefunden === code;
211
267
  }
212
268
  /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
213
- export function partnerFeldFehler(error) {
269
+ export function partnerFieldErrors(error) {
214
270
  if (!(error instanceof KasseneckApiError))
215
271
  return [];
216
272
  const roh = error.details['errors'];
@@ -230,8 +286,8 @@ export function partnerFeldFehler(error) {
230
286
  * Wie lange `rate_limited` noch gilt, in Sekunden. `undefined`, wenn der
231
287
  * Fehler kein `rate_limited` ist oder das Backend keine Angabe macht.
232
288
  */
233
- export function partnerWartezeitSek(error) {
234
- if (partnerFehlerCode(error) !== 'rate_limited')
289
+ export function partnerRetryAfterSec(error) {
290
+ if (partnerErrorCode(error) !== 'rate_limited')
235
291
  return undefined;
236
292
  const wert = error.details['retryAfterSec'];
237
293
  return typeof wert === 'number' && Number.isFinite(wert) && wert >= 0 ? wert : undefined;
@@ -11,22 +11,23 @@
11
11
  * des Backends (`docs/api/partner.md`, kompakt `docs/api/partner.llms.txt`).
12
12
  * Was hier steht, ist die Benutzung dieses Clients.
13
13
  *
14
- * Reihenfolge der Kette: [PARTNER_ABLAUF].
14
+ * Reihenfolge der Kette: [PARTNER_FLOW].
15
15
  *
16
- * **Seit 0.28.0 spricht dieser Teil die englische `/v3`** ([PARTNER_BASE_URL]).
17
- * Alles andere im Paket (Belege, Rechnungen, Kasse, Druck, Zahlungen) bleibt
18
- * auf `/v1`, bis es dort eine `/v3` gibt.
16
+ * **Seit 0.28.0 spricht dieser Teil die englische `/v3`** ([PARTNER_BASE_URL]),
17
+ * seit 1.0 heissen auch seine Exporte englisch; die Tabelle alt/neu steht im
18
+ * CHANGELOG. Die Aliase aus 0.28 (`Rechtsform`, `Bundesland`, `KontaktRolle`)
19
+ * sind entfernt.
19
20
  */
20
21
  export { createPartnerApi, PARTNER_BASE_URL, type PartnerApi, type PartnerApiOptions } from './api.js';
21
22
  export { partnerKeyAuth, partnerKeyEnv, type PartnerKeyAuthOptions } from './auth.js';
22
- export { PARTNER_ABLAUF, naechsterSchritt, type AblaufSchritt, } from './ablauf.js';
23
- export { PARTNER_FEHLER_CODES, PARTNER_PORTAL_FEHLER_CODES, istPartnerFehlerCode, istPartnerPortalFehlerCode, istPartnerFehler, partnerFehlerCode, partnerFehlerRat, partnerFeldFehler, partnerWartezeitSek, type PartnerCode, type PartnerFehlerCode, type PartnerPortalFehlerCode, type PartnerFeldFehler, } from './fehler.js';
24
- export { BETRIEB_FELDER, unbekannteBetriebsfelder, type BetriebFeld, } from './betrieb.js';
25
- export { KasseneckSecret, SECRET_MASKE } from './secret.js';
26
- export { getPartnerInfo, createPartnerCustomer, listPartnerCustomers, checkPartnerCustomerEmail, getPartnerCustomer, sendPartnerCustomerFonLink, requestCustomerSignature, getCustomerSignatureStatus, createCustomerCashregister, activateCashregister, listCustomerCashregisters, getCustomerCredentials, } from './endpunkte.js';
27
- export { createPartnerWebhook, listPartnerWebhooks, rotatePartnerWebhookSecret, updatePartnerWebhook, deletePartnerWebhook, sendPartnerWebhookTest, listPartnerWebhookDeliveries, parseWebhookEvent, istPartnerWebhookEvent, PARTNER_WEBHOOK_EVENTS, WEBHOOK_UMSCHLAG_FELDER, type PartnerWebhookEvent, type PartnerWebhookEventType, type PartnerWebhook, type CreateWebhookOptions, type CreateWebhookResult, type DeleteWebhookResult, type WebhookApiVersion, type WebhookDeliveryStatus, type WebhookTestZustellung, type ContractKind, type ContractSource, type ContractAcceptedEventData, type WebhookPatch, type WebhookListe, type WebhookZustellung, type WebhookTestResult, type WebhookEventResult, } from './webhooks.js';
23
+ export { PARTNER_FLOW, nextFlowStep, type FlowStep, } from './ablauf.js';
24
+ export { PARTNER_ERROR_CODES, PARTNER_PORTAL_ERROR_CODES, PARTNER_REQUEST_ERROR_CODES, isPartnerErrorCode, isPartnerPortalErrorCode, isPartnerError, partnerErrorCode, partnerErrorAdvice, partnerFieldErrors, partnerRetryAfterSec, type PartnerCode, type PartnerErrorCode, type PartnerPortalErrorCode, type PartnerRequestErrorCode, type PartnerFieldError, } from './fehler.js';
25
+ export { BUSINESS_FIELDS, unknownBusinessFields, type BusinessField, } from './betrieb.js';
26
+ export { KasseneckSecret, SECRET_MASK } from './secret.js';
27
+ export { getPartnerInfo, createPartnerCustomer, listPartnerCustomers, checkPartnerCustomerEmail, getPartnerCustomer, sendPartnerCustomerFonLink, requestCustomerSignature, getCustomerSignatureStatus, createCustomerCashregister, activateCashregister, listCustomerCashregisters, getCustomerCredentials, reportCustomerContract, } from './endpunkte.js';
28
+ export { createPartnerWebhook, listPartnerWebhooks, rotatePartnerWebhookSecret, updatePartnerWebhook, deletePartnerWebhook, sendPartnerWebhookTest, listPartnerWebhookDeliveries, parseWebhookEvent, isPartnerWebhookEvent, PARTNER_WEBHOOK_EVENTS, WEBHOOK_ENVELOPE_FIELDS, WEBHOOK_DELIVERY_STATUSES, type PartnerWebhookEvent, type PartnerWebhookEventType, type PartnerWebhook, type CreateWebhookOptions, type CreateWebhookResult, type DeleteWebhookResult, type WebhookApiVersion, type WebhookDeliveryStatus, type WebhookTestDelivery, type ContractAcceptedEventData, type SignatureFailedEventData, type CashregisterFailedEventData, type WebhookPatch, type WebhookList, type WebhookDelivery, type WebhookTestResult, type WebhookEventResult, } from './webhooks.js';
28
29
  export { verifyWebhookSignature, parseSignatureHeader, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_EVENT_HEADER, WEBHOOK_DELIVERY_HEADER, WEBHOOK_TOLERANCE_SEC, WEBHOOK_RETRY_PLAN_SEC, WEBHOOK_MAX_ATTEMPTS, WEBHOOK_TIMEOUT_MS, WEBHOOK_LIMIT, type VerifyWebhookOptions, type WebhookVerifyResult, type WebhookVerifyReason, } from './webhook-signatur.js';
29
- export { PARTNER_ENVS } from './typen.js';
30
- export type { PartnerEnv, PartnerScope, PartnerApp, PartnerInfo, LegalForm, AustrianState, ContactRole, AvvMode, FeeInterval, PartnerFee, SignatureHistoryReason, SignatureErrorCode, RequestSignatureOptions, CustomerSignature, Rechtsform, Bundesland, KontaktRolle, BetriebAdresse, BetriebSteuer, BetriebKontakt, BetriebSteuerberater, Betrieb, CreateCustomerOptions, CreateCustomerResult, KundenStatus, KundenZeile, AvvStand, VertragStand, KundenFonStand, ListCustomersOptions, KundenListe, Kunde, FonLinkResult, SignaturAntragStatus, SignaturHistorieEintrag, SignaturAntrag, RequestSignatureResult, SignaturStand, KassenSchritt, KassenStatus, Kasse, CreateCashregisterOptions, CreateCashregisterResult, ActivateCashregisterResult, KassenListe, CustomerCashregisterCredential, CustomerCredentials, } from './typen.js';
30
+ export { PARTNER_ENVS, LEGAL_FORMS, AUSTRIAN_STATES, CONTACT_ROLES, AVV_MODES, FEE_INTERVALS, CONTRACT_KINDS, CONTRACT_SOURCES, SIGNATURE_HISTORY_REASONS, SIGNATURE_ERROR_CODES, } from './typen.js';
31
+ export type { PartnerEnv, PartnerScope, PartnerApp, PartnerInfo, LegalForm, AustrianState, ContactRole, AvvMode, FeeInterval, PartnerFee, SignatureHistoryReason, SignatureErrorCode, RequestSignatureOptions, CustomerSignature, ContractKind, ContractSource, ReportCustomerContractOptions, ReportCustomerContractResult, BusinessAddress, BusinessTaxDetails, BusinessContact, BusinessTaxAdvisor, Business, CreateCustomerOptions, CreateCustomerResult, PartnerCustomerStatus, PartnerCustomerSummary, AvvStatus, ContractStatus, PartnerCustomerFonStatus, ListCustomersOptions, PartnerCustomerList, PartnerCustomer, FonLinkResult, SignatureRequestStatus, SignatureHistoryEntry, SignatureRequest, RequestSignatureResult, CustomerSignatureStatus, CashregisterActivationStep, CustomerCashregisterStatus, CustomerCashregister, CreateCashregisterOptions, CreateCashregisterResult, ActivateCashregisterResult, CustomerCashregisterList, CustomerCashregisterCredential, CustomerCredentials, } from './typen.js';
31
32
  /** `credentials:read` — nicht im Standardsatz, siehe typen.ts. */
32
33
  export { SCOPE_CREDENTIALS } from './typen.js';