@kreiseck/kasseneck-api 1.13.0 → 1.15.0

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 (431) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +71 -2
  3. package/dist/cjs/client/api.d.ts +8 -1
  4. package/dist/cjs/client/api.js +4 -0
  5. package/dist/cjs/client/aufrufe.d.ts +6 -6
  6. package/dist/cjs/client/aufrufe.js +11 -2
  7. package/dist/cjs/client/index.d.ts +2 -1
  8. package/dist/cjs/client/index.js +13 -1
  9. package/dist/cjs/client/list-receipts.d.ts +211 -0
  10. package/dist/cjs/client/list-receipts.js +290 -0
  11. package/dist/cjs/client/receipts.d.ts +85 -2
  12. package/dist/cjs/client/receipts.js +164 -5
  13. package/dist/cjs/enums/voucher-type.d.ts +1 -1
  14. package/dist/cjs/enums/voucher-type.js +1 -1
  15. package/dist/cjs/index.d.ts +2 -2
  16. package/dist/cjs/index.js +24 -3
  17. package/dist/cjs/invoice/typen.d.ts +1 -1
  18. package/dist/cjs/invoice/vertrag.d.ts +1 -1
  19. package/dist/cjs/invoice/vertrag.js +2 -0
  20. package/dist/cjs/models/index.d.ts +2 -1
  21. package/dist/cjs/models/index.js +12 -1
  22. package/dist/cjs/models/receipt-errors.d.ts +1 -1
  23. package/dist/cjs/models/receipt-errors.js +3 -0
  24. package/dist/cjs/models/receipt-output.d.ts +79 -0
  25. package/dist/cjs/models/receipt-output.js +143 -0
  26. package/dist/cjs/models/receipt.d.ts +2 -2
  27. package/dist/cjs/models/receipt.js +2 -2
  28. package/dist/cjs/models/voucher.d.ts +24 -2
  29. package/dist/cjs/models/voucher.js +2 -2
  30. package/dist/cjs/partner/typen.d.ts +1 -1
  31. package/dist/cjs/pos/index.d.ts +2 -1
  32. package/dist/cjs/pos/index.js +6 -1
  33. package/dist/cjs/pos/schicht-typen.d.ts +2 -2
  34. package/dist/cjs/pos/schicht-typen.js +2 -2
  35. package/dist/cjs/pos/settings.d.ts +1 -1
  36. package/dist/cjs/pos/settings.js +5 -0
  37. package/dist/cjs/pos/texte.d.ts +114 -0
  38. package/dist/cjs/pos/texte.js +64 -0
  39. package/dist/cjs/receipt/due.d.ts +4 -2
  40. package/dist/cjs/receipt/due.js +22 -5
  41. package/dist/cjs/receipt/duplikat.d.ts +35 -0
  42. package/dist/cjs/receipt/duplikat.js +76 -0
  43. package/dist/cjs/receipt/gutschein-plan.d.ts +2 -0
  44. package/dist/cjs/receipt/gutschein-plan.js +5 -0
  45. package/dist/cjs/receipt/index.d.ts +1 -0
  46. package/dist/cjs/receipt/index.js +4 -2
  47. package/dist/cjs/receipt/layout.js +44 -21
  48. package/dist/cjs/register/pairing.d.ts +6 -2
  49. package/dist/cjs/register/pairing.js +1 -1
  50. package/dist/cjs/stored/bon-layout.js +3 -4
  51. package/dist/cjs/stored/vokabular.d.ts +1 -1
  52. package/dist/cjs/stored/vokabular.js +47 -3
  53. package/dist/cjs/version.d.ts +1 -1
  54. package/dist/cjs/version.js +1 -1
  55. package/dist/esm/client/api.d.ts +8 -1
  56. package/dist/esm/client/api.js +5 -1
  57. package/dist/esm/client/aufrufe.d.ts +6 -6
  58. package/dist/esm/client/aufrufe.js +11 -2
  59. package/dist/esm/client/index.d.ts +2 -1
  60. package/dist/esm/client/index.js +2 -1
  61. package/dist/esm/client/list-receipts.d.ts +211 -0
  62. package/dist/esm/client/list-receipts.js +284 -0
  63. package/dist/esm/client/receipts.d.ts +85 -2
  64. package/dist/esm/client/receipts.js +164 -6
  65. package/dist/esm/enums/voucher-type.d.ts +1 -1
  66. package/dist/esm/enums/voucher-type.js +1 -1
  67. package/dist/esm/index.d.ts +2 -2
  68. package/dist/esm/index.js +2 -2
  69. package/dist/esm/invoice/typen.d.ts +1 -1
  70. package/dist/esm/invoice/vertrag.d.ts +1 -1
  71. package/dist/esm/invoice/vertrag.js +2 -0
  72. package/dist/esm/models/index.d.ts +2 -1
  73. package/dist/esm/models/index.js +1 -0
  74. package/dist/esm/models/receipt-errors.d.ts +1 -1
  75. package/dist/esm/models/receipt-errors.js +3 -0
  76. package/dist/esm/models/receipt-output.d.ts +79 -0
  77. package/dist/esm/models/receipt-output.js +135 -0
  78. package/dist/esm/models/receipt.d.ts +2 -2
  79. package/dist/esm/models/receipt.js +2 -2
  80. package/dist/esm/models/voucher.d.ts +24 -2
  81. package/dist/esm/models/voucher.js +2 -2
  82. package/dist/esm/partner/typen.d.ts +1 -1
  83. package/dist/esm/pos/index.d.ts +2 -1
  84. package/dist/esm/pos/index.js +3 -1
  85. package/dist/esm/pos/schicht-typen.d.ts +2 -2
  86. package/dist/esm/pos/schicht-typen.js +2 -2
  87. package/dist/esm/pos/settings.d.ts +1 -1
  88. package/dist/esm/pos/settings.js +5 -0
  89. package/dist/esm/pos/texte.d.ts +114 -0
  90. package/dist/esm/pos/texte.js +63 -0
  91. package/dist/esm/receipt/due.d.ts +4 -2
  92. package/dist/esm/receipt/due.js +23 -6
  93. package/dist/esm/receipt/duplikat.d.ts +35 -0
  94. package/dist/esm/receipt/duplikat.js +73 -0
  95. package/dist/esm/receipt/gutschein-plan.d.ts +2 -0
  96. package/dist/esm/receipt/gutschein-plan.js +4 -0
  97. package/dist/esm/receipt/index.d.ts +1 -0
  98. package/dist/esm/receipt/index.js +1 -0
  99. package/dist/esm/receipt/layout.js +44 -21
  100. package/dist/esm/register/pairing.d.ts +6 -2
  101. package/dist/esm/register/pairing.js +1 -1
  102. package/dist/esm/stored/bon-layout.js +3 -4
  103. package/dist/esm/stored/vokabular.d.ts +1 -1
  104. package/dist/esm/stored/vokabular.js +47 -3
  105. package/dist/esm/version.d.ts +1 -1
  106. package/dist/esm/version.js +1 -1
  107. package/fixtures/code-table-receipts.json +1 -1
  108. package/fixtures/duplicate-cases.json +5616 -0
  109. package/fixtures/expected/cancellation-discount.grid32.txt +1 -1
  110. package/fixtures/expected/cancellation-discount.grid48.txt +1 -1
  111. package/fixtures/expected/cancellation-discount.lines.json +1 -1
  112. package/fixtures/expected/cancellation-discount.sheet32.json +1 -1
  113. package/fixtures/expected/cancellation-discount.sheet48.json +1 -1
  114. package/fixtures/expected/cancellation-full.grid32.txt +1 -1
  115. package/fixtures/expected/cancellation-full.grid48.txt +1 -1
  116. package/fixtures/expected/cancellation-full.lines.json +1 -1
  117. package/fixtures/expected/cancellation-full.sheet32.json +1 -1
  118. package/fixtures/expected/cancellation-full.sheet48.json +1 -1
  119. package/fixtures/expected/cancellation-partial.grid32.txt +1 -1
  120. package/fixtures/expected/cancellation-partial.grid48.txt +1 -1
  121. package/fixtures/expected/cancellation-partial.lines.json +1 -1
  122. package/fixtures/expected/cancellation-partial.sheet32.json +1 -1
  123. package/fixtures/expected/cancellation-partial.sheet48.json +1 -1
  124. package/fixtures/expected/cancellation-split-full.grid32.txt +1 -1
  125. package/fixtures/expected/cancellation-split-full.grid48.txt +1 -1
  126. package/fixtures/expected/cancellation-split-full.lines.json +1 -1
  127. package/fixtures/expected/cancellation-split-full.sheet32.json +1 -1
  128. package/fixtures/expected/cancellation-split-full.sheet48.json +1 -1
  129. package/fixtures/expected/cancellation-split-partial.grid32.txt +1 -1
  130. package/fixtures/expected/cancellation-split-partial.grid48.txt +1 -1
  131. package/fixtures/expected/cancellation-split-partial.lines.json +1 -1
  132. package/fixtures/expected/cancellation-split-partial.sheet32.json +1 -1
  133. package/fixtures/expected/cancellation-split-partial.sheet48.json +1 -1
  134. package/fixtures/expected/card-custom.grid32.txt +1 -1
  135. package/fixtures/expected/card-custom.grid48.txt +1 -1
  136. package/fixtures/expected/card-custom.lines.json +1 -1
  137. package/fixtures/expected/card-custom.sheet32.json +1 -1
  138. package/fixtures/expected/card-custom.sheet48.json +1 -1
  139. package/fixtures/expected/card-gptom-ios.grid32.txt +1 -1
  140. package/fixtures/expected/card-gptom-ios.grid48.txt +1 -1
  141. package/fixtures/expected/card-gptom-ios.lines.json +1 -1
  142. package/fixtures/expected/card-gptom-ios.sheet32.json +1 -1
  143. package/fixtures/expected/card-gptom-ios.sheet48.json +1 -1
  144. package/fixtures/expected/card-gptom.grid32.txt +1 -1
  145. package/fixtures/expected/card-gptom.grid48.txt +1 -1
  146. package/fixtures/expected/card-gptom.lines.json +1 -1
  147. package/fixtures/expected/card-gptom.sheet32.json +1 -1
  148. package/fixtures/expected/card-gptom.sheet48.json +1 -1
  149. package/fixtures/expected/card-hobex-cloud.grid32.txt +1 -1
  150. package/fixtures/expected/card-hobex-cloud.grid48.txt +1 -1
  151. package/fixtures/expected/card-hobex-cloud.lines.json +1 -1
  152. package/fixtures/expected/card-hobex-cloud.sheet32.json +1 -1
  153. package/fixtures/expected/card-hobex-cloud.sheet48.json +1 -1
  154. package/fixtures/expected/card-hobex-hps.grid32.txt +1 -1
  155. package/fixtures/expected/card-hobex-hps.grid48.txt +1 -1
  156. package/fixtures/expected/card-hobex-hps.lines.json +1 -1
  157. package/fixtures/expected/card-hobex-hps.sheet32.json +1 -1
  158. package/fixtures/expected/card-hobex-hps.sheet48.json +1 -1
  159. package/fixtures/expected/card-mypos.grid32.txt +1 -1
  160. package/fixtures/expected/card-mypos.grid48.txt +1 -1
  161. package/fixtures/expected/card-mypos.lines.json +1 -1
  162. package/fixtures/expected/card-mypos.sheet32.json +1 -1
  163. package/fixtures/expected/card-mypos.sheet48.json +1 -1
  164. package/fixtures/expected/card-stripe-eps.grid32.txt +1 -1
  165. package/fixtures/expected/card-stripe-eps.grid48.txt +1 -1
  166. package/fixtures/expected/card-stripe-eps.lines.json +1 -1
  167. package/fixtures/expected/card-stripe-eps.sheet32.json +1 -1
  168. package/fixtures/expected/card-stripe-eps.sheet48.json +1 -1
  169. package/fixtures/expected/card-stripe.grid32.txt +1 -1
  170. package/fixtures/expected/card-stripe.grid48.txt +1 -1
  171. package/fixtures/expected/card-stripe.lines.json +1 -1
  172. package/fixtures/expected/card-stripe.sheet32.json +1 -1
  173. package/fixtures/expected/card-stripe.sheet48.json +1 -1
  174. package/fixtures/expected/card-sumup.grid32.txt +1 -1
  175. package/fixtures/expected/card-sumup.grid48.txt +1 -1
  176. package/fixtures/expected/card-sumup.lines.json +1 -1
  177. package/fixtures/expected/card-sumup.sheet32.json +1 -1
  178. package/fixtures/expected/card-sumup.sheet48.json +1 -1
  179. package/fixtures/expected/code-table-receipt.long-item-name.iso8859_15.hex +1 -1
  180. package/fixtures/expected/code-table-receipt.long-item-name.pc437.hex +1 -1
  181. package/fixtures/expected/code-table-receipt.long-item-name.pc850.hex +1 -1
  182. package/fixtures/expected/code-table-receipt.long-item-name.pc858.hex +1 -1
  183. package/fixtures/expected/code-table-receipt.long-item-name.replacement.hex +1 -1
  184. package/fixtures/expected/code-table-receipt.long-item-name.wpc1252.hex +1 -1
  185. package/fixtures/expected/code-table-receipt.sale-cash.iso8859_15.hex +1 -1
  186. package/fixtures/expected/code-table-receipt.sale-cash.pc437.hex +1 -1
  187. package/fixtures/expected/code-table-receipt.sale-cash.pc850.hex +1 -1
  188. package/fixtures/expected/code-table-receipt.sale-cash.pc858.hex +1 -1
  189. package/fixtures/expected/code-table-receipt.sale-cash.replacement.hex +1 -1
  190. package/fixtures/expected/code-table-receipt.sale-cash.wpc1252.hex +1 -1
  191. package/fixtures/expected/code-table-receipt.special-characters.iso8859_15.hex +1 -1
  192. package/fixtures/expected/code-table-receipt.special-characters.pc437.hex +1 -1
  193. package/fixtures/expected/code-table-receipt.special-characters.pc850.hex +1 -1
  194. package/fixtures/expected/code-table-receipt.special-characters.pc858.hex +1 -1
  195. package/fixtures/expected/code-table-receipt.special-characters.replacement.hex +1 -1
  196. package/fixtures/expected/code-table-receipt.special-characters.wpc1252.hex +1 -1
  197. package/fixtures/expected/code-table-receipt.test-cashregister-sale.iso8859_15.hex +1 -1
  198. package/fixtures/expected/code-table-receipt.test-cashregister-sale.pc437.hex +1 -1
  199. package/fixtures/expected/code-table-receipt.test-cashregister-sale.pc850.hex +1 -1
  200. package/fixtures/expected/code-table-receipt.test-cashregister-sale.pc858.hex +1 -1
  201. package/fixtures/expected/code-table-receipt.test-cashregister-sale.replacement.hex +1 -1
  202. package/fixtures/expected/code-table-receipt.test-cashregister-sale.wpc1252.hex +1 -1
  203. package/fixtures/expected/discount-lines.grid32.txt +1 -1
  204. package/fixtures/expected/discount-lines.grid48.txt +1 -1
  205. package/fixtures/expected/discount-lines.lines.json +1 -1
  206. package/fixtures/expected/discount-lines.sheet32.json +1 -1
  207. package/fixtures/expected/discount-lines.sheet48.json +1 -1
  208. package/fixtures/expected/discount-owner-tip.grid32.txt +1 -1
  209. package/fixtures/expected/discount-owner-tip.grid48.txt +1 -1
  210. package/fixtures/expected/discount-owner-tip.lines.json +1 -1
  211. package/fixtures/expected/discount-owner-tip.sheet32.json +1 -1
  212. package/fixtures/expected/discount-owner-tip.sheet48.json +1 -1
  213. package/fixtures/expected/discount-simple.grid32.txt +1 -1
  214. package/fixtures/expected/discount-simple.grid48.txt +1 -1
  215. package/fixtures/expected/discount-simple.lines.json +1 -1
  216. package/fixtures/expected/discount-simple.sheet32.json +1 -1
  217. package/fixtures/expected/discount-simple.sheet48.json +1 -1
  218. package/fixtures/expected/discount-tip.grid32.txt +1 -1
  219. package/fixtures/expected/discount-tip.grid48.txt +1 -1
  220. package/fixtures/expected/discount-tip.lines.json +1 -1
  221. package/fixtures/expected/discount-tip.sheet32.json +1 -1
  222. package/fixtures/expected/discount-tip.sheet48.json +1 -1
  223. package/fixtures/expected/discount-value-voucher.grid32.txt +1 -1
  224. package/fixtures/expected/discount-value-voucher.grid48.txt +1 -1
  225. package/fixtures/expected/discount-value-voucher.lines.json +1 -1
  226. package/fixtures/expected/discount-value-voucher.sheet32.json +1 -1
  227. package/fixtures/expected/discount-value-voucher.sheet48.json +1 -1
  228. package/fixtures/expected/duplicate.cancellation-full.hex +44 -0
  229. package/fixtures/expected/duplicate.cancellation-partial.hex +33 -0
  230. package/fixtures/expected/duplicate.sale-cash-mm58.hex +28 -0
  231. package/fixtures/expected/duplicate.sale-cash-twice.hex +35 -0
  232. package/fixtures/expected/duplicate.sale-cash.hex +35 -0
  233. package/fixtures/expected/duplicate.shift-close.hex +43 -0
  234. package/fixtures/expected/duplicate.summer-time-last-second.hex +28 -0
  235. package/fixtures/expected/duplicate.summer-time-start.hex +35 -0
  236. package/fixtures/expected/duplicate.test-cashregister-sale-logo.hex +189 -0
  237. package/fixtures/expected/duplicate.voucher-multi-purpose-redeem.hex +37 -0
  238. package/fixtures/expected/duplicate.voucher-service-redeem-logo.hex +119 -0
  239. package/fixtures/expected/duplicate.winter-time-first-second.hex +28 -0
  240. package/fixtures/expected/duplicate.zero-start.hex +40 -0
  241. package/fixtures/expected/long-item-name.grid32.txt +1 -1
  242. package/fixtures/expected/long-item-name.grid48.txt +1 -1
  243. package/fixtures/expected/long-item-name.lines.json +1 -1
  244. package/fixtures/expected/long-item-name.sheet32.json +1 -1
  245. package/fixtures/expected/long-item-name.sheet48.json +1 -1
  246. package/fixtures/expected/sale-card.grid32.txt +1 -1
  247. package/fixtures/expected/sale-card.grid48.txt +1 -1
  248. package/fixtures/expected/sale-card.lines.json +1 -1
  249. package/fixtures/expected/sale-card.sheet32.json +1 -1
  250. package/fixtures/expected/sale-card.sheet48.json +1 -1
  251. package/fixtures/expected/sale-cash.grid32.txt +1 -1
  252. package/fixtures/expected/sale-cash.grid48.txt +1 -1
  253. package/fixtures/expected/sale-cash.lines.json +1 -1
  254. package/fixtures/expected/sale-cash.sheet32.json +1 -1
  255. package/fixtures/expected/sale-cash.sheet48.json +1 -1
  256. package/fixtures/expected/sale-small-business.grid32.txt +1 -1
  257. package/fixtures/expected/sale-small-business.grid48.txt +1 -1
  258. package/fixtures/expected/sale-small-business.lines.json +1 -1
  259. package/fixtures/expected/sale-small-business.sheet32.json +1 -1
  260. package/fixtures/expected/sale-small-business.sheet48.json +1 -1
  261. package/fixtures/expected/signature-outage-sale.grid32.txt +1 -1
  262. package/fixtures/expected/signature-outage-sale.grid48.txt +1 -1
  263. package/fixtures/expected/signature-outage-sale.lines.json +1 -1
  264. package/fixtures/expected/signature-outage-sale.sheet32.json +1 -1
  265. package/fixtures/expected/signature-outage-sale.sheet48.json +1 -1
  266. package/fixtures/expected/split-card-card-cash.grid32.txt +1 -1
  267. package/fixtures/expected/split-card-card-cash.grid48.txt +1 -1
  268. package/fixtures/expected/split-card-card-cash.lines.json +1 -1
  269. package/fixtures/expected/split-card-card-cash.sheet32.json +1 -1
  270. package/fixtures/expected/split-card-card-cash.sheet48.json +1 -1
  271. package/fixtures/expected/split-cash-change.grid32.txt +1 -1
  272. package/fixtures/expected/split-cash-change.grid48.txt +1 -1
  273. package/fixtures/expected/split-cash-change.lines.json +1 -1
  274. package/fixtures/expected/split-cash-change.sheet32.json +1 -1
  275. package/fixtures/expected/split-cash-change.sheet48.json +1 -1
  276. package/fixtures/expected/split-long-amount.grid32.txt +1 -1
  277. package/fixtures/expected/split-long-amount.grid48.txt +1 -1
  278. package/fixtures/expected/split-long-amount.lines.json +1 -1
  279. package/fixtures/expected/split-long-amount.sheet32.json +1 -1
  280. package/fixtures/expected/split-long-amount.sheet48.json +1 -1
  281. package/fixtures/expected/split-one-card-tip.grid32.txt +1 -1
  282. package/fixtures/expected/split-one-card-tip.grid48.txt +1 -1
  283. package/fixtures/expected/split-one-card-tip.lines.json +1 -1
  284. package/fixtures/expected/split-one-card-tip.sheet32.json +1 -1
  285. package/fixtures/expected/split-one-card-tip.sheet48.json +1 -1
  286. package/fixtures/expected/split-table-round-tip.grid32.txt +1 -1
  287. package/fixtures/expected/split-table-round-tip.grid48.txt +1 -1
  288. package/fixtures/expected/split-table-round-tip.lines.json +1 -1
  289. package/fixtures/expected/split-table-round-tip.sheet32.json +1 -1
  290. package/fixtures/expected/split-table-round-tip.sheet48.json +1 -1
  291. package/fixtures/expected/split-tip-card.grid32.txt +1 -1
  292. package/fixtures/expected/split-tip-card.grid48.txt +1 -1
  293. package/fixtures/expected/split-tip-card.lines.json +1 -1
  294. package/fixtures/expected/split-tip-card.sheet32.json +1 -1
  295. package/fixtures/expected/split-tip-card.sheet48.json +1 -1
  296. package/fixtures/expected/split-two-cards-same-provider.grid32.txt +1 -1
  297. package/fixtures/expected/split-two-cards-same-provider.grid48.txt +1 -1
  298. package/fixtures/expected/split-two-cards-same-provider.lines.json +1 -1
  299. package/fixtures/expected/split-two-cards-same-provider.sheet32.json +1 -1
  300. package/fixtures/expected/split-two-cards-same-provider.sheet48.json +1 -1
  301. package/fixtures/expected/test-cashregister-sale.grid32.txt +1 -1
  302. package/fixtures/expected/test-cashregister-sale.grid48.txt +1 -1
  303. package/fixtures/expected/test-cashregister-sale.lines.json +1 -1
  304. package/fixtures/expected/test-cashregister-sale.sheet32.json +1 -1
  305. package/fixtures/expected/test-cashregister-sale.sheet48.json +1 -1
  306. package/fixtures/expected/test-signature-sale.grid32.txt +1 -1
  307. package/fixtures/expected/test-signature-sale.grid48.txt +1 -1
  308. package/fixtures/expected/test-signature-sale.lines.json +1 -1
  309. package/fixtures/expected/test-signature-sale.sheet32.json +1 -1
  310. package/fixtures/expected/test-signature-sale.sheet48.json +1 -1
  311. package/fixtures/expected/training.grid32.txt +1 -1
  312. package/fixtures/expected/training.grid48.txt +1 -1
  313. package/fixtures/expected/training.lines.json +1 -1
  314. package/fixtures/expected/training.sheet32.json +1 -1
  315. package/fixtures/expected/training.sheet48.json +1 -1
  316. package/fixtures/expected/voucher-multi-purpose-sale.grid32.txt +1 -2
  317. package/fixtures/expected/voucher-multi-purpose-sale.grid48.txt +1 -1
  318. package/fixtures/expected/voucher-multi-purpose-sale.lines.json +1 -1
  319. package/fixtures/expected/voucher-multi-purpose-sale.sheet32.json +1 -7
  320. package/fixtures/expected/voucher-multi-purpose-sale.sheet48.json +1 -1
  321. package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid32.txt +1 -1
  322. package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid48.txt +1 -1
  323. package/fixtures/expected/voucher-single-purpose-redeem-exempt.lines.json +1 -1
  324. package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet32.json +1 -1
  325. package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet48.json +1 -1
  326. package/fixtures/expected/voucher-single-purpose-redeem.grid32.txt +1 -1
  327. package/fixtures/expected/voucher-single-purpose-redeem.grid48.txt +1 -1
  328. package/fixtures/expected/voucher-single-purpose-redeem.lines.json +1 -1
  329. package/fixtures/expected/voucher-single-purpose-redeem.sheet32.json +1 -1
  330. package/fixtures/expected/voucher-single-purpose-redeem.sheet48.json +1 -1
  331. package/fixtures/expected/voucher-single-purpose-sale.grid32.txt +2 -3
  332. package/fixtures/expected/voucher-single-purpose-sale.grid48.txt +2 -2
  333. package/fixtures/expected/voucher-single-purpose-sale.lines.json +2 -2
  334. package/fixtures/expected/voucher-single-purpose-sale.sheet32.json +2 -8
  335. package/fixtures/expected/voucher-single-purpose-sale.sheet48.json +2 -2
  336. package/fixtures/expected/zero-annual.grid32.txt +1 -1
  337. package/fixtures/expected/zero-annual.grid48.txt +1 -1
  338. package/fixtures/expected/zero-annual.lines.json +1 -1
  339. package/fixtures/expected/zero-annual.sheet32.json +1 -1
  340. package/fixtures/expected/zero-annual.sheet48.json +1 -1
  341. package/fixtures/expected/zero-final.grid32.txt +1 -1
  342. package/fixtures/expected/zero-final.grid48.txt +1 -1
  343. package/fixtures/expected/zero-final.lines.json +1 -1
  344. package/fixtures/expected/zero-final.sheet32.json +1 -1
  345. package/fixtures/expected/zero-final.sheet48.json +1 -1
  346. package/fixtures/expected/zero-manual.grid32.txt +1 -1
  347. package/fixtures/expected/zero-manual.grid48.txt +1 -1
  348. package/fixtures/expected/zero-manual.lines.json +1 -1
  349. package/fixtures/expected/zero-manual.sheet32.json +1 -1
  350. package/fixtures/expected/zero-manual.sheet48.json +1 -1
  351. package/fixtures/expected/zero-monthly.grid32.txt +1 -1
  352. package/fixtures/expected/zero-monthly.grid48.txt +1 -1
  353. package/fixtures/expected/zero-monthly.lines.json +1 -1
  354. package/fixtures/expected/zero-monthly.sheet32.json +1 -1
  355. package/fixtures/expected/zero-monthly.sheet48.json +1 -1
  356. package/fixtures/expected/zero-outage-end.grid32.txt +1 -1
  357. package/fixtures/expected/zero-outage-end.grid48.txt +1 -1
  358. package/fixtures/expected/zero-outage-end.lines.json +1 -1
  359. package/fixtures/expected/zero-outage-end.sheet32.json +1 -1
  360. package/fixtures/expected/zero-outage-end.sheet48.json +1 -1
  361. package/fixtures/expected/zero-start.grid32.txt +1 -1
  362. package/fixtures/expected/zero-start.grid48.txt +1 -1
  363. package/fixtures/expected/zero-start.lines.json +1 -1
  364. package/fixtures/expected/zero-start.sheet32.json +1 -1
  365. package/fixtures/expected/zero-start.sheet48.json +1 -1
  366. package/fixtures/hobex-hps-codes.json +1 -1
  367. package/fixtures/invoice-api.schema.json +3 -2
  368. package/fixtures/invoice-texts.json +1 -1
  369. package/fixtures/manifest.json +260 -260
  370. package/fixtures/pos-texts.json +118 -1
  371. package/fixtures/receipt-due-voucher-generated.json +2 -2
  372. package/fixtures/receipt-outputs-cases.json +2778 -0
  373. package/fixtures/receipts/cancellation-discount.json +1 -1
  374. package/fixtures/receipts/cancellation-full.json +1 -1
  375. package/fixtures/receipts/cancellation-partial.json +1 -1
  376. package/fixtures/receipts/cancellation-split-full.json +1 -1
  377. package/fixtures/receipts/cancellation-split-partial.json +1 -1
  378. package/fixtures/receipts/card-custom.json +1 -1
  379. package/fixtures/receipts/card-gptom-ios.json +1 -1
  380. package/fixtures/receipts/card-gptom.json +1 -1
  381. package/fixtures/receipts/card-hobex-cloud.json +1 -1
  382. package/fixtures/receipts/card-hobex-hps.json +1 -1
  383. package/fixtures/receipts/card-mypos.json +1 -1
  384. package/fixtures/receipts/card-stripe-eps.json +1 -1
  385. package/fixtures/receipts/card-stripe.json +1 -1
  386. package/fixtures/receipts/card-sumup.json +1 -1
  387. package/fixtures/receipts/discount-lines.json +1 -1
  388. package/fixtures/receipts/discount-owner-tip.json +1 -1
  389. package/fixtures/receipts/discount-simple.json +1 -1
  390. package/fixtures/receipts/discount-tip.json +1 -1
  391. package/fixtures/receipts/discount-value-voucher.json +1 -1
  392. package/fixtures/receipts/long-item-name.json +1 -1
  393. package/fixtures/receipts/sale-card.json +1 -1
  394. package/fixtures/receipts/sale-cash.json +1 -1
  395. package/fixtures/receipts/sale-small-business.json +1 -1
  396. package/fixtures/receipts/signature-outage-sale.json +1 -1
  397. package/fixtures/receipts/split-card-card-cash.json +1 -1
  398. package/fixtures/receipts/split-cash-change.json +1 -1
  399. package/fixtures/receipts/split-long-amount.json +1 -1
  400. package/fixtures/receipts/split-one-card-tip.json +1 -1
  401. package/fixtures/receipts/split-table-round-tip.json +1 -1
  402. package/fixtures/receipts/split-tip-card.json +1 -1
  403. package/fixtures/receipts/split-two-cards-same-provider.json +1 -1
  404. package/fixtures/receipts/test-cashregister-sale.json +1 -1
  405. package/fixtures/receipts/test-signature-sale.json +1 -1
  406. package/fixtures/receipts/training.json +1 -1
  407. package/fixtures/receipts/zero-annual.json +1 -1
  408. package/fixtures/receipts/zero-final.json +1 -1
  409. package/fixtures/receipts/zero-manual.json +1 -1
  410. package/fixtures/receipts/zero-monthly.json +1 -1
  411. package/fixtures/receipts/zero-outage-end.json +1 -1
  412. package/fixtures/receipts/zero-start.json +1 -1
  413. package/fixtures/surface.json +30 -7
  414. package/fixtures/v3/README.md +10 -3
  415. package/fixtures/v3/antworten/belege.json +623 -125
  416. package/fixtures/v3/antworten/belegmail.json +2 -2
  417. package/fixtures/v3/antworten/kasse-belege.json +622 -122
  418. package/fixtures/v3/antworten/kasse.json +479 -38
  419. package/fixtures/v3/antworten/lager.json +1 -1
  420. package/fixtures/v3/antworten/rechnungen.json +4 -4
  421. package/fixtures/v3/antworten/storno.json +211 -3
  422. package/fixtures/v3/stored/belege.json +2 -2
  423. package/fixtures/v3/stored/kasse.json +262 -382
  424. package/fixtures/v3/stored/rechnungen.json +157 -17
  425. package/fixtures/v3/v3-vokabular.json +311 -28
  426. package/fixtures/v3/zahlbetrag-faelle.json +1070 -4
  427. package/package.json +3 -1
  428. package/dist/cjs/stored/gutscheine.d.ts +0 -3
  429. package/dist/cjs/stored/gutscheine.js +0 -60
  430. package/dist/esm/stored/gutscheine.d.ts +0 -3
  431. package/dist/esm/stored/gutscheine.js +0 -56
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
- "sha256": "0e36b49865452cd813feea1f6cdd6cd533d22e00b60263ff558c3fee3b9ed5ba",
5
- "inputsSha256": "29f295ee139942d79758255d7b6284e2810477e4e22249d9b703c0110129e78b",
6
- "backendPackage": "@kreiseck/kasseneck-api@0.33.1",
4
+ "sha256": "90f66035c11062ba153d92802076c21e7102602957a681da148db116402f9c40",
5
+ "inputsSha256": "3c13c580fbe23ca1b976692d0a3214604fc1a63a110664da10fc8bb003057103",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.35.0",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
9
9
  "functions-kasse/test/unit/fixtures/kassen-codes-v3.js",
@@ -29,7 +29,7 @@
29
29
  "functions/test/unit/v3-vertrag-export.test.js"
30
30
  ]
31
31
  },
32
- "note": "Geld in ganzen Cent. serverItems: die Trinkgeld-Positionen, wie der Server sie im Beleg sendet.",
32
+ "note": "Geld in ganzen Cent. serverItems: die Trinkgeld-Positionen, wie der Server sie im Beleg sendet. expected.errorCode: der Server weist den Beleg mit diesem Code ab (kein Betrag). redeemMax: groesste Einloesung des Gutscheins an voucherIndex, die der Server annimmt (die Gutscheine davor sind schon gewaehlt).",
33
33
  "cases": [
34
34
  {
35
35
  "name": "sale_single_rate",
@@ -1079,6 +1079,1072 @@
1079
1079
  "amountRatOthers": 0
1080
1080
  }
1081
1081
  }
1082
+ },
1083
+ {
1084
+ "name": "tip_staff_value_voucher_capped",
1085
+ "verifiedBy": "createReceipt",
1086
+ "input": {
1087
+ "receiptType": "standard",
1088
+ "items": [
1089
+ {
1090
+ "name": "Kaffee",
1091
+ "amount": 2,
1092
+ "priceOneCents": 320,
1093
+ "vat": 20
1094
+ }
1095
+ ],
1096
+ "vouchers": [
1097
+ {
1098
+ "action": "redeem",
1099
+ "type": "multi_purpose",
1100
+ "code": "T25M-J17D-DTHV",
1101
+ "amountCents": 640
1102
+ }
1103
+ ],
1104
+ "tip": {
1105
+ "cents": 160
1106
+ }
1107
+ },
1108
+ "setup": {
1109
+ "gutscheine": [
1110
+ {
1111
+ "id": "gmz1",
1112
+ "code": "T25MJ17DDTHV",
1113
+ "daten": {
1114
+ "art": "mehrzweck",
1115
+ "status": "aktiv",
1116
+ "codeEnde": "DTHV",
1117
+ "nennwertCents": 5000,
1118
+ "saldoCents": 5000,
1119
+ "satzBp": null,
1120
+ "kleinunternehmer": false,
1121
+ "gueltigkeit": {
1122
+ "muster": "unbefristet",
1123
+ "einloesbarBis": null,
1124
+ "rueckzahlbarBis": null,
1125
+ "gueltigBis": null
1126
+ },
1127
+ "ausgabe": {
1128
+ "receiptId": "r3",
1129
+ "fullReceiptId": null,
1130
+ "tag": "2026-09-01"
1131
+ }
1132
+ }
1133
+ }
1134
+ ]
1135
+ },
1136
+ "expected": {
1137
+ "dueCents": 160,
1138
+ "counterDeltaCents": 800,
1139
+ "valueVoucherFlowCents": -640,
1140
+ "bucketsCents": {
1141
+ "amountRateStandard": 640,
1142
+ "amountRateReduced1": 0,
1143
+ "amountRateReduced2": 0,
1144
+ "amountRateZero": 160,
1145
+ "amountRateSpecial": 0,
1146
+ "amountRatOthers": 0
1147
+ }
1148
+ },
1149
+ "redeemMax": {
1150
+ "voucherIndex": 0,
1151
+ "maxCents": 640
1152
+ },
1153
+ "serverItems": [
1154
+ {
1155
+ "kind": "tip",
1156
+ "name": "Trinkgeld Personal",
1157
+ "amount": 1,
1158
+ "quantity": 1,
1159
+ "priceOne": 1.6,
1160
+ "priceOneCents": 160,
1161
+ "unitPriceCents": 160,
1162
+ "vat": 0,
1163
+ "vatRate": 0,
1164
+ "paymentMethod": "cash",
1165
+ "recipient": null,
1166
+ "receivedImmediately": true
1167
+ }
1168
+ ]
1169
+ },
1170
+ {
1171
+ "name": "tip_owner_value_voucher_capped",
1172
+ "verifiedBy": "createReceipt",
1173
+ "input": {
1174
+ "receiptType": "standard",
1175
+ "items": [
1176
+ {
1177
+ "name": "Kaffee",
1178
+ "amount": 2,
1179
+ "priceOneCents": 320,
1180
+ "vat": 20
1181
+ },
1182
+ {
1183
+ "name": "Semmel",
1184
+ "amount": 4,
1185
+ "priceOneCents": 79,
1186
+ "vat": 10
1187
+ }
1188
+ ],
1189
+ "vouchers": [
1190
+ {
1191
+ "action": "redeem",
1192
+ "type": "multi_purpose",
1193
+ "code": "T25M-J17D-DTHV",
1194
+ "amountCents": 956
1195
+ }
1196
+ ],
1197
+ "tip": {
1198
+ "cents": 100,
1199
+ "owner": true
1200
+ }
1201
+ },
1202
+ "setup": {
1203
+ "gutscheine": [
1204
+ {
1205
+ "id": "gmz1",
1206
+ "code": "T25MJ17DDTHV",
1207
+ "daten": {
1208
+ "art": "mehrzweck",
1209
+ "status": "aktiv",
1210
+ "codeEnde": "DTHV",
1211
+ "nennwertCents": 5000,
1212
+ "saldoCents": 5000,
1213
+ "satzBp": null,
1214
+ "kleinunternehmer": false,
1215
+ "gueltigkeit": {
1216
+ "muster": "unbefristet",
1217
+ "einloesbarBis": null,
1218
+ "rueckzahlbarBis": null,
1219
+ "gueltigBis": null
1220
+ },
1221
+ "ausgabe": {
1222
+ "receiptId": "r3",
1223
+ "fullReceiptId": null,
1224
+ "tag": "2026-09-01"
1225
+ }
1226
+ }
1227
+ }
1228
+ ],
1229
+ "kassenBenutzer": [
1230
+ {
1231
+ "id": "ru_inhaber",
1232
+ "name": "Inhaber",
1233
+ "inhaber": true
1234
+ }
1235
+ ]
1236
+ },
1237
+ "expected": {
1238
+ "dueCents": 100,
1239
+ "counterDeltaCents": 1056,
1240
+ "valueVoucherFlowCents": -956,
1241
+ "bucketsCents": {
1242
+ "amountRateStandard": 707,
1243
+ "amountRateReduced1": 349,
1244
+ "amountRateReduced2": 0,
1245
+ "amountRateZero": 0,
1246
+ "amountRateSpecial": 0,
1247
+ "amountRatOthers": 0
1248
+ }
1249
+ },
1250
+ "redeemMax": {
1251
+ "voucherIndex": 0,
1252
+ "maxCents": 956
1253
+ },
1254
+ "serverItems": [
1255
+ {
1256
+ "kind": "tip",
1257
+ "name": "Trinkgeld",
1258
+ "amount": 1,
1259
+ "quantity": 1,
1260
+ "priceOne": 0.67,
1261
+ "priceOneCents": 67,
1262
+ "unitPriceCents": 67,
1263
+ "vat": 20,
1264
+ "vatRate": 20,
1265
+ "paymentMethod": "cash",
1266
+ "recipient": {
1267
+ "registerUserId": "ru_inhaber",
1268
+ "name": "Inhaber",
1269
+ "owner": true
1270
+ }
1271
+ },
1272
+ {
1273
+ "kind": "tip",
1274
+ "name": "Trinkgeld",
1275
+ "amount": 1,
1276
+ "quantity": 1,
1277
+ "priceOne": 0.33,
1278
+ "priceOneCents": 33,
1279
+ "unitPriceCents": 33,
1280
+ "vat": 10,
1281
+ "vatRate": 10,
1282
+ "paymentMethod": "cash",
1283
+ "recipient": {
1284
+ "registerUserId": "ru_inhaber",
1285
+ "name": "Inhaber",
1286
+ "owner": true
1287
+ }
1288
+ }
1289
+ ]
1290
+ },
1291
+ {
1292
+ "name": "tip_owner_value_voucher_over_tip",
1293
+ "verifiedBy": "createReceipt",
1294
+ "input": {
1295
+ "receiptType": "standard",
1296
+ "items": [
1297
+ {
1298
+ "name": "Kaffee",
1299
+ "amount": 2,
1300
+ "priceOneCents": 320,
1301
+ "vat": 20
1302
+ },
1303
+ {
1304
+ "name": "Semmel",
1305
+ "amount": 4,
1306
+ "priceOneCents": 79,
1307
+ "vat": 10
1308
+ }
1309
+ ],
1310
+ "vouchers": [
1311
+ {
1312
+ "action": "redeem",
1313
+ "type": "multi_purpose",
1314
+ "code": "T25M-J17D-DTHV",
1315
+ "amountCents": 957
1316
+ }
1317
+ ],
1318
+ "tip": {
1319
+ "cents": 100,
1320
+ "owner": true
1321
+ }
1322
+ },
1323
+ "setup": {
1324
+ "gutscheine": [
1325
+ {
1326
+ "id": "gmz1",
1327
+ "code": "T25MJ17DDTHV",
1328
+ "daten": {
1329
+ "art": "mehrzweck",
1330
+ "status": "aktiv",
1331
+ "codeEnde": "DTHV",
1332
+ "nennwertCents": 5000,
1333
+ "saldoCents": 5000,
1334
+ "satzBp": null,
1335
+ "kleinunternehmer": false,
1336
+ "gueltigkeit": {
1337
+ "muster": "unbefristet",
1338
+ "einloesbarBis": null,
1339
+ "rueckzahlbarBis": null,
1340
+ "gueltigBis": null
1341
+ },
1342
+ "ausgabe": {
1343
+ "receiptId": "r3",
1344
+ "fullReceiptId": null,
1345
+ "tag": "2026-09-01"
1346
+ }
1347
+ }
1348
+ }
1349
+ ],
1350
+ "kassenBenutzer": [
1351
+ {
1352
+ "id": "ru_inhaber",
1353
+ "name": "Inhaber",
1354
+ "inhaber": true
1355
+ }
1356
+ ]
1357
+ },
1358
+ "expected": {
1359
+ "errorCode": "voucher_exceeds_total"
1360
+ }
1361
+ },
1362
+ {
1363
+ "name": "tip_payment_tipcents_value_voucher",
1364
+ "verifiedBy": "createReceipt",
1365
+ "input": {
1366
+ "receiptType": "standard",
1367
+ "items": [
1368
+ {
1369
+ "name": "Kaffee",
1370
+ "amount": 2,
1371
+ "priceOneCents": 320,
1372
+ "vat": 20
1373
+ }
1374
+ ],
1375
+ "vouchers": [
1376
+ {
1377
+ "action": "redeem",
1378
+ "type": "multi_purpose",
1379
+ "code": "T25M-J17D-DTHV",
1380
+ "amountCents": 640
1381
+ }
1382
+ ],
1383
+ "payments": [
1384
+ {
1385
+ "method": "cash",
1386
+ "tipCents": 150
1387
+ }
1388
+ ]
1389
+ },
1390
+ "setup": {
1391
+ "gutscheine": [
1392
+ {
1393
+ "id": "gmz1",
1394
+ "code": "T25MJ17DDTHV",
1395
+ "daten": {
1396
+ "art": "mehrzweck",
1397
+ "status": "aktiv",
1398
+ "codeEnde": "DTHV",
1399
+ "nennwertCents": 5000,
1400
+ "saldoCents": 5000,
1401
+ "satzBp": null,
1402
+ "kleinunternehmer": false,
1403
+ "gueltigkeit": {
1404
+ "muster": "unbefristet",
1405
+ "einloesbarBis": null,
1406
+ "rueckzahlbarBis": null,
1407
+ "gueltigBis": null
1408
+ },
1409
+ "ausgabe": {
1410
+ "receiptId": "r3",
1411
+ "fullReceiptId": null,
1412
+ "tag": "2026-09-01"
1413
+ }
1414
+ }
1415
+ }
1416
+ ]
1417
+ },
1418
+ "expected": {
1419
+ "dueCents": 150,
1420
+ "counterDeltaCents": 790,
1421
+ "valueVoucherFlowCents": -640,
1422
+ "bucketsCents": {
1423
+ "amountRateStandard": 640,
1424
+ "amountRateReduced1": 0,
1425
+ "amountRateReduced2": 0,
1426
+ "amountRateZero": 150,
1427
+ "amountRateSpecial": 0,
1428
+ "amountRatOthers": 0
1429
+ }
1430
+ },
1431
+ "redeemMax": {
1432
+ "voucherIndex": 0,
1433
+ "maxCents": 640
1434
+ },
1435
+ "serverItems": [
1436
+ {
1437
+ "kind": "tip",
1438
+ "name": "Trinkgeld Personal",
1439
+ "amount": 1,
1440
+ "quantity": 1,
1441
+ "priceOne": 1.5,
1442
+ "priceOneCents": 150,
1443
+ "unitPriceCents": 150,
1444
+ "vat": 0,
1445
+ "vatRate": 0,
1446
+ "paymentMethod": "cash",
1447
+ "recipient": null,
1448
+ "receivedImmediately": true
1449
+ }
1450
+ ]
1451
+ },
1452
+ {
1453
+ "name": "tip_promo_and_value_voucher",
1454
+ "verifiedBy": "createReceipt",
1455
+ "input": {
1456
+ "receiptType": "standard",
1457
+ "items": [
1458
+ {
1459
+ "name": "Kaffee",
1460
+ "amount": 2,
1461
+ "priceOneCents": 320,
1462
+ "vat": 20
1463
+ }
1464
+ ],
1465
+ "vouchers": [
1466
+ {
1467
+ "action": "redeem",
1468
+ "type": "promo",
1469
+ "valueCents": 100,
1470
+ "code": "R"
1471
+ },
1472
+ {
1473
+ "action": "redeem",
1474
+ "type": "multi_purpose",
1475
+ "code": "T25M-J17D-DTHV",
1476
+ "amountCents": 540
1477
+ }
1478
+ ],
1479
+ "tip": {
1480
+ "cents": 100
1481
+ }
1482
+ },
1483
+ "setup": {
1484
+ "gutscheine": [
1485
+ {
1486
+ "id": "gmz1",
1487
+ "code": "T25MJ17DDTHV",
1488
+ "daten": {
1489
+ "art": "mehrzweck",
1490
+ "status": "aktiv",
1491
+ "codeEnde": "DTHV",
1492
+ "nennwertCents": 5000,
1493
+ "saldoCents": 5000,
1494
+ "satzBp": null,
1495
+ "kleinunternehmer": false,
1496
+ "gueltigkeit": {
1497
+ "muster": "unbefristet",
1498
+ "einloesbarBis": null,
1499
+ "rueckzahlbarBis": null,
1500
+ "gueltigBis": null
1501
+ },
1502
+ "ausgabe": {
1503
+ "receiptId": "r3",
1504
+ "fullReceiptId": null,
1505
+ "tag": "2026-09-01"
1506
+ }
1507
+ }
1508
+ }
1509
+ ]
1510
+ },
1511
+ "expected": {
1512
+ "dueCents": 100,
1513
+ "counterDeltaCents": 640,
1514
+ "valueVoucherFlowCents": -540,
1515
+ "bucketsCents": {
1516
+ "amountRateStandard": 540,
1517
+ "amountRateReduced1": 0,
1518
+ "amountRateReduced2": 0,
1519
+ "amountRateZero": 100,
1520
+ "amountRateSpecial": 0,
1521
+ "amountRatOthers": 0
1522
+ }
1523
+ },
1524
+ "redeemMax": {
1525
+ "voucherIndex": 1,
1526
+ "maxCents": 540
1527
+ },
1528
+ "serverItems": [
1529
+ {
1530
+ "kind": "tip",
1531
+ "name": "Trinkgeld Personal",
1532
+ "amount": 1,
1533
+ "quantity": 1,
1534
+ "priceOne": 1,
1535
+ "priceOneCents": 100,
1536
+ "unitPriceCents": 100,
1537
+ "vat": 0,
1538
+ "vatRate": 0,
1539
+ "paymentMethod": "cash",
1540
+ "recipient": null,
1541
+ "receivedImmediately": true
1542
+ }
1543
+ ]
1544
+ },
1545
+ {
1546
+ "name": "tip_owner_promo_and_value_voucher",
1547
+ "verifiedBy": "createReceipt",
1548
+ "input": {
1549
+ "receiptType": "standard",
1550
+ "items": [
1551
+ {
1552
+ "name": "Kaffee",
1553
+ "amount": 2,
1554
+ "priceOneCents": 320,
1555
+ "vat": 20
1556
+ }
1557
+ ],
1558
+ "vouchers": [
1559
+ {
1560
+ "action": "redeem",
1561
+ "type": "promo",
1562
+ "valueCents": 100,
1563
+ "code": "R"
1564
+ },
1565
+ {
1566
+ "action": "redeem",
1567
+ "type": "multi_purpose",
1568
+ "code": "T25M-J17D-DTHV",
1569
+ "amountCents": 540
1570
+ }
1571
+ ],
1572
+ "tip": {
1573
+ "cents": 100,
1574
+ "owner": true
1575
+ }
1576
+ },
1577
+ "setup": {
1578
+ "gutscheine": [
1579
+ {
1580
+ "id": "gmz1",
1581
+ "code": "T25MJ17DDTHV",
1582
+ "daten": {
1583
+ "art": "mehrzweck",
1584
+ "status": "aktiv",
1585
+ "codeEnde": "DTHV",
1586
+ "nennwertCents": 5000,
1587
+ "saldoCents": 5000,
1588
+ "satzBp": null,
1589
+ "kleinunternehmer": false,
1590
+ "gueltigkeit": {
1591
+ "muster": "unbefristet",
1592
+ "einloesbarBis": null,
1593
+ "rueckzahlbarBis": null,
1594
+ "gueltigBis": null
1595
+ },
1596
+ "ausgabe": {
1597
+ "receiptId": "r3",
1598
+ "fullReceiptId": null,
1599
+ "tag": "2026-09-01"
1600
+ }
1601
+ }
1602
+ }
1603
+ ],
1604
+ "kassenBenutzer": [
1605
+ {
1606
+ "id": "ru_inhaber",
1607
+ "name": "Inhaber",
1608
+ "inhaber": true
1609
+ }
1610
+ ]
1611
+ },
1612
+ "expected": {
1613
+ "dueCents": 100,
1614
+ "counterDeltaCents": 640,
1615
+ "valueVoucherFlowCents": -540,
1616
+ "bucketsCents": {
1617
+ "amountRateStandard": 640,
1618
+ "amountRateReduced1": 0,
1619
+ "amountRateReduced2": 0,
1620
+ "amountRateZero": 0,
1621
+ "amountRateSpecial": 0,
1622
+ "amountRatOthers": 0
1623
+ }
1624
+ },
1625
+ "redeemMax": {
1626
+ "voucherIndex": 1,
1627
+ "maxCents": 540
1628
+ },
1629
+ "serverItems": [
1630
+ {
1631
+ "kind": "tip",
1632
+ "name": "Trinkgeld",
1633
+ "amount": 1,
1634
+ "quantity": 1,
1635
+ "priceOne": 1,
1636
+ "priceOneCents": 100,
1637
+ "unitPriceCents": 100,
1638
+ "vat": 20,
1639
+ "vatRate": 20,
1640
+ "paymentMethod": "cash",
1641
+ "recipient": {
1642
+ "registerUserId": "ru_inhaber",
1643
+ "name": "Inhaber",
1644
+ "owner": true
1645
+ }
1646
+ }
1647
+ ]
1648
+ },
1649
+ {
1650
+ "name": "tip_owner_promo_and_value_voucher_over_tip",
1651
+ "verifiedBy": "createReceipt",
1652
+ "input": {
1653
+ "receiptType": "standard",
1654
+ "items": [
1655
+ {
1656
+ "name": "Kaffee",
1657
+ "amount": 2,
1658
+ "priceOneCents": 320,
1659
+ "vat": 20
1660
+ }
1661
+ ],
1662
+ "vouchers": [
1663
+ {
1664
+ "action": "redeem",
1665
+ "type": "promo",
1666
+ "valueCents": 100,
1667
+ "code": "R"
1668
+ },
1669
+ {
1670
+ "action": "redeem",
1671
+ "type": "multi_purpose",
1672
+ "code": "T25M-J17D-DTHV",
1673
+ "amountCents": 541
1674
+ }
1675
+ ],
1676
+ "tip": {
1677
+ "cents": 100,
1678
+ "owner": true
1679
+ }
1680
+ },
1681
+ "setup": {
1682
+ "gutscheine": [
1683
+ {
1684
+ "id": "gmz1",
1685
+ "code": "T25MJ17DDTHV",
1686
+ "daten": {
1687
+ "art": "mehrzweck",
1688
+ "status": "aktiv",
1689
+ "codeEnde": "DTHV",
1690
+ "nennwertCents": 5000,
1691
+ "saldoCents": 5000,
1692
+ "satzBp": null,
1693
+ "kleinunternehmer": false,
1694
+ "gueltigkeit": {
1695
+ "muster": "unbefristet",
1696
+ "einloesbarBis": null,
1697
+ "rueckzahlbarBis": null,
1698
+ "gueltigBis": null
1699
+ },
1700
+ "ausgabe": {
1701
+ "receiptId": "r3",
1702
+ "fullReceiptId": null,
1703
+ "tag": "2026-09-01"
1704
+ }
1705
+ }
1706
+ }
1707
+ ],
1708
+ "kassenBenutzer": [
1709
+ {
1710
+ "id": "ru_inhaber",
1711
+ "name": "Inhaber",
1712
+ "inhaber": true
1713
+ }
1714
+ ]
1715
+ },
1716
+ "expected": {
1717
+ "errorCode": "voucher_exceeds_total"
1718
+ }
1719
+ },
1720
+ {
1721
+ "name": "tip_owner_promotion_voucher",
1722
+ "verifiedBy": "createReceipt",
1723
+ "input": {
1724
+ "receiptType": "standard",
1725
+ "items": [
1726
+ {
1727
+ "name": "Kaffee",
1728
+ "amount": 2,
1729
+ "priceOneCents": 320,
1730
+ "vat": 20
1731
+ },
1732
+ {
1733
+ "name": "Semmel",
1734
+ "amount": 4,
1735
+ "priceOneCents": 79,
1736
+ "vat": 10
1737
+ }
1738
+ ],
1739
+ "vouchers": [
1740
+ {
1741
+ "action": "redeem",
1742
+ "type": "promotion",
1743
+ "code": "T25M-J17D-1BJW"
1744
+ }
1745
+ ],
1746
+ "tip": {
1747
+ "cents": 100,
1748
+ "owner": true
1749
+ }
1750
+ },
1751
+ "setup": {
1752
+ "gutscheine": [
1753
+ {
1754
+ "id": "gak2",
1755
+ "code": "T25MJ17D1BJW",
1756
+ "daten": {
1757
+ "art": "aktion",
1758
+ "status": "aktiv",
1759
+ "codeEnde": "1BJW",
1760
+ "rabattCents": 5000,
1761
+ "rabattProzentBp": null,
1762
+ "eingeloest": false,
1763
+ "gueltigkeit": {
1764
+ "muster": "frei",
1765
+ "einloesbarBis": null,
1766
+ "rueckzahlbarBis": null,
1767
+ "gueltigBis": "2026-12-31"
1768
+ },
1769
+ "ausgabe": {
1770
+ "panel": true,
1771
+ "anlass": "aktion"
1772
+ }
1773
+ }
1774
+ }
1775
+ ],
1776
+ "kassenBenutzer": [
1777
+ {
1778
+ "id": "ru_inhaber",
1779
+ "name": "Inhaber",
1780
+ "inhaber": true
1781
+ }
1782
+ ]
1783
+ },
1784
+ "expected": {
1785
+ "dueCents": 100,
1786
+ "counterDeltaCents": 100,
1787
+ "valueVoucherFlowCents": 0,
1788
+ "bucketsCents": {
1789
+ "amountRateStandard": 66,
1790
+ "amountRateReduced1": 34,
1791
+ "amountRateReduced2": 0,
1792
+ "amountRateZero": 0,
1793
+ "amountRateSpecial": 0,
1794
+ "amountRatOthers": 0
1795
+ }
1796
+ },
1797
+ "serverItems": [
1798
+ {
1799
+ "kind": "tip",
1800
+ "name": "Trinkgeld",
1801
+ "amount": 1,
1802
+ "quantity": 1,
1803
+ "priceOne": 0.67,
1804
+ "priceOneCents": 67,
1805
+ "unitPriceCents": 67,
1806
+ "vat": 20,
1807
+ "vatRate": 20,
1808
+ "paymentMethod": "cash",
1809
+ "recipient": {
1810
+ "registerUserId": "ru_inhaber",
1811
+ "name": "Inhaber",
1812
+ "owner": true
1813
+ }
1814
+ },
1815
+ {
1816
+ "kind": "tip",
1817
+ "name": "Trinkgeld",
1818
+ "amount": 1,
1819
+ "quantity": 1,
1820
+ "priceOne": 0.33,
1821
+ "priceOneCents": 33,
1822
+ "unitPriceCents": 33,
1823
+ "vat": 10,
1824
+ "vatRate": 10,
1825
+ "paymentMethod": "cash",
1826
+ "recipient": {
1827
+ "registerUserId": "ru_inhaber",
1828
+ "name": "Inhaber",
1829
+ "owner": true
1830
+ }
1831
+ }
1832
+ ]
1833
+ },
1834
+ {
1835
+ "name": "tip_promotion_and_value_voucher_rejected",
1836
+ "verifiedBy": "createReceipt",
1837
+ "input": {
1838
+ "receiptType": "standard",
1839
+ "items": [
1840
+ {
1841
+ "name": "Kaffee",
1842
+ "amount": 2,
1843
+ "priceOneCents": 320,
1844
+ "vat": 20
1845
+ }
1846
+ ],
1847
+ "vouchers": [
1848
+ {
1849
+ "action": "redeem",
1850
+ "type": "promotion",
1851
+ "code": "T25M-J17D-1BJW"
1852
+ },
1853
+ {
1854
+ "action": "redeem",
1855
+ "type": "multi_purpose",
1856
+ "code": "T25M-J17D-DTHV",
1857
+ "amountCents": 100
1858
+ }
1859
+ ],
1860
+ "tip": {
1861
+ "cents": 100
1862
+ }
1863
+ },
1864
+ "setup": {
1865
+ "gutscheine": [
1866
+ {
1867
+ "id": "gak2",
1868
+ "code": "T25MJ17D1BJW",
1869
+ "daten": {
1870
+ "art": "aktion",
1871
+ "status": "aktiv",
1872
+ "codeEnde": "1BJW",
1873
+ "rabattCents": 5000,
1874
+ "rabattProzentBp": null,
1875
+ "eingeloest": false,
1876
+ "gueltigkeit": {
1877
+ "muster": "frei",
1878
+ "einloesbarBis": null,
1879
+ "rueckzahlbarBis": null,
1880
+ "gueltigBis": "2026-12-31"
1881
+ },
1882
+ "ausgabe": {
1883
+ "panel": true,
1884
+ "anlass": "aktion"
1885
+ }
1886
+ }
1887
+ },
1888
+ {
1889
+ "id": "gmz1",
1890
+ "code": "T25MJ17DDTHV",
1891
+ "daten": {
1892
+ "art": "mehrzweck",
1893
+ "status": "aktiv",
1894
+ "codeEnde": "DTHV",
1895
+ "nennwertCents": 5000,
1896
+ "saldoCents": 5000,
1897
+ "satzBp": null,
1898
+ "kleinunternehmer": false,
1899
+ "gueltigkeit": {
1900
+ "muster": "unbefristet",
1901
+ "einloesbarBis": null,
1902
+ "rueckzahlbarBis": null,
1903
+ "gueltigBis": null
1904
+ },
1905
+ "ausgabe": {
1906
+ "receiptId": "r3",
1907
+ "fullReceiptId": null,
1908
+ "tag": "2026-09-01"
1909
+ }
1910
+ }
1911
+ }
1912
+ ]
1913
+ },
1914
+ "expected": {
1915
+ "errorCode": "voucher_invalid"
1916
+ }
1917
+ },
1918
+ {
1919
+ "name": "tip_value_voucher_boundary_accepted",
1920
+ "verifiedBy": "createReceipt",
1921
+ "input": {
1922
+ "receiptType": "standard",
1923
+ "items": [
1924
+ {
1925
+ "name": "Torte",
1926
+ "amount": 1,
1927
+ "priceOneCents": 2000,
1928
+ "vat": 10
1929
+ }
1930
+ ],
1931
+ "vouchers": [
1932
+ {
1933
+ "action": "redeem",
1934
+ "type": "multi_purpose",
1935
+ "code": "T25M-J17D-DTHV",
1936
+ "amountCents": 2000
1937
+ }
1938
+ ],
1939
+ "tip": {
1940
+ "cents": 200
1941
+ }
1942
+ },
1943
+ "setup": {
1944
+ "gutscheine": [
1945
+ {
1946
+ "id": "gmz1",
1947
+ "code": "T25MJ17DDTHV",
1948
+ "daten": {
1949
+ "art": "mehrzweck",
1950
+ "status": "aktiv",
1951
+ "codeEnde": "DTHV",
1952
+ "nennwertCents": 5000,
1953
+ "saldoCents": 5000,
1954
+ "satzBp": null,
1955
+ "kleinunternehmer": false,
1956
+ "gueltigkeit": {
1957
+ "muster": "unbefristet",
1958
+ "einloesbarBis": null,
1959
+ "rueckzahlbarBis": null,
1960
+ "gueltigBis": null
1961
+ },
1962
+ "ausgabe": {
1963
+ "receiptId": "r3",
1964
+ "fullReceiptId": null,
1965
+ "tag": "2026-09-01"
1966
+ }
1967
+ }
1968
+ }
1969
+ ]
1970
+ },
1971
+ "expected": {
1972
+ "dueCents": 200,
1973
+ "counterDeltaCents": 2200,
1974
+ "valueVoucherFlowCents": -2000,
1975
+ "bucketsCents": {
1976
+ "amountRateStandard": 0,
1977
+ "amountRateReduced1": 2000,
1978
+ "amountRateReduced2": 0,
1979
+ "amountRateZero": 200,
1980
+ "amountRateSpecial": 0,
1981
+ "amountRatOthers": 0
1982
+ }
1983
+ },
1984
+ "redeemMax": {
1985
+ "voucherIndex": 0,
1986
+ "maxCents": 2000
1987
+ },
1988
+ "serverItems": [
1989
+ {
1990
+ "kind": "tip",
1991
+ "name": "Trinkgeld Personal",
1992
+ "amount": 1,
1993
+ "quantity": 1,
1994
+ "priceOne": 2,
1995
+ "priceOneCents": 200,
1996
+ "unitPriceCents": 200,
1997
+ "vat": 0,
1998
+ "vatRate": 0,
1999
+ "paymentMethod": "cash",
2000
+ "recipient": null,
2001
+ "receivedImmediately": true
2002
+ }
2003
+ ]
2004
+ },
2005
+ {
2006
+ "name": "tip_value_voucher_boundary_rejected",
2007
+ "verifiedBy": "createReceipt",
2008
+ "input": {
2009
+ "receiptType": "standard",
2010
+ "items": [
2011
+ {
2012
+ "name": "Torte",
2013
+ "amount": 1,
2014
+ "priceOneCents": 2000,
2015
+ "vat": 10
2016
+ }
2017
+ ],
2018
+ "vouchers": [
2019
+ {
2020
+ "action": "redeem",
2021
+ "type": "multi_purpose",
2022
+ "code": "T25M-J17D-DTHV",
2023
+ "amountCents": 2001
2024
+ }
2025
+ ],
2026
+ "tip": {
2027
+ "cents": 200
2028
+ }
2029
+ },
2030
+ "setup": {
2031
+ "gutscheine": [
2032
+ {
2033
+ "id": "gmz1",
2034
+ "code": "T25MJ17DDTHV",
2035
+ "daten": {
2036
+ "art": "mehrzweck",
2037
+ "status": "aktiv",
2038
+ "codeEnde": "DTHV",
2039
+ "nennwertCents": 5000,
2040
+ "saldoCents": 5000,
2041
+ "satzBp": null,
2042
+ "kleinunternehmer": false,
2043
+ "gueltigkeit": {
2044
+ "muster": "unbefristet",
2045
+ "einloesbarBis": null,
2046
+ "rueckzahlbarBis": null,
2047
+ "gueltigBis": null
2048
+ },
2049
+ "ausgabe": {
2050
+ "receiptId": "r3",
2051
+ "fullReceiptId": null,
2052
+ "tag": "2026-09-01"
2053
+ }
2054
+ }
2055
+ }
2056
+ ]
2057
+ },
2058
+ "expected": {
2059
+ "errorCode": "voucher_exceeds_total"
2060
+ }
2061
+ },
2062
+ {
2063
+ "name": "tip_single_purpose_voucher_goods_only",
2064
+ "verifiedBy": "createReceipt",
2065
+ "input": {
2066
+ "receiptType": "standard",
2067
+ "items": [
2068
+ {
2069
+ "name": "Kaffee",
2070
+ "amount": 2,
2071
+ "priceOneCents": 320,
2072
+ "vat": 20
2073
+ }
2074
+ ],
2075
+ "vouchers": [
2076
+ {
2077
+ "action": "redeem",
2078
+ "type": "single_purpose",
2079
+ "code": "T25M-J17D-5THH",
2080
+ "amountCents": 640
2081
+ }
2082
+ ],
2083
+ "tip": {
2084
+ "cents": 100
2085
+ }
2086
+ },
2087
+ "setup": {
2088
+ "gutscheine": [
2089
+ {
2090
+ "id": "gez1",
2091
+ "code": "T25MJ17D5THH",
2092
+ "daten": {
2093
+ "art": "einzweck",
2094
+ "status": "aktiv",
2095
+ "codeEnde": "5THH",
2096
+ "nennwertCents": 5000,
2097
+ "saldoCents": 2000,
2098
+ "satzBp": 2000,
2099
+ "kleinunternehmer": false,
2100
+ "gueltigkeit": {
2101
+ "muster": "unbefristet",
2102
+ "einloesbarBis": null,
2103
+ "rueckzahlbarBis": null,
2104
+ "gueltigBis": null
2105
+ },
2106
+ "ausgabe": {
2107
+ "receiptId": "r1",
2108
+ "fullReceiptId": null,
2109
+ "tag": "2026-09-01"
2110
+ }
2111
+ }
2112
+ }
2113
+ ]
2114
+ },
2115
+ "expected": {
2116
+ "dueCents": 100,
2117
+ "counterDeltaCents": 100,
2118
+ "valueVoucherFlowCents": 0,
2119
+ "bucketsCents": {
2120
+ "amountRateStandard": 0,
2121
+ "amountRateReduced1": 0,
2122
+ "amountRateReduced2": 0,
2123
+ "amountRateZero": 100,
2124
+ "amountRateSpecial": 0,
2125
+ "amountRatOthers": 0
2126
+ }
2127
+ },
2128
+ "redeemMax": {
2129
+ "voucherIndex": 0,
2130
+ "maxCents": 640
2131
+ },
2132
+ "serverItems": [
2133
+ {
2134
+ "kind": "tip",
2135
+ "name": "Trinkgeld Personal",
2136
+ "amount": 1,
2137
+ "quantity": 1,
2138
+ "priceOne": 1,
2139
+ "priceOneCents": 100,
2140
+ "unitPriceCents": 100,
2141
+ "vat": 0,
2142
+ "vatRate": 0,
2143
+ "paymentMethod": "cash",
2144
+ "recipient": null,
2145
+ "receivedImmediately": true
2146
+ }
2147
+ ]
1082
2148
  }
1083
2149
  ]
1084
2150
  }