@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
@@ -0,0 +1,23 @@
1
+ import { type Objekt } from './draht.js';
2
+ /**
3
+ * Gespeicherte Einstellungen `{ betrieb, geraet }` in der Drahtform, nur die
4
+ * gespeicherten und gueltigen Felder (die Vorgaben mischt der Leser dazu),
5
+ * und die weggelassenen aeusseren Pfade.
6
+ */
7
+ export declare function _storedPosSettingsToWire(stored: {
8
+ betrieb?: unknown;
9
+ geraet?: unknown;
10
+ } | null | undefined): {
11
+ business: Objekt;
12
+ device: Objekt;
13
+ weggelassen: string[];
14
+ };
15
+ /** Nur fuer den Test: die Feldliste der Pruefer (muss mit der Vorgabe deckungsgleich sein). */
16
+ export declare const _PRUEFER_FELDER: Readonly<{
17
+ business: string[];
18
+ device: string[];
19
+ standard: {
20
+ business: string[];
21
+ device: string[];
22
+ };
23
+ }>;
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._PRUEFER_FELDER = void 0;
4
+ exports._storedPosSettingsToWire = _storedPosSettingsToWire;
5
+ const settings_js_1 = require("../pos/settings.js");
6
+ const draht_js_1 = require("./draht.js");
7
+ const vokabular_js_1 = require("./vokabular.js");
8
+ const bool = (v) => typeof v === 'boolean';
9
+ const hex = (v) => typeof v === 'string' && /^#[0-9a-fA-F]{6}$/.test(v);
10
+ const kuerzel = (v) => typeof v === 'string' && /^[A-Za-z0-9]{1,3}$/.test(v);
11
+ const ganz = (min, max) => (v) => Number.isInteger(v) && v >= min && v <= max;
12
+ const ip = (v) => v === '' || (typeof v === 'string' && /^(\d{1,3}\.){3}\d{1,3}$/.test(v) && v.split('.').every((t) => Number(t) <= 255));
13
+ const kennung = (v) => typeof v === 'string' && v.length <= 64 && /^[\w:.\- ]*$/.test(v);
14
+ // eslint-disable-next-line no-control-regex
15
+ const UNSICHTBAR = /[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028\u2029\u202A-\u202E\u2060\u2066-\u2069\uFEFF]/;
16
+ const klartext = (v) => typeof v === 'string' && v.length <= 64 && !UNSICHTBAR.test(v) && (v === '' || v.trim() !== '');
17
+ const tid = (v) => typeof v === 'string' && /^\d{0,16}$/.test(v);
18
+ const prozentChips = (v) => {
19
+ if (!Array.isArray(v) || v.length > 5)
20
+ return false;
21
+ const gesehen = [];
22
+ for (const x of v) {
23
+ if (typeof x !== 'number' || !Number.isFinite(x) || x <= 0 || x > 100)
24
+ return false;
25
+ const r = Math.round(x * 10) / 10;
26
+ if (r !== x || gesehen.includes(r))
27
+ return false;
28
+ gesehen.push(r);
29
+ }
30
+ return true;
31
+ };
32
+ const logoBildUrl = (v) => v === '' || (typeof v === 'string' && v.length <= 600 && v.startsWith('https://firebasestorage.googleapis.com/'));
33
+ /** Pruefer je aeusserem Feld, soweit das Feld keine Aufzaehlung und keine Karte ist. */
34
+ const PRUEFER = {
35
+ business: {
36
+ logoText: kuerzel, logoEnabled: bool, color: hex, clock: bool, lockScreen: bool, staffPhotos: bool, logoutAfterSale: bool,
37
+ fastLogin: bool, showPrices: bool, showVat: bool, emoji: bool, categoryColors: bool, customAmountAllowed: bool,
38
+ note: bool, search: bool, payCash: bool, payCard: bool, tip: bool, tipSplit: bool, change: bool, exactCash: bool,
39
+ paySplit: bool, tipChips: prozentChips, logoImage: logoBildUrl, watermarkX: ganz(-25, 125), watermarkY: ganz(-25, 125),
40
+ glass: bool, hints: bool, discountChips: prozentChips,
41
+ },
42
+ device: {
43
+ extraColumns: ganz(-2, 4), touch: bool, printerEnabled: bool, printerIp: ip, printerPort: ganz(1, 65535),
44
+ printerBluetoothId: kennung, printerName: klartext, printerId: kennung, printerDeviceId: kennung, connectPrinterId: kennung,
45
+ drawerEnabled: bool, terminalIp: ip, terminalPort: ganz(1, 65535), terminalTid: tid, shortcutHints: bool,
46
+ },
47
+ };
48
+ /** Aufzaehlungen (aussen, englisch) je Teil. */
49
+ const AUFZAEHLUNGEN = {
50
+ business: settings_js_1.POS_BUSINESS_VALUES, device: settings_js_1.POS_DEVICE_VALUES,
51
+ };
52
+ /** Schalter-Karten: erlaubte Schluessel (Backend STEUERSAETZE, TG_STUFEN = Schluessel der Vorgabe). */
53
+ const KARTEN = {
54
+ vatRates: Object.keys(settings_js_1.POS_BUSINESS_DEFAULTS.vatRates),
55
+ tipSteps: Object.keys(settings_js_1.POS_BUSINESS_DEFAULTS.tipSteps),
56
+ };
57
+ /** Tastenmuster (Backend TASTE_MUSTER). */
58
+ const TASTE_MUSTER = /^((Ctrl|Alt|Shift|Meta|Mod)\+){0,3}([A-Z0-9]|F\d{1,2}|Enter|Escape|Backspace|Space|Tab|Delete|Arrow(Up|Down|Left|Right)|[+\-*/.,])$/;
59
+ /** Schema-Teil (aussen -> innen) und die Kataloge seiner Werte. */
60
+ function teilSchema(teil) {
61
+ return (0, draht_js_1.regel)(vokabular_js_1.SCHEMAS.getKasseSettings.data[teil]).unter;
62
+ }
63
+ function katalogFuer(teil, aussen) {
64
+ const verweis = vokabular_js_1.SCHEMAS.getKasseSettings.werte[`${teil}.${aussen}`];
65
+ return verweis ? vokabular_js_1.KATALOGE[verweis.$catalog] ?? null : null;
66
+ }
67
+ /** Tasten: aeussere und innere Aktionsnamen, Vorgabe und Paare in innerer Form. */
68
+ const TASTEN_SCHEMA = (0, draht_js_1.regel)(teilSchema('device').shortcuts).unter;
69
+ const AKTION_AUSSEN = (0, draht_js_1.innereNamen)(TASTEN_SCHEMA); // innen -> aussen
70
+ const AKTION_INNEN = new Map([...AKTION_AUSSEN].map(([i, a]) => [a, i]));
71
+ const innen = (aktion) => AKTION_INNEN.get(aktion) ?? aktion;
72
+ const TASTEN_VORGABE_INNEN = Object.fromEntries(Object.entries(settings_js_1.POS_SHORTCUT_DEFAULTS).map(([a, t]) => [innen(a), [...t]]));
73
+ const darfTeilen = (a, b) => settings_js_1.POS_SHORTCUT_SHARED_PAIRS.some(([x, y]) => (innen(x) === a && innen(y) === b) || (innen(x) === b && innen(y) === a));
74
+ /** Zwilling von `entwirreTasten`: die gespeicherte Wahl gewinnt, eine beanspruchte Vorgabe-Taste faellt. */
75
+ function entwirreTasten(gemischt, gespeichert) {
76
+ const beansprucht = new Map();
77
+ for (const [aktion, tasten] of Object.entries(gespeichert)) {
78
+ if (!Array.isArray(tasten))
79
+ continue;
80
+ for (const t of tasten)
81
+ beansprucht.set(t, aktion);
82
+ }
83
+ const raus = {};
84
+ for (const [aktion, tasten] of Object.entries(gemischt)) {
85
+ if (!Array.isArray(tasten) || aktion in gespeichert) {
86
+ raus[aktion] = tasten;
87
+ continue;
88
+ }
89
+ raus[aktion] = tasten.filter((t) => {
90
+ const inhaber = beansprucht.get(t);
91
+ return !inhaber || inhaber === aktion || darfTeilen(inhaber, aktion);
92
+ });
93
+ }
94
+ return raus;
95
+ }
96
+ /** Nimmt `tastenkarte` diesen einen Eintrag an? (bekannte Aktion, 0-3 Tasten im Muster) */
97
+ function tasteGueltig(aktion, tasten) {
98
+ if (!AKTION_AUSSEN.has(aktion))
99
+ return false;
100
+ return Array.isArray(tasten) && tasten.length <= 3 && tasten.every((t) => typeof t === 'string' && TASTE_MUSTER.test(t));
101
+ }
102
+ /**
103
+ * Ein Aufzaehlungswert: gueltig (innen bekannt), unbekannt vom richtigen Typ
104
+ * (bleibt, siehe oben) oder ungueltig. Innen gilt die Liste des Servers, also
105
+ * die aeussere Liste durch den Katalog zurueck: ein englischer Wert im
106
+ * gespeicherten Stand (`stil: 'night'`) ist dort ungueltig.
107
+ */
108
+ function aufzaehlung(liste, katalog, w) {
109
+ const zurueck = new Map(Object.entries(katalog ?? {}).map(([i, a]) => [a, i]));
110
+ const innenListe = liste.map((a) => (typeof a === 'string' && zurueck.has(a) ? zurueck.get(a) : a));
111
+ if (innenListe.includes(w))
112
+ return 'gueltig';
113
+ if (typeof w !== typeof liste[0])
114
+ return 'ungueltig';
115
+ if (liste.includes(w) || zurueck.has(w))
116
+ return 'ungueltig';
117
+ return 'unbekannt';
118
+ }
119
+ function teilNachAussen(teil, gespeichert, weg) {
120
+ if (!(0, draht_js_1.istObjekt)(gespeichert))
121
+ return {};
122
+ const schema = teilSchema(teil);
123
+ const aussenName = (0, draht_js_1.innereNamen)(schema); // innen -> aussen
124
+ const raus = {};
125
+ for (const [k, w] of Object.entries(gespeichert)) {
126
+ const aussen = aussenName.get(k);
127
+ // mische: was innen unbekannt ist, kommt gar nicht erst in den Stand.
128
+ if (aussen === undefined || w === undefined)
129
+ continue;
130
+ const pfad = `${teil}.${aussen}`;
131
+ if (aussen === 'shortcuts') {
132
+ if (!w || typeof w !== 'object') {
133
+ weg.push(pfad);
134
+ continue;
135
+ }
136
+ let gemischt = Object.assign({}, TASTEN_VORGABE_INNEN, w);
137
+ if (!Array.isArray(w))
138
+ gemischt = entwirreTasten(gemischt, w);
139
+ const karte = {};
140
+ for (const [aktion, tasten] of Object.entries(gemischt)) {
141
+ if (tasteGueltig(aktion, tasten))
142
+ karte[AKTION_AUSSEN.get(aktion)] = tasten;
143
+ else
144
+ weg.push(`${pfad}.${AKTION_AUSSEN.get(aktion) ?? aktion}`);
145
+ }
146
+ raus[aussen] = karte;
147
+ continue;
148
+ }
149
+ if ((0, draht_js_1.hat)(KARTEN, aussen)) {
150
+ if (!w || typeof w !== 'object') {
151
+ weg.push(pfad);
152
+ continue;
153
+ }
154
+ const karte = {};
155
+ for (const [sk, sw] of Object.entries(w)) {
156
+ if (KARTEN[aussen].includes(sk) && typeof sw === 'boolean')
157
+ karte[sk] = sw;
158
+ else
159
+ weg.push(`${pfad}.${sk}`);
160
+ }
161
+ raus[aussen] = karte;
162
+ continue;
163
+ }
164
+ const liste = AUFZAEHLUNGEN[teil][aussen];
165
+ if (liste) {
166
+ const katalog = katalogFuer(teil, aussen);
167
+ const art = aufzaehlung(liste, katalog, w);
168
+ if (art === 'ungueltig') {
169
+ weg.push(pfad);
170
+ continue;
171
+ }
172
+ raus[aussen] = katalog && typeof w === 'string' && (0, draht_js_1.hat)(katalog, w) ? katalog[w] : w;
173
+ continue;
174
+ }
175
+ const pruefer = PRUEFER[teil][aussen];
176
+ if (pruefer && pruefer(w))
177
+ raus[aussen] = w;
178
+ else
179
+ weg.push(pfad);
180
+ }
181
+ return raus;
182
+ }
183
+ /**
184
+ * Gespeicherte Einstellungen `{ betrieb, geraet }` in der Drahtform, nur die
185
+ * gespeicherten und gueltigen Felder (die Vorgaben mischt der Leser dazu),
186
+ * und die weggelassenen aeusseren Pfade.
187
+ */
188
+ function _storedPosSettingsToWire(stored) {
189
+ const s = (0, draht_js_1.istObjekt)(stored) ? stored : {};
190
+ const weg = [];
191
+ const business = teilNachAussen('business', s.betrieb, weg);
192
+ const device = teilNachAussen('device', s.geraet, weg);
193
+ return { business, device, weggelassen: weg };
194
+ }
195
+ /** Nur fuer den Test: die Feldliste der Pruefer (muss mit der Vorgabe deckungsgleich sein). */
196
+ exports._PRUEFER_FELDER = Object.freeze({
197
+ business: [...Object.keys(PRUEFER.business), ...Object.keys(settings_js_1.POS_BUSINESS_VALUES), ...Object.keys(KARTEN)],
198
+ device: [...Object.keys(PRUEFER.device), ...Object.keys(settings_js_1.POS_DEVICE_VALUES), 'shortcuts'],
199
+ standard: { business: Object.keys(settings_js_1.POS_BUSINESS_DEFAULTS), device: Object.keys(settings_js_1.POS_DEVICE_DEFAULTS) },
200
+ });
@@ -0,0 +1,109 @@
1
+ /**
2
+ * `@kreiseck/kasseneck-api/stored`: gespeicherte Firestore-Dokumente (innen,
3
+ * deutsch) als dieselben englischen Modelle, die der Draht `/v3` liefert.
4
+ *
5
+ * Fuer Verbraucher, die Firestore direkt lesen (Admin-Panel, Echtzeit-Listener
6
+ * auf Belege). So gibt es in 1.0 ein englisches Modell und keinen zweiten
7
+ * Draht-Dialekt: jede Funktion hier uebersetzt das Dokument genau so, wie der
8
+ * Server es unter `/v3` bzw. `/api/v3` hinausgibt (Schluessel und Werte aus
9
+ * dem Vertrags-Export `fixtures/v3/v3-vokabular.json`), und liest das
10
+ * Ergebnis dann mit demselben Leser wie eine Antwort. Ein Test haelt jedes
11
+ * gespeicherte Dokument des Vertrags gegen seine Antwort.
12
+ *
13
+ * Belege kommen im Kanal der Kasse (`app`): mit Anbieterdaten der Zahlungen
14
+ * (`payments[].providerData`/`providerPaymentId`, alte Kartenfelder).
15
+ */
16
+ import { type ReceiptWithCompany } from '../client/receipts.js';
17
+ import { type ReceiptCompany } from '../models/receipt-company.js';
18
+ import type { Receipt, RegistrationInfo } from '../models/receipt.js';
19
+ import { type PosSettings } from '../pos/settings.js';
20
+ import { type PosArticle } from '../pos/artikel.js';
21
+ /** Ein Firestore-Dokument mit seiner Kennung (die nicht in den Daten steht). */
22
+ export interface StoredDocument {
23
+ id: string;
24
+ data: unknown;
25
+ }
26
+ /**
27
+ * Ein Belegdokument (`users/{uid}/cashregisters/{id}/receipts/{id}`) als
28
+ * [Receipt], wie `getReceipt` am Kassenweg ihn liefert. Wirft
29
+ * `KasseneckValidationError`, wenn es kein Belegdokument ist.
30
+ */
31
+ export declare function fromStoredReceipt(doc: unknown): Receipt;
32
+ export interface StoredReceiptOptions {
33
+ /**
34
+ * Die Kopf-Version dieses Belegs (`users/{uid}/beleg_kopf/{id}`): die mit
35
+ * `receipt.headerVersionId` (gespeichert `kopfId`), bei Altbelegen ohne
36
+ * Zuordnung die zum Belegzeitpunkt gueltige (`gueltigAb`/`gueltigBis`).
37
+ */
38
+ headerVersion: StoredDocument;
39
+ /**
40
+ * Das Kontodokument (`users/{uid}`): Logo, wenn die Version noch keines
41
+ * kennt, und die Logo-Stufe (`register_settings.kasse.logoSkala`).
42
+ */
43
+ account?: unknown;
44
+ /** Konto einer Testumgebung (Aufdruck TESTKASSE, keine Testsignatur-Warnung). */
45
+ testCashregister?: boolean;
46
+ /**
47
+ * Registrierdaten fuer einen Nullbeleg, der sie nicht selbst traegt
48
+ * (Altbestand; der Server schlaegt sie an Karte und Kasse nach). Fehlt die
49
+ * Angabe, bleiben beide Zeitpunkte leer.
50
+ */
51
+ registrationInfo?: RegistrationInfo;
52
+ }
53
+ /**
54
+ * Ein Belegdokument samt Firma und Layout, wie `getReceiptWithCompany` am
55
+ * Kassenweg es liefert: Kopf und Fuss aus der Kopf-Version, das Layout mit
56
+ * demselben Regelwerk und in derselben Breite (80 mm) wie am Server.
57
+ */
58
+ export declare function fromStoredReceiptWithCompany(doc: unknown, options: StoredReceiptOptions): ReceiptWithCompany;
59
+ /**
60
+ * Eine Kopf-Version (`users/{uid}/beleg_kopf/{id}`) als [ReceiptCompany], wie
61
+ * die Beleg-Antwort sie traegt. `receipt`: ein Nullbeleg traegt kein Logo;
62
+ * `account`: kennt die Version noch kein Logo, gilt das des Kontos.
63
+ */
64
+ export declare function fromStoredCompany(headerVersion: unknown, options?: {
65
+ account?: unknown;
66
+ receipt?: {
67
+ receiptType?: unknown;
68
+ };
69
+ }): ReceiptCompany;
70
+ /**
71
+ * Gespeicherte Kassen-Einstellungen als [PosSettings], wie `getKasseSettings`
72
+ * am Kassenweg sie liefert: `betrieb` aus
73
+ * `users/{uid}.register_settings.kasse`, `geraet` aus
74
+ * `users/{uid}/register_devices/{id}.kasse` (fehlt = Vorgaben).
75
+ *
76
+ * Wie am Server faellt weg, was der Validator beim Lesen nicht annimmt: ein
77
+ * fremder Steuersatz oder eine fremde Trinkgeldstufe, eine unbekannte
78
+ * Tasten-Aktion (erst nach dem Entwirren der Tasten, wie `mische`), eine Taste
79
+ * ausserhalb des Musters, ein Wert ausserhalb seines Bereichs oder Musters
80
+ * (`wzPos: 500`, Farbe, IP). An seiner Stelle steht die Vorgabe;
81
+ * [invalidStoredPosSettings] nennt jeden solchen Pfad. So schickt ein
82
+ * spaeteres Speichern nie einen Eintrag, den der Server abweist.
83
+ *
84
+ * Einzige Ausnahme: ein unbekannter Wert eines Aufzaehlungsfeldes vom
85
+ * richtigen Typ (`stil: 'sepia'`) bleibt woertlich stehen wie ein unbekannter
86
+ * Wert vom Draht; [unknownPosSettingValues] nennt ihn. Reste der inneren Form
87
+ * 0.x fallen auf die Vorgabe zurueck.
88
+ */
89
+ export declare function fromStoredPosSettings(stored: {
90
+ betrieb?: unknown;
91
+ geraet?: unknown;
92
+ } | null | undefined): PosSettings;
93
+ /**
94
+ * Die aeusseren Pfade (`business.watermarkX`, `business.vatRates.7`,
95
+ * `device.shortcuts.cash`), deren gespeicherten Wert der Server beim Lesen
96
+ * weglaesst und [fromStoredPosSettings] darum durch die Vorgabe ersetzt. Fuer
97
+ * die Anzeige „gespeicherter Wert ungueltig, Vorgabe gilt“.
98
+ */
99
+ export declare function invalidStoredPosSettings(stored: {
100
+ betrieb?: unknown;
101
+ geraet?: unknown;
102
+ } | null | undefined): string[];
103
+ /**
104
+ * Ein Artikeldokument (`users/{uid}/articles/{id}`) als [PosArticle], wie
105
+ * `listMyArticles` am Kassenweg ihn liefert. Felder, die kein Schreibweg
106
+ * kennt, und Katalogwerte, die der Vertrag nicht kennt, fallen wie am Server
107
+ * weg.
108
+ */
109
+ export declare function fromStoredArticle(id: string, stored: unknown): PosArticle;
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromStoredReceipt = fromStoredReceipt;
4
+ exports.fromStoredReceiptWithCompany = fromStoredReceiptWithCompany;
5
+ exports.fromStoredCompany = fromStoredCompany;
6
+ exports.fromStoredPosSettings = fromStoredPosSettings;
7
+ exports.invalidStoredPosSettings = invalidStoredPosSettings;
8
+ exports.fromStoredArticle = fromStoredArticle;
9
+ /**
10
+ * `@kreiseck/kasseneck-api/stored`: gespeicherte Firestore-Dokumente (innen,
11
+ * deutsch) als dieselben englischen Modelle, die der Draht `/v3` liefert.
12
+ *
13
+ * Fuer Verbraucher, die Firestore direkt lesen (Admin-Panel, Echtzeit-Listener
14
+ * auf Belege). So gibt es in 1.0 ein englisches Modell und keinen zweiten
15
+ * Draht-Dialekt: jede Funktion hier uebersetzt das Dokument genau so, wie der
16
+ * Server es unter `/v3` bzw. `/api/v3` hinausgibt (Schluessel und Werte aus
17
+ * dem Vertrags-Export `fixtures/v3/v3-vokabular.json`), und liest das
18
+ * Ergebnis dann mit demselben Leser wie eine Antwort. Ein Test haelt jedes
19
+ * gespeicherte Dokument des Vertrags gegen seine Antwort.
20
+ *
21
+ * Belege kommen im Kanal der Kasse (`app`): mit Anbieterdaten der Zahlungen
22
+ * (`payments[].providerData`/`providerPaymentId`, alte Kartenfelder).
23
+ */
24
+ const receipts_js_1 = require("../client/receipts.js");
25
+ const receipt_company_js_1 = require("../models/receipt-company.js");
26
+ const layout_js_1 = require("../receipt/layout.js");
27
+ const settings_js_1 = require("../pos/settings.js");
28
+ const artikel_js_1 = require("../pos/artikel.js");
29
+ const errors_js_1 = require("../client/errors.js");
30
+ const draht_js_1 = require("./draht.js");
31
+ const einstellungen_js_1 = require("./einstellungen.js");
32
+ const istObjekt = (w) => w !== null && typeof w === 'object' && !Array.isArray(w);
33
+ // ---- Belege -----------------------------------------------------------------
34
+ /**
35
+ * Ein Belegdokument (`users/{uid}/cashregisters/{id}/receipts/{id}`) als
36
+ * [Receipt], wie `getReceipt` am Kassenweg ihn liefert. Wirft
37
+ * `KasseneckValidationError`, wenn es kein Belegdokument ist.
38
+ */
39
+ function fromStoredReceipt(doc) {
40
+ return (0, receipts_js_1.belegAusHuelle)({ receipt: zeilenAlsText((0, draht_js_1._storedReceiptToWire)(doc, 'fromStoredReceipt')) }, 'fromStoredReceipt');
41
+ }
42
+ /**
43
+ * Freitextzeilen (`customerDetails`, `legalMessage`) als Liste gespeichert:
44
+ * als Text mit Zeilenumbruechen lesen, wie das Layout am Server
45
+ * (beleg-layout.belegPayload). Bewusst nachsichtiger als der Draht: dort
46
+ * geht die Liste woertlich hinaus, und der Leser des Pakets scheitert an ihr
47
+ * (Backend-Folgepunkt: Huelle oder Leser). Das Panel soll anzeigen statt
48
+ * abzustuerzen.
49
+ */
50
+ function zeilenAlsText(beleg) {
51
+ const raus = { ...beleg };
52
+ for (const feld of ['customerDetails', 'legalMessage']) {
53
+ const w = raus[feld];
54
+ if (Array.isArray(w))
55
+ raus[feld] = w.filter(Boolean).join('\n');
56
+ }
57
+ return raus;
58
+ }
59
+ /**
60
+ * Ein Belegdokument samt Firma und Layout, wie `getReceiptWithCompany` am
61
+ * Kassenweg es liefert: Kopf und Fuss aus der Kopf-Version, das Layout mit
62
+ * demselben Regelwerk und in derselben Breite (80 mm) wie am Server.
63
+ */
64
+ function fromStoredReceiptWithCompany(doc, options) {
65
+ const name = 'fromStoredReceiptWithCompany';
66
+ if (!istObjekt(options) || !istObjekt(options.headerVersion) || typeof options.headerVersion.id !== 'string') {
67
+ throw new errors_js_1.KasseneckValidationError(name, 'headerVersion { id, data } fehlt', 'request');
68
+ }
69
+ const beleg = (0, draht_js_1._storedReceiptInner)(doc, name);
70
+ // Die Version muss die des Belegs sein: sonst zeigte er still den heutigen
71
+ // Kopf statt des eingefrorenen (BAO § 131). Altbelege ohne kopfId waehlt der
72
+ // Aufrufer ueber das Zeitfenster.
73
+ if (typeof beleg.kopfId === 'string' && beleg.kopfId !== options.headerVersion.id) {
74
+ throw new errors_js_1.KasseneckValidationError(name, `headerVersion ${options.headerVersion.id} ist nicht die Kopf-Version des Belegs (${beleg.kopfId})`, 'request');
75
+ }
76
+ const testKasse = options.testCashregister === true;
77
+ const huelle = {
78
+ receipt: beleg,
79
+ ...betriebsfelder(options.headerVersion.data, options.account, beleg),
80
+ logo_skala: logoStufe(options.account),
81
+ kopfId: options.headerVersion.id,
82
+ pruefangaben: pruefangabenFuer(beleg, options.registrationInfo),
83
+ testSignatur: (0, layout_js_1.receiptSignatureIsTest)({ qr: typeof beleg.qr === 'string' ? beleg.qr : '' }) && !testKasse,
84
+ testKasse,
85
+ };
86
+ const draht = (0, draht_js_1._receiptEnvelopeToWire)(huelle);
87
+ draht.receipt = zeilenAlsText(draht.receipt);
88
+ const raus = (0, receipts_js_1.belegMitFirmaAusHuelle)(draht, name);
89
+ raus.layout = layoutWieServer(raus, beleg.layoutRegeln);
90
+ return raus;
91
+ }
92
+ /**
93
+ * Registrierdaten der Huelle wie `pruefangabenFuerBeleg`: nur Nullbelege;
94
+ * festgehaltene `pruefangaben` des Belegs gehen vor, sonst die Angabe des
95
+ * Aufrufers (der Server schlaegt dann an Karte und Kasse nach), sonst leer.
96
+ */
97
+ function pruefangabenFuer(beleg, angabe) {
98
+ if (beleg.receiptType !== 'zero')
99
+ return null;
100
+ if (beleg.pruefangaben && typeof beleg.pruefangaben === 'object')
101
+ return (0, draht_js_1.pruefangabenDerHuelle)(beleg.pruefangaben);
102
+ return { karteRegistriertAm: angabe?.cardRegisteredAt ?? null, kasseRegistriertAm: angabe?.cashregisterRegisteredAt ?? null };
103
+ }
104
+ /**
105
+ * Layout wie `beleg-layout.layoutFuerBeleg`: 80 mm, Regelwerk mindestens das
106
+ * aktuelle. Kann der Server es nicht bauen, liefert er `null` (dann baut
107
+ * [receiptLayoutFromResult] selbst); ebenso hier.
108
+ */
109
+ function layoutWieServer(b, regelwerk) {
110
+ const ruleset = Math.max(Number(regelwerk) || 1, layout_js_1.CURRENT_LAYOUT_RULESET);
111
+ try {
112
+ return (0, layout_js_1.buildReceiptLayout)(b.receipt, b.company, {
113
+ paperSize: 'mm80', ruleset, testCashregister: b.testCashregister, testSignature: b.testSignature, registrationInfo: b.registrationInfo,
114
+ });
115
+ }
116
+ catch {
117
+ return null;
118
+ }
119
+ }
120
+ // ---- Firma ------------------------------------------------------------------
121
+ const KOPF_FELDER = ['companyName', 'street', 'zip', 'city', 'phone', 'uid', 'taxnr', 'isSmallBusiness',
122
+ 'footer1', 'footer2', 'footer3', 'footer4', 'thanksMessage', 'showKreiseckLogo', 'logoUrl'];
123
+ /** Zwilling von `beleg-kopf-core.nurKopf`: Luecken der Version mit denselben Vorgaben. */
124
+ function nurKopf(version) {
125
+ const v = istObjekt(version) ? version : {};
126
+ const raus = {};
127
+ for (const f of KOPF_FELDER) {
128
+ if (f === 'logoUrl') {
129
+ if (v.logoUrl !== undefined)
130
+ raus.logoUrl = v.logoUrl;
131
+ continue;
132
+ }
133
+ raus[f] = v[f] !== undefined ? v[f]
134
+ : f === 'thanksMessage' ? []
135
+ : f === 'isSmallBusiness' || f === 'showKreiseckLogo' ? false
136
+ : f === 'uid' || f.startsWith('footer') ? null : '';
137
+ }
138
+ return raus;
139
+ }
140
+ /**
141
+ * Betriebsfelder der Beleg-Huelle aus einer Kopf-Version (Zwilling von
142
+ * `alsBetriebPayload` und `logoFuerBeleg`, beleg-kopf-core.js): innere
143
+ * Namen (`uid`, `taxnr`), die der Rand dann uebersetzt.
144
+ */
145
+ function betriebsfelder(version, account, beleg) {
146
+ const k = nurKopf(version);
147
+ // Nachsichtiger als der Server: ein Dank als Zeichenkette (moeglich ueber
148
+ // nachtragKopf) laesst belegAntwort scheitern (`join`), hier bleibt er leer.
149
+ const dank = Array.isArray(k.thanksMessage) ? k.thanksMessage : [];
150
+ const konto = istObjekt(account) ? account : {};
151
+ let logo;
152
+ if (beleg && beleg.receiptType === 'zero')
153
+ logo = null;
154
+ else if (istObjekt(version) && version.logoUrl !== undefined)
155
+ logo = version.logoUrl || null;
156
+ else
157
+ logo = (typeof konto.logo_url === 'string' && konto.logo_url) || null;
158
+ return {
159
+ company: k.companyName, street: k.street, zip: k.zip, city: k.city, phone: k.phone,
160
+ uid: k.uid, taxnr: k.taxnr, is_small_business: k.isSmallBusiness,
161
+ footer1: k.footer1, footer2: k.footer2, footer3: k.footer3, footer4: k.footer4,
162
+ thanks_message: dank.length ? dank.join('\n') : null,
163
+ kreiseck_logo: k.showKreiseckLogo,
164
+ logo_url: logo,
165
+ };
166
+ }
167
+ /** Zwilling von `logoStufeFuerKonto`: Kasse-Einstellung `logoSkala`, sonst M. */
168
+ function logoStufe(account) {
169
+ const konto = istObjekt(account) ? account : {};
170
+ const rs = istObjekt(konto.register_settings) ? konto.register_settings : {};
171
+ const kasse = istObjekt(rs.kasse) ? rs.kasse : {};
172
+ return ['S', 'M', 'L', 'XL'].includes(kasse.logoSkala) ? kasse.logoSkala : 'M';
173
+ }
174
+ /**
175
+ * Eine Kopf-Version (`users/{uid}/beleg_kopf/{id}`) als [ReceiptCompany], wie
176
+ * die Beleg-Antwort sie traegt. `receipt`: ein Nullbeleg traegt kein Logo;
177
+ * `account`: kennt die Version noch kein Logo, gilt das des Kontos.
178
+ */
179
+ function fromStoredCompany(headerVersion, options = {}) {
180
+ const draht = (0, draht_js_1._receiptEnvelopeToWire)(betriebsfelder(headerVersion, options.account, options.receipt));
181
+ return (0, receipt_company_js_1.fromReceiptCompanyPayload)(draht);
182
+ }
183
+ // ---- Kassen-Einstellungen ------------------------------------------------------
184
+ /**
185
+ * Gespeicherte Kassen-Einstellungen als [PosSettings], wie `getKasseSettings`
186
+ * am Kassenweg sie liefert: `betrieb` aus
187
+ * `users/{uid}.register_settings.kasse`, `geraet` aus
188
+ * `users/{uid}/register_devices/{id}.kasse` (fehlt = Vorgaben).
189
+ *
190
+ * Wie am Server faellt weg, was der Validator beim Lesen nicht annimmt: ein
191
+ * fremder Steuersatz oder eine fremde Trinkgeldstufe, eine unbekannte
192
+ * Tasten-Aktion (erst nach dem Entwirren der Tasten, wie `mische`), eine Taste
193
+ * ausserhalb des Musters, ein Wert ausserhalb seines Bereichs oder Musters
194
+ * (`wzPos: 500`, Farbe, IP). An seiner Stelle steht die Vorgabe;
195
+ * [invalidStoredPosSettings] nennt jeden solchen Pfad. So schickt ein
196
+ * spaeteres Speichern nie einen Eintrag, den der Server abweist.
197
+ *
198
+ * Einzige Ausnahme: ein unbekannter Wert eines Aufzaehlungsfeldes vom
199
+ * richtigen Typ (`stil: 'sepia'`) bleibt woertlich stehen wie ein unbekannter
200
+ * Wert vom Draht; [unknownPosSettingValues] nennt ihn. Reste der inneren Form
201
+ * 0.x fallen auf die Vorgabe zurueck.
202
+ */
203
+ function fromStoredPosSettings(stored) {
204
+ const { business, device } = (0, einstellungen_js_1._storedPosSettingsToWire)(stored);
205
+ return (0, settings_js_1.sanitizePosSettings)({ business, device });
206
+ }
207
+ /**
208
+ * Die aeusseren Pfade (`business.watermarkX`, `business.vatRates.7`,
209
+ * `device.shortcuts.cash`), deren gespeicherten Wert der Server beim Lesen
210
+ * weglaesst und [fromStoredPosSettings] darum durch die Vorgabe ersetzt. Fuer
211
+ * die Anzeige „gespeicherter Wert ungueltig, Vorgabe gilt“.
212
+ */
213
+ function invalidStoredPosSettings(stored) {
214
+ return (0, einstellungen_js_1._storedPosSettingsToWire)(stored).weggelassen;
215
+ }
216
+ // ---- Artikel ------------------------------------------------------------------
217
+ /**
218
+ * Ein Artikeldokument (`users/{uid}/articles/{id}`) als [PosArticle], wie
219
+ * `listMyArticles` am Kassenweg ihn liefert. Felder, die kein Schreibweg
220
+ * kennt, und Katalogwerte, die der Vertrag nicht kennt, fallen wie am Server
221
+ * weg.
222
+ */
223
+ function fromStoredArticle(id, stored) {
224
+ return (0, artikel_js_1.fromPosArticlePayload)((0, draht_js_1._storedArticleToWire)(id, stored));
225
+ }
@@ -0,0 +1,18 @@
1
+ /** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
2
+ export declare const VOKABULAR_QUELLE = "29994ca53adc96e7cb49b9e3688b102a69c126544ef092fc6579a2e1fcd0d555";
3
+ /** Schema-Notation des Vertrags: Blatt 'aussen': 'innen', Objekt { __: 'innen', ... }, Liste [ { __: 'innen', ... } ]. */
4
+ export type SchemaEintrag = string | SchemaObjekt | readonly [SchemaObjekt];
5
+ export interface SchemaObjekt {
6
+ readonly [aussen: string]: SchemaEintrag;
7
+ }
8
+ /** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
9
+ export declare const SCHEMAS: Readonly<Record<'getReceipt' | 'getKasseSettings' | 'listMyArticles', {
10
+ readonly data: SchemaObjekt;
11
+ readonly werte: Readonly<Record<string, {
12
+ readonly $catalog: string;
13
+ }>>;
14
+ }>>;
15
+ /** Die Felder eines Artikels in der Antwort (`listMyArticles`), aussen. */
16
+ export declare const ARTIKEL_FELDER: readonly string[];
17
+ /** Wertkataloge innen (deutsch) -> aussen (englisch). */
18
+ export declare const KATALOGE: Readonly<Record<string, Readonly<Record<string, string>>>>;