@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,3461 @@
1
+ {
2
+ "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
+ "_quelle": {
4
+ "default": {
5
+ "sha256": "993dc13a802ce4c2f795a20e7de2d6d0aad6e471e47b60762c32127046a46e95",
6
+ "head": [],
7
+ "inputsSha256": "c2bd7a2b137ff4a84a7b6e68dada87a7141168456147e3f53fb061309cc8ccc4",
8
+ "backendPackage": "@kreiseck/kasseneck-api@0.31.0",
9
+ "inputs": [
10
+ "functions-kasse/test/unit/fixtures/kassen-welt.js",
11
+ "functions/gemeinsam/api-rand.js",
12
+ "functions/gemeinsam/api-vokabular-v3.js",
13
+ "functions/test/unit/fixtures/kassenweg/faelle-v3.js",
14
+ "functions/test/unit/fixtures/kassenweg/faelle.js",
15
+ "functions/test/unit/fixtures/kassenweg/welt.js",
16
+ "functions/test/unit/fixtures/vertrag-v3/ablage.js",
17
+ "functions/test/unit/fixtures/vertrag-v3/kassenweg.js",
18
+ "functions/test/unit/v3-vertrag-export-kassenweg.test.js"
19
+ ]
20
+ },
21
+ "kasse": {
22
+ "sha256": "f73264871e0b41e2c1e32c020a97651a701b268815f3c58e19e015923a4fb239",
23
+ "head": [
24
+ "note",
25
+ "baseline"
26
+ ],
27
+ "inputsSha256": "69aca2a0a94edbbdf175470da3f45974bbd16de3a25aa84a36fb94414c683ee1",
28
+ "backendPackage": "@kreiseck/kasseneck-api@0.14.0",
29
+ "inputs": [
30
+ "functions-kasse/gemeinsam/api-rand.js",
31
+ "functions-kasse/gemeinsam/api-vokabular-v3.js",
32
+ "functions-kasse/test/unit/fixtures/kassen-faelle-v3.js",
33
+ "functions-kasse/test/unit/fixtures/kassen-faelle.js",
34
+ "functions-kasse/test/unit/fixtures/kassen-welt.js",
35
+ "functions-kasse/test/unit/v3-vertrag-export.test.js",
36
+ "functions/test/unit/fixtures/vertrag-v3/ablage.js",
37
+ "functions/test/unit/fixtures/vertrag-v3/kassenweg.js"
38
+ ]
39
+ }
40
+ },
41
+ "baseline": {
42
+ "users/kw_betrieb1": {
43
+ "api_key": "<geheim>",
44
+ "company_name": "Café Welt",
45
+ "phone": "+43 1 234 56",
46
+ "address": {
47
+ "street": "Hauptplatz 1",
48
+ "zip": "1010",
49
+ "city": "Wien"
50
+ },
51
+ "tax_details": {
52
+ "uid": "ATU12345678",
53
+ "taxnr": "12-345/6789",
54
+ "is_small_business": false
55
+ },
56
+ "footer": {
57
+ "footer1": "Danke für Ihren Besuch"
58
+ },
59
+ "thanks_message": "Bis bald",
60
+ "logo_url": "https://example.invalid/logo.png",
61
+ "register_settings": {
62
+ "kasse": {
63
+ "stil": "nacht",
64
+ "farbe": "#222222"
65
+ }
66
+ }
67
+ },
68
+ "users/kw_betrieb1/modules/registrierkasse": {
69
+ "status": "active"
70
+ },
71
+ "users/kw_betrieb1/cashregisters/KASSE1": {
72
+ "label": "Theke 1",
73
+ "token": "<geheim>",
74
+ "aes_key": "<geheim>",
75
+ "signature_id": "sig1",
76
+ "licenses": 5,
77
+ "create_time": "2026-01-02T08:00:00.000Z",
78
+ "onboarding": {
79
+ "cashbox_registered": true,
80
+ "startbeleg_created": true,
81
+ "startbeleg_transmitted": true
82
+ },
83
+ "monthlyReportJournal": true
84
+ },
85
+ "users/kw_betrieb1/cashregisters/KASSE2": {
86
+ "label": "Theke 2",
87
+ "token": "<geheim>",
88
+ "aes_key": "<geheim>",
89
+ "signature_id": "sig1",
90
+ "licenses": 5,
91
+ "create_time": "2026-01-02T08:00:00.000Z",
92
+ "onboarding": {
93
+ "cashbox_registered": true,
94
+ "startbeleg_created": true,
95
+ "startbeleg_transmitted": true
96
+ },
97
+ "decommissioned": true
98
+ },
99
+ "users/kw_betrieb1/cashregisters/KASSE3": {
100
+ "label": "Theke 3",
101
+ "token": "<geheim>",
102
+ "aes_key": "<geheim>",
103
+ "signature_id": null,
104
+ "licenses": 5,
105
+ "create_time": "2026-01-02T08:00:00.000Z",
106
+ "onboarding": {
107
+ "cashbox_registered": true,
108
+ "startbeleg_created": true,
109
+ "startbeleg_transmitted": true
110
+ }
111
+ },
112
+ "users/kw_betrieb1/cashregisters/KASSE4": {
113
+ "label": "Theke 4",
114
+ "token": "<geheim>",
115
+ "aes_key": "<geheim>",
116
+ "signature_id": "sig1",
117
+ "licenses": 5,
118
+ "create_time": "2026-01-02T08:00:00.000Z",
119
+ "onboarding": {
120
+ "cashbox_registered": true
121
+ }
122
+ },
123
+ "users/kw_betrieb1/register_users/ru_chef": {
124
+ "name": "Anna Chef",
125
+ "kind": "person",
126
+ "perms": {
127
+ "sell": true,
128
+ "cancel": true,
129
+ "cancelScope": "all",
130
+ "articles": true,
131
+ "layout": true,
132
+ "reports": true,
133
+ "takeover": true,
134
+ "drawer": true,
135
+ "discount": true,
136
+ "tipAssign": true,
137
+ "receiptsScope": "all"
138
+ },
139
+ "registers": [
140
+ "KASSE1",
141
+ "KASSE3",
142
+ "KASSE4",
143
+ "KASSEX"
144
+ ],
145
+ "inhaber": true,
146
+ "pinHash": "<geheim>",
147
+ "pinSalt": "<geheim>",
148
+ "pinPolicy": {
149
+ "stellen": 4,
150
+ "zeichen": "ziffern",
151
+ "uniqueGeprueft": true
152
+ },
153
+ "failedAttempts": 0,
154
+ "lockedUntil": 0,
155
+ "currentSession": {
156
+ "id": "sess_chef",
157
+ "cashregisterId": "KASSE1",
158
+ "deviceId": "dev_pin",
159
+ "expiresAt": 1790409660000
160
+ }
161
+ },
162
+ "users/kw_betrieb1/register_users/ru_kellner": {
163
+ "name": "Ben Kellner",
164
+ "kind": "person",
165
+ "perms": {
166
+ "sell": true,
167
+ "cancel": true,
168
+ "cancelScope": "own",
169
+ "articles": false,
170
+ "layout": false,
171
+ "reports": false,
172
+ "takeover": false,
173
+ "drawer": false,
174
+ "discount": true,
175
+ "tipAssign": false,
176
+ "receiptsScope": "own"
177
+ },
178
+ "registers": [
179
+ "KASSE1"
180
+ ],
181
+ "pinHash": "<geheim>",
182
+ "pinSalt": "<geheim>",
183
+ "failedAttempts": 2,
184
+ "lockedUntil": 0,
185
+ "currentSession": {
186
+ "id": "sess_kellner",
187
+ "cashregisterId": "KASSE1",
188
+ "deviceId": "dev_auswahl",
189
+ "expiresAt": 1790409660000
190
+ }
191
+ },
192
+ "users/kw_betrieb1/register_users/ru_gesperrt": {
193
+ "name": "Carla Gesperrt",
194
+ "perms": {
195
+ "sell": true,
196
+ "cancel": true,
197
+ "cancelScope": "own",
198
+ "articles": false,
199
+ "layout": false,
200
+ "reports": false,
201
+ "takeover": false,
202
+ "drawer": false,
203
+ "discount": true,
204
+ "tipAssign": false,
205
+ "receiptsScope": "own"
206
+ },
207
+ "registers": [
208
+ "KASSE1"
209
+ ],
210
+ "disabled": true,
211
+ "pinHash": "<geheim>",
212
+ "pinSalt": "<geheim>",
213
+ "currentSession": {
214
+ "id": "sess_gesperrt",
215
+ "cashregisterId": "KASSE1",
216
+ "deviceId": "dev_pin",
217
+ "expiresAt": 1790409660000
218
+ }
219
+ },
220
+ "users/kw_betrieb1/register_users/ru_alt": {
221
+ "name": "Dora Alt",
222
+ "perms": {
223
+ "sell": true,
224
+ "cancel": true,
225
+ "cancelScope": "own",
226
+ "articles": false,
227
+ "layout": false,
228
+ "reports": false,
229
+ "takeover": false,
230
+ "drawer": false,
231
+ "discount": true,
232
+ "tipAssign": false,
233
+ "receiptsScope": "own"
234
+ },
235
+ "registers": [
236
+ "KASSE1"
237
+ ],
238
+ "pinHash": "<geheim>",
239
+ "pinSalt": "<geheim>",
240
+ "currentSession": {
241
+ "id": "sess_alt",
242
+ "cashregisterId": "KASSE1",
243
+ "deviceId": "dev_pin",
244
+ "expiresAt": 1790409599000
245
+ }
246
+ },
247
+ "users/kw_betrieb1/register_users/ru_gesperrt_pin": {
248
+ "name": "Emil Sperre",
249
+ "perms": {
250
+ "sell": true,
251
+ "cancel": true,
252
+ "cancelScope": "own",
253
+ "articles": false,
254
+ "layout": false,
255
+ "reports": false,
256
+ "takeover": false,
257
+ "drawer": false,
258
+ "discount": true,
259
+ "tipAssign": false,
260
+ "receiptsScope": "own"
261
+ },
262
+ "registers": [
263
+ "KASSE1"
264
+ ],
265
+ "pinHash": "<geheim>",
266
+ "pinSalt": "<geheim>",
267
+ "failedAttempts": 5,
268
+ "lockedUntil": 1790409625000
269
+ },
270
+ "users/kw_betrieb1/register_users/ru_fremd": {
271
+ "name": "Fritz Fremd",
272
+ "perms": {
273
+ "sell": true,
274
+ "cancel": true,
275
+ "cancelScope": "own",
276
+ "articles": false,
277
+ "layout": false,
278
+ "reports": false,
279
+ "takeover": false,
280
+ "drawer": false,
281
+ "discount": true,
282
+ "tipAssign": false,
283
+ "receiptsScope": "own"
284
+ },
285
+ "registers": [
286
+ "KASSE3"
287
+ ],
288
+ "pinHash": "<geheim>",
289
+ "pinSalt": "<geheim>",
290
+ "currentSession": {
291
+ "id": "sess_fremd",
292
+ "cashregisterId": "KASSE3",
293
+ "deviceId": "dev_kasse3",
294
+ "expiresAt": 1790409660000
295
+ }
296
+ },
297
+ "users/kw_betrieb1/register_users/ru_ohnestorno": {
298
+ "name": "Gerda Ohne",
299
+ "perms": {
300
+ "sell": true,
301
+ "cancel": true,
302
+ "cancelScope": "none",
303
+ "articles": false,
304
+ "layout": false,
305
+ "reports": false,
306
+ "takeover": false,
307
+ "drawer": false,
308
+ "discount": true,
309
+ "tipAssign": false,
310
+ "receiptsScope": "own"
311
+ },
312
+ "registers": [
313
+ "KASSE1"
314
+ ],
315
+ "pinHash": "<geheim>",
316
+ "pinSalt": "<geheim>",
317
+ "currentSession": {
318
+ "id": "sess_ohnestorno",
319
+ "cashregisterId": "KASSE1",
320
+ "deviceId": "dev_pin",
321
+ "expiresAt": 1790409660000
322
+ }
323
+ },
324
+ "users/kw_betrieb1/register_users/geraet_bar": {
325
+ "name": "Bar-Tablet",
326
+ "kind": "geraet",
327
+ "perms": {
328
+ "sell": true,
329
+ "cancel": true,
330
+ "cancelScope": "own",
331
+ "articles": false,
332
+ "layout": false,
333
+ "reports": false,
334
+ "takeover": false,
335
+ "drawer": false,
336
+ "discount": true,
337
+ "tipAssign": false,
338
+ "receiptsScope": "own"
339
+ },
340
+ "registers": [
341
+ "KASSE1"
342
+ ],
343
+ "pinHash": "<geheim>",
344
+ "pinSalt": "<geheim>"
345
+ },
346
+ "users/kw_betrieb1/register_devices/dev_pin": {
347
+ "secretHash": "<geheim>",
348
+ "label": "Tablet vorne",
349
+ "cashregisterId": "KASSE1",
350
+ "disabled": false,
351
+ "loginMode": "pin",
352
+ "createdAt": 1790323200000,
353
+ "lastSeenAt": 1790406000000,
354
+ "lastUserId": null,
355
+ "failedAttempts": 0,
356
+ "lockedUntil": 0,
357
+ "kasse": {
358
+ "layout": "links",
359
+ "papier": "mm58"
360
+ }
361
+ },
362
+ "users/kw_betrieb1/register_devices/dev_auswahl": {
363
+ "secretHash": "<geheim>",
364
+ "label": "Tablet hinten",
365
+ "cashregisterId": "KASSE1",
366
+ "disabled": false,
367
+ "loginMode": "auswahl",
368
+ "createdAt": 1790323200000,
369
+ "lastSeenAt": 1790406000000,
370
+ "lastUserId": null
371
+ },
372
+ "users/kw_betrieb1/register_devices/dev_frei": {
373
+ "secretHash": "<geheim>",
374
+ "label": "Kasse Tresen",
375
+ "cashregisterId": "KASSE1",
376
+ "disabled": false,
377
+ "loginMode": "auswahl",
378
+ "createdAt": 1790323200000,
379
+ "lastSeenAt": 1790406000000,
380
+ "lastUserId": null
381
+ },
382
+ "users/kw_betrieb1/register_devices/dev_gesperrt": {
383
+ "secretHash": "<geheim>",
384
+ "label": "Altes Tablet",
385
+ "cashregisterId": "KASSE1",
386
+ "disabled": true,
387
+ "loginMode": "pin"
388
+ },
389
+ "users/kw_betrieb1/register_devices/dev_sperre": {
390
+ "secretHash": "<geheim>",
391
+ "label": "Tablet Sperre",
392
+ "cashregisterId": "KASSE1",
393
+ "disabled": false,
394
+ "loginMode": "pin",
395
+ "failedAttempts": 6,
396
+ "lockedUntil": 1790409642000
397
+ },
398
+ "users/kw_betrieb1/register_devices/dev_kasse3": {
399
+ "secretHash": "<geheim>",
400
+ "label": "Tablet Terrasse",
401
+ "cashregisterId": "KASSE3",
402
+ "disabled": false,
403
+ "loginMode": "pin"
404
+ },
405
+ "users/kw_betrieb1/register_devices/dev_kasse2": {
406
+ "secretHash": "<geheim>",
407
+ "label": "Tablet Keller",
408
+ "cashregisterId": "KASSE2",
409
+ "disabled": false,
410
+ "loginMode": "auswahl"
411
+ },
412
+ "users/kw_betrieb1/register_devices/dev_kasse4": {
413
+ "secretHash": "<geheim>",
414
+ "label": "Tablet Neu",
415
+ "cashregisterId": "KASSE4",
416
+ "disabled": false,
417
+ "loginMode": "pin"
418
+ },
419
+ "users/kw_betrieb1/register_devices/dev_kassex": {
420
+ "secretHash": "<geheim>",
421
+ "label": "Tablet Weg",
422
+ "cashregisterId": "KASSEX",
423
+ "disabled": false,
424
+ "loginMode": "pin"
425
+ },
426
+ "users/kw_betrieb1/register_devices/dev_alt": {
427
+ "secretHash": "<geheim>",
428
+ "label": "Altbestand",
429
+ "disabled": false,
430
+ "standortsperre": {
431
+ "an": true,
432
+ "lat": 48.2082,
433
+ "lng": 16.3738,
434
+ "radiusM": 200,
435
+ "name": "Laden"
436
+ }
437
+ },
438
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": {
439
+ "userId": "ru_chef",
440
+ "deviceId": "dev_pin",
441
+ "startedAt": 1790409000000,
442
+ "expiresAt": 1790409660000,
443
+ "takenOverBy": null
444
+ },
445
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": {
446
+ "userId": "ru_kellner",
447
+ "deviceId": "dev_auswahl",
448
+ "startedAt": 1790409300000,
449
+ "expiresAt": 1790409660000,
450
+ "takenOverBy": null
451
+ },
452
+ "users/kw_betrieb1/cashregisters/KASSE3/sessions/sess_fremd": {
453
+ "userId": "ru_fremd",
454
+ "deviceId": "dev_kasse3",
455
+ "startedAt": 1790409500000,
456
+ "expiresAt": 1790409660000,
457
+ "takenOverBy": null
458
+ },
459
+ "register_pairings/EXMPXV29": {
460
+ "ownerUid": "kw_betrieb1",
461
+ "cashregisterId": "KASSE1",
462
+ "expiresAt": 1790410200000
463
+ },
464
+ "register_pairings/EXMPE3QL": {
465
+ "ownerUid": "kw_betrieb1",
466
+ "cashregisterId": "KASSE1",
467
+ "expiresAt": 1790410200000,
468
+ "usedAt": 1790409599000
469
+ },
470
+ "register_pairings/EXMPTMWM": {
471
+ "ownerUid": "kw_betrieb1",
472
+ "cashregisterId": "KASSE1",
473
+ "expiresAt": 1790409599999
474
+ },
475
+ "register_pairings/EXMPJYCX": {
476
+ "ownerUid": "kw_betrieb1",
477
+ "cashregisterId": "KASSE1",
478
+ "expiresAt": 1790410200000,
479
+ "aktiv": false
480
+ },
481
+ "register_pairings/EXMP66A2": {
482
+ "ownerUid": "kw_betrieb1",
483
+ "expiresAt": 1790410200000
484
+ },
485
+ "register_pairings/EXMPZ89M": {
486
+ "ownerUid": "kw_betrieb1",
487
+ "cashregisterId": "KASSE2",
488
+ "expiresAt": 1790410200000
489
+ },
490
+ "register_pairings/EXMPCN9S": {
491
+ "ownerUid": "kw_betrieb1",
492
+ "cashregisterId": "KASSE1",
493
+ "dauerhaft": true,
494
+ "aktivesGeraet": "dev_pin",
495
+ "nutzungen": 3
496
+ },
497
+ "users/kw_betrieb1/articles/art_kaffee": {
498
+ "name": "Kaffee",
499
+ "priceCents": 320,
500
+ "vatRate": 20,
501
+ "unit": "Stk",
502
+ "active": true,
503
+ "groupId": "grp_warm",
504
+ "create_time": 111,
505
+ "update_time": 222,
506
+ "kasse": {
507
+ "farbe": "#aa5500",
508
+ "symbol": "kaffee"
509
+ }
510
+ },
511
+ "users/kw_betrieb1/articles/art_kuchen": {
512
+ "name": "Kuchen",
513
+ "priceCents": 450,
514
+ "vatRate": 10,
515
+ "unit": "Stk",
516
+ "active": true
517
+ },
518
+ "users/kw_betrieb1/article_groups/grp_warm": {
519
+ "name": "Warm",
520
+ "color": "#aa0000",
521
+ "sort": 2,
522
+ "createdAt": 1,
523
+ "updatedAt": 2
524
+ },
525
+ "users/kw_betrieb1/article_groups/grp_kalt": {
526
+ "name": "Kalt",
527
+ "color": "#0000aa",
528
+ "sort": 1
529
+ },
530
+ "users/kw_betrieb1/drucker/dr_theke": {
531
+ "name": "Theke",
532
+ "art": "epson-sdp",
533
+ "papier": "mm80",
534
+ "token": "<geheim>",
535
+ "aktiv": true,
536
+ "erstellt": 1790323200000,
537
+ "zuletztGesehen": 1790409595000,
538
+ "zuletztErgebnis": {
539
+ "erfolg": true,
540
+ "code": "",
541
+ "zeit": 1790409595000
542
+ },
543
+ "druckerKennung": "TM-T20"
544
+ },
545
+ "users/kw_betrieb1/drucker/dr_alt": {
546
+ "name": "Alt",
547
+ "papier": "mm58",
548
+ "token": null,
549
+ "aktiv": false
550
+ },
551
+ "users/kw_betrieb1/drucker/dr_theke/jobs/job1": {
552
+ "status": "gedruckt",
553
+ "xml": "<x/>",
554
+ "erstellt": 1790409540000,
555
+ "gesendetAt": 1790409545000,
556
+ "ergebnis": {
557
+ "erfolg": true,
558
+ "code": "",
559
+ "status": "",
560
+ "zeit": 1790409550000
561
+ }
562
+ },
563
+ "users/kw_betrieb1/drucker/dr_theke/jobs/job2": {
564
+ "status": "offen",
565
+ "xml": "<y/>",
566
+ "erstellt": 1790409599000
567
+ }
568
+ },
569
+ "note": "Firestore-Dokumente der Kassen-Welt (innen, deutsch, Geheimnisse ausgeblendet oder ersetzt): baseline = Ausgangsbestand der Codebase kasse, endpoints.<name>.cases.<Fall> = was der Fall am Bestand aenderte (null = geloescht).",
570
+ "endpoints": {
571
+ "pairRegisterDevice": {
572
+ "codebase": "kasse",
573
+ "cases": {
574
+ "permanent_takeover": {
575
+ "register_pairings/EXMPCN9S": {
576
+ "ownerUid": "kw_betrieb1",
577
+ "cashregisterId": "KASSE1",
578
+ "dauerhaft": true,
579
+ "aktivesGeraet": "auto1",
580
+ "nutzungen": 4,
581
+ "zuletztGenutztAm": 1790409600000
582
+ },
583
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
584
+ "users/kw_betrieb1/register_devices/auto1": {
585
+ "secretHash": "<geheim>",
586
+ "label": "Neues Tablet",
587
+ "cashregisterId": "KASSE1",
588
+ "disabled": false,
589
+ "createdAt": 1790409600000,
590
+ "lastSeenAt": 1790409600000,
591
+ "lastUserId": null,
592
+ "client": null,
593
+ "pairedIp": "203.0.113.7",
594
+ "pairedGeo": null,
595
+ "lastIp": "203.0.113.7",
596
+ "lastGeo": null,
597
+ "lastLoginAt": null
598
+ },
599
+ "users/kw_betrieb1/register_devices/dev_pin": {
600
+ "secretHash": "<geheim>",
601
+ "label": "Tablet vorne",
602
+ "cashregisterId": "KASSE1",
603
+ "disabled": true,
604
+ "loginMode": "pin",
605
+ "createdAt": 1790323200000,
606
+ "lastSeenAt": 1790406000000,
607
+ "lastUserId": null,
608
+ "failedAttempts": 0,
609
+ "lockedUntil": 0,
610
+ "kasse": {
611
+ "layout": "links",
612
+ "papier": "mm58"
613
+ },
614
+ "revokedAt": 1790409600000
615
+ },
616
+ "users/kw_betrieb1/register_users/ru_chef": {
617
+ "name": "Anna Chef",
618
+ "kind": "person",
619
+ "perms": {
620
+ "sell": true,
621
+ "cancel": true,
622
+ "cancelScope": "all",
623
+ "articles": true,
624
+ "layout": true,
625
+ "reports": true,
626
+ "takeover": true,
627
+ "drawer": true,
628
+ "discount": true,
629
+ "tipAssign": true,
630
+ "receiptsScope": "all"
631
+ },
632
+ "registers": [
633
+ "KASSE1",
634
+ "KASSE3",
635
+ "KASSE4",
636
+ "KASSEX"
637
+ ],
638
+ "inhaber": true,
639
+ "pinHash": "<geheim>",
640
+ "pinSalt": "<geheim>",
641
+ "pinPolicy": {
642
+ "stellen": 4,
643
+ "zeichen": "ziffern",
644
+ "uniqueGeprueft": true
645
+ },
646
+ "failedAttempts": 0,
647
+ "lockedUntil": 0,
648
+ "currentSession": null
649
+ }
650
+ },
651
+ "success": {
652
+ "register_pairings/EXMPXV29": {
653
+ "ownerUid": "kw_betrieb1",
654
+ "cashregisterId": "KASSE1",
655
+ "expiresAt": 1790410200000,
656
+ "usedAt": 1790409600000
657
+ },
658
+ "users/kw_betrieb1/register_devices/auto1": {
659
+ "secretHash": "<geheim>",
660
+ "label": "Tablet Bar",
661
+ "cashregisterId": "KASSE1",
662
+ "disabled": false,
663
+ "createdAt": 1790409600000,
664
+ "lastSeenAt": 1790409600000,
665
+ "lastUserId": null,
666
+ "client": {
667
+ "userAgent": "Mozilla/5.0 Kasse",
668
+ "platform": "iPad",
669
+ "language": "de-AT",
670
+ "tz": "Europe/Vienna",
671
+ "app": "kasse-app/1.0.3+34",
672
+ "screen": {
673
+ "w": 1024,
674
+ "h": 768
675
+ }
676
+ },
677
+ "pairedIp": "203.0.113.7",
678
+ "pairedGeo": {
679
+ "lat": 48.2083,
680
+ "lng": 16.3739,
681
+ "acc": 10
682
+ },
683
+ "lastIp": "203.0.113.7",
684
+ "lastGeo": {
685
+ "lat": 48.2083,
686
+ "lng": 16.3739,
687
+ "acc": 10
688
+ },
689
+ "lastLoginAt": null
690
+ }
691
+ },
692
+ "success_lowercase": {
693
+ "register_pairings/EXMPXV29": {
694
+ "ownerUid": "kw_betrieb1",
695
+ "cashregisterId": "KASSE1",
696
+ "expiresAt": 1790410200000,
697
+ "usedAt": 1790409600000
698
+ },
699
+ "users/kw_betrieb1/register_devices/auto1": {
700
+ "secretHash": "<geheim>",
701
+ "label": "Kasse",
702
+ "cashregisterId": "KASSE1",
703
+ "disabled": false,
704
+ "createdAt": 1790409600000,
705
+ "lastSeenAt": 1790409600000,
706
+ "lastUserId": null,
707
+ "client": null,
708
+ "pairedIp": "203.0.113.7",
709
+ "pairedGeo": null,
710
+ "lastIp": "203.0.113.7",
711
+ "lastGeo": null,
712
+ "lastLoginAt": null
713
+ }
714
+ },
715
+ "success_without_cashregister_label": {
716
+ "register_pairings/EXMPXV29": {
717
+ "ownerUid": "kw_betrieb1",
718
+ "cashregisterId": "KASSE1",
719
+ "expiresAt": 1790410200000,
720
+ "usedAt": 1790409600000
721
+ },
722
+ "users/kw_betrieb1/register_devices/auto1": {
723
+ "secretHash": "<geheim>",
724
+ "label": "Kasse",
725
+ "cashregisterId": "KASSE1",
726
+ "disabled": false,
727
+ "createdAt": 1790409600000,
728
+ "lastSeenAt": 1790409600000,
729
+ "lastUserId": null,
730
+ "client": null,
731
+ "pairedIp": "203.0.113.7",
732
+ "pairedGeo": null,
733
+ "lastIp": "203.0.113.7",
734
+ "lastGeo": null,
735
+ "lastLoginAt": null
736
+ }
737
+ },
738
+ "success_test_environment": {
739
+ "register_pairings/EXMPXV29": {
740
+ "ownerUid": "test_kw_betrieb1",
741
+ "cashregisterId": "KASSE1",
742
+ "expiresAt": 1790410200000,
743
+ "usedAt": 1790409600000
744
+ },
745
+ "users/test_kw_betrieb1/register_devices/auto1": {
746
+ "secretHash": "<geheim>",
747
+ "label": "Kasse",
748
+ "cashregisterId": "KASSE1",
749
+ "disabled": false,
750
+ "createdAt": 1790409600000,
751
+ "lastSeenAt": 1790409600000,
752
+ "lastUserId": null,
753
+ "client": null,
754
+ "pairedIp": "203.0.113.7",
755
+ "pairedGeo": null,
756
+ "lastIp": "203.0.113.7",
757
+ "lastGeo": null,
758
+ "lastLoginAt": null
759
+ }
760
+ },
761
+ "body_as_text": {
762
+ "register_pairings/EXMPXV29": {
763
+ "ownerUid": "kw_betrieb1",
764
+ "cashregisterId": "KASSE1",
765
+ "expiresAt": 1790410200000,
766
+ "usedAt": 1790409600000
767
+ },
768
+ "users/kw_betrieb1/register_devices/auto1": {
769
+ "secretHash": "<geheim>",
770
+ "label": "Kasse",
771
+ "cashregisterId": "KASSE1",
772
+ "disabled": false,
773
+ "createdAt": 1790409600000,
774
+ "lastSeenAt": 1790409600000,
775
+ "lastUserId": null,
776
+ "client": null,
777
+ "pairedIp": "203.0.113.7",
778
+ "pairedGeo": null,
779
+ "lastIp": "203.0.113.7",
780
+ "lastGeo": null,
781
+ "lastLoginAt": null
782
+ }
783
+ },
784
+ "params_as_text": {
785
+ "register_pairings/EXMPXV29": {
786
+ "ownerUid": "kw_betrieb1",
787
+ "cashregisterId": "KASSE1",
788
+ "expiresAt": 1790410200000,
789
+ "usedAt": 1790409600000
790
+ },
791
+ "users/kw_betrieb1/register_devices/auto1": {
792
+ "secretHash": "<geheim>",
793
+ "label": "Kasse",
794
+ "cashregisterId": "KASSE1",
795
+ "disabled": false,
796
+ "createdAt": 1790409600000,
797
+ "lastSeenAt": 1790409600000,
798
+ "lastUserId": null,
799
+ "client": null,
800
+ "pairedIp": "203.0.113.7",
801
+ "pairedGeo": null,
802
+ "lastIp": "203.0.113.7",
803
+ "lastGeo": null,
804
+ "lastLoginAt": null
805
+ }
806
+ }
807
+ }
808
+ },
809
+ "listRegisterUsersForDevice": {
810
+ "codebase": "kasse",
811
+ "cases": {
812
+ "success_only_pin": {
813
+ "users/kw_betrieb1/register_devices/dev_pin": {
814
+ "secretHash": "<geheim>",
815
+ "label": "Tablet vorne",
816
+ "cashregisterId": "KASSE1",
817
+ "disabled": false,
818
+ "loginMode": "pin",
819
+ "createdAt": 1790323200000,
820
+ "lastSeenAt": 1790409600000,
821
+ "lastUserId": null,
822
+ "failedAttempts": 0,
823
+ "lockedUntil": 0,
824
+ "kasse": {
825
+ "layout": "links",
826
+ "papier": "mm58"
827
+ }
828
+ }
829
+ },
830
+ "success_select": {
831
+ "users/kw_betrieb1/register_devices/dev_auswahl": {
832
+ "secretHash": "<geheim>",
833
+ "label": "Tablet hinten",
834
+ "cashregisterId": "KASSE1",
835
+ "disabled": false,
836
+ "loginMode": "auswahl",
837
+ "createdAt": 1790323200000,
838
+ "lastSeenAt": 1790409600000,
839
+ "lastUserId": null
840
+ }
841
+ },
842
+ "cashregister_decommissioned": {
843
+ "users/kw_betrieb1/register_devices/dev_kasse2": {
844
+ "secretHash": "<geheim>",
845
+ "label": "Tablet Keller",
846
+ "cashregisterId": "KASSE2",
847
+ "disabled": false,
848
+ "loginMode": "auswahl",
849
+ "lastSeenAt": 1790409600000
850
+ }
851
+ },
852
+ "cashregister_without_signature": {
853
+ "users/kw_betrieb1/register_devices/dev_kasse3": {
854
+ "secretHash": "<geheim>",
855
+ "label": "Tablet Terrasse",
856
+ "cashregisterId": "KASSE3",
857
+ "disabled": false,
858
+ "loginMode": "pin",
859
+ "lastSeenAt": 1790409600000
860
+ }
861
+ },
862
+ "cashregister_without_start_receipt": {
863
+ "users/kw_betrieb1/register_devices/dev_kasse4": {
864
+ "secretHash": "<geheim>",
865
+ "label": "Tablet Neu",
866
+ "cashregisterId": "KASSE4",
867
+ "disabled": false,
868
+ "loginMode": "pin",
869
+ "lastSeenAt": 1790409600000
870
+ }
871
+ },
872
+ "cashregister_with_receipt_without_marker": {
873
+ "users/kw_betrieb1/register_devices/dev_kasse4": {
874
+ "secretHash": "<geheim>",
875
+ "label": "Tablet Neu",
876
+ "cashregisterId": "KASSE4",
877
+ "disabled": false,
878
+ "loginMode": "pin",
879
+ "lastSeenAt": 1790409600000
880
+ }
881
+ },
882
+ "cashregister_missing": {
883
+ "users/kw_betrieb1/register_devices/dev_kassex": {
884
+ "secretHash": "<geheim>",
885
+ "label": "Tablet Weg",
886
+ "cashregisterId": "KASSEX",
887
+ "disabled": false,
888
+ "loginMode": "pin",
889
+ "lastSeenAt": 1790409600000
890
+ }
891
+ },
892
+ "legacy_without_cashregister_with_lock": {
893
+ "users/kw_betrieb1/register_devices/dev_alt": {
894
+ "secretHash": "<geheim>",
895
+ "label": "Altbestand",
896
+ "disabled": false,
897
+ "standortsperre": {
898
+ "an": true,
899
+ "lat": 48.2082,
900
+ "lng": 16.3738,
901
+ "radiusM": 200,
902
+ "name": "Laden"
903
+ },
904
+ "lastSeenAt": 1790409600000
905
+ }
906
+ },
907
+ "account_without_settings": {
908
+ "users/kw_betrieb1/register_devices/dev_pin": {
909
+ "secretHash": "<geheim>",
910
+ "label": "Tablet vorne",
911
+ "cashregisterId": "KASSE1",
912
+ "disabled": false,
913
+ "loginMode": "pin",
914
+ "createdAt": 1790323200000,
915
+ "lastSeenAt": 1790409600000,
916
+ "lastUserId": null,
917
+ "failedAttempts": 0,
918
+ "lockedUntil": 0,
919
+ "kasse": {
920
+ "layout": "links",
921
+ "papier": "mm58"
922
+ }
923
+ }
924
+ }
925
+ }
926
+ },
927
+ "registerUserLogin": {
928
+ "codebase": "kasse",
929
+ "cases": {
930
+ "pin_wrong": {
931
+ "users/kw_betrieb1/register_users/ru_kellner": {
932
+ "name": "Ben Kellner",
933
+ "kind": "person",
934
+ "perms": {
935
+ "sell": true,
936
+ "cancel": true,
937
+ "cancelScope": "own",
938
+ "articles": false,
939
+ "layout": false,
940
+ "reports": false,
941
+ "takeover": false,
942
+ "drawer": false,
943
+ "discount": true,
944
+ "tipAssign": false,
945
+ "receiptsScope": "own"
946
+ },
947
+ "registers": [
948
+ "KASSE1"
949
+ ],
950
+ "pinHash": "<geheim>",
951
+ "pinSalt": "<geheim>",
952
+ "failedAttempts": 3,
953
+ "lockedUntil": 0,
954
+ "currentSession": {
955
+ "id": "sess_kellner",
956
+ "cashregisterId": "KASSE1",
957
+ "deviceId": "dev_auswahl",
958
+ "expiresAt": 1790409660000
959
+ }
960
+ }
961
+ },
962
+ "pin_wrong_locks": {
963
+ "users/kw_betrieb1/register_users/ru_kellner": {
964
+ "name": "Ben Kellner",
965
+ "kind": "person",
966
+ "perms": {
967
+ "sell": true,
968
+ "cancel": true,
969
+ "cancelScope": "own",
970
+ "articles": false,
971
+ "layout": false,
972
+ "reports": false,
973
+ "takeover": false,
974
+ "drawer": false,
975
+ "discount": true,
976
+ "tipAssign": false,
977
+ "receiptsScope": "own"
978
+ },
979
+ "registers": [
980
+ "KASSE1"
981
+ ],
982
+ "pinHash": "<geheim>",
983
+ "pinSalt": "<geheim>",
984
+ "failedAttempts": 5,
985
+ "lockedUntil": 1790409630000,
986
+ "currentSession": {
987
+ "id": "sess_kellner",
988
+ "cashregisterId": "KASSE1",
989
+ "deviceId": "dev_auswahl",
990
+ "expiresAt": 1790409660000
991
+ }
992
+ }
993
+ },
994
+ "location_without_location": {
995
+ "users/kw_betrieb1/register_devices/dev_alt": {
996
+ "secretHash": "<geheim>",
997
+ "label": "Altbestand",
998
+ "disabled": false,
999
+ "standortsperre": {
1000
+ "an": true,
1001
+ "lat": 48.2082,
1002
+ "lng": 16.3738,
1003
+ "radiusM": 200,
1004
+ "name": "Laden"
1005
+ },
1006
+ "lastIp": "203.0.113.7",
1007
+ "lastGeo": null,
1008
+ "lastLoginAt": 1790409600000,
1009
+ "lastStandortAbgelehntAt": 1790409600000
1010
+ }
1011
+ },
1012
+ "location_far": {
1013
+ "users/kw_betrieb1/register_devices/dev_alt": {
1014
+ "secretHash": "<geheim>",
1015
+ "label": "Altbestand",
1016
+ "disabled": false,
1017
+ "standortsperre": {
1018
+ "an": true,
1019
+ "lat": 48.2082,
1020
+ "lng": 16.3738,
1021
+ "radiusM": 200,
1022
+ "name": "Laden"
1023
+ },
1024
+ "lastIp": "203.0.113.7",
1025
+ "lastGeo": {
1026
+ "lat": 47.0707,
1027
+ "lng": 15.4395,
1028
+ "acc": 10
1029
+ },
1030
+ "lastLoginAt": 1790409600000,
1031
+ "lastStandortAbgelehntAt": 1790409600000
1032
+ }
1033
+ },
1034
+ "cashregister_exists_not": {
1035
+ "users/kw_betrieb1/register_devices/dev_alt": {
1036
+ "secretHash": "<geheim>",
1037
+ "label": "Altbestand",
1038
+ "disabled": false,
1039
+ "standortsperre": {
1040
+ "an": true,
1041
+ "lat": 48.2082,
1042
+ "lng": 16.3738,
1043
+ "radiusM": 200,
1044
+ "name": "Laden"
1045
+ },
1046
+ "lastIp": "203.0.113.7",
1047
+ "lastGeo": {
1048
+ "lat": 48.2083,
1049
+ "lng": 16.3739,
1050
+ "acc": 10
1051
+ },
1052
+ "lastLoginAt": 1790409600000
1053
+ }
1054
+ },
1055
+ "credential_failed": {
1056
+ "users/kw_betrieb1/register_devices/dev_auswahl": {
1057
+ "secretHash": "<geheim>",
1058
+ "label": "Tablet hinten",
1059
+ "cashregisterId": "KASSE1",
1060
+ "disabled": false,
1061
+ "loginMode": "auswahl",
1062
+ "createdAt": 1790323200000,
1063
+ "lastSeenAt": 1790406000000,
1064
+ "lastUserId": null,
1065
+ "lastIp": "203.0.113.7",
1066
+ "lastGeo": null,
1067
+ "lastLoginAt": 1790409600000
1068
+ }
1069
+ },
1070
+ "in_use": {
1071
+ "users/kw_betrieb1/register_devices/dev_frei": {
1072
+ "secretHash": "<geheim>",
1073
+ "label": "Kasse Tresen",
1074
+ "cashregisterId": "KASSE1",
1075
+ "disabled": false,
1076
+ "loginMode": "auswahl",
1077
+ "createdAt": 1790323200000,
1078
+ "lastSeenAt": 1790406000000,
1079
+ "lastUserId": null,
1080
+ "lastIp": "203.0.113.7",
1081
+ "lastGeo": null,
1082
+ "lastLoginAt": 1790409600000
1083
+ }
1084
+ },
1085
+ "in_use_takeover_without_permission": {
1086
+ "users/kw_betrieb1/register_devices/dev_frei": {
1087
+ "secretHash": "<geheim>",
1088
+ "label": "Kasse Tresen",
1089
+ "cashregisterId": "KASSE1",
1090
+ "disabled": false,
1091
+ "loginMode": "auswahl",
1092
+ "createdAt": 1790323200000,
1093
+ "lastSeenAt": 1790406000000,
1094
+ "lastUserId": null,
1095
+ "lastIp": "203.0.113.7",
1096
+ "lastGeo": null,
1097
+ "lastLoginAt": 1790409600000
1098
+ }
1099
+ },
1100
+ "in_use_device_without_label": {
1101
+ "users/kw_betrieb1/register_devices/dev_frei": {
1102
+ "secretHash": "<geheim>",
1103
+ "label": "Kasse Tresen",
1104
+ "cashregisterId": "KASSE1",
1105
+ "disabled": false,
1106
+ "loginMode": "auswahl",
1107
+ "createdAt": 1790323200000,
1108
+ "lastSeenAt": 1790406000000,
1109
+ "lastUserId": null,
1110
+ "lastIp": "203.0.113.7",
1111
+ "lastGeo": null,
1112
+ "lastLoginAt": 1790409600000
1113
+ }
1114
+ },
1115
+ "takeover": {
1116
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/auto1": {
1117
+ "userId": "ru_chef",
1118
+ "deviceId": "dev_frei",
1119
+ "startedAt": 1790409600000,
1120
+ "expiresAt": 1790409690000,
1121
+ "takenOverBy": null
1122
+ },
1123
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
1124
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": {
1125
+ "userId": "ru_kellner",
1126
+ "deviceId": "dev_auswahl",
1127
+ "startedAt": 1790409300000,
1128
+ "expiresAt": 1790409600000,
1129
+ "takenOverBy": "ru_chef"
1130
+ },
1131
+ "users/kw_betrieb1/register_devices/dev_frei": {
1132
+ "secretHash": "<geheim>",
1133
+ "label": "Kasse Tresen",
1134
+ "cashregisterId": "KASSE1",
1135
+ "disabled": false,
1136
+ "loginMode": "auswahl",
1137
+ "createdAt": 1790323200000,
1138
+ "lastSeenAt": 1790409600000,
1139
+ "lastUserId": "ru_chef",
1140
+ "lastIp": "203.0.113.7",
1141
+ "lastGeo": null,
1142
+ "lastLoginAt": 1790409600000
1143
+ },
1144
+ "users/kw_betrieb1/register_users/ru_chef": {
1145
+ "name": "Anna Chef",
1146
+ "kind": "person",
1147
+ "perms": {
1148
+ "sell": true,
1149
+ "cancel": true,
1150
+ "cancelScope": "all",
1151
+ "articles": true,
1152
+ "layout": true,
1153
+ "reports": true,
1154
+ "takeover": true,
1155
+ "drawer": true,
1156
+ "discount": true,
1157
+ "tipAssign": true,
1158
+ "receiptsScope": "all"
1159
+ },
1160
+ "registers": [
1161
+ "KASSE1",
1162
+ "KASSE3",
1163
+ "KASSE4",
1164
+ "KASSEX"
1165
+ ],
1166
+ "inhaber": true,
1167
+ "pinHash": "<geheim>",
1168
+ "pinSalt": "<geheim>",
1169
+ "pinPolicy": {
1170
+ "stellen": 4,
1171
+ "zeichen": "ziffern",
1172
+ "uniqueGeprueft": true
1173
+ },
1174
+ "failedAttempts": 0,
1175
+ "lockedUntil": 0,
1176
+ "currentSession": {
1177
+ "id": "auto1",
1178
+ "cashregisterId": "KASSE1",
1179
+ "deviceId": "dev_frei",
1180
+ "expiresAt": 1790409690000
1181
+ },
1182
+ "lastLoginAt": 1790409600000
1183
+ },
1184
+ "users/kw_betrieb1/register_users/ru_kellner": {
1185
+ "name": "Ben Kellner",
1186
+ "kind": "person",
1187
+ "perms": {
1188
+ "sell": true,
1189
+ "cancel": true,
1190
+ "cancelScope": "own",
1191
+ "articles": false,
1192
+ "layout": false,
1193
+ "reports": false,
1194
+ "takeover": false,
1195
+ "drawer": false,
1196
+ "discount": true,
1197
+ "tipAssign": false,
1198
+ "receiptsScope": "own"
1199
+ },
1200
+ "registers": [
1201
+ "KASSE1"
1202
+ ],
1203
+ "pinHash": "<geheim>",
1204
+ "pinSalt": "<geheim>",
1205
+ "failedAttempts": 2,
1206
+ "lockedUntil": 0,
1207
+ "currentSession": null
1208
+ }
1209
+ },
1210
+ "takeover_chosen": {
1211
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/auto1": {
1212
+ "userId": "ru_chef",
1213
+ "deviceId": "dev_frei",
1214
+ "startedAt": 1790409600000,
1215
+ "expiresAt": 1790409690000,
1216
+ "takenOverBy": null
1217
+ },
1218
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
1219
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": {
1220
+ "userId": "ru_kellner",
1221
+ "deviceId": "dev_auswahl",
1222
+ "startedAt": 1790409300000,
1223
+ "expiresAt": 1790409600000,
1224
+ "takenOverBy": "ru_chef"
1225
+ },
1226
+ "users/kw_betrieb1/register_devices/dev_frei": {
1227
+ "secretHash": "<geheim>",
1228
+ "label": "Kasse Tresen",
1229
+ "cashregisterId": "KASSE1",
1230
+ "disabled": false,
1231
+ "loginMode": "auswahl",
1232
+ "createdAt": 1790323200000,
1233
+ "lastSeenAt": 1790409600000,
1234
+ "lastUserId": "ru_chef",
1235
+ "lastIp": "203.0.113.7",
1236
+ "lastGeo": null,
1237
+ "lastLoginAt": 1790409600000
1238
+ },
1239
+ "users/kw_betrieb1/register_users/ru_chef": {
1240
+ "name": "Anna Chef",
1241
+ "kind": "person",
1242
+ "perms": {
1243
+ "sell": true,
1244
+ "cancel": true,
1245
+ "cancelScope": "all",
1246
+ "articles": true,
1247
+ "layout": true,
1248
+ "reports": true,
1249
+ "takeover": true,
1250
+ "drawer": true,
1251
+ "discount": true,
1252
+ "tipAssign": true,
1253
+ "receiptsScope": "all"
1254
+ },
1255
+ "registers": [
1256
+ "KASSE1",
1257
+ "KASSE3",
1258
+ "KASSE4",
1259
+ "KASSEX"
1260
+ ],
1261
+ "inhaber": true,
1262
+ "pinHash": "<geheim>",
1263
+ "pinSalt": "<geheim>",
1264
+ "pinPolicy": {
1265
+ "stellen": 4,
1266
+ "zeichen": "ziffern",
1267
+ "uniqueGeprueft": true
1268
+ },
1269
+ "failedAttempts": 0,
1270
+ "lockedUntil": 0,
1271
+ "currentSession": {
1272
+ "id": "auto1",
1273
+ "cashregisterId": "KASSE1",
1274
+ "deviceId": "dev_frei",
1275
+ "expiresAt": 1790409690000
1276
+ },
1277
+ "lastLoginAt": 1790409600000
1278
+ },
1279
+ "users/kw_betrieb1/register_users/ru_kellner": {
1280
+ "name": "Ben Kellner",
1281
+ "kind": "person",
1282
+ "perms": {
1283
+ "sell": true,
1284
+ "cancel": true,
1285
+ "cancelScope": "own",
1286
+ "articles": false,
1287
+ "layout": false,
1288
+ "reports": false,
1289
+ "takeover": false,
1290
+ "drawer": false,
1291
+ "discount": true,
1292
+ "tipAssign": false,
1293
+ "receiptsScope": "own"
1294
+ },
1295
+ "registers": [
1296
+ "KASSE1"
1297
+ ],
1298
+ "pinHash": "<geheim>",
1299
+ "pinSalt": "<geheim>",
1300
+ "failedAttempts": 2,
1301
+ "lockedUntil": 0,
1302
+ "currentSession": null
1303
+ }
1304
+ },
1305
+ "takeover_session_gone": {
1306
+ "users/kw_betrieb1/register_devices/dev_frei": {
1307
+ "secretHash": "<geheim>",
1308
+ "label": "Kasse Tresen",
1309
+ "cashregisterId": "KASSE1",
1310
+ "disabled": false,
1311
+ "loginMode": "auswahl",
1312
+ "createdAt": 1790323200000,
1313
+ "lastSeenAt": 1790406000000,
1314
+ "lastUserId": null,
1315
+ "lastIp": "203.0.113.7",
1316
+ "lastGeo": null,
1317
+ "lastLoginAt": 1790409600000
1318
+ }
1319
+ },
1320
+ "success": {
1321
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/auto1": {
1322
+ "userId": "ru_kellner",
1323
+ "deviceId": "dev_auswahl",
1324
+ "startedAt": 1790409600000,
1325
+ "expiresAt": 1790409690000,
1326
+ "takenOverBy": null
1327
+ },
1328
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": null,
1329
+ "users/kw_betrieb1/register_devices/dev_auswahl": {
1330
+ "secretHash": "<geheim>",
1331
+ "label": "Tablet hinten",
1332
+ "cashregisterId": "KASSE1",
1333
+ "disabled": false,
1334
+ "loginMode": "auswahl",
1335
+ "createdAt": 1790323200000,
1336
+ "lastSeenAt": 1790409600000,
1337
+ "lastUserId": "ru_kellner",
1338
+ "lastIp": "203.0.113.7",
1339
+ "lastGeo": {
1340
+ "lat": 48.2083,
1341
+ "lng": 16.3739,
1342
+ "acc": 10
1343
+ },
1344
+ "lastLoginAt": 1790409600000,
1345
+ "client": {
1346
+ "userAgent": "Mozilla/5.0 Kasse",
1347
+ "platform": "iPad",
1348
+ "language": "de-AT",
1349
+ "tz": "Europe/Vienna",
1350
+ "app": "kasse-app/1.0.3+34",
1351
+ "screen": {
1352
+ "w": 1024,
1353
+ "h": 768
1354
+ }
1355
+ }
1356
+ },
1357
+ "users/kw_betrieb1/register_users/ru_kellner": {
1358
+ "name": "Ben Kellner",
1359
+ "kind": "person",
1360
+ "perms": {
1361
+ "sell": true,
1362
+ "cancel": true,
1363
+ "cancelScope": "own",
1364
+ "articles": false,
1365
+ "layout": false,
1366
+ "reports": false,
1367
+ "takeover": false,
1368
+ "drawer": false,
1369
+ "discount": true,
1370
+ "tipAssign": false,
1371
+ "receiptsScope": "own"
1372
+ },
1373
+ "registers": [
1374
+ "KASSE1"
1375
+ ],
1376
+ "pinHash": "<geheim>",
1377
+ "pinSalt": "<geheim>",
1378
+ "failedAttempts": 0,
1379
+ "lockedUntil": 0,
1380
+ "currentSession": {
1381
+ "id": "auto1",
1382
+ "cashregisterId": "KASSE1",
1383
+ "deviceId": "dev_auswahl",
1384
+ "expiresAt": 1790409690000
1385
+ },
1386
+ "lastLoginAt": 1790409600000
1387
+ }
1388
+ },
1389
+ "success_location_near": {
1390
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/auto1": {
1391
+ "userId": "ru_chef",
1392
+ "deviceId": "dev_alt",
1393
+ "startedAt": 1790409600000,
1394
+ "expiresAt": 1790409690000,
1395
+ "takenOverBy": null
1396
+ },
1397
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
1398
+ "users/kw_betrieb1/register_devices/dev_alt": {
1399
+ "secretHash": "<geheim>",
1400
+ "label": "Altbestand",
1401
+ "disabled": false,
1402
+ "standortsperre": {
1403
+ "an": true,
1404
+ "lat": 48.2082,
1405
+ "lng": 16.3738,
1406
+ "radiusM": 200,
1407
+ "name": "Laden"
1408
+ },
1409
+ "lastIp": "203.0.113.7",
1410
+ "lastGeo": {
1411
+ "lat": 48.2083,
1412
+ "lng": 16.3739,
1413
+ "acc": 10
1414
+ },
1415
+ "lastLoginAt": 1790409600000,
1416
+ "lastSeenAt": 1790409600000,
1417
+ "lastUserId": "ru_chef"
1418
+ },
1419
+ "users/kw_betrieb1/register_users/ru_chef": {
1420
+ "name": "Anna Chef",
1421
+ "kind": "person",
1422
+ "perms": {
1423
+ "sell": true,
1424
+ "cancel": true,
1425
+ "cancelScope": "all",
1426
+ "articles": true,
1427
+ "layout": true,
1428
+ "reports": true,
1429
+ "takeover": true,
1430
+ "drawer": true,
1431
+ "discount": true,
1432
+ "tipAssign": true,
1433
+ "receiptsScope": "all"
1434
+ },
1435
+ "registers": [
1436
+ "KASSE1",
1437
+ "KASSE3",
1438
+ "KASSE4",
1439
+ "KASSEX"
1440
+ ],
1441
+ "inhaber": true,
1442
+ "pinHash": "<geheim>",
1443
+ "pinSalt": "<geheim>",
1444
+ "pinPolicy": {
1445
+ "stellen": 4,
1446
+ "zeichen": "ziffern",
1447
+ "uniqueGeprueft": true
1448
+ },
1449
+ "failedAttempts": 0,
1450
+ "lockedUntil": 0,
1451
+ "currentSession": {
1452
+ "id": "auto1",
1453
+ "cashregisterId": "KASSE1",
1454
+ "deviceId": "dev_alt",
1455
+ "expiresAt": 1790409690000
1456
+ },
1457
+ "lastLoginAt": 1790409600000
1458
+ }
1459
+ }
1460
+ }
1461
+ },
1462
+ "registerPinLogin": {
1463
+ "codebase": "kasse",
1464
+ "cases": {
1465
+ "pin_wrong": {
1466
+ "users/kw_betrieb1/register_devices/dev_pin": {
1467
+ "secretHash": "<geheim>",
1468
+ "label": "Tablet vorne",
1469
+ "cashregisterId": "KASSE1",
1470
+ "disabled": false,
1471
+ "loginMode": "pin",
1472
+ "createdAt": 1790323200000,
1473
+ "lastSeenAt": 1790406000000,
1474
+ "lastUserId": null,
1475
+ "failedAttempts": 1,
1476
+ "lockedUntil": 0,
1477
+ "kasse": {
1478
+ "layout": "links",
1479
+ "papier": "mm58"
1480
+ }
1481
+ }
1482
+ },
1483
+ "pin_wrong_locks": {
1484
+ "users/kw_betrieb1/register_devices/dev_pin": {
1485
+ "secretHash": "<geheim>",
1486
+ "label": "Tablet vorne",
1487
+ "cashregisterId": "KASSE1",
1488
+ "disabled": false,
1489
+ "loginMode": "pin",
1490
+ "createdAt": 1790323200000,
1491
+ "lastSeenAt": 1790406000000,
1492
+ "lastUserId": null,
1493
+ "failedAttempts": 5,
1494
+ "lockedUntil": 1790409630000,
1495
+ "kasse": {
1496
+ "layout": "links",
1497
+ "papier": "mm58"
1498
+ }
1499
+ }
1500
+ },
1501
+ "pin_of_one_locked": {
1502
+ "users/kw_betrieb1/register_devices/dev_pin": {
1503
+ "secretHash": "<geheim>",
1504
+ "label": "Tablet vorne",
1505
+ "cashregisterId": "KASSE1",
1506
+ "disabled": false,
1507
+ "loginMode": "pin",
1508
+ "createdAt": 1790323200000,
1509
+ "lastSeenAt": 1790406000000,
1510
+ "lastUserId": null,
1511
+ "failedAttempts": 1,
1512
+ "lockedUntil": 0,
1513
+ "kasse": {
1514
+ "layout": "links",
1515
+ "papier": "mm58"
1516
+ }
1517
+ }
1518
+ },
1519
+ "pin_with_whitespace": {
1520
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/auto1": {
1521
+ "userId": "ru_kellner",
1522
+ "deviceId": "dev_pin",
1523
+ "startedAt": 1790409600000,
1524
+ "expiresAt": 1790409690000,
1525
+ "takenOverBy": null
1526
+ },
1527
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
1528
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": null,
1529
+ "users/kw_betrieb1/register_devices/dev_pin": {
1530
+ "secretHash": "<geheim>",
1531
+ "label": "Tablet vorne",
1532
+ "cashregisterId": "KASSE1",
1533
+ "disabled": false,
1534
+ "loginMode": "pin",
1535
+ "createdAt": 1790323200000,
1536
+ "lastSeenAt": 1790409600000,
1537
+ "lastUserId": "ru_kellner",
1538
+ "failedAttempts": 0,
1539
+ "lockedUntil": 0,
1540
+ "kasse": {
1541
+ "layout": "links",
1542
+ "papier": "mm58"
1543
+ },
1544
+ "lastIp": "203.0.113.7",
1545
+ "lastGeo": null,
1546
+ "lastLoginAt": 1790409600000
1547
+ },
1548
+ "users/kw_betrieb1/register_users/ru_chef": {
1549
+ "name": "Anna Chef",
1550
+ "kind": "person",
1551
+ "perms": {
1552
+ "sell": true,
1553
+ "cancel": true,
1554
+ "cancelScope": "all",
1555
+ "articles": true,
1556
+ "layout": true,
1557
+ "reports": true,
1558
+ "takeover": true,
1559
+ "drawer": true,
1560
+ "discount": true,
1561
+ "tipAssign": true,
1562
+ "receiptsScope": "all"
1563
+ },
1564
+ "registers": [
1565
+ "KASSE1",
1566
+ "KASSE3",
1567
+ "KASSE4",
1568
+ "KASSEX"
1569
+ ],
1570
+ "inhaber": true,
1571
+ "pinHash": "<geheim>",
1572
+ "pinSalt": "<geheim>",
1573
+ "pinPolicy": {
1574
+ "stellen": 4,
1575
+ "zeichen": "ziffern",
1576
+ "uniqueGeprueft": true
1577
+ },
1578
+ "failedAttempts": 0,
1579
+ "lockedUntil": 0,
1580
+ "currentSession": null
1581
+ },
1582
+ "users/kw_betrieb1/register_users/ru_kellner": {
1583
+ "name": "Ben Kellner",
1584
+ "kind": "person",
1585
+ "perms": {
1586
+ "sell": true,
1587
+ "cancel": true,
1588
+ "cancelScope": "own",
1589
+ "articles": false,
1590
+ "layout": false,
1591
+ "reports": false,
1592
+ "takeover": false,
1593
+ "drawer": false,
1594
+ "discount": true,
1595
+ "tipAssign": false,
1596
+ "receiptsScope": "own"
1597
+ },
1598
+ "registers": [
1599
+ "KASSE1"
1600
+ ],
1601
+ "pinHash": "<geheim>",
1602
+ "pinSalt": "<geheim>",
1603
+ "failedAttempts": 0,
1604
+ "lockedUntil": 0,
1605
+ "currentSession": {
1606
+ "id": "auto1",
1607
+ "cashregisterId": "KASSE1",
1608
+ "deviceId": "dev_pin",
1609
+ "expiresAt": 1790409690000
1610
+ },
1611
+ "lastLoginAt": 1790409600000
1612
+ }
1613
+ },
1614
+ "location_without_location": {
1615
+ "users/kw_betrieb1/register_devices/dev_pin": {
1616
+ "secretHash": "<geheim>",
1617
+ "label": "Tablet vorne",
1618
+ "cashregisterId": "KASSE1",
1619
+ "disabled": false,
1620
+ "loginMode": "pin",
1621
+ "createdAt": 1790323200000,
1622
+ "lastSeenAt": 1790406000000,
1623
+ "lastUserId": null,
1624
+ "failedAttempts": 0,
1625
+ "lockedUntil": 0,
1626
+ "kasse": {
1627
+ "layout": "links",
1628
+ "papier": "mm58"
1629
+ },
1630
+ "standortsperre": {
1631
+ "an": true,
1632
+ "lat": 48.2082,
1633
+ "lng": 16.3738,
1634
+ "radiusM": 200
1635
+ },
1636
+ "lastIp": "203.0.113.7",
1637
+ "lastGeo": null,
1638
+ "lastLoginAt": 1790409600000,
1639
+ "lastStandortAbgelehntAt": 1790409600000
1640
+ }
1641
+ },
1642
+ "in_use": {
1643
+ "users/kw_betrieb1/register_devices/dev_frei": {
1644
+ "secretHash": "<geheim>",
1645
+ "label": "Kasse Tresen",
1646
+ "cashregisterId": "KASSE1",
1647
+ "disabled": false,
1648
+ "loginMode": "pin",
1649
+ "createdAt": 1790323200000,
1650
+ "lastSeenAt": 1790406000000,
1651
+ "lastUserId": null,
1652
+ "lastIp": "203.0.113.7",
1653
+ "lastGeo": null,
1654
+ "lastLoginAt": 1790409600000
1655
+ }
1656
+ },
1657
+ "takeover": {
1658
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/auto1": {
1659
+ "userId": "ru_chef",
1660
+ "deviceId": "dev_frei",
1661
+ "startedAt": 1790409600000,
1662
+ "expiresAt": 1790409690000,
1663
+ "takenOverBy": null
1664
+ },
1665
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
1666
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": {
1667
+ "userId": "ru_kellner",
1668
+ "deviceId": "dev_auswahl",
1669
+ "startedAt": 1790409300000,
1670
+ "expiresAt": 1790409600000,
1671
+ "takenOverBy": "ru_chef"
1672
+ },
1673
+ "users/kw_betrieb1/register_devices/dev_frei": {
1674
+ "secretHash": "<geheim>",
1675
+ "label": "Kasse Tresen",
1676
+ "cashregisterId": "KASSE1",
1677
+ "disabled": false,
1678
+ "loginMode": "pin",
1679
+ "createdAt": 1790323200000,
1680
+ "lastSeenAt": 1790409600000,
1681
+ "lastUserId": "ru_chef",
1682
+ "lastIp": "203.0.113.7",
1683
+ "lastGeo": null,
1684
+ "lastLoginAt": 1790409600000
1685
+ },
1686
+ "users/kw_betrieb1/register_users/ru_chef": {
1687
+ "name": "Anna Chef",
1688
+ "kind": "person",
1689
+ "perms": {
1690
+ "sell": true,
1691
+ "cancel": true,
1692
+ "cancelScope": "all",
1693
+ "articles": true,
1694
+ "layout": true,
1695
+ "reports": true,
1696
+ "takeover": true,
1697
+ "drawer": true,
1698
+ "discount": true,
1699
+ "tipAssign": true,
1700
+ "receiptsScope": "all"
1701
+ },
1702
+ "registers": [
1703
+ "KASSE1",
1704
+ "KASSE3",
1705
+ "KASSE4",
1706
+ "KASSEX"
1707
+ ],
1708
+ "inhaber": true,
1709
+ "pinHash": "<geheim>",
1710
+ "pinSalt": "<geheim>",
1711
+ "pinPolicy": {
1712
+ "stellen": 4,
1713
+ "zeichen": "ziffern",
1714
+ "uniqueGeprueft": true
1715
+ },
1716
+ "failedAttempts": 0,
1717
+ "lockedUntil": 0,
1718
+ "currentSession": {
1719
+ "id": "auto1",
1720
+ "cashregisterId": "KASSE1",
1721
+ "deviceId": "dev_frei",
1722
+ "expiresAt": 1790409690000
1723
+ },
1724
+ "lastLoginAt": 1790409600000
1725
+ },
1726
+ "users/kw_betrieb1/register_users/ru_kellner": {
1727
+ "name": "Ben Kellner",
1728
+ "kind": "person",
1729
+ "perms": {
1730
+ "sell": true,
1731
+ "cancel": true,
1732
+ "cancelScope": "own",
1733
+ "articles": false,
1734
+ "layout": false,
1735
+ "reports": false,
1736
+ "takeover": false,
1737
+ "drawer": false,
1738
+ "discount": true,
1739
+ "tipAssign": false,
1740
+ "receiptsScope": "own"
1741
+ },
1742
+ "registers": [
1743
+ "KASSE1"
1744
+ ],
1745
+ "pinHash": "<geheim>",
1746
+ "pinSalt": "<geheim>",
1747
+ "failedAttempts": 2,
1748
+ "lockedUntil": 0,
1749
+ "currentSession": null
1750
+ }
1751
+ },
1752
+ "body_as_text": {
1753
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/auto1": {
1754
+ "userId": "ru_kellner",
1755
+ "deviceId": "dev_pin",
1756
+ "startedAt": 1790409600000,
1757
+ "expiresAt": 1790409690000,
1758
+ "takenOverBy": null
1759
+ },
1760
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
1761
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": null,
1762
+ "users/kw_betrieb1/register_devices/dev_pin": {
1763
+ "secretHash": "<geheim>",
1764
+ "label": "Tablet vorne",
1765
+ "cashregisterId": "KASSE1",
1766
+ "disabled": false,
1767
+ "loginMode": "pin",
1768
+ "createdAt": 1790323200000,
1769
+ "lastSeenAt": 1790409600000,
1770
+ "lastUserId": "ru_kellner",
1771
+ "failedAttempts": 0,
1772
+ "lockedUntil": 0,
1773
+ "kasse": {
1774
+ "layout": "links",
1775
+ "papier": "mm58"
1776
+ },
1777
+ "lastIp": "203.0.113.7",
1778
+ "lastGeo": null,
1779
+ "lastLoginAt": 1790409600000
1780
+ },
1781
+ "users/kw_betrieb1/register_users/ru_chef": {
1782
+ "name": "Anna Chef",
1783
+ "kind": "person",
1784
+ "perms": {
1785
+ "sell": true,
1786
+ "cancel": true,
1787
+ "cancelScope": "all",
1788
+ "articles": true,
1789
+ "layout": true,
1790
+ "reports": true,
1791
+ "takeover": true,
1792
+ "drawer": true,
1793
+ "discount": true,
1794
+ "tipAssign": true,
1795
+ "receiptsScope": "all"
1796
+ },
1797
+ "registers": [
1798
+ "KASSE1",
1799
+ "KASSE3",
1800
+ "KASSE4",
1801
+ "KASSEX"
1802
+ ],
1803
+ "inhaber": true,
1804
+ "pinHash": "<geheim>",
1805
+ "pinSalt": "<geheim>",
1806
+ "pinPolicy": {
1807
+ "stellen": 4,
1808
+ "zeichen": "ziffern",
1809
+ "uniqueGeprueft": true
1810
+ },
1811
+ "failedAttempts": 0,
1812
+ "lockedUntil": 0,
1813
+ "currentSession": null
1814
+ },
1815
+ "users/kw_betrieb1/register_users/ru_kellner": {
1816
+ "name": "Ben Kellner",
1817
+ "kind": "person",
1818
+ "perms": {
1819
+ "sell": true,
1820
+ "cancel": true,
1821
+ "cancelScope": "own",
1822
+ "articles": false,
1823
+ "layout": false,
1824
+ "reports": false,
1825
+ "takeover": false,
1826
+ "drawer": false,
1827
+ "discount": true,
1828
+ "tipAssign": false,
1829
+ "receiptsScope": "own"
1830
+ },
1831
+ "registers": [
1832
+ "KASSE1"
1833
+ ],
1834
+ "pinHash": "<geheim>",
1835
+ "pinSalt": "<geheim>",
1836
+ "failedAttempts": 0,
1837
+ "lockedUntil": 0,
1838
+ "currentSession": {
1839
+ "id": "auto1",
1840
+ "cashregisterId": "KASSE1",
1841
+ "deviceId": "dev_pin",
1842
+ "expiresAt": 1790409690000
1843
+ },
1844
+ "lastLoginAt": 1790409600000
1845
+ }
1846
+ },
1847
+ "success": {
1848
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/auto1": {
1849
+ "userId": "ru_kellner",
1850
+ "deviceId": "dev_pin",
1851
+ "startedAt": 1790409600000,
1852
+ "expiresAt": 1790409690000,
1853
+ "takenOverBy": null
1854
+ },
1855
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
1856
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": null,
1857
+ "users/kw_betrieb1/register_devices/dev_pin": {
1858
+ "secretHash": "<geheim>",
1859
+ "label": "Tablet vorne",
1860
+ "cashregisterId": "KASSE1",
1861
+ "disabled": false,
1862
+ "loginMode": "pin",
1863
+ "createdAt": 1790323200000,
1864
+ "lastSeenAt": 1790409600000,
1865
+ "lastUserId": "ru_kellner",
1866
+ "failedAttempts": 0,
1867
+ "lockedUntil": 0,
1868
+ "kasse": {
1869
+ "layout": "links",
1870
+ "papier": "mm58"
1871
+ },
1872
+ "lastIp": "203.0.113.7",
1873
+ "lastGeo": null,
1874
+ "lastLoginAt": 1790409600000,
1875
+ "client": {
1876
+ "userAgent": "Mozilla/5.0 Kasse",
1877
+ "platform": "iPad",
1878
+ "language": "de-AT",
1879
+ "tz": "Europe/Vienna",
1880
+ "app": "kasse-app/1.0.3+34",
1881
+ "screen": {
1882
+ "w": 1024,
1883
+ "h": 768
1884
+ }
1885
+ }
1886
+ },
1887
+ "users/kw_betrieb1/register_users/ru_chef": {
1888
+ "name": "Anna Chef",
1889
+ "kind": "person",
1890
+ "perms": {
1891
+ "sell": true,
1892
+ "cancel": true,
1893
+ "cancelScope": "all",
1894
+ "articles": true,
1895
+ "layout": true,
1896
+ "reports": true,
1897
+ "takeover": true,
1898
+ "drawer": true,
1899
+ "discount": true,
1900
+ "tipAssign": true,
1901
+ "receiptsScope": "all"
1902
+ },
1903
+ "registers": [
1904
+ "KASSE1",
1905
+ "KASSE3",
1906
+ "KASSE4",
1907
+ "KASSEX"
1908
+ ],
1909
+ "inhaber": true,
1910
+ "pinHash": "<geheim>",
1911
+ "pinSalt": "<geheim>",
1912
+ "pinPolicy": {
1913
+ "stellen": 4,
1914
+ "zeichen": "ziffern",
1915
+ "uniqueGeprueft": true
1916
+ },
1917
+ "failedAttempts": 0,
1918
+ "lockedUntil": 0,
1919
+ "currentSession": null
1920
+ },
1921
+ "users/kw_betrieb1/register_users/ru_kellner": {
1922
+ "name": "Ben Kellner",
1923
+ "kind": "person",
1924
+ "perms": {
1925
+ "sell": true,
1926
+ "cancel": true,
1927
+ "cancelScope": "own",
1928
+ "articles": false,
1929
+ "layout": false,
1930
+ "reports": false,
1931
+ "takeover": false,
1932
+ "drawer": false,
1933
+ "discount": true,
1934
+ "tipAssign": false,
1935
+ "receiptsScope": "own"
1936
+ },
1937
+ "registers": [
1938
+ "KASSE1"
1939
+ ],
1940
+ "pinHash": "<geheim>",
1941
+ "pinSalt": "<geheim>",
1942
+ "failedAttempts": 0,
1943
+ "lockedUntil": 0,
1944
+ "currentSession": {
1945
+ "id": "auto1",
1946
+ "cashregisterId": "KASSE1",
1947
+ "deviceId": "dev_pin",
1948
+ "expiresAt": 1790409690000
1949
+ },
1950
+ "lastLoginAt": 1790409600000
1951
+ }
1952
+ },
1953
+ "success_after_failed_attempts": {
1954
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/auto1": {
1955
+ "userId": "ru_kellner",
1956
+ "deviceId": "dev_pin",
1957
+ "startedAt": 1790409600000,
1958
+ "expiresAt": 1790409690000,
1959
+ "takenOverBy": null
1960
+ },
1961
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
1962
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": null,
1963
+ "users/kw_betrieb1/register_devices/dev_pin": {
1964
+ "secretHash": "<geheim>",
1965
+ "label": "Tablet vorne",
1966
+ "cashregisterId": "KASSE1",
1967
+ "disabled": false,
1968
+ "loginMode": "pin",
1969
+ "createdAt": 1790323200000,
1970
+ "lastSeenAt": 1790409600000,
1971
+ "lastUserId": "ru_kellner",
1972
+ "failedAttempts": 0,
1973
+ "lockedUntil": 0,
1974
+ "kasse": {
1975
+ "layout": "links",
1976
+ "papier": "mm58"
1977
+ },
1978
+ "lastIp": "203.0.113.7",
1979
+ "lastGeo": null,
1980
+ "lastLoginAt": 1790409600000
1981
+ },
1982
+ "users/kw_betrieb1/register_users/ru_chef": {
1983
+ "name": "Anna Chef",
1984
+ "kind": "person",
1985
+ "perms": {
1986
+ "sell": true,
1987
+ "cancel": true,
1988
+ "cancelScope": "all",
1989
+ "articles": true,
1990
+ "layout": true,
1991
+ "reports": true,
1992
+ "takeover": true,
1993
+ "drawer": true,
1994
+ "discount": true,
1995
+ "tipAssign": true,
1996
+ "receiptsScope": "all"
1997
+ },
1998
+ "registers": [
1999
+ "KASSE1",
2000
+ "KASSE3",
2001
+ "KASSE4",
2002
+ "KASSEX"
2003
+ ],
2004
+ "inhaber": true,
2005
+ "pinHash": "<geheim>",
2006
+ "pinSalt": "<geheim>",
2007
+ "pinPolicy": {
2008
+ "stellen": 4,
2009
+ "zeichen": "ziffern",
2010
+ "uniqueGeprueft": true
2011
+ },
2012
+ "failedAttempts": 0,
2013
+ "lockedUntil": 0,
2014
+ "currentSession": null
2015
+ },
2016
+ "users/kw_betrieb1/register_users/ru_kellner": {
2017
+ "name": "Ben Kellner",
2018
+ "kind": "person",
2019
+ "perms": {
2020
+ "sell": true,
2021
+ "cancel": true,
2022
+ "cancelScope": "own",
2023
+ "articles": false,
2024
+ "layout": false,
2025
+ "reports": false,
2026
+ "takeover": false,
2027
+ "drawer": false,
2028
+ "discount": true,
2029
+ "tipAssign": false,
2030
+ "receiptsScope": "own"
2031
+ },
2032
+ "registers": [
2033
+ "KASSE1"
2034
+ ],
2035
+ "pinHash": "<geheim>",
2036
+ "pinSalt": "<geheim>",
2037
+ "failedAttempts": 0,
2038
+ "lockedUntil": 0,
2039
+ "currentSession": {
2040
+ "id": "auto1",
2041
+ "cashregisterId": "KASSE1",
2042
+ "deviceId": "dev_pin",
2043
+ "expiresAt": 1790409690000
2044
+ },
2045
+ "lastLoginAt": 1790409600000
2046
+ }
2047
+ }
2048
+ }
2049
+ },
2050
+ "renewRegisterSession": {
2051
+ "codebase": "kasse",
2052
+ "cases": {
2053
+ "success": {
2054
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": {
2055
+ "userId": "ru_chef",
2056
+ "deviceId": "dev_pin",
2057
+ "startedAt": 1790409000000,
2058
+ "expiresAt": 1790409690000,
2059
+ "takenOverBy": null
2060
+ },
2061
+ "users/kw_betrieb1/register_users/ru_chef": {
2062
+ "name": "Anna Chef",
2063
+ "kind": "person",
2064
+ "perms": {
2065
+ "sell": true,
2066
+ "cancel": true,
2067
+ "cancelScope": "all",
2068
+ "articles": true,
2069
+ "layout": true,
2070
+ "reports": true,
2071
+ "takeover": true,
2072
+ "drawer": true,
2073
+ "discount": true,
2074
+ "tipAssign": true,
2075
+ "receiptsScope": "all"
2076
+ },
2077
+ "registers": [
2078
+ "KASSE1",
2079
+ "KASSE3",
2080
+ "KASSE4",
2081
+ "KASSEX"
2082
+ ],
2083
+ "inhaber": true,
2084
+ "pinHash": "<geheim>",
2085
+ "pinSalt": "<geheim>",
2086
+ "pinPolicy": {
2087
+ "stellen": 4,
2088
+ "zeichen": "ziffern",
2089
+ "uniqueGeprueft": true
2090
+ },
2091
+ "failedAttempts": 0,
2092
+ "lockedUntil": 0,
2093
+ "currentSession": {
2094
+ "id": "sess_chef",
2095
+ "cashregisterId": "KASSE1",
2096
+ "deviceId": "dev_pin",
2097
+ "expiresAt": 1790409690000
2098
+ }
2099
+ }
2100
+ }
2101
+ }
2102
+ },
2103
+ "endRegisterSession": {
2104
+ "codebase": "kasse",
2105
+ "cases": {
2106
+ "success": {
2107
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
2108
+ "users/kw_betrieb1/register_users/ru_chef": {
2109
+ "name": "Anna Chef",
2110
+ "kind": "person",
2111
+ "perms": {
2112
+ "sell": true,
2113
+ "cancel": true,
2114
+ "cancelScope": "all",
2115
+ "articles": true,
2116
+ "layout": true,
2117
+ "reports": true,
2118
+ "takeover": true,
2119
+ "drawer": true,
2120
+ "discount": true,
2121
+ "tipAssign": true,
2122
+ "receiptsScope": "all"
2123
+ },
2124
+ "registers": [
2125
+ "KASSE1",
2126
+ "KASSE3",
2127
+ "KASSE4",
2128
+ "KASSEX"
2129
+ ],
2130
+ "inhaber": true,
2131
+ "pinHash": "<geheim>",
2132
+ "pinSalt": "<geheim>",
2133
+ "pinPolicy": {
2134
+ "stellen": 4,
2135
+ "zeichen": "ziffern",
2136
+ "uniqueGeprueft": true
2137
+ },
2138
+ "failedAttempts": 0,
2139
+ "lockedUntil": 0,
2140
+ "currentSession": null
2141
+ }
2142
+ }
2143
+ }
2144
+ },
2145
+ "unpairRegisterDevice": {
2146
+ "codebase": "kasse",
2147
+ "cases": {
2148
+ "success": {
2149
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_chef": null,
2150
+ "users/kw_betrieb1/register_devices/dev_pin": {
2151
+ "secretHash": "<geheim>",
2152
+ "label": "Tablet vorne",
2153
+ "cashregisterId": "KASSE1",
2154
+ "disabled": true,
2155
+ "loginMode": "pin",
2156
+ "createdAt": 1790323200000,
2157
+ "lastSeenAt": 1790406000000,
2158
+ "lastUserId": null,
2159
+ "failedAttempts": 0,
2160
+ "lockedUntil": 0,
2161
+ "kasse": {
2162
+ "layout": "links",
2163
+ "papier": "mm58"
2164
+ }
2165
+ },
2166
+ "users/kw_betrieb1/register_users/ru_alt": {
2167
+ "name": "Dora Alt",
2168
+ "perms": {
2169
+ "sell": true,
2170
+ "cancel": true,
2171
+ "cancelScope": "own",
2172
+ "articles": false,
2173
+ "layout": false,
2174
+ "reports": false,
2175
+ "takeover": false,
2176
+ "drawer": false,
2177
+ "discount": true,
2178
+ "tipAssign": false,
2179
+ "receiptsScope": "own"
2180
+ },
2181
+ "registers": [
2182
+ "KASSE1"
2183
+ ],
2184
+ "pinHash": "<geheim>",
2185
+ "pinSalt": "<geheim>",
2186
+ "currentSession": null
2187
+ },
2188
+ "users/kw_betrieb1/register_users/ru_chef": {
2189
+ "name": "Anna Chef",
2190
+ "kind": "person",
2191
+ "perms": {
2192
+ "sell": true,
2193
+ "cancel": true,
2194
+ "cancelScope": "all",
2195
+ "articles": true,
2196
+ "layout": true,
2197
+ "reports": true,
2198
+ "takeover": true,
2199
+ "drawer": true,
2200
+ "discount": true,
2201
+ "tipAssign": true,
2202
+ "receiptsScope": "all"
2203
+ },
2204
+ "registers": [
2205
+ "KASSE1",
2206
+ "KASSE3",
2207
+ "KASSE4",
2208
+ "KASSEX"
2209
+ ],
2210
+ "inhaber": true,
2211
+ "pinHash": "<geheim>",
2212
+ "pinSalt": "<geheim>",
2213
+ "pinPolicy": {
2214
+ "stellen": 4,
2215
+ "zeichen": "ziffern",
2216
+ "uniqueGeprueft": true
2217
+ },
2218
+ "failedAttempts": 0,
2219
+ "lockedUntil": 0,
2220
+ "currentSession": null
2221
+ },
2222
+ "users/kw_betrieb1/register_users/ru_gesperrt": {
2223
+ "name": "Carla Gesperrt",
2224
+ "perms": {
2225
+ "sell": true,
2226
+ "cancel": true,
2227
+ "cancelScope": "own",
2228
+ "articles": false,
2229
+ "layout": false,
2230
+ "reports": false,
2231
+ "takeover": false,
2232
+ "drawer": false,
2233
+ "discount": true,
2234
+ "tipAssign": false,
2235
+ "receiptsScope": "own"
2236
+ },
2237
+ "registers": [
2238
+ "KASSE1"
2239
+ ],
2240
+ "disabled": true,
2241
+ "pinHash": "<geheim>",
2242
+ "pinSalt": "<geheim>",
2243
+ "currentSession": null
2244
+ },
2245
+ "users/kw_betrieb1/register_users/ru_ohnestorno": {
2246
+ "name": "Gerda Ohne",
2247
+ "perms": {
2248
+ "sell": true,
2249
+ "cancel": true,
2250
+ "cancelScope": "none",
2251
+ "articles": false,
2252
+ "layout": false,
2253
+ "reports": false,
2254
+ "takeover": false,
2255
+ "drawer": false,
2256
+ "discount": true,
2257
+ "tipAssign": false,
2258
+ "receiptsScope": "own"
2259
+ },
2260
+ "registers": [
2261
+ "KASSE1"
2262
+ ],
2263
+ "pinHash": "<geheim>",
2264
+ "pinSalt": "<geheim>",
2265
+ "currentSession": null
2266
+ }
2267
+ },
2268
+ "get_without_check": {
2269
+ "users/kw_betrieb1/cashregisters/KASSE1/sessions/sess_kellner": null,
2270
+ "users/kw_betrieb1/register_devices/dev_auswahl": {
2271
+ "secretHash": "<geheim>",
2272
+ "label": "Tablet hinten",
2273
+ "cashregisterId": "KASSE1",
2274
+ "disabled": true,
2275
+ "loginMode": "auswahl",
2276
+ "createdAt": 1790323200000,
2277
+ "lastSeenAt": 1790406000000,
2278
+ "lastUserId": null
2279
+ },
2280
+ "users/kw_betrieb1/register_users/ru_kellner": {
2281
+ "name": "Ben Kellner",
2282
+ "kind": "person",
2283
+ "perms": {
2284
+ "sell": true,
2285
+ "cancel": true,
2286
+ "cancelScope": "own",
2287
+ "articles": false,
2288
+ "layout": false,
2289
+ "reports": false,
2290
+ "takeover": false,
2291
+ "drawer": false,
2292
+ "discount": true,
2293
+ "tipAssign": false,
2294
+ "receiptsScope": "own"
2295
+ },
2296
+ "registers": [
2297
+ "KASSE1"
2298
+ ],
2299
+ "pinHash": "<geheim>",
2300
+ "pinSalt": "<geheim>",
2301
+ "failedAttempts": 2,
2302
+ "lockedUntil": 0,
2303
+ "currentSession": null
2304
+ }
2305
+ }
2306
+ }
2307
+ },
2308
+ "createReceipt": {
2309
+ "codebase": "default",
2310
+ "cases": {
2311
+ "start_receipt": {
2312
+ "users/kw_betrieb1/beleg_kopf/auto1": {
2313
+ "companyName": "Café Welt",
2314
+ "street": "Hauptplatz 1",
2315
+ "zip": "1010",
2316
+ "city": "Wien",
2317
+ "phone": "+43 1 234 56",
2318
+ "uid": "ATU12345678",
2319
+ "taxnr": "12-345/6789",
2320
+ "isSmallBusiness": false,
2321
+ "footer1": "Danke für Ihren Besuch",
2322
+ "footer2": null,
2323
+ "footer3": null,
2324
+ "footer4": null,
2325
+ "thanksMessage": [
2326
+ "Bis bald"
2327
+ ],
2328
+ "showKreiseckLogo": false,
2329
+ "logoUrl": "https://example.invalid/logo.png",
2330
+ "gueltigAb": 0,
2331
+ "gueltigBis": null,
2332
+ "quelle": "profil",
2333
+ "notiz": null,
2334
+ "createdAt": 1790409600000
2335
+ },
2336
+ "users/kw_betrieb1/cashregisters/KASSE1": {
2337
+ "label": "Theke 1",
2338
+ "token": "<geheim>",
2339
+ "aes_key": "<geheim>",
2340
+ "signature_id": "sig1",
2341
+ "licenses": 5,
2342
+ "create_time": {
2343
+ "iso": "2026-01-02T08:00:00.000Z"
2344
+ },
2345
+ "onboarding": {
2346
+ "cashbox_registered": true,
2347
+ "startbeleg_created": true,
2348
+ "startbeleg_transmitted": true,
2349
+ "cashbox_registered_at": {
2350
+ "iso": "2026-01-02T09:00:00.000Z"
2351
+ }
2352
+ },
2353
+ "monthlyReportJournal": true,
2354
+ "lastMonthlyReceiptMonth": "2026-08",
2355
+ "lastMonthlyReceiptId": null
2356
+ },
2357
+ "users/kw_betrieb1/cashregisters/KASSE1/metadata/lastReceipt": {
2358
+ "id": "KASSE1-ID-1"
2359
+ },
2360
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-1": {
2361
+ "counter": 1,
2362
+ "receiptType": "start",
2363
+ "zeroKind": null,
2364
+ "receiptId": "KASSE1-ID-1",
2365
+ "cashregisterId": "KASSE1",
2366
+ "timeStamp": "2026-09-26T10:00:00",
2367
+ "items": [],
2368
+ "vouchers": [],
2369
+ "paymentMethod": "cash",
2370
+ "customerDetails": null,
2371
+ "legalMessage": null,
2372
+ "customProjectId": null,
2373
+ "creditCardProvider": null,
2374
+ "cardPaymentId": null,
2375
+ "cardPaymentData": null,
2376
+ "amountRateStandard": 0,
2377
+ "amountRateReduced1": 0,
2378
+ "amountRateReduced2": 0,
2379
+ "amountRateZero": 0,
2380
+ "amountRateSpecial": 0,
2381
+ "turnoverCounterAES256ICM": "+kPM0FaIk0SfypManHdseA==",
2382
+ "signaturePreviousReceipt": "<signatur>",
2383
+ "certificateSerialNumber": "ABC123",
2384
+ "fullReceiptId": "00000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000a64bcb18",
2385
+ "kopfId": "auto1",
2386
+ "layoutRegeln": 2,
2387
+ "payments": [],
2388
+ "sig": "<signatur>",
2389
+ "signatureSuccess": true,
2390
+ "qr": "_R1-AT100_KASSE1_KASSE1-ID-1_2026-09-26T10:00:00_0,00_0,00_0,00_0,00_0,00_+kPM0FaI_ABC123_<verkettung>_<signatur>"
2391
+ },
2392
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/d_2026-09-26": {
2393
+ "scope": "day",
2394
+ "key": "2026-09-26",
2395
+ "unit": "E4",
2396
+ "count": 1,
2397
+ "countByType": {
2398
+ "start": {
2399
+ "__increment": 1
2400
+ }
2401
+ },
2402
+ "lastCounter": 1,
2403
+ "lastTs": "2026-09-26T10:00:00",
2404
+ "updated_at": 1790409600000
2405
+ },
2406
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/m_2026-09": {
2407
+ "scope": "month",
2408
+ "key": "2026-09",
2409
+ "unit": "E4",
2410
+ "count": 1,
2411
+ "countByType": {
2412
+ "start": {
2413
+ "__increment": 1
2414
+ }
2415
+ },
2416
+ "lastCounter": 1,
2417
+ "lastTs": "2026-09-26T10:00:00",
2418
+ "updated_at": 1790409600000
2419
+ },
2420
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/y_2026": {
2421
+ "scope": "year",
2422
+ "key": "2026",
2423
+ "unit": "E4",
2424
+ "count": 1,
2425
+ "countByType": {
2426
+ "start": {
2427
+ "__increment": 1
2428
+ }
2429
+ },
2430
+ "lastCounter": 1,
2431
+ "lastTs": "2026-09-26T10:00:00",
2432
+ "updated_at": 1790409600000
2433
+ }
2434
+ },
2435
+ "sale_cashregister": {
2436
+ "users/kw_betrieb1/cashregisters/KASSE1/metadata/lastReceipt": {
2437
+ "id": "KASSE1-ID-2"
2438
+ },
2439
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-2": {
2440
+ "counter": 2,
2441
+ "receiptType": "standard",
2442
+ "zeroKind": null,
2443
+ "receiptId": "KASSE1-ID-2",
2444
+ "cashregisterId": "KASSE1",
2445
+ "timeStamp": "2026-09-26T10:00:00",
2446
+ "items": [
2447
+ {
2448
+ "name": "Kaffee",
2449
+ "amount": 2,
2450
+ "priceOneCents": 320,
2451
+ "vat": 20,
2452
+ "priceOne": 3.2
2453
+ }
2454
+ ],
2455
+ "vouchers": [],
2456
+ "paymentMethod": "cash",
2457
+ "customerDetails": null,
2458
+ "legalMessage": null,
2459
+ "customProjectId": null,
2460
+ "creditCardProvider": null,
2461
+ "cardPaymentId": null,
2462
+ "cardPaymentData": null,
2463
+ "amountRateStandard": 6.4,
2464
+ "amountRateReduced1": 0,
2465
+ "amountRateReduced2": 0,
2466
+ "amountRateZero": 0,
2467
+ "amountRateSpecial": 0,
2468
+ "turnoverCounterAES256ICM": "XVyQJUk2DiM4NjAKsiguYw==",
2469
+ "signaturePreviousReceipt": "<signatur>",
2470
+ "certificateSerialNumber": "ABC123",
2471
+ "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2",
2472
+ "kopfId": "auto1",
2473
+ "layoutRegeln": 2,
2474
+ "payments": [
2475
+ {
2476
+ "id": "p1",
2477
+ "method": "cash",
2478
+ "amountCents": 640
2479
+ }
2480
+ ],
2481
+ "sig": "<signatur>",
2482
+ "signatureSuccess": true,
2483
+ "qr": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>",
2484
+ "operator": {
2485
+ "uid": "ru_kellner",
2486
+ "name": "Ben Kellner"
2487
+ }
2488
+ },
2489
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/d_2026-09-26": {
2490
+ "scope": "day",
2491
+ "key": "2026-09-26",
2492
+ "unit": "E4",
2493
+ "count": 2,
2494
+ "countByType": {
2495
+ "standard": {
2496
+ "__increment": 1
2497
+ }
2498
+ },
2499
+ "lastCounter": 2,
2500
+ "lastTs": "2026-09-26T10:00:00",
2501
+ "updated_at": 1790409600000,
2502
+ "grossByRate": {
2503
+ "20": {
2504
+ "__increment": 64000
2505
+ }
2506
+ },
2507
+ "grossByPayment": {
2508
+ "cash": {
2509
+ "__increment": 64000
2510
+ }
2511
+ },
2512
+ "countByPayment": {
2513
+ "cash": {
2514
+ "__increment": 1
2515
+ }
2516
+ }
2517
+ },
2518
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/m_2026-09": {
2519
+ "scope": "month",
2520
+ "key": "2026-09",
2521
+ "unit": "E4",
2522
+ "count": 2,
2523
+ "countByType": {
2524
+ "standard": {
2525
+ "__increment": 1
2526
+ }
2527
+ },
2528
+ "lastCounter": 2,
2529
+ "lastTs": "2026-09-26T10:00:00",
2530
+ "updated_at": 1790409600000,
2531
+ "grossByRate": {
2532
+ "20": {
2533
+ "__increment": 64000
2534
+ }
2535
+ },
2536
+ "grossByPayment": {
2537
+ "cash": {
2538
+ "__increment": 64000
2539
+ }
2540
+ },
2541
+ "countByPayment": {
2542
+ "cash": {
2543
+ "__increment": 1
2544
+ }
2545
+ },
2546
+ "grossByDay": {
2547
+ "2026-09-26": {
2548
+ "__increment": 64000
2549
+ }
2550
+ }
2551
+ },
2552
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/y_2026": {
2553
+ "scope": "year",
2554
+ "key": "2026",
2555
+ "unit": "E4",
2556
+ "count": 2,
2557
+ "countByType": {
2558
+ "standard": {
2559
+ "__increment": 1
2560
+ }
2561
+ },
2562
+ "lastCounter": 2,
2563
+ "lastTs": "2026-09-26T10:00:00",
2564
+ "updated_at": 1790409600000,
2565
+ "grossByRate": {
2566
+ "20": {
2567
+ "__increment": 64000
2568
+ }
2569
+ },
2570
+ "grossByPayment": {
2571
+ "cash": {
2572
+ "__increment": 64000
2573
+ }
2574
+ },
2575
+ "countByPayment": {
2576
+ "cash": {
2577
+ "__increment": 1
2578
+ }
2579
+ },
2580
+ "grossByMonth": {
2581
+ "2026-09": {
2582
+ "__increment": 64000
2583
+ }
2584
+ }
2585
+ }
2586
+ },
2587
+ "sale_payments": {
2588
+ "users/kw_betrieb1/cashregisters/KASSE1/metadata/lastReceipt": {
2589
+ "id": "KASSE1-ID-2"
2590
+ },
2591
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-2": {
2592
+ "counter": 2,
2593
+ "receiptType": "standard",
2594
+ "zeroKind": null,
2595
+ "receiptId": "KASSE1-ID-2",
2596
+ "cashregisterId": "KASSE1",
2597
+ "timeStamp": "2026-09-26T10:00:00",
2598
+ "items": [
2599
+ {
2600
+ "name": "Kaffee",
2601
+ "amount": 2,
2602
+ "priceOneCents": 320,
2603
+ "vat": 20,
2604
+ "priceOne": 3.2
2605
+ }
2606
+ ],
2607
+ "vouchers": [],
2608
+ "paymentMethod": "mixed",
2609
+ "customerDetails": null,
2610
+ "legalMessage": null,
2611
+ "customProjectId": null,
2612
+ "creditCardProvider": null,
2613
+ "cardPaymentId": null,
2614
+ "cardPaymentData": null,
2615
+ "amountRateStandard": 6.4,
2616
+ "amountRateReduced1": 0,
2617
+ "amountRateReduced2": 0,
2618
+ "amountRateZero": 0,
2619
+ "amountRateSpecial": 0,
2620
+ "turnoverCounterAES256ICM": "XVyQJUk2DiM4NjAKsiguYw==",
2621
+ "signaturePreviousReceipt": "<signatur>",
2622
+ "certificateSerialNumber": "ABC123",
2623
+ "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2",
2624
+ "kopfId": "auto1",
2625
+ "layoutRegeln": 2,
2626
+ "payments": [
2627
+ {
2628
+ "id": "p1",
2629
+ "method": "cash",
2630
+ "amountCents": 400
2631
+ },
2632
+ {
2633
+ "id": "p2",
2634
+ "method": "creditCard",
2635
+ "amountCents": 240,
2636
+ "provider": "custom",
2637
+ "providerPaymentId": "pi_7"
2638
+ }
2639
+ ],
2640
+ "sig": "<signatur>",
2641
+ "signatureSuccess": true,
2642
+ "qr": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>",
2643
+ "operator": {
2644
+ "uid": "ru_chef",
2645
+ "name": "Anna Chef"
2646
+ }
2647
+ },
2648
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/d_2026-09-26": {
2649
+ "scope": "day",
2650
+ "key": "2026-09-26",
2651
+ "unit": "E4",
2652
+ "count": 2,
2653
+ "countByType": {
2654
+ "standard": {
2655
+ "__increment": 1
2656
+ }
2657
+ },
2658
+ "lastCounter": 2,
2659
+ "lastTs": "2026-09-26T10:00:00",
2660
+ "updated_at": 1790409600000,
2661
+ "grossByRate": {
2662
+ "20": {
2663
+ "__increment": 64000
2664
+ }
2665
+ },
2666
+ "grossByPayment": {
2667
+ "cash": {
2668
+ "__increment": 40000
2669
+ },
2670
+ "creditCard": {
2671
+ "__increment": 24000
2672
+ }
2673
+ },
2674
+ "countByPayment": {
2675
+ "cash": {
2676
+ "__increment": 1
2677
+ },
2678
+ "creditCard": {
2679
+ "__increment": 1
2680
+ }
2681
+ }
2682
+ },
2683
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/m_2026-09": {
2684
+ "scope": "month",
2685
+ "key": "2026-09",
2686
+ "unit": "E4",
2687
+ "count": 2,
2688
+ "countByType": {
2689
+ "standard": {
2690
+ "__increment": 1
2691
+ }
2692
+ },
2693
+ "lastCounter": 2,
2694
+ "lastTs": "2026-09-26T10:00:00",
2695
+ "updated_at": 1790409600000,
2696
+ "grossByRate": {
2697
+ "20": {
2698
+ "__increment": 64000
2699
+ }
2700
+ },
2701
+ "grossByPayment": {
2702
+ "cash": {
2703
+ "__increment": 40000
2704
+ },
2705
+ "creditCard": {
2706
+ "__increment": 24000
2707
+ }
2708
+ },
2709
+ "countByPayment": {
2710
+ "cash": {
2711
+ "__increment": 1
2712
+ },
2713
+ "creditCard": {
2714
+ "__increment": 1
2715
+ }
2716
+ },
2717
+ "grossByDay": {
2718
+ "2026-09-26": {
2719
+ "__increment": 64000
2720
+ }
2721
+ }
2722
+ },
2723
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/y_2026": {
2724
+ "scope": "year",
2725
+ "key": "2026",
2726
+ "unit": "E4",
2727
+ "count": 2,
2728
+ "countByType": {
2729
+ "standard": {
2730
+ "__increment": 1
2731
+ }
2732
+ },
2733
+ "lastCounter": 2,
2734
+ "lastTs": "2026-09-26T10:00:00",
2735
+ "updated_at": 1790409600000,
2736
+ "grossByRate": {
2737
+ "20": {
2738
+ "__increment": 64000
2739
+ }
2740
+ },
2741
+ "grossByPayment": {
2742
+ "cash": {
2743
+ "__increment": 40000
2744
+ },
2745
+ "creditCard": {
2746
+ "__increment": 24000
2747
+ }
2748
+ },
2749
+ "countByPayment": {
2750
+ "cash": {
2751
+ "__increment": 1
2752
+ },
2753
+ "creditCard": {
2754
+ "__increment": 1
2755
+ }
2756
+ },
2757
+ "grossByMonth": {
2758
+ "2026-09": {
2759
+ "__increment": 64000
2760
+ }
2761
+ }
2762
+ }
2763
+ },
2764
+ "sale_device": {
2765
+ "users/kw_betrieb1/cashregisters/KASSE1/metadata/lastReceipt": {
2766
+ "id": "KASSE1-ID-2"
2767
+ },
2768
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-2": {
2769
+ "counter": 2,
2770
+ "receiptType": "standard",
2771
+ "zeroKind": null,
2772
+ "receiptId": "KASSE1-ID-2",
2773
+ "cashregisterId": "KASSE1",
2774
+ "timeStamp": "2026-09-26T10:00:00",
2775
+ "items": [
2776
+ {
2777
+ "name": "Kaffee",
2778
+ "amount": 2,
2779
+ "priceOneCents": 320,
2780
+ "vat": 20,
2781
+ "priceOne": 3.2
2782
+ }
2783
+ ],
2784
+ "vouchers": [],
2785
+ "paymentMethod": "cash",
2786
+ "customerDetails": null,
2787
+ "legalMessage": null,
2788
+ "customProjectId": null,
2789
+ "creditCardProvider": null,
2790
+ "cardPaymentId": null,
2791
+ "cardPaymentData": null,
2792
+ "amountRateStandard": 6.4,
2793
+ "amountRateReduced1": 0,
2794
+ "amountRateReduced2": 0,
2795
+ "amountRateZero": 0,
2796
+ "amountRateSpecial": 0,
2797
+ "turnoverCounterAES256ICM": "XVyQJUk2DiM4NjAKsiguYw==",
2798
+ "signaturePreviousReceipt": "<signatur>",
2799
+ "certificateSerialNumber": "ABC123",
2800
+ "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2",
2801
+ "kopfId": "auto1",
2802
+ "layoutRegeln": 2,
2803
+ "payments": [
2804
+ {
2805
+ "id": "p1",
2806
+ "method": "cash",
2807
+ "amountCents": 640
2808
+ }
2809
+ ],
2810
+ "sig": "<signatur>",
2811
+ "signatureSuccess": true,
2812
+ "qr": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>"
2813
+ },
2814
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/d_2026-09-26": {
2815
+ "scope": "day",
2816
+ "key": "2026-09-26",
2817
+ "unit": "E4",
2818
+ "count": 2,
2819
+ "countByType": {
2820
+ "standard": {
2821
+ "__increment": 1
2822
+ }
2823
+ },
2824
+ "lastCounter": 2,
2825
+ "lastTs": "2026-09-26T10:00:00",
2826
+ "updated_at": 1790409600000,
2827
+ "grossByRate": {
2828
+ "20": {
2829
+ "__increment": 64000
2830
+ }
2831
+ },
2832
+ "grossByPayment": {
2833
+ "cash": {
2834
+ "__increment": 64000
2835
+ }
2836
+ },
2837
+ "countByPayment": {
2838
+ "cash": {
2839
+ "__increment": 1
2840
+ }
2841
+ }
2842
+ },
2843
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/m_2026-09": {
2844
+ "scope": "month",
2845
+ "key": "2026-09",
2846
+ "unit": "E4",
2847
+ "count": 2,
2848
+ "countByType": {
2849
+ "standard": {
2850
+ "__increment": 1
2851
+ }
2852
+ },
2853
+ "lastCounter": 2,
2854
+ "lastTs": "2026-09-26T10:00:00",
2855
+ "updated_at": 1790409600000,
2856
+ "grossByRate": {
2857
+ "20": {
2858
+ "__increment": 64000
2859
+ }
2860
+ },
2861
+ "grossByPayment": {
2862
+ "cash": {
2863
+ "__increment": 64000
2864
+ }
2865
+ },
2866
+ "countByPayment": {
2867
+ "cash": {
2868
+ "__increment": 1
2869
+ }
2870
+ },
2871
+ "grossByDay": {
2872
+ "2026-09-26": {
2873
+ "__increment": 64000
2874
+ }
2875
+ }
2876
+ },
2877
+ "users/kw_betrieb1/cashregisters/KASSE1/stats/y_2026": {
2878
+ "scope": "year",
2879
+ "key": "2026",
2880
+ "unit": "E4",
2881
+ "count": 2,
2882
+ "countByType": {
2883
+ "standard": {
2884
+ "__increment": 1
2885
+ }
2886
+ },
2887
+ "lastCounter": 2,
2888
+ "lastTs": "2026-09-26T10:00:00",
2889
+ "updated_at": 1790409600000,
2890
+ "grossByRate": {
2891
+ "20": {
2892
+ "__increment": 64000
2893
+ }
2894
+ },
2895
+ "grossByPayment": {
2896
+ "cash": {
2897
+ "__increment": 64000
2898
+ }
2899
+ },
2900
+ "countByPayment": {
2901
+ "cash": {
2902
+ "__increment": 1
2903
+ }
2904
+ },
2905
+ "grossByMonth": {
2906
+ "2026-09": {
2907
+ "__increment": 64000
2908
+ }
2909
+ }
2910
+ }
2911
+ }
2912
+ }
2913
+ },
2914
+ "cancelReceipt": {
2915
+ "codebase": "kasse",
2916
+ "cases": {
2917
+ "success_full": {
2918
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-7": {
2919
+ "receiptId": "KASSE1-ID-7",
2920
+ "cashregisterId": "KASSE1",
2921
+ "receiptType": "standard",
2922
+ "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
2923
+ "timeStamp": "2026-09-26T09:30:00",
2924
+ "paymentMethod": "cash",
2925
+ "counter": 7,
2926
+ "items": [
2927
+ {
2928
+ "name": "Kaffee",
2929
+ "amount": 2,
2930
+ "priceOneCents": 320,
2931
+ "vat": 20
2932
+ },
2933
+ {
2934
+ "name": "Kuchen",
2935
+ "amount": 1,
2936
+ "priceOneCents": 450,
2937
+ "vat": 10
2938
+ }
2939
+ ],
2940
+ "operator": {
2941
+ "uid": "ru_chef",
2942
+ "name": "Anna Chef"
2943
+ },
2944
+ "cancellations": [
2945
+ {
2946
+ "receiptId": "KASSE1-ID-8",
2947
+ "at": 1790409600000,
2948
+ "by": "ru_chef",
2949
+ "note": "Gast wollte Tee",
2950
+ "items": [
2951
+ {
2952
+ "index": 0,
2953
+ "quantity": 2
2954
+ },
2955
+ {
2956
+ "index": 1,
2957
+ "quantity": 1
2958
+ }
2959
+ ]
2960
+ }
2961
+ ]
2962
+ }
2963
+ },
2964
+ "success_partial": {
2965
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-7": {
2966
+ "receiptId": "KASSE1-ID-7",
2967
+ "cashregisterId": "KASSE1",
2968
+ "receiptType": "standard",
2969
+ "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
2970
+ "timeStamp": "2026-09-26T09:30:00",
2971
+ "paymentMethod": "cash",
2972
+ "counter": 7,
2973
+ "items": [
2974
+ {
2975
+ "name": "Kaffee",
2976
+ "amount": 2,
2977
+ "priceOneCents": 320,
2978
+ "vat": 20
2979
+ },
2980
+ {
2981
+ "name": "Kuchen",
2982
+ "amount": 1,
2983
+ "priceOneCents": 450,
2984
+ "vat": 10
2985
+ }
2986
+ ],
2987
+ "operator": {
2988
+ "uid": "ru_chef",
2989
+ "name": "Anna Chef"
2990
+ },
2991
+ "cancellations": [
2992
+ {
2993
+ "receiptId": "KASSE1-ID-8",
2994
+ "at": 1790409600000,
2995
+ "by": "ru_chef",
2996
+ "note": null,
2997
+ "items": [
2998
+ {
2999
+ "index": 0,
3000
+ "quantity": 1
3001
+ }
3002
+ ]
3003
+ }
3004
+ ]
3005
+ }
3006
+ },
3007
+ "success_own_receipt_cashier": {
3008
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-7": {
3009
+ "receiptId": "KASSE1-ID-7",
3010
+ "cashregisterId": "KASSE1",
3011
+ "receiptType": "standard",
3012
+ "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
3013
+ "timeStamp": "2026-09-26T09:30:00",
3014
+ "paymentMethod": "cash",
3015
+ "counter": 7,
3016
+ "items": [
3017
+ {
3018
+ "name": "Kaffee",
3019
+ "amount": 2,
3020
+ "priceOneCents": 320,
3021
+ "vat": 20
3022
+ },
3023
+ {
3024
+ "name": "Kuchen",
3025
+ "amount": 1,
3026
+ "priceOneCents": 450,
3027
+ "vat": 10
3028
+ }
3029
+ ],
3030
+ "operator": {
3031
+ "uid": "ru_kellner",
3032
+ "name": "Ben Kellner"
3033
+ },
3034
+ "cancellations": [
3035
+ {
3036
+ "receiptId": "KASSE1-ID-8",
3037
+ "at": 1790409600000,
3038
+ "by": "ru_kellner",
3039
+ "note": null,
3040
+ "items": [
3041
+ {
3042
+ "index": 0,
3043
+ "quantity": 2
3044
+ },
3045
+ {
3046
+ "index": 1,
3047
+ "quantity": 1
3048
+ }
3049
+ ]
3050
+ }
3051
+ ]
3052
+ }
3053
+ },
3054
+ "success_api_key": {
3055
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-7": {
3056
+ "receiptId": "KASSE1-ID-7",
3057
+ "cashregisterId": "KASSE1",
3058
+ "receiptType": "standard",
3059
+ "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
3060
+ "timeStamp": "2026-09-26T09:30:00",
3061
+ "paymentMethod": "cash",
3062
+ "counter": 7,
3063
+ "items": [
3064
+ {
3065
+ "name": "Kaffee",
3066
+ "amount": 2,
3067
+ "priceOneCents": 320,
3068
+ "vat": 20
3069
+ },
3070
+ {
3071
+ "name": "Kuchen",
3072
+ "amount": 1,
3073
+ "priceOneCents": 450,
3074
+ "vat": 10
3075
+ }
3076
+ ],
3077
+ "operator": {
3078
+ "uid": "ru_chef",
3079
+ "name": "Anna Chef"
3080
+ },
3081
+ "cancellations": [
3082
+ {
3083
+ "receiptId": "KASSE1-ID-8",
3084
+ "at": 1790409600000,
3085
+ "by": null,
3086
+ "note": null,
3087
+ "items": [
3088
+ {
3089
+ "index": 0,
3090
+ "quantity": 2
3091
+ },
3092
+ {
3093
+ "index": 1,
3094
+ "quantity": 1
3095
+ }
3096
+ ]
3097
+ }
3098
+ ]
3099
+ }
3100
+ },
3101
+ "self_call_error": {
3102
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-7": {
3103
+ "receiptId": "KASSE1-ID-7",
3104
+ "cashregisterId": "KASSE1",
3105
+ "receiptType": "standard",
3106
+ "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
3107
+ "timeStamp": "2026-09-26T09:30:00",
3108
+ "paymentMethod": "cash",
3109
+ "counter": 7,
3110
+ "items": [
3111
+ {
3112
+ "name": "Kaffee",
3113
+ "amount": 2,
3114
+ "priceOneCents": 320,
3115
+ "vat": 20
3116
+ },
3117
+ {
3118
+ "name": "Kuchen",
3119
+ "amount": 1,
3120
+ "priceOneCents": 450,
3121
+ "vat": 10
3122
+ }
3123
+ ],
3124
+ "operator": {
3125
+ "uid": "ru_chef",
3126
+ "name": "Anna Chef"
3127
+ },
3128
+ "cancellations": []
3129
+ }
3130
+ },
3131
+ "self_call_without_response": {
3132
+ "storno_reservierungen/kw_betrieb1_mui3ncw0-1111111111": {
3133
+ "uid": "kw_betrieb1",
3134
+ "cashregisterId": "KASSE1",
3135
+ "originalReceiptId": "KASSE1-ID-7",
3136
+ "marke": "mui3ncw0-1111111111",
3137
+ "at": 1790409600000
3138
+ },
3139
+ "users/kw_betrieb1/cashregisters/KASSE1/receipts/KASSE1-ID-7": {
3140
+ "receiptId": "KASSE1-ID-7",
3141
+ "cashregisterId": "KASSE1",
3142
+ "receiptType": "standard",
3143
+ "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
3144
+ "timeStamp": "2026-09-26T09:30:00",
3145
+ "paymentMethod": "cash",
3146
+ "counter": 7,
3147
+ "items": [
3148
+ {
3149
+ "name": "Kaffee",
3150
+ "amount": 2,
3151
+ "priceOneCents": 320,
3152
+ "vat": 20
3153
+ },
3154
+ {
3155
+ "name": "Kuchen",
3156
+ "amount": 1,
3157
+ "priceOneCents": 450,
3158
+ "vat": 10
3159
+ }
3160
+ ],
3161
+ "operator": {
3162
+ "uid": "ru_chef",
3163
+ "name": "Anna Chef"
3164
+ },
3165
+ "cancellations": [
3166
+ {
3167
+ "pending": true,
3168
+ "marke": "mui3ncw0-1111111111",
3169
+ "at": 1790409600000,
3170
+ "by": "ru_chef",
3171
+ "note": null,
3172
+ "items": [
3173
+ {
3174
+ "index": 0,
3175
+ "quantity": 2
3176
+ },
3177
+ {
3178
+ "index": 1,
3179
+ "quantity": 1
3180
+ }
3181
+ ]
3182
+ }
3183
+ ]
3184
+ }
3185
+ }
3186
+ }
3187
+ },
3188
+ "sendReceiptEmail": {
3189
+ "codebase": "default",
3190
+ "cases": {
3191
+ "too_often": {
3192
+ "rate_limits/belegmail_beleg_a0c02d860c9bded98a03bd0d130a0b6f": {
3193
+ "count": 6,
3194
+ "windowStart": 1790409600000
3195
+ },
3196
+ "rate_limits/belegmail_kasse_87c57ff9e564bac5e069fdb2b4a812c9": {
3197
+ "count": 6,
3198
+ "windowStart": 1790409600000
3199
+ }
3200
+ },
3201
+ "sending_failed": {
3202
+ "rate_limits/belegmail_beleg_a0c02d860c9bded98a03bd0d130a0b6f": {
3203
+ "count": 1,
3204
+ "windowStart": 1790409600000
3205
+ },
3206
+ "rate_limits/belegmail_kasse_87c57ff9e564bac5e069fdb2b4a812c9": {
3207
+ "count": 1,
3208
+ "windowStart": 1790409600000
3209
+ }
3210
+ },
3211
+ "success_cashregister": {
3212
+ "rate_limits/belegmail_beleg_a0c02d860c9bded98a03bd0d130a0b6f": {
3213
+ "count": 1,
3214
+ "windowStart": 1790409600000
3215
+ },
3216
+ "rate_limits/belegmail_kasse_87c57ff9e564bac5e069fdb2b4a812c9": {
3217
+ "count": 1,
3218
+ "windowStart": 1790409600000
3219
+ }
3220
+ },
3221
+ "success_device": {
3222
+ "rate_limits/belegmail_beleg_a0c02d860c9bded98a03bd0d130a0b6f": {
3223
+ "count": 1,
3224
+ "windowStart": 1790409600000
3225
+ },
3226
+ "rate_limits/belegmail_kasse_87c57ff9e564bac5e069fdb2b4a812c9": {
3227
+ "count": 1,
3228
+ "windowStart": 1790409600000
3229
+ }
3230
+ }
3231
+ }
3232
+ },
3233
+ "setMyKasseSettings": {
3234
+ "codebase": "kasse",
3235
+ "cases": {
3236
+ "success_manager": {
3237
+ "users/kw_betrieb1": {
3238
+ "api_key": "<geheim>",
3239
+ "company_name": "Café Welt",
3240
+ "phone": "+43 1 234 56",
3241
+ "address": {
3242
+ "street": "Hauptplatz 1",
3243
+ "zip": "1010",
3244
+ "city": "Wien"
3245
+ },
3246
+ "tax_details": {
3247
+ "uid": "ATU12345678",
3248
+ "taxnr": "12-345/6789",
3249
+ "is_small_business": false
3250
+ },
3251
+ "footer": {
3252
+ "footer1": "Danke für Ihren Besuch"
3253
+ },
3254
+ "thanks_message": "Bis bald",
3255
+ "logo_url": "https://example.invalid/logo.png",
3256
+ "register_settings": {
3257
+ "kasse": {
3258
+ "stil": "klar",
3259
+ "uhr": false
3260
+ }
3261
+ }
3262
+ }
3263
+ },
3264
+ "success_owner": {
3265
+ "users/kw_betrieb1": {
3266
+ "api_key": "<geheim>",
3267
+ "company_name": "Café Welt",
3268
+ "phone": "+43 1 234 56",
3269
+ "address": {
3270
+ "street": "Hauptplatz 1",
3271
+ "zip": "1010",
3272
+ "city": "Wien"
3273
+ },
3274
+ "tax_details": {
3275
+ "uid": "ATU12345678",
3276
+ "taxnr": "12-345/6789",
3277
+ "is_small_business": false
3278
+ },
3279
+ "footer": {
3280
+ "footer1": "Danke für Ihren Besuch"
3281
+ },
3282
+ "thanks_message": "Bis bald",
3283
+ "logo_url": "https://example.invalid/logo.png",
3284
+ "register_settings": {
3285
+ "kasse": {
3286
+ "farbe": "#136B6B",
3287
+ "schrift": "L"
3288
+ }
3289
+ }
3290
+ }
3291
+ }
3292
+ }
3293
+ },
3294
+ "setMyKasseLogo": {
3295
+ "codebase": "kasse",
3296
+ "cases": {
3297
+ "remove": {
3298
+ "users/kw_betrieb1": {
3299
+ "api_key": "<geheim>",
3300
+ "company_name": "Café Welt",
3301
+ "phone": "+43 1 234 56",
3302
+ "address": {
3303
+ "street": "Hauptplatz 1",
3304
+ "zip": "1010",
3305
+ "city": "Wien"
3306
+ },
3307
+ "tax_details": {
3308
+ "uid": "ATU12345678",
3309
+ "taxnr": "12-345/6789",
3310
+ "is_small_business": false
3311
+ },
3312
+ "footer": {
3313
+ "footer1": "Danke für Ihren Besuch"
3314
+ },
3315
+ "thanks_message": "Bis bald",
3316
+ "logo_url": "https://example.invalid/logo.png",
3317
+ "register_settings": {
3318
+ "kasse": {
3319
+ "logoBild": ""
3320
+ }
3321
+ }
3322
+ }
3323
+ },
3324
+ "success_png": {
3325
+ "users/kw_betrieb1": {
3326
+ "api_key": "<geheim>",
3327
+ "company_name": "Café Welt",
3328
+ "phone": "+43 1 234 56",
3329
+ "address": {
3330
+ "street": "Hauptplatz 1",
3331
+ "zip": "1010",
3332
+ "city": "Wien"
3333
+ },
3334
+ "tax_details": {
3335
+ "uid": "ATU12345678",
3336
+ "taxnr": "12-345/6789",
3337
+ "is_small_business": false
3338
+ },
3339
+ "footer": {
3340
+ "footer1": "Danke für Ihren Besuch"
3341
+ },
3342
+ "thanks_message": "Bis bald",
3343
+ "logo_url": "https://example.invalid/logo.png",
3344
+ "register_settings": {
3345
+ "kasse": {
3346
+ "logoBild": "https://firebasestorage.googleapis.com/v0/b/kasseneck.appspot.com/o/users%2Fkw_betrieb1%2Fkasse%2Flogo.png?alt=media&token=11111111-2222-4333-8444-555555555555"
3347
+ }
3348
+ }
3349
+ }
3350
+ },
3351
+ "success_svg_owner": {
3352
+ "users/kw_betrieb1": {
3353
+ "api_key": "<geheim>",
3354
+ "company_name": "Café Welt",
3355
+ "phone": "+43 1 234 56",
3356
+ "address": {
3357
+ "street": "Hauptplatz 1",
3358
+ "zip": "1010",
3359
+ "city": "Wien"
3360
+ },
3361
+ "tax_details": {
3362
+ "uid": "ATU12345678",
3363
+ "taxnr": "12-345/6789",
3364
+ "is_small_business": false
3365
+ },
3366
+ "footer": {
3367
+ "footer1": "Danke für Ihren Besuch"
3368
+ },
3369
+ "thanks_message": "Bis bald",
3370
+ "logo_url": "https://example.invalid/logo.png",
3371
+ "register_settings": {
3372
+ "kasse": {
3373
+ "logoBild": "https://firebasestorage.googleapis.com/v0/b/kasseneck.appspot.com/o/users%2Fkw_betrieb1%2Fkasse%2Flogo.svg?alt=media&token=11111111-2222-4333-8444-555555555555"
3374
+ }
3375
+ }
3376
+ }
3377
+ }
3378
+ }
3379
+ },
3380
+ "setMyRegisterDeviceSettings": {
3381
+ "codebase": "kasse",
3382
+ "cases": {
3383
+ "success_manager": {
3384
+ "users/kw_betrieb1/register_devices/dev_pin": {
3385
+ "secretHash": "<geheim>",
3386
+ "label": "Tablet vorne",
3387
+ "cashregisterId": "KASSE1",
3388
+ "disabled": false,
3389
+ "loginMode": "pin",
3390
+ "createdAt": 1790323200000,
3391
+ "lastSeenAt": 1790406000000,
3392
+ "lastUserId": null,
3393
+ "failedAttempts": 0,
3394
+ "lockedUntil": 0,
3395
+ "kasse": {
3396
+ "layout": "rechts",
3397
+ "druckerAn": true,
3398
+ "papier": "mm80"
3399
+ }
3400
+ }
3401
+ },
3402
+ "success_owner": {
3403
+ "users/kw_betrieb1/register_devices/dev_kasse2": {
3404
+ "secretHash": "<geheim>",
3405
+ "label": "Tablet Keller",
3406
+ "cashregisterId": "KASSE2",
3407
+ "disabled": false,
3408
+ "loginMode": "auswahl",
3409
+ "kasse": {
3410
+ "hoehe": "L"
3411
+ }
3412
+ }
3413
+ }
3414
+ }
3415
+ },
3416
+ "createPrintJob": {
3417
+ "codebase": "kasse",
3418
+ "cases": {
3419
+ "success_cashregister": {
3420
+ "users/kw_betrieb1/drucker/dr_theke/jobs/auto1": {
3421
+ "status": "offen",
3422
+ "xml": "<epos-print xmlns=\"http://www.epson-pos.com/schemas/2011/03/epos-print\">\n<text lang=\"de\"/>\n<text font=\"font_a\"/>\n<text align=\"left\"/>\n<text width=\"1\" height=\"1\" reverse=\"false\" em=\"false\"/>\n<text>Café Welt &#10;</text>\n<text>Summe 9,40 &#10;</text>\n<feed line=\"1\"/>\n<text> erstellt mit Kasseneck &#10;</text>\n<feed line=\"2\"/>\n<cut type=\"feed\"/>\n</epos-print>",
3423
+ "erstellt": 1790409600000,
3424
+ "gesendetAt": null,
3425
+ "ergebnis": null,
3426
+ "quelle": "kasse",
3427
+ "receiptId": "KASSE1-ID-7",
3428
+ "titel": "Beleg 7",
3429
+ "von": "ru_kellner"
3430
+ }
3431
+ },
3432
+ "success_owner": {
3433
+ "users/kw_betrieb1/drucker/dr_theke/jobs/auto1": {
3434
+ "status": "offen",
3435
+ "xml": "<epos-print xmlns=\"http://www.epson-pos.com/schemas/2011/03/epos-print\">\n<text lang=\"de\"/>\n<text font=\"font_a\"/>\n<text align=\"left\"/>\n<text width=\"1\" height=\"1\" reverse=\"false\" em=\"false\"/>\n<text>Café Welt &#10;</text>\n<text>Summe 9,40 &#10;</text>\n<feed line=\"2\"/>\n<cut type=\"feed\"/>\n</epos-print>",
3436
+ "erstellt": 1790409600000,
3437
+ "gesendetAt": null,
3438
+ "ergebnis": null,
3439
+ "quelle": "labor",
3440
+ "receiptId": null,
3441
+ "titel": null,
3442
+ "von": "kw_betrieb1"
3443
+ }
3444
+ },
3445
+ "success_logo_qr": {
3446
+ "users/kw_betrieb1/drucker/dr_theke/jobs/auto1": {
3447
+ "status": "offen",
3448
+ "xml": "<epos-print xmlns=\"http://www.epson-pos.com/schemas/2011/03/epos-print\">\n<text lang=\"de\"/>\n<text font=\"font_a\"/>\n<text align=\"left\"/>\n<text width=\"1\" height=\"1\" reverse=\"false\" em=\"false\"/>\n<text em=\"true\">================================================&#10;</text>\n<text em=\"false\"/>\n<text em=\"true\"> TESTKASSE &#10;</text>\n<text em=\"false\"/>\n<text em=\"true\">================================================&#10;</text>\n<text em=\"false\"/>\n<feed line=\"1\"/>\n<text align=\"center\"/>\n<image width=\"10\" height=\"2\" color=\"color_1\" mode=\"mono\">gEAAgA==</image>\n<text align=\"left\"/>\n<feed line=\"1\"/>\n<text em=\"true\"> Café Welt &#10;</text>\n<text em=\"false\"/>\n<text>2 x Kaffee 6,40&#10;</text>\n<text>------------------------------------------------&#10;</text>\n<text em=\"true\">================================================&#10;</text>\n<text em=\"false\"/>\n<text em=\"true\"> STORNO &#10;</text>\n<text em=\"false\"/>\n<text em=\"true\">================================================&#10;</text>\n<text em=\"false\"/>\n<feed line=\"1\"/>\n<text align=\"center\"/>\n<symbol type=\"qrcode_model_2\" level=\"level_m\" width=\"6\" height=\"0\" size=\"0\">_R1-AT0_KASSE1_KASSE1-ID-7_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_x_y_z_w</symbol>\n<text align=\"left\"/>\n<feed line=\"1\"/>\n<text> erstellt mit Kasseneck &#10;</text>\n<feed line=\"2\"/>\n<cut type=\"feed\"/>\n</epos-print>",
3449
+ "erstellt": 1790409600000,
3450
+ "gesendetAt": null,
3451
+ "ergebnis": null,
3452
+ "quelle": "kasse",
3453
+ "receiptId": "KASSE1-ID-7",
3454
+ "titel": "Beleg 7",
3455
+ "von": "ru_kellner"
3456
+ }
3457
+ }
3458
+ }
3459
+ }
3460
+ }
3461
+ }