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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. package/CHANGELOG.md +317 -0
  2. package/README.de.md +11 -7
  3. package/README.md +509 -126
  4. package/dist/cjs/client/api.d.ts +7 -6
  5. package/dist/cjs/client/api.js +2 -2
  6. package/dist/cjs/client/aufrufe.d.ts +29 -5
  7. package/dist/cjs/client/aufrufe.js +114 -2
  8. package/dist/cjs/client/auth.d.ts +2 -0
  9. package/dist/cjs/client/auth.js +17 -1
  10. package/dist/cjs/client/cashregisters.d.ts +1 -1
  11. package/dist/cjs/client/cashregisters.js +2 -2
  12. package/dist/cjs/client/errors.d.ts +94 -19
  13. package/dist/cjs/client/errors.js +132 -28
  14. package/dist/cjs/client/fehlercodes.d.ts +9 -0
  15. package/dist/cjs/client/fehlercodes.js +36 -0
  16. package/dist/cjs/client/index.d.ts +5 -5
  17. package/dist/cjs/client/index.js +11 -3
  18. package/dist/cjs/client/receipts.d.ts +131 -124
  19. package/dist/cjs/client/receipts.js +196 -137
  20. package/dist/cjs/client/reports.d.ts +26 -4
  21. package/dist/cjs/client/reports.js +37 -4
  22. package/dist/cjs/client/status.d.ts +3 -3
  23. package/dist/cjs/client/status.js +7 -7
  24. package/dist/cjs/client/transport.d.ts +56 -4
  25. package/dist/cjs/client/transport.js +234 -25
  26. package/dist/cjs/enums/vat-rate.d.ts +2 -2
  27. package/dist/cjs/enums/vat-rate.js +1 -1
  28. package/dist/cjs/index.d.ts +4 -3
  29. package/dist/cjs/index.js +42 -13
  30. package/dist/{esm/rechnung → cjs/invoice}/api.d.ts +18 -17
  31. package/dist/cjs/{rechnung → invoice}/api.js +6 -6
  32. package/dist/{esm/rechnung → cjs/invoice}/auth.d.ts +2 -2
  33. package/dist/cjs/{rechnung → invoice}/auth.js +5 -5
  34. package/dist/{esm/rechnung/rechnen.d.ts → cjs/invoice/calc.d.ts} +27 -27
  35. package/dist/cjs/{rechnung/rechnen.js → invoice/calc.js} +54 -54
  36. package/dist/{esm/rechnung → cjs/invoice}/endpunkte.d.ts +23 -21
  37. package/dist/cjs/{rechnung → invoice}/endpunkte.js +52 -42
  38. package/dist/cjs/invoice/fehler.d.ts +31 -0
  39. package/dist/cjs/invoice/fehler.js +39 -0
  40. package/dist/cjs/invoice/index.d.ts +21 -0
  41. package/dist/cjs/invoice/index.js +86 -0
  42. package/dist/cjs/{rechnung → invoice}/summen.d.ts +12 -12
  43. package/dist/cjs/{rechnung → invoice}/summen.js +14 -14
  44. package/dist/cjs/invoice/texte.d.ts +224 -0
  45. package/dist/cjs/invoice/texte.js +425 -0
  46. package/dist/{esm/rechnung → cjs/invoice}/typen.d.ts +32 -11
  47. package/dist/cjs/{rechnung → invoice}/vertrag.d.ts +97 -71
  48. package/dist/cjs/{rechnung → invoice}/vertrag.js +144 -82
  49. package/dist/cjs/models/cancellation.d.ts +43 -24
  50. package/dist/cjs/models/cancellation.js +94 -46
  51. package/dist/cjs/models/hobex-receipt.d.ts +3 -3
  52. package/dist/cjs/models/hobex-receipt.js +35 -35
  53. package/dist/cjs/models/index.d.ts +6 -5
  54. package/dist/cjs/models/index.js +22 -2
  55. package/dist/cjs/models/payment-errors.d.ts +32 -15
  56. package/dist/cjs/models/payment-errors.js +80 -32
  57. package/dist/cjs/models/receipt-company.d.ts +6 -5
  58. package/dist/cjs/models/receipt-company.js +4 -4
  59. package/dist/cjs/models/receipt-email.d.ts +32 -18
  60. package/dist/cjs/models/receipt-email.js +69 -24
  61. package/dist/cjs/models/receipt-errors.d.ts +39 -0
  62. package/dist/cjs/models/receipt-errors.js +94 -0
  63. package/dist/cjs/models/receipt-item.d.ts +9 -1
  64. package/dist/cjs/models/receipt-item.js +3 -0
  65. package/dist/cjs/models/receipt-summary.d.ts +10 -4
  66. package/dist/cjs/models/receipt-summary.js +10 -4
  67. package/dist/cjs/models/receipt.d.ts +31 -2
  68. package/dist/cjs/models/receipt.js +12 -1
  69. package/dist/cjs/models/voucher.d.ts +7 -6
  70. package/dist/cjs/models/voucher.js +2 -7
  71. package/dist/cjs/partner/ablauf.d.ts +10 -10
  72. package/dist/cjs/partner/ablauf.js +29 -29
  73. package/dist/cjs/partner/api.d.ts +26 -23
  74. package/dist/cjs/partner/api.js +11 -13
  75. package/dist/cjs/partner/auth.d.ts +1 -1
  76. package/dist/cjs/partner/auth.js +2 -2
  77. package/dist/cjs/partner/betrieb.d.ts +7 -7
  78. package/dist/cjs/partner/betrieb.js +10 -10
  79. package/dist/cjs/partner/endpunkte.d.ts +27 -14
  80. package/dist/cjs/partner/endpunkte.js +80 -39
  81. package/dist/cjs/partner/fehler.d.ts +60 -30
  82. package/dist/cjs/partner/fehler.js +99 -43
  83. package/dist/cjs/partner/index.d.ts +13 -12
  84. package/dist/cjs/partner/index.js +35 -22
  85. package/dist/cjs/partner/secret.d.ts +3 -3
  86. package/dist/cjs/partner/secret.js +6 -6
  87. package/dist/cjs/partner/typen.d.ts +129 -71
  88. package/dist/cjs/partner/typen.js +76 -3
  89. package/dist/cjs/partner/webhook-signatur.d.ts +2 -2
  90. package/dist/cjs/partner/webhook-signatur.js +12 -12
  91. package/dist/cjs/partner/webhooks.d.ts +60 -32
  92. package/dist/cjs/partner/webhooks.js +40 -34
  93. package/dist/cjs/payments/hobex.d.ts +11 -3
  94. package/dist/cjs/payments/hobex.js +17 -5
  95. package/dist/cjs/payments/stripe.d.ts +5 -2
  96. package/dist/cjs/payments/stripe.js +10 -5
  97. package/dist/cjs/pos/artikel.d.ts +90 -0
  98. package/dist/cjs/pos/artikel.js +89 -0
  99. package/dist/cjs/pos/client.d.ts +27 -0
  100. package/dist/cjs/pos/client.js +144 -0
  101. package/dist/cjs/pos/drucker.d.ts +86 -0
  102. package/dist/cjs/pos/drucker.js +78 -0
  103. package/dist/cjs/pos/errors.d.ts +36 -0
  104. package/dist/cjs/pos/errors.js +95 -0
  105. package/dist/cjs/pos/index.d.ts +15 -0
  106. package/dist/cjs/pos/index.js +102 -0
  107. package/dist/cjs/pos/settings.d.ts +313 -0
  108. package/dist/cjs/pos/settings.js +376 -0
  109. package/dist/cjs/pos/texte.d.ts +883 -0
  110. package/dist/cjs/pos/texte.js +489 -0
  111. package/dist/cjs/{kasse → pos}/trinkgeld.d.ts +1 -1
  112. package/dist/cjs/{kasse → pos}/trinkgeld.js +2 -2
  113. package/dist/cjs/printing/escpos.d.ts +29 -29
  114. package/dist/cjs/printing/escpos.js +61 -61
  115. package/dist/cjs/printing/index.d.ts +2 -2
  116. package/dist/cjs/printing/index.js +17 -17
  117. package/dist/cjs/printing/qr-groesse.d.ts +38 -38
  118. package/dist/cjs/printing/qr-groesse.js +47 -47
  119. package/dist/cjs/printing/webusb.d.ts +2 -2
  120. package/dist/cjs/printing/webusb.js +4 -4
  121. package/dist/cjs/react/index.d.ts +21 -21
  122. package/dist/cjs/react/index.js +40 -30
  123. package/dist/cjs/receipt/bild.d.ts +4 -4
  124. package/dist/cjs/receipt/bild.js +11 -11
  125. package/dist/cjs/receipt/blatt.d.ts +46 -46
  126. package/dist/cjs/receipt/blatt.js +59 -59
  127. package/dist/cjs/receipt/discount.d.ts +1 -1
  128. package/dist/cjs/receipt/discount.js +8 -8
  129. package/dist/cjs/receipt/due.d.ts +86 -0
  130. package/dist/cjs/receipt/due.js +261 -0
  131. package/dist/cjs/receipt/epos.d.ts +22 -22
  132. package/dist/cjs/receipt/epos.js +45 -45
  133. package/dist/cjs/receipt/grid.d.ts +10 -10
  134. package/dist/cjs/receipt/grid.js +20 -20
  135. package/dist/cjs/receipt/index.d.ts +9 -8
  136. package/dist/cjs/receipt/index.js +26 -23
  137. package/dist/cjs/receipt/layout-escpos.d.ts +24 -24
  138. package/dist/cjs/receipt/layout-escpos.js +49 -49
  139. package/dist/cjs/receipt/layout.d.ts +28 -23
  140. package/dist/cjs/receipt/layout.js +45 -21
  141. package/dist/cjs/receipt/marke-daten.d.ts +8 -8
  142. package/dist/cjs/receipt/marke-daten.js +8 -8
  143. package/dist/cjs/receipt/marke.d.ts +7 -7
  144. package/dist/cjs/receipt/marke.js +10 -10
  145. package/dist/cjs/register/errors.d.ts +61 -0
  146. package/dist/cjs/register/errors.js +112 -0
  147. package/dist/cjs/register/index.d.ts +14 -1
  148. package/dist/cjs/register/index.js +20 -1
  149. package/dist/cjs/register/pairing.d.ts +55 -36
  150. package/dist/cjs/register/pairing.js +33 -29
  151. package/dist/cjs/register/session.d.ts +5 -5
  152. package/dist/cjs/register/session.js +7 -7
  153. package/dist/cjs/stored/draht.d.ts +45 -0
  154. package/dist/cjs/stored/draht.js +220 -0
  155. package/dist/cjs/stored/einstellungen.d.ts +23 -0
  156. package/dist/cjs/stored/einstellungen.js +200 -0
  157. package/dist/cjs/stored/index.d.ts +109 -0
  158. package/dist/cjs/stored/index.js +225 -0
  159. package/dist/cjs/stored/vokabular.d.ts +18 -0
  160. package/dist/cjs/stored/vokabular.js +389 -0
  161. package/dist/cjs/version.d.ts +7 -0
  162. package/dist/cjs/version.js +10 -0
  163. package/dist/cjs/vienna-time.d.ts +1 -1
  164. package/dist/cjs/vienna-time.js +2 -2
  165. package/dist/esm/client/api.d.ts +7 -6
  166. package/dist/esm/client/api.js +4 -4
  167. package/dist/esm/client/aufrufe.d.ts +29 -5
  168. package/dist/esm/client/aufrufe.js +111 -1
  169. package/dist/esm/client/auth.d.ts +2 -0
  170. package/dist/esm/client/auth.js +16 -1
  171. package/dist/esm/client/cashregisters.d.ts +1 -1
  172. package/dist/esm/client/cashregisters.js +2 -2
  173. package/dist/esm/client/errors.d.ts +94 -19
  174. package/dist/esm/client/errors.js +129 -27
  175. package/dist/esm/client/fehlercodes.d.ts +9 -0
  176. package/dist/esm/client/fehlercodes.js +32 -0
  177. package/dist/esm/client/index.d.ts +5 -5
  178. package/dist/esm/client/index.js +5 -5
  179. package/dist/esm/client/receipts.d.ts +131 -124
  180. package/dist/esm/client/receipts.js +195 -140
  181. package/dist/esm/client/reports.d.ts +26 -4
  182. package/dist/esm/client/reports.js +36 -4
  183. package/dist/esm/client/status.d.ts +3 -3
  184. package/dist/esm/client/status.js +7 -7
  185. package/dist/esm/client/transport.d.ts +56 -4
  186. package/dist/esm/client/transport.js +233 -24
  187. package/dist/esm/enums/vat-rate.d.ts +2 -2
  188. package/dist/esm/enums/vat-rate.js +1 -1
  189. package/dist/esm/index.d.ts +4 -3
  190. package/dist/esm/index.js +4 -3
  191. package/dist/{cjs/rechnung → esm/invoice}/api.d.ts +18 -17
  192. package/dist/esm/{rechnung → invoice}/api.js +6 -6
  193. package/dist/{cjs/rechnung → esm/invoice}/auth.d.ts +2 -2
  194. package/dist/esm/{rechnung → invoice}/auth.js +4 -4
  195. package/dist/{cjs/rechnung/rechnen.d.ts → esm/invoice/calc.d.ts} +27 -27
  196. package/dist/esm/{rechnung/rechnen.js → invoice/calc.js} +45 -45
  197. package/dist/{cjs/rechnung → esm/invoice}/endpunkte.d.ts +23 -21
  198. package/dist/esm/{rechnung → invoice}/endpunkte.js +52 -42
  199. package/dist/esm/invoice/fehler.d.ts +31 -0
  200. package/dist/esm/invoice/fehler.js +33 -0
  201. package/dist/esm/invoice/index.d.ts +21 -0
  202. package/dist/esm/invoice/index.js +20 -0
  203. package/dist/esm/{rechnung → invoice}/summen.d.ts +12 -12
  204. package/dist/esm/{rechnung → invoice}/summen.js +12 -12
  205. package/dist/esm/invoice/texte.d.ts +224 -0
  206. package/dist/esm/invoice/texte.js +421 -0
  207. package/dist/{cjs/rechnung → esm/invoice}/typen.d.ts +32 -11
  208. package/dist/esm/{rechnung → invoice}/vertrag.d.ts +97 -71
  209. package/dist/esm/{rechnung → invoice}/vertrag.js +143 -81
  210. package/dist/esm/models/cancellation.d.ts +43 -24
  211. package/dist/esm/models/cancellation.js +90 -45
  212. package/dist/esm/models/hobex-receipt.d.ts +3 -3
  213. package/dist/esm/models/hobex-receipt.js +35 -35
  214. package/dist/esm/models/index.d.ts +6 -5
  215. package/dist/esm/models/index.js +6 -5
  216. package/dist/esm/models/payment-errors.d.ts +32 -15
  217. package/dist/esm/models/payment-errors.js +77 -32
  218. package/dist/esm/models/receipt-company.d.ts +6 -5
  219. package/dist/esm/models/receipt-company.js +4 -4
  220. package/dist/esm/models/receipt-email.d.ts +32 -18
  221. package/dist/esm/models/receipt-email.js +65 -23
  222. package/dist/esm/models/receipt-errors.d.ts +39 -0
  223. package/dist/esm/models/receipt-errors.js +87 -0
  224. package/dist/esm/models/receipt-item.d.ts +9 -1
  225. package/dist/esm/models/receipt-item.js +3 -0
  226. package/dist/esm/models/receipt-summary.d.ts +10 -4
  227. package/dist/esm/models/receipt-summary.js +9 -3
  228. package/dist/esm/models/receipt.d.ts +31 -2
  229. package/dist/esm/models/receipt.js +12 -2
  230. package/dist/esm/models/voucher.d.ts +7 -6
  231. package/dist/esm/models/voucher.js +2 -7
  232. package/dist/esm/partner/ablauf.d.ts +10 -10
  233. package/dist/esm/partner/ablauf.js +27 -27
  234. package/dist/esm/partner/api.d.ts +26 -23
  235. package/dist/esm/partner/api.js +13 -15
  236. package/dist/esm/partner/auth.d.ts +1 -1
  237. package/dist/esm/partner/auth.js +2 -2
  238. package/dist/esm/partner/betrieb.d.ts +7 -7
  239. package/dist/esm/partner/betrieb.js +8 -8
  240. package/dist/esm/partner/endpunkte.d.ts +27 -14
  241. package/dist/esm/partner/endpunkte.js +79 -39
  242. package/dist/esm/partner/fehler.d.ts +60 -30
  243. package/dist/esm/partner/fehler.js +91 -35
  244. package/dist/esm/partner/index.d.ts +13 -12
  245. package/dist/esm/partner/index.js +12 -11
  246. package/dist/esm/partner/secret.d.ts +3 -3
  247. package/dist/esm/partner/secret.js +5 -5
  248. package/dist/esm/partner/typen.d.ts +129 -71
  249. package/dist/esm/partner/typen.js +75 -2
  250. package/dist/esm/partner/webhook-signatur.d.ts +2 -2
  251. package/dist/esm/partner/webhook-signatur.js +12 -12
  252. package/dist/esm/partner/webhooks.d.ts +60 -32
  253. package/dist/esm/partner/webhooks.js +38 -32
  254. package/dist/esm/payments/hobex.d.ts +11 -3
  255. package/dist/esm/payments/hobex.js +18 -6
  256. package/dist/esm/payments/stripe.d.ts +5 -2
  257. package/dist/esm/payments/stripe.js +11 -6
  258. package/dist/esm/pos/artikel.d.ts +90 -0
  259. package/dist/esm/pos/artikel.js +79 -0
  260. package/dist/esm/pos/client.d.ts +27 -0
  261. package/dist/esm/pos/client.js +137 -0
  262. package/dist/esm/pos/drucker.d.ts +86 -0
  263. package/dist/esm/pos/drucker.js +71 -0
  264. package/dist/esm/pos/errors.d.ts +36 -0
  265. package/dist/esm/pos/errors.js +88 -0
  266. package/dist/esm/pos/index.d.ts +15 -0
  267. package/dist/esm/pos/index.js +20 -0
  268. package/dist/esm/pos/settings.d.ts +313 -0
  269. package/dist/esm/pos/settings.js +367 -0
  270. package/dist/esm/pos/texte.d.ts +883 -0
  271. package/dist/esm/pos/texte.js +481 -0
  272. package/dist/esm/{kasse → pos}/trinkgeld.d.ts +1 -1
  273. package/dist/esm/{kasse → pos}/trinkgeld.js +2 -2
  274. package/dist/esm/printing/escpos.d.ts +29 -29
  275. package/dist/esm/printing/escpos.js +56 -56
  276. package/dist/esm/printing/index.d.ts +2 -2
  277. package/dist/esm/printing/index.js +2 -2
  278. package/dist/esm/printing/qr-groesse.d.ts +38 -38
  279. package/dist/esm/printing/qr-groesse.js +42 -42
  280. package/dist/esm/printing/webusb.d.ts +2 -2
  281. package/dist/esm/printing/webusb.js +4 -4
  282. package/dist/esm/react/index.d.ts +21 -21
  283. package/dist/esm/react/index.js +39 -29
  284. package/dist/esm/receipt/bild.d.ts +4 -4
  285. package/dist/esm/receipt/bild.js +11 -11
  286. package/dist/esm/receipt/blatt.d.ts +46 -46
  287. package/dist/esm/receipt/blatt.js +55 -55
  288. package/dist/esm/receipt/discount.d.ts +1 -1
  289. package/dist/esm/receipt/discount.js +7 -7
  290. package/dist/esm/receipt/due.d.ts +86 -0
  291. package/dist/esm/receipt/due.js +257 -0
  292. package/dist/esm/receipt/epos.d.ts +22 -22
  293. package/dist/esm/receipt/epos.js +47 -47
  294. package/dist/esm/receipt/grid.d.ts +10 -10
  295. package/dist/esm/receipt/grid.js +18 -18
  296. package/dist/esm/receipt/index.d.ts +9 -8
  297. package/dist/esm/receipt/index.js +9 -8
  298. package/dist/esm/receipt/layout-escpos.d.ts +24 -24
  299. package/dist/esm/receipt/layout-escpos.js +51 -51
  300. package/dist/esm/receipt/layout.d.ts +28 -23
  301. package/dist/esm/receipt/layout.js +44 -20
  302. package/dist/esm/receipt/marke-daten.d.ts +8 -8
  303. package/dist/esm/receipt/marke-daten.js +7 -7
  304. package/dist/esm/receipt/marke.d.ts +7 -7
  305. package/dist/esm/receipt/marke.js +10 -10
  306. package/dist/esm/register/errors.d.ts +61 -0
  307. package/dist/esm/register/errors.js +104 -0
  308. package/dist/esm/register/index.d.ts +14 -1
  309. package/dist/esm/register/index.js +13 -0
  310. package/dist/esm/register/pairing.d.ts +55 -36
  311. package/dist/esm/register/pairing.js +33 -29
  312. package/dist/esm/register/session.d.ts +5 -5
  313. package/dist/esm/register/session.js +7 -7
  314. package/dist/esm/stored/draht.d.ts +45 -0
  315. package/dist/esm/stored/draht.js +208 -0
  316. package/dist/esm/stored/einstellungen.d.ts +23 -0
  317. package/dist/esm/stored/einstellungen.js +196 -0
  318. package/dist/esm/stored/index.d.ts +109 -0
  319. package/dist/esm/stored/index.js +217 -0
  320. package/dist/esm/stored/vokabular.d.ts +18 -0
  321. package/dist/esm/stored/vokabular.js +386 -0
  322. package/dist/esm/version.d.ts +7 -0
  323. package/dist/esm/version.js +7 -0
  324. package/dist/esm/vienna-time.d.ts +1 -1
  325. package/dist/esm/vienna-time.js +2 -2
  326. package/fixtures/{erwartet/storno-rabatt.lines.json → expected/cancellation-discount.lines.json} +2 -2
  327. package/fixtures/expected/cancellation-discount.sheet32.json +248 -0
  328. package/fixtures/{erwartet/storno-rabatt.blatt48.json → expected/cancellation-discount.sheet48.json} +119 -119
  329. package/fixtures/{erwartet/storno-voll.lines.json → expected/cancellation-full.lines.json} +2 -2
  330. package/fixtures/expected/cancellation-full.sheet32.json +218 -0
  331. package/fixtures/{erwartet/storno-voll.blatt48.json → expected/cancellation-full.sheet48.json} +107 -107
  332. package/fixtures/{erwartet/storno-teil.lines.json → expected/cancellation-partial.lines.json} +2 -2
  333. package/fixtures/expected/cancellation-partial.sheet32.json +206 -0
  334. package/fixtures/{erwartet/storno-teil.blatt48.json → expected/cancellation-partial.sheet48.json} +101 -101
  335. package/fixtures/{erwartet/storno-split-voll.lines.json → expected/cancellation-split-full.lines.json} +2 -2
  336. package/fixtures/expected/cancellation-split-full.sheet32.json +320 -0
  337. package/fixtures/{erwartet/storno-split-voll.blatt48.json → expected/cancellation-split-full.sheet48.json} +158 -158
  338. package/fixtures/{erwartet/storno-split-teil.lines.json → expected/cancellation-split-partial.lines.json} +2 -2
  339. package/fixtures/expected/cancellation-split-partial.sheet32.json +230 -0
  340. package/fixtures/{erwartet/storno-split-teil.blatt48.json → expected/cancellation-split-partial.sheet48.json} +113 -113
  341. package/fixtures/{erwartet/karte-eigener.lines.json → expected/card-custom.lines.json} +1 -1
  342. package/fixtures/expected/card-custom.sheet32.json +158 -0
  343. package/fixtures/{erwartet/karte-eigener.blatt48.json → expected/card-custom.sheet48.json} +80 -80
  344. package/fixtures/{erwartet/karte-gptom-ios.lines.json → expected/card-gptom-ios.lines.json} +1 -1
  345. package/fixtures/expected/card-gptom-ios.sheet32.json +230 -0
  346. package/fixtures/{erwartet/karte-gptom-ios.blatt48.json → expected/card-gptom-ios.sheet48.json} +116 -116
  347. package/fixtures/{erwartet/karte-gptom.lines.json → expected/card-gptom.lines.json} +1 -1
  348. package/fixtures/expected/card-gptom.sheet32.json +230 -0
  349. package/fixtures/{erwartet/karte-gptom.blatt48.json → expected/card-gptom.sheet48.json} +116 -116
  350. package/fixtures/{erwartet/karte-hobex-cloud.lines.json → expected/card-hobex-cloud.lines.json} +1 -1
  351. package/fixtures/expected/card-hobex-cloud.sheet32.json +200 -0
  352. package/fixtures/{erwartet/karte-hobex-cloud.blatt48.json → expected/card-hobex-cloud.sheet48.json} +101 -101
  353. package/fixtures/{erwartet/karte-hobex-hps.lines.json → expected/card-hobex-hps.lines.json} +1 -1
  354. package/fixtures/expected/card-hobex-hps.sheet32.json +224 -0
  355. package/fixtures/{erwartet/karte-hobex-hps.blatt48.json → expected/card-hobex-hps.sheet48.json} +113 -113
  356. package/fixtures/{erwartet/karte-mypos.lines.json → expected/card-mypos.lines.json} +1 -1
  357. package/fixtures/expected/card-mypos.sheet32.json +254 -0
  358. package/fixtures/{erwartet/karte-mypos.blatt48.json → expected/card-mypos.sheet48.json} +122 -122
  359. package/fixtures/{erwartet/karte-stripe-eps.lines.json → expected/card-stripe-eps.lines.json} +1 -1
  360. package/fixtures/expected/card-stripe-eps.sheet32.json +194 -0
  361. package/fixtures/{erwartet/karte-stripe-eps.blatt48.json → expected/card-stripe-eps.sheet48.json} +98 -98
  362. package/fixtures/{erwartet/karte-stripe.lines.json → expected/card-stripe.lines.json} +1 -1
  363. package/fixtures/expected/card-stripe.sheet32.json +212 -0
  364. package/fixtures/{erwartet/karte-stripe.blatt48.json → expected/card-stripe.sheet48.json} +107 -107
  365. package/fixtures/{erwartet/karte-sumup.lines.json → expected/card-sumup.lines.json} +1 -1
  366. package/fixtures/expected/card-sumup.sheet32.json +218 -0
  367. package/fixtures/{erwartet/karte-sumup.blatt48.json → expected/card-sumup.sheet48.json} +104 -104
  368. package/fixtures/{erwartet/rabattzeilen.lines.json → expected/discount-lines.lines.json} +1 -1
  369. package/fixtures/expected/discount-lines.sheet32.json +200 -0
  370. package/fixtures/{erwartet/rabattzeilen.blatt48.json → expected/discount-lines.sheet48.json} +98 -98
  371. package/fixtures/{erwartet/rabatt-chef-trinkgeld.lines.json → expected/discount-owner-tip.lines.json} +1 -1
  372. package/fixtures/expected/discount-owner-tip.sheet32.json +212 -0
  373. package/fixtures/{erwartet/rabatt-chef-trinkgeld.blatt48.json → expected/discount-owner-tip.sheet48.json} +104 -104
  374. package/fixtures/{erwartet/rabatt-einfach.lines.json → expected/discount-simple.lines.json} +1 -1
  375. package/fixtures/expected/discount-simple.sheet32.json +182 -0
  376. package/fixtures/{erwartet/rabatt-einfach.blatt48.json → expected/discount-simple.sheet48.json} +89 -89
  377. package/fixtures/{erwartet/rabatt-trinkgeld.lines.json → expected/discount-tip.lines.json} +1 -1
  378. package/fixtures/expected/discount-tip.sheet32.json +212 -0
  379. package/fixtures/{erwartet/rabatt-trinkgeld.blatt48.json → expected/discount-tip.sheet48.json} +104 -104
  380. package/fixtures/{erwartet/rabatt-wertgutschein.lines.json → expected/discount-value-voucher.lines.json} +1 -1
  381. package/fixtures/expected/discount-value-voucher.sheet32.json +218 -0
  382. package/fixtures/{erwartet/rabatt-wertgutschein.blatt48.json → expected/discount-value-voucher.sheet48.json} +107 -107
  383. package/fixtures/{erwartet/langer-artikelname.lines.json → expected/long-item-name.lines.json} +1 -1
  384. package/fixtures/expected/long-item-name.sheet32.json +176 -0
  385. package/fixtures/{erwartet/langer-artikelname.blatt48.json → expected/long-item-name.sheet48.json} +86 -86
  386. package/fixtures/{erwartet/verkauf-karte.lines.json → expected/sale-card.lines.json} +1 -1
  387. package/fixtures/expected/sale-card.sheet32.json +176 -0
  388. package/fixtures/{erwartet/verkauf-karte.blatt48.json → expected/sale-card.sheet48.json} +86 -86
  389. package/fixtures/{erwartet/verkauf-bar.lines.json → expected/sale-cash.lines.json} +1 -1
  390. package/fixtures/expected/sale-cash.sheet32.json +176 -0
  391. package/fixtures/{erwartet/verkauf-bar.blatt48.json → expected/sale-cash.sheet48.json} +86 -86
  392. package/fixtures/{erwartet/verkauf-kleinunternehmer.lines.json → expected/sale-small-business.lines.json} +1 -1
  393. package/fixtures/expected/sale-small-business.sheet32.json +182 -0
  394. package/fixtures/{erwartet/verkauf-kleinunternehmer.blatt48.json → expected/sale-small-business.sheet48.json} +89 -89
  395. package/fixtures/{erwartet/signaturausfall-verkauf.lines.json → expected/signature-outage-sale.lines.json} +1 -1
  396. package/fixtures/expected/signature-outage-sale.sheet32.json +194 -0
  397. package/fixtures/{erwartet/signaturausfall-verkauf.blatt48.json → expected/signature-outage-sale.sheet48.json} +92 -92
  398. package/fixtures/{erwartet/split-karte-karte-bar.lines.json → expected/split-card-card-cash.lines.json} +1 -1
  399. package/fixtures/expected/split-card-card-cash.sheet32.json +356 -0
  400. package/fixtures/{erwartet/split-karte-karte-bar.blatt48.json → expected/split-card-card-cash.sheet48.json} +170 -170
  401. package/fixtures/{erwartet/split-bar-rueckgeld.lines.json → expected/split-cash-change.lines.json} +1 -1
  402. package/fixtures/expected/split-cash-change.sheet32.json +194 -0
  403. package/fixtures/{erwartet/split-bar-rueckgeld.blatt48.json → expected/split-cash-change.sheet48.json} +92 -92
  404. package/fixtures/{erwartet/split-langer-betrag.lines.json → expected/split-long-amount.lines.json} +1 -1
  405. package/fixtures/expected/split-long-amount.sheet32.json +266 -0
  406. package/fixtures/{erwartet/split-langer-betrag.blatt48.json → expected/split-long-amount.sheet48.json} +131 -131
  407. package/fixtures/{erwartet/split-eine-karte-trinkgeld.lines.json → expected/split-one-card-tip.lines.json} +1 -1
  408. package/fixtures/expected/split-one-card-tip.sheet32.json +242 -0
  409. package/fixtures/{erwartet/split-eine-karte-trinkgeld.blatt48.json → expected/split-one-card-tip.sheet48.json} +113 -113
  410. package/fixtures/{erwartet/split-tischrunde-trinkgeld.lines.json → expected/split-table-round-tip.lines.json} +1 -1
  411. package/fixtures/expected/split-table-round-tip.sheet32.json +470 -0
  412. package/fixtures/{erwartet/split-tischrunde-trinkgeld.blatt48.json → expected/split-table-round-tip.sheet48.json} +218 -218
  413. package/fixtures/{erwartet/split-trinkgeld-karte.lines.json → expected/split-tip-card.lines.json} +1 -1
  414. package/fixtures/expected/split-tip-card.sheet32.json +272 -0
  415. package/fixtures/{erwartet/split-trinkgeld-karte.blatt48.json → expected/split-tip-card.sheet48.json} +128 -128
  416. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.lines.json → expected/split-two-cards-same-provider.lines.json} +1 -1
  417. package/fixtures/expected/split-two-cards-same-provider.sheet32.json +326 -0
  418. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.blatt48.json → expected/split-two-cards-same-provider.sheet48.json} +149 -149
  419. package/fixtures/{erwartet/testkasse-verkauf.lines.json → expected/test-cashregister-sale.lines.json} +3 -3
  420. package/fixtures/expected/test-cashregister-sale.sheet32.json +224 -0
  421. package/fixtures/{erwartet/testkasse-verkauf.blatt48.json → expected/test-cashregister-sale.sheet48.json} +110 -110
  422. package/fixtures/{erwartet/testsignatur-verkauf.lines.json → expected/test-signature-sale.lines.json} +3 -3
  423. package/fixtures/expected/test-signature-sale.sheet32.json +236 -0
  424. package/fixtures/{erwartet/testsignatur-verkauf.blatt48.json → expected/test-signature-sale.sheet48.json} +110 -110
  425. package/fixtures/{erwartet → expected}/training.lines.json +2 -2
  426. package/fixtures/expected/training.sheet32.json +236 -0
  427. package/fixtures/{erwartet/training.blatt48.json → expected/training.sheet48.json} +110 -110
  428. package/fixtures/{erwartet/null-jahr.lines.json → expected/zero-annual.lines.json} +2 -2
  429. package/fixtures/expected/zero-annual.sheet32.json +212 -0
  430. package/fixtures/{erwartet/null-jahr.blatt48.json → expected/zero-annual.sheet48.json} +95 -95
  431. package/fixtures/{erwartet/null-schluss.lines.json → expected/zero-final.lines.json} +2 -2
  432. package/fixtures/expected/zero-final.sheet32.json +206 -0
  433. package/fixtures/{erwartet/null-schluss.blatt48.json → expected/zero-final.sheet48.json} +95 -95
  434. package/fixtures/{erwartet/null-pruef.lines.json → expected/zero-manual.lines.json} +2 -2
  435. package/fixtures/expected/zero-manual.sheet32.json +206 -0
  436. package/fixtures/{erwartet/null-pruef.blatt48.json → expected/zero-manual.sheet48.json} +95 -95
  437. package/fixtures/{erwartet/null-monat.lines.json → expected/zero-monthly.lines.json} +2 -2
  438. package/fixtures/expected/zero-monthly.sheet32.json +206 -0
  439. package/fixtures/{erwartet/null-monat.blatt48.json → expected/zero-monthly.sheet48.json} +95 -95
  440. package/fixtures/{erwartet/null-ausfall.lines.json → expected/zero-outage-end.lines.json} +2 -2
  441. package/fixtures/expected/zero-outage-end.sheet32.json +206 -0
  442. package/fixtures/{erwartet/null-ausfall.blatt48.json → expected/zero-outage-end.sheet48.json} +95 -95
  443. package/fixtures/{erwartet/null-start.lines.json → expected/zero-start.lines.json} +2 -2
  444. package/fixtures/expected/zero-start.sheet32.json +206 -0
  445. package/fixtures/{erwartet/null-start.blatt48.json → expected/zero-start.sheet48.json} +95 -95
  446. package/fixtures/hobex-hps-codes.json +12 -12
  447. package/fixtures/invoice-api-examples/brands-ok.json +8 -0
  448. package/fixtures/{rechnung-api-beispiele/credit-fehler-grund.json → invoice-api-examples/credit-error-reason.json} +6 -6
  449. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/credit-ok.json +6 -6
  450. package/fixtures/{rechnung-api-beispiele/customer-fehler-uid.json → invoice-api-examples/customer-error-vat-id.json} +4 -4
  451. package/fixtures/invoice-api-examples/customer-get-error-both.json +15 -0
  452. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/customer-ok.json +4 -4
  453. package/fixtures/{rechnung-api-beispiele/customer-search-fehler-leer.json → invoice-api-examples/customer-search-error-empty.json} +4 -4
  454. package/fixtures/{rechnung-api-beispiele/issue-rabatt.json → invoice-api-examples/issue-discount.json} +6 -6
  455. package/fixtures/{rechnung-api-beispiele/issue-englisch.json → invoice-api-examples/issue-english.json} +7 -7
  456. package/fixtures/{rechnung-api-beispiele/issue-fehler-cent.json → invoice-api-examples/issue-error-cent.json} +6 -6
  457. package/fixtures/{rechnung-api-beispiele/issue-fehler-sprache.json → invoice-api-examples/issue-error-language.json} +5 -5
  458. package/fixtures/{rechnung-api-beispiele/issue-fehler-negativ.json → invoice-api-examples/issue-error-negative.json} +6 -6
  459. package/fixtures/{rechnung-api-beispiele/issue-fehler-zahlungsart.json → invoice-api-examples/issue-error-payment-method.json} +8 -6
  460. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-beide.json → invoice-api-examples/issue-error-price-both.json} +6 -6
  461. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-fehlt.json → invoice-api-examples/issue-error-price-missing.json} +6 -6
  462. package/fixtures/{rechnung-api-beispiele/issue-fehler-menge.json → invoice-api-examples/issue-error-quantity.json} +6 -6
  463. package/fixtures/{rechnung-api-beispiele/issue-fehler-satz.json → invoice-api-examples/issue-error-rate.json} +6 -6
  464. package/fixtures/{rechnung-api-beispiele/issue-fehler-einheit.json → invoice-api-examples/issue-error-unit.json} +5 -5
  465. package/fixtures/{rechnung-api-beispiele/issue-fehler-unbekannt.json → invoice-api-examples/issue-error-unknown.json} +6 -6
  466. package/fixtures/{rechnung-api-beispiele/issue-brutto-20.json → invoice-api-examples/issue-gross-20.json} +6 -6
  467. package/fixtures/{rechnung-api-beispiele/issue-mikropreis.json → invoice-api-examples/issue-micro-price.json} +6 -6
  468. package/fixtures/{rechnung-api-beispiele/issue-gemischt.json → invoice-api-examples/issue-mixed.json} +6 -6
  469. package/fixtures/{rechnung-api-beispiele/issue-netto-20.json → invoice-api-examples/issue-net-20.json} +6 -6
  470. package/fixtures/{rechnung-api-beispiele/issue-bezahlt.json → invoice-api-examples/issue-paid.json} +7 -7
  471. package/fixtures/{rechnung-api-beispiele/issue-kleinunternehmer.json → invoice-api-examples/issue-small-business.json} +6 -6
  472. package/fixtures/invoice-api-examples/payment-error-on-site.json +17 -0
  473. package/fixtures/invoice-api-examples/payment-error-without-key.json +16 -0
  474. package/fixtures/invoice-api-examples/payment-recorded-later.json +14 -0
  475. package/fixtures/{rechnung-api-beispiele/setup-status-fehler-feld.json → invoice-api-examples/setup-status-error-field.json} +4 -4
  476. package/fixtures/invoice-api-examples/setup-status-ok.json +8 -0
  477. package/fixtures/{rechnung-api.schema.json → invoice-api.schema.json} +24 -24
  478. package/fixtures/{rechnung-rechnen-zufall.json → invoice-calc-random.json} +828 -828
  479. package/fixtures/{rechnung-rechnen.json → invoice-calc.json} +47 -47
  480. package/fixtures/invoice-texts.json +464 -0
  481. package/fixtures/{rechnung-summen.json → invoice-totals.json} +25 -25
  482. package/fixtures/{position-aus-euro.json → item-from-euro.json} +26 -26
  483. package/fixtures/manifest.json +252 -252
  484. package/fixtures/pos-message-cases.json +32 -0
  485. package/fixtures/pos-settings-defaults.json +149 -0
  486. package/fixtures/{kasse-texte.json → pos-texts.json} +416 -416
  487. package/fixtures/receipt-due-generated.json +1218 -0
  488. package/fixtures/{belege/storno-rabatt.json → receipts/cancellation-discount.json} +3 -3
  489. package/fixtures/{belege/storno-voll.json → receipts/cancellation-full.json} +3 -3
  490. package/fixtures/{belege/storno-teil.json → receipts/cancellation-partial.json} +3 -3
  491. package/fixtures/{belege/storno-split-voll.json → receipts/cancellation-split-full.json} +3 -3
  492. package/fixtures/{belege/storno-split-teil.json → receipts/cancellation-split-partial.json} +3 -3
  493. package/fixtures/{belege/karte-eigener.json → receipts/card-custom.json} +2 -2
  494. package/fixtures/{belege/karte-gptom-ios.json → receipts/card-gptom-ios.json} +2 -2
  495. package/fixtures/{belege/karte-gptom.json → receipts/card-gptom.json} +2 -2
  496. package/fixtures/{belege/karte-hobex-cloud.json → receipts/card-hobex-cloud.json} +2 -2
  497. package/fixtures/{belege/karte-hobex-hps.json → receipts/card-hobex-hps.json} +2 -2
  498. package/fixtures/{belege/karte-mypos.json → receipts/card-mypos.json} +2 -2
  499. package/fixtures/{belege/karte-stripe-eps.json → receipts/card-stripe-eps.json} +2 -2
  500. package/fixtures/{belege/karte-stripe.json → receipts/card-stripe.json} +2 -2
  501. package/fixtures/{belege/karte-sumup.json → receipts/card-sumup.json} +2 -2
  502. package/fixtures/{belege/rabattzeilen.json → receipts/discount-lines.json} +2 -2
  503. package/fixtures/{belege/rabatt-chef-trinkgeld.json → receipts/discount-owner-tip.json} +2 -2
  504. package/fixtures/{belege/rabatt-einfach.json → receipts/discount-simple.json} +2 -2
  505. package/fixtures/{belege/rabatt-trinkgeld.json → receipts/discount-tip.json} +2 -2
  506. package/fixtures/{belege/rabatt-wertgutschein.json → receipts/discount-value-voucher.json} +2 -2
  507. package/fixtures/{belege/langer-artikelname.json → receipts/long-item-name.json} +2 -2
  508. package/fixtures/{belege/verkauf-karte.json → receipts/sale-card.json} +2 -2
  509. package/fixtures/{belege/verkauf-bar.json → receipts/sale-cash.json} +2 -2
  510. package/fixtures/{belege/verkauf-kleinunternehmer.json → receipts/sale-small-business.json} +1 -1
  511. package/fixtures/{belege/signaturausfall-verkauf.json → receipts/signature-outage-sale.json} +2 -2
  512. package/fixtures/{belege/split-karte-karte-bar.json → receipts/split-card-card-cash.json} +2 -2
  513. package/fixtures/{belege/split-bar-rueckgeld.json → receipts/split-cash-change.json} +2 -2
  514. package/fixtures/{belege/split-langer-betrag.json → receipts/split-long-amount.json} +2 -2
  515. package/fixtures/{belege/split-eine-karte-trinkgeld.json → receipts/split-one-card-tip.json} +2 -2
  516. package/fixtures/{belege/split-tischrunde-trinkgeld.json → receipts/split-table-round-tip.json} +2 -2
  517. package/fixtures/{belege/split-trinkgeld-karte.json → receipts/split-tip-card.json} +2 -2
  518. package/fixtures/{belege/split-zwei-karten-gleicher-anbieter.json → receipts/split-two-cards-same-provider.json} +2 -2
  519. package/fixtures/{belege/testsignatur-verkauf.json → receipts/test-cashregister-sale.json} +3 -3
  520. package/fixtures/{belege/testkasse-verkauf.json → receipts/test-signature-sale.json} +3 -3
  521. package/fixtures/{belege → receipts}/training.json +2 -2
  522. package/fixtures/{belege/null-jahr.json → receipts/zero-annual.json} +5 -5
  523. package/fixtures/{belege/null-schluss.json → receipts/zero-final.json} +5 -5
  524. package/fixtures/{belege/null-pruef.json → receipts/zero-manual.json} +5 -5
  525. package/fixtures/{belege/null-monat.json → receipts/zero-monthly.json} +5 -5
  526. package/fixtures/{belege/null-ausfall.json → receipts/zero-outage-end.json} +5 -5
  527. package/fixtures/{belege/null-start.json → receipts/zero-start.json} +5 -5
  528. package/fixtures/renames-1.0.json +1490 -0
  529. package/fixtures/{kasse-settings-standard.json → stored/pos-settings-defaults.json} +7 -7
  530. package/fixtures/surface.json +877 -0
  531. package/fixtures/v3/README.md +125 -0
  532. package/fixtures/v3/antworten/belege.json +4738 -0
  533. package/fixtures/v3/antworten/belegmail.json +154 -0
  534. package/fixtures/v3/antworten/kasse-belege.json +4304 -0
  535. package/fixtures/v3/antworten/kasse.json +12716 -0
  536. package/fixtures/v3/antworten/rechnungen.json +1712 -0
  537. package/fixtures/v3/antworten/storno.json +737 -0
  538. package/fixtures/v3/stored/belege.json +502 -0
  539. package/fixtures/v3/stored/kasse.json +3461 -0
  540. package/fixtures/v3/stored/rechnungen.json +750 -0
  541. package/fixtures/v3/v3-vokabular.json +3375 -0
  542. package/fixtures/v3/zahlbetrag-faelle.json +794 -0
  543. package/package.json +32 -18
  544. package/dist/cjs/kasse/artikel.d.ts +0 -83
  545. package/dist/cjs/kasse/artikel.js +0 -79
  546. package/dist/cjs/kasse/client.d.ts +0 -10
  547. package/dist/cjs/kasse/client.js +0 -38
  548. package/dist/cjs/kasse/drucker.d.ts +0 -59
  549. package/dist/cjs/kasse/drucker.js +0 -50
  550. package/dist/cjs/kasse/index.d.ts +0 -13
  551. package/dist/cjs/kasse/index.js +0 -83
  552. package/dist/cjs/kasse/settings.d.ts +0 -229
  553. package/dist/cjs/kasse/settings.js +0 -172
  554. package/dist/cjs/kasse/texte.d.ts +0 -868
  555. package/dist/cjs/kasse/texte.js +0 -474
  556. package/dist/cjs/rechnung/fehler.d.ts +0 -21
  557. package/dist/cjs/rechnung/fehler.js +0 -44
  558. package/dist/cjs/rechnung/index.d.ts +0 -21
  559. package/dist/cjs/rechnung/index.js +0 -82
  560. package/dist/cjs/rechnung/texte.d.ts +0 -222
  561. package/dist/cjs/rechnung/texte.js +0 -425
  562. package/dist/esm/kasse/artikel.d.ts +0 -83
  563. package/dist/esm/kasse/artikel.js +0 -70
  564. package/dist/esm/kasse/client.d.ts +0 -10
  565. package/dist/esm/kasse/client.js +0 -33
  566. package/dist/esm/kasse/drucker.d.ts +0 -59
  567. package/dist/esm/kasse/drucker.js +0 -45
  568. package/dist/esm/kasse/index.d.ts +0 -13
  569. package/dist/esm/kasse/index.js +0 -18
  570. package/dist/esm/kasse/settings.d.ts +0 -229
  571. package/dist/esm/kasse/settings.js +0 -168
  572. package/dist/esm/kasse/texte.d.ts +0 -868
  573. package/dist/esm/kasse/texte.js +0 -466
  574. package/dist/esm/rechnung/fehler.d.ts +0 -21
  575. package/dist/esm/rechnung/fehler.js +0 -39
  576. package/dist/esm/rechnung/index.d.ts +0 -21
  577. package/dist/esm/rechnung/index.js +0 -20
  578. package/dist/esm/rechnung/texte.d.ts +0 -222
  579. package/dist/esm/rechnung/texte.js +0 -421
  580. package/fixtures/erwartet/karte-eigener.blatt32.json +0 -158
  581. package/fixtures/erwartet/karte-gptom-ios.blatt32.json +0 -230
  582. package/fixtures/erwartet/karte-gptom.blatt32.json +0 -230
  583. package/fixtures/erwartet/karte-hobex-cloud.blatt32.json +0 -200
  584. package/fixtures/erwartet/karte-hobex-hps.blatt32.json +0 -224
  585. package/fixtures/erwartet/karte-mypos.blatt32.json +0 -254
  586. package/fixtures/erwartet/karte-stripe-eps.blatt32.json +0 -194
  587. package/fixtures/erwartet/karte-stripe.blatt32.json +0 -212
  588. package/fixtures/erwartet/karte-sumup.blatt32.json +0 -218
  589. package/fixtures/erwartet/langer-artikelname.blatt32.json +0 -176
  590. package/fixtures/erwartet/null-ausfall.blatt32.json +0 -206
  591. package/fixtures/erwartet/null-jahr.blatt32.json +0 -212
  592. package/fixtures/erwartet/null-monat.blatt32.json +0 -206
  593. package/fixtures/erwartet/null-pruef.blatt32.json +0 -206
  594. package/fixtures/erwartet/null-schluss.blatt32.json +0 -206
  595. package/fixtures/erwartet/null-start.blatt32.json +0 -206
  596. package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt32.json +0 -212
  597. package/fixtures/erwartet/rabatt-einfach.blatt32.json +0 -182
  598. package/fixtures/erwartet/rabatt-trinkgeld.blatt32.json +0 -212
  599. package/fixtures/erwartet/rabatt-wertgutschein.blatt32.json +0 -218
  600. package/fixtures/erwartet/rabattzeilen.blatt32.json +0 -200
  601. package/fixtures/erwartet/signaturausfall-verkauf.blatt32.json +0 -194
  602. package/fixtures/erwartet/split-bar-rueckgeld.blatt32.json +0 -194
  603. package/fixtures/erwartet/split-eine-karte-trinkgeld.blatt32.json +0 -242
  604. package/fixtures/erwartet/split-karte-karte-bar.blatt32.json +0 -356
  605. package/fixtures/erwartet/split-langer-betrag.blatt32.json +0 -266
  606. package/fixtures/erwartet/split-tischrunde-trinkgeld.blatt32.json +0 -470
  607. package/fixtures/erwartet/split-trinkgeld-karte.blatt32.json +0 -272
  608. package/fixtures/erwartet/split-zwei-karten-gleicher-anbieter.blatt32.json +0 -326
  609. package/fixtures/erwartet/storno-rabatt.blatt32.json +0 -248
  610. package/fixtures/erwartet/storno-split-teil.blatt32.json +0 -230
  611. package/fixtures/erwartet/storno-split-voll.blatt32.json +0 -320
  612. package/fixtures/erwartet/storno-teil.blatt32.json +0 -206
  613. package/fixtures/erwartet/storno-voll.blatt32.json +0 -218
  614. package/fixtures/erwartet/testkasse-verkauf.blatt32.json +0 -224
  615. package/fixtures/erwartet/testsignatur-verkauf.blatt32.json +0 -236
  616. package/fixtures/erwartet/training.blatt32.json +0 -236
  617. package/fixtures/erwartet/verkauf-bar.blatt32.json +0 -176
  618. package/fixtures/erwartet/verkauf-karte.blatt32.json +0 -176
  619. package/fixtures/erwartet/verkauf-kleinunternehmer.blatt32.json +0 -182
  620. package/fixtures/kasse-meldungen-faelle.json +0 -32
  621. package/fixtures/oberflaeche.json +0 -558
  622. package/fixtures/rechnung-api-beispiele/brands-ok.json +0 -8
  623. package/fixtures/rechnung-api-beispiele/customer-get-fehler-beide.json +0 -15
  624. package/fixtures/rechnung-api-beispiele/setup-status-ok.json +0 -8
  625. package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +0 -14
  626. package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +0 -15
  627. package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +0 -14
  628. package/fixtures/rechnung-texte.json +0 -464
  629. /package/dist/cjs/{rechnung → invoice}/typen.js +0 -0
  630. /package/dist/esm/{rechnung → invoice}/typen.js +0 -0
  631. /package/fixtures/{erwartet/storno-rabatt.grid32.txt → expected/cancellation-discount.grid32.txt} +0 -0
  632. /package/fixtures/{erwartet/storno-rabatt.grid48.txt → expected/cancellation-discount.grid48.txt} +0 -0
  633. /package/fixtures/{erwartet/storno-voll.grid32.txt → expected/cancellation-full.grid32.txt} +0 -0
  634. /package/fixtures/{erwartet/storno-voll.grid48.txt → expected/cancellation-full.grid48.txt} +0 -0
  635. /package/fixtures/{erwartet/storno-teil.grid32.txt → expected/cancellation-partial.grid32.txt} +0 -0
  636. /package/fixtures/{erwartet/storno-teil.grid48.txt → expected/cancellation-partial.grid48.txt} +0 -0
  637. /package/fixtures/{erwartet/storno-split-voll.grid32.txt → expected/cancellation-split-full.grid32.txt} +0 -0
  638. /package/fixtures/{erwartet/storno-split-voll.grid48.txt → expected/cancellation-split-full.grid48.txt} +0 -0
  639. /package/fixtures/{erwartet/storno-split-teil.grid32.txt → expected/cancellation-split-partial.grid32.txt} +0 -0
  640. /package/fixtures/{erwartet/storno-split-teil.grid48.txt → expected/cancellation-split-partial.grid48.txt} +0 -0
  641. /package/fixtures/{erwartet/karte-eigener.grid32.txt → expected/card-custom.grid32.txt} +0 -0
  642. /package/fixtures/{erwartet/karte-eigener.grid48.txt → expected/card-custom.grid48.txt} +0 -0
  643. /package/fixtures/{erwartet/karte-gptom-ios.grid32.txt → expected/card-gptom-ios.grid32.txt} +0 -0
  644. /package/fixtures/{erwartet/karte-gptom-ios.grid48.txt → expected/card-gptom-ios.grid48.txt} +0 -0
  645. /package/fixtures/{erwartet/karte-gptom.grid32.txt → expected/card-gptom.grid32.txt} +0 -0
  646. /package/fixtures/{erwartet/karte-gptom.grid48.txt → expected/card-gptom.grid48.txt} +0 -0
  647. /package/fixtures/{erwartet/karte-hobex-cloud.grid32.txt → expected/card-hobex-cloud.grid32.txt} +0 -0
  648. /package/fixtures/{erwartet/karte-hobex-cloud.grid48.txt → expected/card-hobex-cloud.grid48.txt} +0 -0
  649. /package/fixtures/{erwartet/karte-hobex-hps.grid32.txt → expected/card-hobex-hps.grid32.txt} +0 -0
  650. /package/fixtures/{erwartet/karte-hobex-hps.grid48.txt → expected/card-hobex-hps.grid48.txt} +0 -0
  651. /package/fixtures/{erwartet/karte-mypos.grid32.txt → expected/card-mypos.grid32.txt} +0 -0
  652. /package/fixtures/{erwartet/karte-mypos.grid48.txt → expected/card-mypos.grid48.txt} +0 -0
  653. /package/fixtures/{erwartet/karte-stripe-eps.grid32.txt → expected/card-stripe-eps.grid32.txt} +0 -0
  654. /package/fixtures/{erwartet/karte-stripe-eps.grid48.txt → expected/card-stripe-eps.grid48.txt} +0 -0
  655. /package/fixtures/{erwartet/karte-stripe.grid32.txt → expected/card-stripe.grid32.txt} +0 -0
  656. /package/fixtures/{erwartet/karte-stripe.grid48.txt → expected/card-stripe.grid48.txt} +0 -0
  657. /package/fixtures/{erwartet/karte-sumup.grid32.txt → expected/card-sumup.grid32.txt} +0 -0
  658. /package/fixtures/{erwartet/karte-sumup.grid48.txt → expected/card-sumup.grid48.txt} +0 -0
  659. /package/fixtures/{erwartet/rabattzeilen.grid32.txt → expected/discount-lines.grid32.txt} +0 -0
  660. /package/fixtures/{erwartet/rabattzeilen.grid48.txt → expected/discount-lines.grid48.txt} +0 -0
  661. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid32.txt → expected/discount-owner-tip.grid32.txt} +0 -0
  662. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid48.txt → expected/discount-owner-tip.grid48.txt} +0 -0
  663. /package/fixtures/{erwartet/rabatt-einfach.grid32.txt → expected/discount-simple.grid32.txt} +0 -0
  664. /package/fixtures/{erwartet/rabatt-einfach.grid48.txt → expected/discount-simple.grid48.txt} +0 -0
  665. /package/fixtures/{erwartet/rabatt-trinkgeld.grid32.txt → expected/discount-tip.grid32.txt} +0 -0
  666. /package/fixtures/{erwartet/rabatt-trinkgeld.grid48.txt → expected/discount-tip.grid48.txt} +0 -0
  667. /package/fixtures/{erwartet/rabatt-wertgutschein.grid32.txt → expected/discount-value-voucher.grid32.txt} +0 -0
  668. /package/fixtures/{erwartet/rabatt-wertgutschein.grid48.txt → expected/discount-value-voucher.grid48.txt} +0 -0
  669. /package/fixtures/{erwartet/logo-probe-hoch.raster32.txt → expected/logo-sample-tall.raster32.txt} +0 -0
  670. /package/fixtures/{erwartet/logo-probe.raster32.txt → expected/logo-sample.raster32.txt} +0 -0
  671. /package/fixtures/{erwartet/langer-artikelname.grid32.txt → expected/long-item-name.grid32.txt} +0 -0
  672. /package/fixtures/{erwartet/langer-artikelname.grid48.txt → expected/long-item-name.grid48.txt} +0 -0
  673. /package/fixtures/{erwartet/verkauf-karte.grid32.txt → expected/sale-card.grid32.txt} +0 -0
  674. /package/fixtures/{erwartet/verkauf-karte.grid48.txt → expected/sale-card.grid48.txt} +0 -0
  675. /package/fixtures/{erwartet/verkauf-bar.grid32.txt → expected/sale-cash.grid32.txt} +0 -0
  676. /package/fixtures/{erwartet/verkauf-bar.grid48.txt → expected/sale-cash.grid48.txt} +0 -0
  677. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid32.txt → expected/sale-small-business.grid32.txt} +0 -0
  678. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid48.txt → expected/sale-small-business.grid48.txt} +0 -0
  679. /package/fixtures/{erwartet/signaturausfall-verkauf.grid32.txt → expected/signature-outage-sale.grid32.txt} +0 -0
  680. /package/fixtures/{erwartet/signaturausfall-verkauf.grid48.txt → expected/signature-outage-sale.grid48.txt} +0 -0
  681. /package/fixtures/{erwartet/split-karte-karte-bar.grid32.txt → expected/split-card-card-cash.grid32.txt} +0 -0
  682. /package/fixtures/{erwartet/split-karte-karte-bar.grid48.txt → expected/split-card-card-cash.grid48.txt} +0 -0
  683. /package/fixtures/{erwartet/split-bar-rueckgeld.grid32.txt → expected/split-cash-change.grid32.txt} +0 -0
  684. /package/fixtures/{erwartet/split-bar-rueckgeld.grid48.txt → expected/split-cash-change.grid48.txt} +0 -0
  685. /package/fixtures/{erwartet/split-langer-betrag.grid32.txt → expected/split-long-amount.grid32.txt} +0 -0
  686. /package/fixtures/{erwartet/split-langer-betrag.grid48.txt → expected/split-long-amount.grid48.txt} +0 -0
  687. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid32.txt → expected/split-one-card-tip.grid32.txt} +0 -0
  688. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid48.txt → expected/split-one-card-tip.grid48.txt} +0 -0
  689. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid32.txt → expected/split-table-round-tip.grid32.txt} +0 -0
  690. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid48.txt → expected/split-table-round-tip.grid48.txt} +0 -0
  691. /package/fixtures/{erwartet/split-trinkgeld-karte.grid32.txt → expected/split-tip-card.grid32.txt} +0 -0
  692. /package/fixtures/{erwartet/split-trinkgeld-karte.grid48.txt → expected/split-tip-card.grid48.txt} +0 -0
  693. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid32.txt → expected/split-two-cards-same-provider.grid32.txt} +0 -0
  694. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid48.txt → expected/split-two-cards-same-provider.grid48.txt} +0 -0
  695. /package/fixtures/{erwartet/testkasse-verkauf.grid32.txt → expected/test-cashregister-sale.grid32.txt} +0 -0
  696. /package/fixtures/{erwartet/testkasse-verkauf.grid48.txt → expected/test-cashregister-sale.grid48.txt} +0 -0
  697. /package/fixtures/{erwartet/testsignatur-verkauf.grid32.txt → expected/test-signature-sale.grid32.txt} +0 -0
  698. /package/fixtures/{erwartet/testsignatur-verkauf.grid48.txt → expected/test-signature-sale.grid48.txt} +0 -0
  699. /package/fixtures/{erwartet → expected}/training.grid32.txt +0 -0
  700. /package/fixtures/{erwartet → expected}/training.grid48.txt +0 -0
  701. /package/fixtures/{erwartet/null-jahr.grid32.txt → expected/zero-annual.grid32.txt} +0 -0
  702. /package/fixtures/{erwartet/null-jahr.grid48.txt → expected/zero-annual.grid48.txt} +0 -0
  703. /package/fixtures/{erwartet/null-schluss.grid32.txt → expected/zero-final.grid32.txt} +0 -0
  704. /package/fixtures/{erwartet/null-schluss.grid48.txt → expected/zero-final.grid48.txt} +0 -0
  705. /package/fixtures/{erwartet/null-pruef.grid32.txt → expected/zero-manual.grid32.txt} +0 -0
  706. /package/fixtures/{erwartet/null-pruef.grid48.txt → expected/zero-manual.grid48.txt} +0 -0
  707. /package/fixtures/{erwartet/null-monat.grid32.txt → expected/zero-monthly.grid32.txt} +0 -0
  708. /package/fixtures/{erwartet/null-monat.grid48.txt → expected/zero-monthly.grid48.txt} +0 -0
  709. /package/fixtures/{erwartet/null-ausfall.grid32.txt → expected/zero-outage-end.grid32.txt} +0 -0
  710. /package/fixtures/{erwartet/null-ausfall.grid48.txt → expected/zero-outage-end.grid48.txt} +0 -0
  711. /package/fixtures/{erwartet/null-start.grid32.txt → expected/zero-start.grid32.txt} +0 -0
  712. /package/fixtures/{erwartet/null-start.grid48.txt → expected/zero-start.grid48.txt} +0 -0
@@ -12,7 +12,7 @@
12
12
  * PLZ, Gericht) macht das Backend mit `@kreiseck/validator` — sie hier zu
13
13
  * wiederholen hiesse, zwei Wahrheiten zu haben, von denen eine veraltet.
14
14
  * Ein Formfehler kommt als `KasseneckApiError` mit `code:"validation"` zurueck;
15
- * `partnerFeldFehler(fehler)` macht `data.errors[]` daraus. **Es entsteht dabei
15
+ * `partnerFieldErrors(fehler)` macht `data.errors[]` daraus. **Es entsteht dabei
16
16
  * nichts** — der Aufruf ist folgenlos wiederholbar.
17
17
  *
18
18
  * Nach dem Senden wird nichts hart gecastet: fehlt ein zugesagtes Feld, wirft
@@ -32,6 +32,7 @@ exports.createCustomerCashregister = createCustomerCashregister;
32
32
  exports.activateCashregister = activateCashregister;
33
33
  exports.listCustomerCashregisters = listCustomerCashregisters;
34
34
  exports.getCustomerCredentials = getCustomerCredentials;
35
+ exports.reportCustomerContract = reportCustomerContract;
35
36
  const errors_js_1 = require("../client/errors.js");
36
37
  const secret_js_1 = require("./secret.js");
37
38
  // ---------------------------------------------------------------------------
@@ -100,8 +101,8 @@ function pflicht(wert, vorgang, feld) {
100
101
  * Der guenstigste Selbsttest beim Hochfahren: er beweist Schluessel, Umgebung
101
102
  * und Rechte in einem Aufruf.
102
103
  */
103
- async function getPartnerInfo(rufen) {
104
- const daten = objekt(await rufen('getPartnerInfo'));
104
+ async function getPartnerInfo(transport) {
105
+ const daten = objekt(await transport('getPartnerInfo'));
105
106
  const partner = verlangt(daten['partner'], 'getPartnerInfo', 'partner');
106
107
  const key = objekt(daten['key']);
107
108
  return {
@@ -159,18 +160,18 @@ async function getPartnerInfo(rufen) {
159
160
  * — auch dann, wenn der Rumpf inzwischen abweicht. Die eigene Kundennummer ist
160
161
  * der natuerliche Wert dafuer.
161
162
  */
162
- async function createPartnerCustomer(rufen, optionen) {
163
- const appId = pflicht(optionen?.appId, 'createPartnerCustomer', 'appId');
164
- const betrieb = optionen?.business;
163
+ async function createPartnerCustomer(transport, options) {
164
+ const appId = pflicht(options?.appId, 'createPartnerCustomer', 'appId');
165
+ const betrieb = options?.business;
165
166
  if (betrieb === null || typeof betrieb !== 'object') {
166
167
  throw new errors_js_1.KasseneckValidationError('createPartnerCustomer', 'business fehlt', 'request');
167
168
  }
168
- const daten = objekt(await rufen('createPartnerCustomer', {
169
+ const daten = objekt(await transport('createPartnerCustomer', {
169
170
  appId,
170
171
  business: betrieb,
171
- idempotencyKey: optionen.idempotencyKey,
172
- access: optionen.access,
173
- env: optionen.env,
172
+ idempotencyKey: options.idempotencyKey,
173
+ access: options.access,
174
+ env: options.env,
174
175
  }));
175
176
  const customerId = textOderNull(daten['customerId']);
176
177
  if (!customerId) {
@@ -190,14 +191,14 @@ async function createPartnerCustomer(rufen, optionen) {
190
191
  };
191
192
  }
192
193
  /** Betriebe dieses Partners, seitenweise. `cursor` aus der Antwort setzt fort. */
193
- async function listPartnerCustomers(rufen, optionen = {}) {
194
- if (optionen.limit !== undefined && (!Number.isInteger(optionen.limit) || optionen.limit < 1 || optionen.limit > 200)) {
194
+ async function listPartnerCustomers(transport, options = {}) {
195
+ if (options.limit !== undefined && (!Number.isInteger(options.limit) || options.limit < 1 || options.limit > 200)) {
195
196
  throw new errors_js_1.KasseneckValidationError('listPartnerCustomers', 'limit muss zwischen 1 und 200 liegen', 'request');
196
197
  }
197
- const daten = objekt(await rufen('listPartnerCustomers', {
198
- status: optionen.status,
199
- limit: optionen.limit,
200
- cursor: optionen.cursor,
198
+ const daten = objekt(await transport('listPartnerCustomers', {
199
+ status: options.status,
200
+ limit: options.limit,
201
+ cursor: options.cursor,
201
202
  }));
202
203
  return {
203
204
  customers: liste(daten['customers']).map(kundenZeile),
@@ -247,9 +248,9 @@ function avvStand(wert) {
247
248
  return { ...v, mode: textOderNull(wert['mode']) };
248
249
  }
249
250
  /** Ein Betrieb mit allem, was der Partner ueber ihn sehen darf — nie Geheimnisse. */
250
- async function getPartnerCustomer(rufen, customerId) {
251
+ async function getPartnerCustomer(transport, customerId) {
251
252
  const id = pflicht(customerId, 'getPartnerCustomer', 'customerId');
252
- const daten = objekt(await rufen('getPartnerCustomer', { customerId: id }));
253
+ const daten = objekt(await transport('getPartnerCustomer', { customerId: id }));
253
254
  const k = verlangt(daten['customer'], 'getPartnerCustomer', 'customer');
254
255
  const fon = objekt(k['fon']);
255
256
  const zugang = k['access'];
@@ -294,16 +295,16 @@ async function getPartnerCustomer(rufen, customerId) {
294
295
  * einem ganzen ausgefuellten Formular auf. Die Antwort sagt NUR ja oder nein —
295
296
  * nie, wem die Adresse gehoert.
296
297
  */
297
- async function checkPartnerCustomerEmail(rufen, email) {
298
+ async function checkPartnerCustomerEmail(transport, email) {
298
299
  const adresse = typeof email === 'string' ? email.trim() : '';
299
300
  if (!adresse)
300
301
  throw new errors_js_1.KasseneckValidationError('checkPartnerCustomerEmail', 'email fehlt', 'request');
301
- const daten = objekt(await rufen('checkPartnerCustomerEmail', { email: adresse }));
302
+ const daten = objekt(await transport('checkPartnerCustomerEmail', { email: adresse }));
302
303
  return daten['available'] === true;
303
304
  }
304
- async function sendPartnerCustomerFonLink(rufen, customerId) {
305
+ async function sendPartnerCustomerFonLink(transport, customerId) {
305
306
  const id = pflicht(customerId, 'sendPartnerCustomerFonLink', 'customerId');
306
- const daten = objekt(await rufen('sendPartnerCustomerFonLink', { customerId: id }));
307
+ const daten = objekt(await transport('sendPartnerCustomerFonLink', { customerId: id }));
307
308
  return {
308
309
  customerId: text(daten['customerId'], id),
309
310
  sentTo: text(daten['sentTo']),
@@ -360,12 +361,12 @@ function antrag(eintrag) {
360
361
  * Abschluss kommt als Ereignis `signature.ready`, nicht als Antwort auf diesen
361
362
  * Aufruf.
362
363
  */
363
- async function requestCustomerSignature(rufen, customerId, optionen = {}) {
364
+ async function requestCustomerSignature(transport, customerId, options = {}) {
364
365
  const id = pflicht(customerId, 'requestCustomerSignature', 'customerId');
365
- const daten = objekt(await rufen('requestCustomerSignature', {
366
+ const daten = objekt(await transport('requestCustomerSignature', {
366
367
  customerId: id,
367
- kind: optionen.kind,
368
- additional: optionen.additional,
368
+ kind: options.kind,
369
+ additional: options.additional,
369
370
  }));
370
371
  return {
371
372
  request: antrag(verlangt(daten['request'], 'requestCustomerSignature', 'request')),
@@ -399,9 +400,9 @@ function signaturEinzeln(eintrag) {
399
400
  };
400
401
  }
401
402
  /** Stand der Signatur eines Betriebs samt aller Signaturen, Antraege und des FON-Zugangs. */
402
- async function getCustomerSignatureStatus(rufen, customerId) {
403
+ async function getCustomerSignatureStatus(transport, customerId) {
403
404
  const id = pflicht(customerId, 'getCustomerSignatureStatus', 'customerId');
404
- const daten = objekt(await rufen('getCustomerSignatureStatus', { customerId: id }));
405
+ const daten = objekt(await transport('getCustomerSignatureStatus', { customerId: id }));
405
406
  const signatur = objekt(daten['signature']);
406
407
  const fon = objekt(daten['fon']);
407
408
  return {
@@ -461,12 +462,12 @@ function kasse(eintrag) {
461
462
  * Hoechstens 20 Kassen je Betrieb (`cashregister_limit`); ohne gebuchtes Modul
462
463
  * `module_inactive`.
463
464
  */
464
- async function createCustomerCashregister(rufen, optionen) {
465
- const id = pflicht(optionen?.customerId, 'createCustomerCashregister', 'customerId');
466
- const daten = objekt(await rufen('createCustomerCashregister', {
465
+ async function createCustomerCashregister(transport, options) {
466
+ const id = pflicht(options?.customerId, 'createCustomerCashregister', 'customerId');
467
+ const daten = objekt(await transport('createCustomerCashregister', {
467
468
  customerId: id,
468
- automatic: optionen.automatic,
469
- signatureRequestId: optionen.signatureRequestId,
469
+ automatic: options.automatic,
470
+ signatureRequestId: options.signatureRequestId,
470
471
  }));
471
472
  const ib = objekt(daten['activation']);
472
473
  return {
@@ -490,19 +491,19 @@ async function createCustomerCashregister(rufen, optionen) {
490
491
  * veraendernde Aufruf dieses Clients, der ohne Idempotenzschluessel gefahrlos
491
492
  * wiederholbar ist — weil der Server ihn so gebaut hat.
492
493
  */
493
- async function activateCashregister(rufen, customerId, cashregisterId) {
494
+ async function activateCashregister(transport, customerId, cashregisterId) {
494
495
  const kunde = pflicht(customerId, 'activateCashregister', 'customerId');
495
496
  const kassenId = pflicht(cashregisterId, 'activateCashregister', 'cashregisterId');
496
- const daten = objekt(await rufen('activateCashregister', { customerId: kunde, cashregisterId: kassenId }));
497
+ const daten = objekt(await transport('activateCashregister', { customerId: kunde, cashregisterId: kassenId }));
497
498
  return {
498
499
  cashregister: kasse(verlangt(daten['cashregister'], 'activateCashregister', 'cashregister')),
499
500
  unchanged: jaNein(daten['unchanged']),
500
501
  };
501
502
  }
502
503
  /** Die Kassen eines Betriebs samt Stand der Inbetriebnahme — **nie** Token. */
503
- async function listCustomerCashregisters(rufen, customerId) {
504
+ async function listCustomerCashregisters(transport, customerId) {
504
505
  const id = pflicht(customerId, 'listCustomerCashregisters', 'customerId');
505
- const daten = objekt(await rufen('listCustomerCashregisters', { customerId: id }));
506
+ const daten = objekt(await transport('listCustomerCashregisters', { customerId: id }));
506
507
  return {
507
508
  customerId: text(daten['customerId'], id),
508
509
  cashregisters: liste(daten['cashregisters']).map(kasse),
@@ -525,9 +526,9 @@ async function listCustomerCashregisters(rufen, customerId) {
525
526
  * Zeichenketten-Umwandlung zeigen eine Maske, heraus kommt man nur ueber
526
527
  * `.reveal()`.
527
528
  */
528
- async function getCustomerCredentials(rufen, customerId) {
529
+ async function getCustomerCredentials(transport, customerId) {
529
530
  const id = pflicht(customerId, 'getCustomerCredentials', 'customerId');
530
- const daten = objekt(await rufen('getCustomerCredentials', { customerId: id }));
531
+ const daten = objekt(await transport('getCustomerCredentials', { customerId: id }));
531
532
  return {
532
533
  customerId: text(daten['customerId'], id),
533
534
  companyName: text(daten['companyName']),
@@ -545,3 +546,43 @@ async function getCustomerCredentials(rufen, customerId) {
545
546
  note: text(daten['note']),
546
547
  };
547
548
  }
549
+ // ---------------------------------------------------------------------------
550
+ // Vertraege
551
+ // ---------------------------------------------------------------------------
552
+ /**
553
+ * Meldet eine Zustimmung des Betriebs, die der Partner **in Vollmacht**
554
+ * eingeholt hat (Endpunkt `reportCustomerContract`, unter `/v1`
555
+ * `reportCustomerVertrag`). Braucht die Berechtigung `customers:write`.
556
+ *
557
+ * Vor dem Senden prueft dieser Client nur, dass jede Pflichtangabe da ist und
558
+ * `acceptedAt` eine Zahl ist. Ob die Art erlaubt ist (`kind_not_allowed`), die
559
+ * Fassung gilt (`unknown_version`, `no_version`) und der Text derselbe ist
560
+ * (`text_changed`), entscheidet der Server. Eine schon bestaetigte Fassung
561
+ * kommt als `already_accepted` mit `data.contractId`; das ist kein Schaden,
562
+ * sondern die Bestaetigung, dass es sie gibt.
563
+ */
564
+ async function reportCustomerContract(transport, options) {
565
+ const vorgang = 'reportCustomerContract';
566
+ const o = objekt(options);
567
+ const customerId = pflicht(o['customerId'], vorgang, 'customerId');
568
+ const kind = pflicht(o['kind'], vorgang, 'kind');
569
+ const version = pflicht(o['version'], vorgang, 'version');
570
+ const textHash = pflicht(o['textHash'], vorgang, 'textHash');
571
+ const name = pflicht(o['name'], vorgang, 'name');
572
+ const signerRole = pflicht(o['signerRole'], vorgang, 'signerRole');
573
+ const acceptedAt = o['acceptedAt'];
574
+ if (acceptedAt !== undefined && (typeof acceptedAt !== 'number' || !Number.isFinite(acceptedAt))) {
575
+ throw new errors_js_1.KasseneckValidationError(vorgang, 'acceptedAt muss eine Zahl sein (Unix-Millisekunden)', 'request');
576
+ }
577
+ const daten = objekt(await transport(vorgang, { customerId, kind, version, textHash, name, signerRole, acceptedAt }));
578
+ const contractId = daten['contractId'];
579
+ if (typeof contractId !== 'string' || !contractId) {
580
+ throw new errors_js_1.KasseneckValidationError(vorgang, 'Antwort enthaelt keine contractId', 'response');
581
+ }
582
+ return {
583
+ contractId,
584
+ confirmedAt: zahlOderNull(daten['confirmedAt']),
585
+ kind: text(daten['kind'], kind),
586
+ version: text(daten['version'], version),
587
+ };
588
+ }
@@ -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;
@@ -18,13 +18,13 @@
18
18
  * im Backend (Abzug aus `partner-core.FEHLER_KATALOG`); ein Code, den nur eine
19
19
  * Seite kennt, ist fuer einen Aufrufer nicht von „gibt es nicht" zu
20
20
  * unterscheiden. Deshalb stehen hier BEIDE Flaechen: die der Schnittstelle
21
- * ([PARTNER_FEHLER_CODES]) und die des Partner-Portals
22
- * ([PARTNER_PORTAL_FEHLER_CODES]).
21
+ * ([PARTNER_ERROR_CODES]) und die des Partner-Portals
22
+ * ([PARTNER_PORTAL_ERROR_CODES]).
23
23
  *
24
24
  * **Seit 0.29.0 englisch, wie der Rest von `/v3`.** Dieser Client spricht seit
25
25
  * 0.28.0 ausschliesslich `/v3` (`PARTNER_BASE_URL`): die paar deutschen Codes,
26
26
  * die der Server bis dahin noch roh durchreichte, kommen jetzt genauso englisch
27
- * an wie alle anderen. [PARTNER_FEHLER_CODES] fuehrt deshalb ausnahmslos die
27
+ * an wie alle anderen. [PARTNER_ERROR_CODES] fuehrt deshalb ausnahmslos die
28
28
  * `/v3`-Schreibweise aus `fehlercodes.json`s `v3`-Zuordnung (deutsch -> englisch);
29
29
  * ein Aufrufer bekommt vom Server nie mehr die deutsche Form.
30
30
  *
@@ -37,25 +37,32 @@
37
37
  *
38
38
  * **Die Vertrags-Codes (`kind_not_allowed`, `mode_not_allowed`,
39
39
  * `power_of_attorney_missing`, `not_found`, `no_version`,
40
- * `unknown_version`, `text_changed`, `already_accepted`) stehen hier, obwohl
41
- * dieses Paket `reportCustomerContract` nicht anbietet.** Der Katalog des
42
- * Backends fuehrt sie mit `flaeche: 'api'`/`'beide'`, dieselbe Regel wie bei
43
- * den Portal-Codes oben: vollstaendig heisst vollstaendig, auch fuer einen
44
- * Endpunkt, den (noch) kein Aufruf dieses Clients ausloest. Ein Server-Update,
45
- * das den Endpunkt ergaenzt, bräuchte dann keinen zweiten Fehlerkatalog-Umbau.
46
- * `not_required` fehlt bewusst: derselbe gemeinsame Server-Zweig wie die
47
- * anderen sechs, aber ueber die Partner-API nicht erreichbar (der Server hat
48
- * ihn aus `FEHLER_KATALOG` entfernt, siehe `partner-core.js` im Backend).
40
+ * `unknown_version`, `text_changed`, `already_accepted`)** kommen aus
41
+ * `reportCustomerContract` (seit 1.0 in diesem Paket). `not_required` fehlt
42
+ * bewusst: derselbe gemeinsame Server-Zweig, aber ueber die Partner-API nicht
43
+ * erreichbar (der Server hat ihn aus `FEHLER_KATALOG` entfernt, siehe
44
+ * `partner-core.js` im Backend).
45
+ *
46
+ * **Seit 1.0 ist [PARTNER_ERROR_CODES] genau `errorCodes.partner` des
47
+ * Vertrags-Exports** (`fixtures/v3/v3-vokabular.json`); ein Test haelt beide
48
+ * gleich. Dazu kommen die Anmelde- und Anfragecodes, die `/v3` seit
49
+ * 2026-09-27 auch an Partner-Aufrufen setzt ([PARTNER_REQUEST_ERROR_CODES]).
50
+ *
51
+ * **Ein unbekannter Code ist kein Fehler dieses Pakets.** Der Server darf
52
+ * Fehlern, die heute keinen Code tragen, spaeter einen geben (vorhandene Codes
53
+ * aendern sich nie). [partnerErrorAdvice] antwortet darauf mit einem
54
+ * Rueckfallsatz statt `undefined`, die Erkenner mit `false`; geworfen wird
55
+ * nie.
49
56
  */
50
57
  Object.defineProperty(exports, "__esModule", { value: true });
51
- exports.PARTNER_PORTAL_FEHLER_CODES = exports.PARTNER_FEHLER_CODES = void 0;
52
- exports.istPartnerFehlerCode = istPartnerFehlerCode;
53
- exports.istPartnerPortalFehlerCode = istPartnerPortalFehlerCode;
54
- exports.partnerFehlerRat = partnerFehlerRat;
55
- exports.partnerFehlerCode = partnerFehlerCode;
56
- exports.istPartnerFehler = istPartnerFehler;
57
- exports.partnerFeldFehler = partnerFeldFehler;
58
- exports.partnerWartezeitSek = partnerWartezeitSek;
58
+ exports.PARTNER_REQUEST_ERROR_CODES = exports.PARTNER_PORTAL_ERROR_CODES = exports.PARTNER_ERROR_CODES = void 0;
59
+ exports.isPartnerErrorCode = isPartnerErrorCode;
60
+ exports.isPartnerPortalErrorCode = isPartnerPortalErrorCode;
61
+ exports.partnerErrorAdvice = partnerErrorAdvice;
62
+ exports.partnerErrorCode = partnerErrorCode;
63
+ exports.isPartnerError = isPartnerError;
64
+ exports.partnerFieldErrors = partnerFieldErrors;
65
+ exports.partnerRetryAfterSec = partnerRetryAfterSec;
59
66
  const errors_js_1 = require("../client/errors.js");
60
67
  /**
61
68
  * Alle Codes, die die **Schnittstelle** kennt. Als Liste und nicht nur als
@@ -64,7 +71,7 @@ const errors_js_1 = require("../client/errors.js");
64
71
  *
65
72
  * Reihenfolge und Bestand wie im Abzug des Backends.
66
73
  */
67
- exports.PARTNER_FEHLER_CODES = [
74
+ exports.PARTNER_ERROR_CODES = [
68
75
  // Eingabe, Konto und Takt
69
76
  'validation',
70
77
  'rate_limited',
@@ -94,8 +101,7 @@ exports.PARTNER_FEHLER_CODES = [
94
101
  'cashregister_limit',
95
102
  'cashregister_not_found',
96
103
  'contracts_pending',
97
- // Vertraege (reportCustomerContract: dieses Paket bietet den Endpunkt nicht
98
- // an, der Katalog fuehrt die Codes trotzdem vollstaendig, siehe oben)
104
+ // Vertraege (reportCustomerContract)
99
105
  'kind_not_allowed',
100
106
  'mode_not_allowed',
101
107
  'power_of_attorney_missing',
@@ -119,7 +125,7 @@ exports.PARTNER_FEHLER_CODES = [
119
125
  * Wer eine Katalogseite baut oder eine fremde Antwort einsortiert, findet
120
126
  * damit jeden Code des Backends wieder.
121
127
  */
122
- exports.PARTNER_PORTAL_FEHLER_CODES = [
128
+ exports.PARTNER_PORTAL_ERROR_CODES = [
123
129
  'app_locked',
124
130
  'version_locked',
125
131
  'invalid_transition',
@@ -133,11 +139,40 @@ exports.PARTNER_PORTAL_FEHLER_CODES = [
133
139
  'card_not_verified',
134
140
  'already_assigned',
135
141
  ];
136
- function istPartnerFehlerCode(wert) {
137
- return typeof wert === 'string' && exports.PARTNER_FEHLER_CODES.includes(wert);
142
+ /**
143
+ * Codes der Anmeldung und der Anfragepruefung, die `/v3` auch an
144
+ * Partner-Aufrufen setzt (Partner-Doku, Abschnitt Fehlercodes; im
145
+ * Vertrags-Export unter `errorCodes.auth`). Unter `/v1` kamen diese Fehler
146
+ * ohne Code. `validation` und `rate_limited` stehen schon in
147
+ * [PARTNER_ERROR_CODES]. Dahinter die Codes des Rands (`errorCodes.edge`,
148
+ * soweit nicht schon im Katalog; `not_found` und `validation` stehen dort)
149
+ * und `route_missing`, den das Paket selbst vergibt.
150
+ */
151
+ exports.PARTNER_REQUEST_ERROR_CODES = [
152
+ 'method_not_allowed',
153
+ 'unauthorized',
154
+ 'partner_locked',
155
+ 'scope_missing',
156
+ // Rand (errorCodes.edge, soweit nicht im Katalog) und Code des Pakets
157
+ 'internal_translation_error',
158
+ 'dialect_mismatch',
159
+ 'response_translation_failed',
160
+ 'route_missing',
161
+ ];
162
+ function enthaelt(liste, wert) {
163
+ return typeof wert === 'string' && liste.includes(wert);
164
+ }
165
+ /**
166
+ * `true` fuer einen Code, den ein Partner-Aufruf liefern kann: aus
167
+ * [PARTNER_ERROR_CODES] (Katalog) oder [PARTNER_REQUEST_ERROR_CODES]
168
+ * (Anmeldung, Rand, Paket). Alles andere, auch Unsinn, ist `false`.
169
+ */
170
+ function isPartnerErrorCode(value) {
171
+ return enthaelt(exports.PARTNER_ERROR_CODES, value) || enthaelt(exports.PARTNER_REQUEST_ERROR_CODES, value);
138
172
  }
139
- function istPartnerPortalFehlerCode(wert) {
140
- return typeof wert === 'string' && exports.PARTNER_PORTAL_FEHLER_CODES.includes(wert);
173
+ /** `true` fuer einen Code aus [PARTNER_PORTAL_ERROR_CODES]; alles andere ist `false`. */
174
+ function isPartnerPortalErrorCode(value) {
175
+ return enthaelt(exports.PARTNER_PORTAL_ERROR_CODES, value);
141
176
  }
142
177
  /**
143
178
  * Was der Aufrufer tun muss. Ein Satz je Code, in der zweiten Person — nicht
@@ -174,10 +209,7 @@ const RAT = {
174
209
  cashregister_not_found: 'Diese cashregisterId gibt es bei diesem Betrieb nicht.',
175
210
  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.',
176
211
  // -- Vertraege (reportCustomerContract) ------------------------------------
177
- // Dieser Client bietet den Endpunkt (noch) nicht an; die Codes stehen hier
178
- // nur fuer die Katalogseite und fuer einen Aufrufer, der die rohe Antwort
179
- // selbst auswertet (siehe Kopfkommentar der Datei).
180
- kind_not_allowed: 'reportCustomerContract mit einer anderen Art als "avv". Der Vollmachtsweg nimmt nur den Auftragsverarbeitungsvertrag entgegen. Dieser Client bietet den Endpunkt nicht an.',
212
+ 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.',
181
213
  mode_not_allowed: 'Der Vollmachtsweg ist fuer dieses Partner-Konto nicht freigeschaltet. Kasseneck fragen (hello@kasseneck.at).',
182
214
  power_of_attorney_missing: 'Der Partnervertrag mit dem Vollmachts-Kapitel ist noch nicht bestaetigt. Erst danach nimmt der Vollmachtsweg Meldungen entgegen.',
183
215
  not_found: 'Die genannte customerId gehoert nicht zu diesem Partner-Konto oder existiert nicht. listPartnerCustomers nennt die eigenen.',
@@ -189,6 +221,15 @@ const RAT = {
189
221
  webhook_limit: 'Hoechstens 10 Webhook-Endpunkte je Partner. Einen ungenutzten loeschen.',
190
222
  webhook_inactive: 'Der Webhook steht auf active:false. Zuerst aktivieren, dann erneut proben.',
191
223
  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.',
224
+ // -- Anmeldung und Anfrage -----------------------------------------------
225
+ method_not_allowed: 'Die Anfrage war kein POST. Jeder Aufruf der Partner-API geht als POST mit JSON-Rumpf.',
226
+ unauthorized: 'Kein, ein ungueltiger oder ein widerrufener Partner-Schluessel. Den Schluessel im Partner-Portal pruefen bzw. einen neuen erzeugen.',
227
+ partner_locked: 'Das Partner-Konto ist gesperrt. Kasseneck fragen (hello@kasseneck.at).',
228
+ scope_missing: 'Dem Schluessel fehlt eine Berechtigung, die dieser Aufruf braucht (data.scope). Einen Schluessel mit dieser Berechtigung erzeugen.',
229
+ 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.',
230
+ 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.',
231
+ 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.',
232
+ route_missing: 'Statt des Backends kam eine HTML-Seite: die Basisadresse stimmt nicht (PARTNER_BASE_URL bzw. eigener Proxy). Der Aufruf kam nie an.',
192
233
  // -- Partner-Portal -------------------------------------------------------
193
234
  app_locked: 'Name, Verteilungen und Kontakt einer App sind fest, sobald eine Version geprueft wird. Aenderungen daran gehen ueber Kasseneck.',
194
235
  version_locked: 'Diese App-Version wird geprueft oder ist abgenommen. Fuer Aenderungen eine neue Version anlegen.',
@@ -204,23 +245,38 @@ const RAT = {
204
245
  already_assigned: 'Fuer diesen Antrag sind bereits Kartendaten eingetragen; ein zweiter Satz ueberschreibt nichts.',
205
246
  };
206
247
  /**
207
- * Der Handlungssatz zu einem Code — aus beiden Flaechen. `undefined` fuer
208
- * einen Code, den dieses Paket nicht kennt; ein erfundener Satz waere
209
- * schlimmer als keiner.
248
+ * Der Rueckfall fuer einen Code, den dieses Paket nicht kennt: kein geratener
249
+ * Handgriff, sondern der Hinweis, wo die Auskunft steht.
250
+ */
251
+ 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.';
252
+ /**
253
+ * Der Handlungssatz zu einem Code, aus allen Flaechen. Fuer einen Code, den
254
+ * dieses Paket nicht kennt (oder fuer Unsinn), kommt ein Rueckfallsatz; die
255
+ * Funktion wirft nie.
210
256
  */
211
- function partnerFehlerRat(code) {
257
+ function partnerErrorAdvice(code) {
258
+ if (typeof code !== 'string' || !Object.prototype.hasOwnProperty.call(RAT, code))
259
+ return RUECKFALL;
212
260
  return RAT[code];
213
261
  }
214
262
  /** Der Fehlercode eines geworfenen Fehlers — `undefined`, wenn es keiner der unseren ist. */
215
- function partnerFehlerCode(error) {
263
+ function partnerErrorCode(error) {
216
264
  return error instanceof errors_js_1.KasseneckApiError ? error.code : undefined;
217
265
  }
218
- /** Kurzform fuer `catch (e) { if (istPartnerFehler(e, 'signature_missing')) … }`. */
219
- function istPartnerFehler(error, code) {
220
- return partnerFehlerCode(error) === code;
266
+ /**
267
+ * Kurzform fuer `catch (e) { if (isPartnerError(e, 'signature_missing')) … }`.
268
+ * Mit `code` nimmt sie auch Codes, die dieses Paket (noch) nicht kennt.
269
+ * Ohne `code`: traegt der Fehler einen Code, den ein Partner-Aufruf liefern
270
+ * kann ([isPartnerErrorCode])?
271
+ */
272
+ function isPartnerError(error, code) {
273
+ const gefunden = partnerErrorCode(error);
274
+ if (gefunden === undefined)
275
+ return false;
276
+ return code === undefined ? isPartnerErrorCode(gefunden) : gefunden === code;
221
277
  }
222
278
  /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
223
- function partnerFeldFehler(error) {
279
+ function partnerFieldErrors(error) {
224
280
  if (!(error instanceof errors_js_1.KasseneckApiError))
225
281
  return [];
226
282
  const roh = error.details['errors'];
@@ -240,8 +296,8 @@ function partnerFeldFehler(error) {
240
296
  * Wie lange `rate_limited` noch gilt, in Sekunden. `undefined`, wenn der
241
297
  * Fehler kein `rate_limited` ist oder das Backend keine Angabe macht.
242
298
  */
243
- function partnerWartezeitSek(error) {
244
- if (partnerFehlerCode(error) !== 'rate_limited')
299
+ function partnerRetryAfterSec(error) {
300
+ if (partnerErrorCode(error) !== 'rate_limited')
245
301
  return undefined;
246
302
  const wert = error.details['retryAfterSec'];
247
303
  return typeof wert === 'number' && Number.isFinite(wert) && wert >= 0 ? wert : undefined;