@kreiseck/kasseneck-api 1.12.0 → 1.14.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 (419) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/client/api.d.ts +3 -1
  4. package/dist/cjs/client/api.js +1 -0
  5. package/dist/cjs/client/aufrufe.d.ts +5 -5
  6. package/dist/cjs/client/aufrufe.js +7 -2
  7. package/dist/cjs/client/index.d.ts +1 -1
  8. package/dist/cjs/client/index.js +2 -1
  9. package/dist/cjs/client/receipts.d.ts +85 -2
  10. package/dist/cjs/client/receipts.js +164 -5
  11. package/dist/cjs/enums/voucher-type.d.ts +1 -1
  12. package/dist/cjs/enums/voucher-type.js +1 -1
  13. package/dist/cjs/index.d.ts +2 -2
  14. package/dist/cjs/index.js +15 -3
  15. package/dist/cjs/invoice/typen.d.ts +1 -1
  16. package/dist/cjs/models/index.d.ts +2 -1
  17. package/dist/cjs/models/index.js +12 -1
  18. package/dist/cjs/models/receipt-output.d.ts +79 -0
  19. package/dist/cjs/models/receipt-output.js +143 -0
  20. package/dist/cjs/models/receipt.d.ts +2 -2
  21. package/dist/cjs/models/receipt.js +2 -2
  22. package/dist/cjs/models/voucher.d.ts +24 -2
  23. package/dist/cjs/models/voucher.js +2 -2
  24. package/dist/cjs/partner/typen.d.ts +1 -1
  25. package/dist/cjs/pos/index.d.ts +2 -1
  26. package/dist/cjs/pos/index.js +6 -1
  27. package/dist/cjs/pos/schicht-typen.d.ts +2 -2
  28. package/dist/cjs/pos/schicht-typen.js +2 -2
  29. package/dist/cjs/pos/settings.d.ts +1 -1
  30. package/dist/cjs/pos/settings.js +5 -0
  31. package/dist/cjs/pos/texte.d.ts +187 -0
  32. package/dist/cjs/pos/texte.js +88 -0
  33. package/dist/cjs/receipt/due.d.ts +4 -2
  34. package/dist/cjs/receipt/due.js +22 -5
  35. package/dist/cjs/receipt/duplikat.d.ts +35 -0
  36. package/dist/cjs/receipt/duplikat.js +76 -0
  37. package/dist/cjs/receipt/gutschein-plan.d.ts +2 -0
  38. package/dist/cjs/receipt/gutschein-plan.js +5 -0
  39. package/dist/cjs/receipt/index.d.ts +1 -0
  40. package/dist/cjs/receipt/index.js +4 -2
  41. package/dist/cjs/receipt/layout.js +44 -21
  42. package/dist/cjs/register/pairing.d.ts +6 -2
  43. package/dist/cjs/register/pairing.js +1 -1
  44. package/dist/cjs/stored/bon-layout.js +3 -4
  45. package/dist/cjs/stored/vokabular.d.ts +1 -1
  46. package/dist/cjs/stored/vokabular.js +34 -2
  47. package/dist/cjs/version.d.ts +1 -1
  48. package/dist/cjs/version.js +1 -1
  49. package/dist/esm/client/api.d.ts +3 -1
  50. package/dist/esm/client/api.js +2 -1
  51. package/dist/esm/client/aufrufe.d.ts +5 -5
  52. package/dist/esm/client/aufrufe.js +7 -2
  53. package/dist/esm/client/index.d.ts +1 -1
  54. package/dist/esm/client/index.js +1 -1
  55. package/dist/esm/client/receipts.d.ts +85 -2
  56. package/dist/esm/client/receipts.js +164 -6
  57. package/dist/esm/enums/voucher-type.d.ts +1 -1
  58. package/dist/esm/enums/voucher-type.js +1 -1
  59. package/dist/esm/index.d.ts +2 -2
  60. package/dist/esm/index.js +2 -2
  61. package/dist/esm/invoice/typen.d.ts +1 -1
  62. package/dist/esm/models/index.d.ts +2 -1
  63. package/dist/esm/models/index.js +1 -0
  64. package/dist/esm/models/receipt-output.d.ts +79 -0
  65. package/dist/esm/models/receipt-output.js +135 -0
  66. package/dist/esm/models/receipt.d.ts +2 -2
  67. package/dist/esm/models/receipt.js +2 -2
  68. package/dist/esm/models/voucher.d.ts +24 -2
  69. package/dist/esm/models/voucher.js +2 -2
  70. package/dist/esm/partner/typen.d.ts +1 -1
  71. package/dist/esm/pos/index.d.ts +2 -1
  72. package/dist/esm/pos/index.js +3 -1
  73. package/dist/esm/pos/schicht-typen.d.ts +2 -2
  74. package/dist/esm/pos/schicht-typen.js +2 -2
  75. package/dist/esm/pos/settings.d.ts +1 -1
  76. package/dist/esm/pos/settings.js +5 -0
  77. package/dist/esm/pos/texte.d.ts +187 -0
  78. package/dist/esm/pos/texte.js +87 -0
  79. package/dist/esm/receipt/due.d.ts +4 -2
  80. package/dist/esm/receipt/due.js +23 -6
  81. package/dist/esm/receipt/duplikat.d.ts +35 -0
  82. package/dist/esm/receipt/duplikat.js +73 -0
  83. package/dist/esm/receipt/gutschein-plan.d.ts +2 -0
  84. package/dist/esm/receipt/gutschein-plan.js +4 -0
  85. package/dist/esm/receipt/index.d.ts +1 -0
  86. package/dist/esm/receipt/index.js +1 -0
  87. package/dist/esm/receipt/layout.js +44 -21
  88. package/dist/esm/register/pairing.d.ts +6 -2
  89. package/dist/esm/register/pairing.js +1 -1
  90. package/dist/esm/stored/bon-layout.js +3 -4
  91. package/dist/esm/stored/vokabular.d.ts +1 -1
  92. package/dist/esm/stored/vokabular.js +34 -2
  93. package/dist/esm/version.d.ts +1 -1
  94. package/dist/esm/version.js +1 -1
  95. package/fixtures/code-table-receipts.json +1 -1
  96. package/fixtures/duplicate-cases.json +5616 -0
  97. package/fixtures/expected/cancellation-discount.grid32.txt +1 -1
  98. package/fixtures/expected/cancellation-discount.grid48.txt +1 -1
  99. package/fixtures/expected/cancellation-discount.lines.json +1 -1
  100. package/fixtures/expected/cancellation-discount.sheet32.json +1 -1
  101. package/fixtures/expected/cancellation-discount.sheet48.json +1 -1
  102. package/fixtures/expected/cancellation-full.grid32.txt +1 -1
  103. package/fixtures/expected/cancellation-full.grid48.txt +1 -1
  104. package/fixtures/expected/cancellation-full.lines.json +1 -1
  105. package/fixtures/expected/cancellation-full.sheet32.json +1 -1
  106. package/fixtures/expected/cancellation-full.sheet48.json +1 -1
  107. package/fixtures/expected/cancellation-partial.grid32.txt +1 -1
  108. package/fixtures/expected/cancellation-partial.grid48.txt +1 -1
  109. package/fixtures/expected/cancellation-partial.lines.json +1 -1
  110. package/fixtures/expected/cancellation-partial.sheet32.json +1 -1
  111. package/fixtures/expected/cancellation-partial.sheet48.json +1 -1
  112. package/fixtures/expected/cancellation-split-full.grid32.txt +1 -1
  113. package/fixtures/expected/cancellation-split-full.grid48.txt +1 -1
  114. package/fixtures/expected/cancellation-split-full.lines.json +1 -1
  115. package/fixtures/expected/cancellation-split-full.sheet32.json +1 -1
  116. package/fixtures/expected/cancellation-split-full.sheet48.json +1 -1
  117. package/fixtures/expected/cancellation-split-partial.grid32.txt +1 -1
  118. package/fixtures/expected/cancellation-split-partial.grid48.txt +1 -1
  119. package/fixtures/expected/cancellation-split-partial.lines.json +1 -1
  120. package/fixtures/expected/cancellation-split-partial.sheet32.json +1 -1
  121. package/fixtures/expected/cancellation-split-partial.sheet48.json +1 -1
  122. package/fixtures/expected/card-custom.grid32.txt +1 -1
  123. package/fixtures/expected/card-custom.grid48.txt +1 -1
  124. package/fixtures/expected/card-custom.lines.json +1 -1
  125. package/fixtures/expected/card-custom.sheet32.json +1 -1
  126. package/fixtures/expected/card-custom.sheet48.json +1 -1
  127. package/fixtures/expected/card-gptom-ios.grid32.txt +1 -1
  128. package/fixtures/expected/card-gptom-ios.grid48.txt +1 -1
  129. package/fixtures/expected/card-gptom-ios.lines.json +1 -1
  130. package/fixtures/expected/card-gptom-ios.sheet32.json +1 -1
  131. package/fixtures/expected/card-gptom-ios.sheet48.json +1 -1
  132. package/fixtures/expected/card-gptom.grid32.txt +1 -1
  133. package/fixtures/expected/card-gptom.grid48.txt +1 -1
  134. package/fixtures/expected/card-gptom.lines.json +1 -1
  135. package/fixtures/expected/card-gptom.sheet32.json +1 -1
  136. package/fixtures/expected/card-gptom.sheet48.json +1 -1
  137. package/fixtures/expected/card-hobex-cloud.grid32.txt +1 -1
  138. package/fixtures/expected/card-hobex-cloud.grid48.txt +1 -1
  139. package/fixtures/expected/card-hobex-cloud.lines.json +1 -1
  140. package/fixtures/expected/card-hobex-cloud.sheet32.json +1 -1
  141. package/fixtures/expected/card-hobex-cloud.sheet48.json +1 -1
  142. package/fixtures/expected/card-hobex-hps.grid32.txt +1 -1
  143. package/fixtures/expected/card-hobex-hps.grid48.txt +1 -1
  144. package/fixtures/expected/card-hobex-hps.lines.json +1 -1
  145. package/fixtures/expected/card-hobex-hps.sheet32.json +1 -1
  146. package/fixtures/expected/card-hobex-hps.sheet48.json +1 -1
  147. package/fixtures/expected/card-mypos.grid32.txt +1 -1
  148. package/fixtures/expected/card-mypos.grid48.txt +1 -1
  149. package/fixtures/expected/card-mypos.lines.json +1 -1
  150. package/fixtures/expected/card-mypos.sheet32.json +1 -1
  151. package/fixtures/expected/card-mypos.sheet48.json +1 -1
  152. package/fixtures/expected/card-stripe-eps.grid32.txt +1 -1
  153. package/fixtures/expected/card-stripe-eps.grid48.txt +1 -1
  154. package/fixtures/expected/card-stripe-eps.lines.json +1 -1
  155. package/fixtures/expected/card-stripe-eps.sheet32.json +1 -1
  156. package/fixtures/expected/card-stripe-eps.sheet48.json +1 -1
  157. package/fixtures/expected/card-stripe.grid32.txt +1 -1
  158. package/fixtures/expected/card-stripe.grid48.txt +1 -1
  159. package/fixtures/expected/card-stripe.lines.json +1 -1
  160. package/fixtures/expected/card-stripe.sheet32.json +1 -1
  161. package/fixtures/expected/card-stripe.sheet48.json +1 -1
  162. package/fixtures/expected/card-sumup.grid32.txt +1 -1
  163. package/fixtures/expected/card-sumup.grid48.txt +1 -1
  164. package/fixtures/expected/card-sumup.lines.json +1 -1
  165. package/fixtures/expected/card-sumup.sheet32.json +1 -1
  166. package/fixtures/expected/card-sumup.sheet48.json +1 -1
  167. package/fixtures/expected/code-table-receipt.long-item-name.iso8859_15.hex +1 -1
  168. package/fixtures/expected/code-table-receipt.long-item-name.pc437.hex +1 -1
  169. package/fixtures/expected/code-table-receipt.long-item-name.pc850.hex +1 -1
  170. package/fixtures/expected/code-table-receipt.long-item-name.pc858.hex +1 -1
  171. package/fixtures/expected/code-table-receipt.long-item-name.replacement.hex +1 -1
  172. package/fixtures/expected/code-table-receipt.long-item-name.wpc1252.hex +1 -1
  173. package/fixtures/expected/code-table-receipt.sale-cash.iso8859_15.hex +1 -1
  174. package/fixtures/expected/code-table-receipt.sale-cash.pc437.hex +1 -1
  175. package/fixtures/expected/code-table-receipt.sale-cash.pc850.hex +1 -1
  176. package/fixtures/expected/code-table-receipt.sale-cash.pc858.hex +1 -1
  177. package/fixtures/expected/code-table-receipt.sale-cash.replacement.hex +1 -1
  178. package/fixtures/expected/code-table-receipt.sale-cash.wpc1252.hex +1 -1
  179. package/fixtures/expected/code-table-receipt.special-characters.iso8859_15.hex +1 -1
  180. package/fixtures/expected/code-table-receipt.special-characters.pc437.hex +1 -1
  181. package/fixtures/expected/code-table-receipt.special-characters.pc850.hex +1 -1
  182. package/fixtures/expected/code-table-receipt.special-characters.pc858.hex +1 -1
  183. package/fixtures/expected/code-table-receipt.special-characters.replacement.hex +1 -1
  184. package/fixtures/expected/code-table-receipt.special-characters.wpc1252.hex +1 -1
  185. package/fixtures/expected/code-table-receipt.test-cashregister-sale.iso8859_15.hex +1 -1
  186. package/fixtures/expected/code-table-receipt.test-cashregister-sale.pc437.hex +1 -1
  187. package/fixtures/expected/code-table-receipt.test-cashregister-sale.pc850.hex +1 -1
  188. package/fixtures/expected/code-table-receipt.test-cashregister-sale.pc858.hex +1 -1
  189. package/fixtures/expected/code-table-receipt.test-cashregister-sale.replacement.hex +1 -1
  190. package/fixtures/expected/code-table-receipt.test-cashregister-sale.wpc1252.hex +1 -1
  191. package/fixtures/expected/discount-lines.grid32.txt +1 -1
  192. package/fixtures/expected/discount-lines.grid48.txt +1 -1
  193. package/fixtures/expected/discount-lines.lines.json +1 -1
  194. package/fixtures/expected/discount-lines.sheet32.json +1 -1
  195. package/fixtures/expected/discount-lines.sheet48.json +1 -1
  196. package/fixtures/expected/discount-owner-tip.grid32.txt +1 -1
  197. package/fixtures/expected/discount-owner-tip.grid48.txt +1 -1
  198. package/fixtures/expected/discount-owner-tip.lines.json +1 -1
  199. package/fixtures/expected/discount-owner-tip.sheet32.json +1 -1
  200. package/fixtures/expected/discount-owner-tip.sheet48.json +1 -1
  201. package/fixtures/expected/discount-simple.grid32.txt +1 -1
  202. package/fixtures/expected/discount-simple.grid48.txt +1 -1
  203. package/fixtures/expected/discount-simple.lines.json +1 -1
  204. package/fixtures/expected/discount-simple.sheet32.json +1 -1
  205. package/fixtures/expected/discount-simple.sheet48.json +1 -1
  206. package/fixtures/expected/discount-tip.grid32.txt +1 -1
  207. package/fixtures/expected/discount-tip.grid48.txt +1 -1
  208. package/fixtures/expected/discount-tip.lines.json +1 -1
  209. package/fixtures/expected/discount-tip.sheet32.json +1 -1
  210. package/fixtures/expected/discount-tip.sheet48.json +1 -1
  211. package/fixtures/expected/discount-value-voucher.grid32.txt +1 -1
  212. package/fixtures/expected/discount-value-voucher.grid48.txt +1 -1
  213. package/fixtures/expected/discount-value-voucher.lines.json +1 -1
  214. package/fixtures/expected/discount-value-voucher.sheet32.json +1 -1
  215. package/fixtures/expected/discount-value-voucher.sheet48.json +1 -1
  216. package/fixtures/expected/duplicate.cancellation-full.hex +44 -0
  217. package/fixtures/expected/duplicate.cancellation-partial.hex +33 -0
  218. package/fixtures/expected/duplicate.sale-cash-mm58.hex +28 -0
  219. package/fixtures/expected/duplicate.sale-cash-twice.hex +35 -0
  220. package/fixtures/expected/duplicate.sale-cash.hex +35 -0
  221. package/fixtures/expected/duplicate.shift-close.hex +43 -0
  222. package/fixtures/expected/duplicate.summer-time-last-second.hex +28 -0
  223. package/fixtures/expected/duplicate.summer-time-start.hex +35 -0
  224. package/fixtures/expected/duplicate.test-cashregister-sale-logo.hex +189 -0
  225. package/fixtures/expected/duplicate.voucher-multi-purpose-redeem.hex +37 -0
  226. package/fixtures/expected/duplicate.voucher-service-redeem-logo.hex +119 -0
  227. package/fixtures/expected/duplicate.winter-time-first-second.hex +28 -0
  228. package/fixtures/expected/duplicate.zero-start.hex +40 -0
  229. package/fixtures/expected/long-item-name.grid32.txt +1 -1
  230. package/fixtures/expected/long-item-name.grid48.txt +1 -1
  231. package/fixtures/expected/long-item-name.lines.json +1 -1
  232. package/fixtures/expected/long-item-name.sheet32.json +1 -1
  233. package/fixtures/expected/long-item-name.sheet48.json +1 -1
  234. package/fixtures/expected/sale-card.grid32.txt +1 -1
  235. package/fixtures/expected/sale-card.grid48.txt +1 -1
  236. package/fixtures/expected/sale-card.lines.json +1 -1
  237. package/fixtures/expected/sale-card.sheet32.json +1 -1
  238. package/fixtures/expected/sale-card.sheet48.json +1 -1
  239. package/fixtures/expected/sale-cash.grid32.txt +1 -1
  240. package/fixtures/expected/sale-cash.grid48.txt +1 -1
  241. package/fixtures/expected/sale-cash.lines.json +1 -1
  242. package/fixtures/expected/sale-cash.sheet32.json +1 -1
  243. package/fixtures/expected/sale-cash.sheet48.json +1 -1
  244. package/fixtures/expected/sale-small-business.grid32.txt +1 -1
  245. package/fixtures/expected/sale-small-business.grid48.txt +1 -1
  246. package/fixtures/expected/sale-small-business.lines.json +1 -1
  247. package/fixtures/expected/sale-small-business.sheet32.json +1 -1
  248. package/fixtures/expected/sale-small-business.sheet48.json +1 -1
  249. package/fixtures/expected/signature-outage-sale.grid32.txt +1 -1
  250. package/fixtures/expected/signature-outage-sale.grid48.txt +1 -1
  251. package/fixtures/expected/signature-outage-sale.lines.json +1 -1
  252. package/fixtures/expected/signature-outage-sale.sheet32.json +1 -1
  253. package/fixtures/expected/signature-outage-sale.sheet48.json +1 -1
  254. package/fixtures/expected/split-card-card-cash.grid32.txt +1 -1
  255. package/fixtures/expected/split-card-card-cash.grid48.txt +1 -1
  256. package/fixtures/expected/split-card-card-cash.lines.json +1 -1
  257. package/fixtures/expected/split-card-card-cash.sheet32.json +1 -1
  258. package/fixtures/expected/split-card-card-cash.sheet48.json +1 -1
  259. package/fixtures/expected/split-cash-change.grid32.txt +1 -1
  260. package/fixtures/expected/split-cash-change.grid48.txt +1 -1
  261. package/fixtures/expected/split-cash-change.lines.json +1 -1
  262. package/fixtures/expected/split-cash-change.sheet32.json +1 -1
  263. package/fixtures/expected/split-cash-change.sheet48.json +1 -1
  264. package/fixtures/expected/split-long-amount.grid32.txt +1 -1
  265. package/fixtures/expected/split-long-amount.grid48.txt +1 -1
  266. package/fixtures/expected/split-long-amount.lines.json +1 -1
  267. package/fixtures/expected/split-long-amount.sheet32.json +1 -1
  268. package/fixtures/expected/split-long-amount.sheet48.json +1 -1
  269. package/fixtures/expected/split-one-card-tip.grid32.txt +1 -1
  270. package/fixtures/expected/split-one-card-tip.grid48.txt +1 -1
  271. package/fixtures/expected/split-one-card-tip.lines.json +1 -1
  272. package/fixtures/expected/split-one-card-tip.sheet32.json +1 -1
  273. package/fixtures/expected/split-one-card-tip.sheet48.json +1 -1
  274. package/fixtures/expected/split-table-round-tip.grid32.txt +1 -1
  275. package/fixtures/expected/split-table-round-tip.grid48.txt +1 -1
  276. package/fixtures/expected/split-table-round-tip.lines.json +1 -1
  277. package/fixtures/expected/split-table-round-tip.sheet32.json +1 -1
  278. package/fixtures/expected/split-table-round-tip.sheet48.json +1 -1
  279. package/fixtures/expected/split-tip-card.grid32.txt +1 -1
  280. package/fixtures/expected/split-tip-card.grid48.txt +1 -1
  281. package/fixtures/expected/split-tip-card.lines.json +1 -1
  282. package/fixtures/expected/split-tip-card.sheet32.json +1 -1
  283. package/fixtures/expected/split-tip-card.sheet48.json +1 -1
  284. package/fixtures/expected/split-two-cards-same-provider.grid32.txt +1 -1
  285. package/fixtures/expected/split-two-cards-same-provider.grid48.txt +1 -1
  286. package/fixtures/expected/split-two-cards-same-provider.lines.json +1 -1
  287. package/fixtures/expected/split-two-cards-same-provider.sheet32.json +1 -1
  288. package/fixtures/expected/split-two-cards-same-provider.sheet48.json +1 -1
  289. package/fixtures/expected/test-cashregister-sale.grid32.txt +1 -1
  290. package/fixtures/expected/test-cashregister-sale.grid48.txt +1 -1
  291. package/fixtures/expected/test-cashregister-sale.lines.json +1 -1
  292. package/fixtures/expected/test-cashregister-sale.sheet32.json +1 -1
  293. package/fixtures/expected/test-cashregister-sale.sheet48.json +1 -1
  294. package/fixtures/expected/test-signature-sale.grid32.txt +1 -1
  295. package/fixtures/expected/test-signature-sale.grid48.txt +1 -1
  296. package/fixtures/expected/test-signature-sale.lines.json +1 -1
  297. package/fixtures/expected/test-signature-sale.sheet32.json +1 -1
  298. package/fixtures/expected/test-signature-sale.sheet48.json +1 -1
  299. package/fixtures/expected/training.grid32.txt +1 -1
  300. package/fixtures/expected/training.grid48.txt +1 -1
  301. package/fixtures/expected/training.lines.json +1 -1
  302. package/fixtures/expected/training.sheet32.json +1 -1
  303. package/fixtures/expected/training.sheet48.json +1 -1
  304. package/fixtures/expected/voucher-multi-purpose-sale.grid32.txt +1 -2
  305. package/fixtures/expected/voucher-multi-purpose-sale.grid48.txt +1 -1
  306. package/fixtures/expected/voucher-multi-purpose-sale.lines.json +1 -1
  307. package/fixtures/expected/voucher-multi-purpose-sale.sheet32.json +1 -7
  308. package/fixtures/expected/voucher-multi-purpose-sale.sheet48.json +1 -1
  309. package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid32.txt +1 -1
  310. package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid48.txt +1 -1
  311. package/fixtures/expected/voucher-single-purpose-redeem-exempt.lines.json +1 -1
  312. package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet32.json +1 -1
  313. package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet48.json +1 -1
  314. package/fixtures/expected/voucher-single-purpose-redeem.grid32.txt +1 -1
  315. package/fixtures/expected/voucher-single-purpose-redeem.grid48.txt +1 -1
  316. package/fixtures/expected/voucher-single-purpose-redeem.lines.json +1 -1
  317. package/fixtures/expected/voucher-single-purpose-redeem.sheet32.json +1 -1
  318. package/fixtures/expected/voucher-single-purpose-redeem.sheet48.json +1 -1
  319. package/fixtures/expected/voucher-single-purpose-sale.grid32.txt +2 -3
  320. package/fixtures/expected/voucher-single-purpose-sale.grid48.txt +2 -2
  321. package/fixtures/expected/voucher-single-purpose-sale.lines.json +2 -2
  322. package/fixtures/expected/voucher-single-purpose-sale.sheet32.json +2 -8
  323. package/fixtures/expected/voucher-single-purpose-sale.sheet48.json +2 -2
  324. package/fixtures/expected/zero-annual.grid32.txt +1 -1
  325. package/fixtures/expected/zero-annual.grid48.txt +1 -1
  326. package/fixtures/expected/zero-annual.lines.json +1 -1
  327. package/fixtures/expected/zero-annual.sheet32.json +1 -1
  328. package/fixtures/expected/zero-annual.sheet48.json +1 -1
  329. package/fixtures/expected/zero-final.grid32.txt +1 -1
  330. package/fixtures/expected/zero-final.grid48.txt +1 -1
  331. package/fixtures/expected/zero-final.lines.json +1 -1
  332. package/fixtures/expected/zero-final.sheet32.json +1 -1
  333. package/fixtures/expected/zero-final.sheet48.json +1 -1
  334. package/fixtures/expected/zero-manual.grid32.txt +1 -1
  335. package/fixtures/expected/zero-manual.grid48.txt +1 -1
  336. package/fixtures/expected/zero-manual.lines.json +1 -1
  337. package/fixtures/expected/zero-manual.sheet32.json +1 -1
  338. package/fixtures/expected/zero-manual.sheet48.json +1 -1
  339. package/fixtures/expected/zero-monthly.grid32.txt +1 -1
  340. package/fixtures/expected/zero-monthly.grid48.txt +1 -1
  341. package/fixtures/expected/zero-monthly.lines.json +1 -1
  342. package/fixtures/expected/zero-monthly.sheet32.json +1 -1
  343. package/fixtures/expected/zero-monthly.sheet48.json +1 -1
  344. package/fixtures/expected/zero-outage-end.grid32.txt +1 -1
  345. package/fixtures/expected/zero-outage-end.grid48.txt +1 -1
  346. package/fixtures/expected/zero-outage-end.lines.json +1 -1
  347. package/fixtures/expected/zero-outage-end.sheet32.json +1 -1
  348. package/fixtures/expected/zero-outage-end.sheet48.json +1 -1
  349. package/fixtures/expected/zero-start.grid32.txt +1 -1
  350. package/fixtures/expected/zero-start.grid48.txt +1 -1
  351. package/fixtures/expected/zero-start.lines.json +1 -1
  352. package/fixtures/expected/zero-start.sheet32.json +1 -1
  353. package/fixtures/expected/zero-start.sheet48.json +1 -1
  354. package/fixtures/hobex-hps-codes.json +1 -1
  355. package/fixtures/invoice-api.schema.json +1 -1
  356. package/fixtures/invoice-texts.json +1 -1
  357. package/fixtures/manifest.json +260 -260
  358. package/fixtures/pos-texts.json +205 -1
  359. package/fixtures/receipt-due-voucher-generated.json +1 -1
  360. package/fixtures/receipt-outputs-cases.json +2778 -0
  361. package/fixtures/receipts/cancellation-discount.json +1 -1
  362. package/fixtures/receipts/cancellation-full.json +1 -1
  363. package/fixtures/receipts/cancellation-partial.json +1 -1
  364. package/fixtures/receipts/cancellation-split-full.json +1 -1
  365. package/fixtures/receipts/cancellation-split-partial.json +1 -1
  366. package/fixtures/receipts/card-custom.json +1 -1
  367. package/fixtures/receipts/card-gptom-ios.json +1 -1
  368. package/fixtures/receipts/card-gptom.json +1 -1
  369. package/fixtures/receipts/card-hobex-cloud.json +1 -1
  370. package/fixtures/receipts/card-hobex-hps.json +1 -1
  371. package/fixtures/receipts/card-mypos.json +1 -1
  372. package/fixtures/receipts/card-stripe-eps.json +1 -1
  373. package/fixtures/receipts/card-stripe.json +1 -1
  374. package/fixtures/receipts/card-sumup.json +1 -1
  375. package/fixtures/receipts/discount-lines.json +1 -1
  376. package/fixtures/receipts/discount-owner-tip.json +1 -1
  377. package/fixtures/receipts/discount-simple.json +1 -1
  378. package/fixtures/receipts/discount-tip.json +1 -1
  379. package/fixtures/receipts/discount-value-voucher.json +1 -1
  380. package/fixtures/receipts/long-item-name.json +1 -1
  381. package/fixtures/receipts/sale-card.json +1 -1
  382. package/fixtures/receipts/sale-cash.json +1 -1
  383. package/fixtures/receipts/sale-small-business.json +1 -1
  384. package/fixtures/receipts/signature-outage-sale.json +1 -1
  385. package/fixtures/receipts/split-card-card-cash.json +1 -1
  386. package/fixtures/receipts/split-cash-change.json +1 -1
  387. package/fixtures/receipts/split-long-amount.json +1 -1
  388. package/fixtures/receipts/split-one-card-tip.json +1 -1
  389. package/fixtures/receipts/split-table-round-tip.json +1 -1
  390. package/fixtures/receipts/split-tip-card.json +1 -1
  391. package/fixtures/receipts/split-two-cards-same-provider.json +1 -1
  392. package/fixtures/receipts/test-cashregister-sale.json +1 -1
  393. package/fixtures/receipts/test-signature-sale.json +1 -1
  394. package/fixtures/receipts/training.json +1 -1
  395. package/fixtures/receipts/zero-annual.json +1 -1
  396. package/fixtures/receipts/zero-final.json +1 -1
  397. package/fixtures/receipts/zero-manual.json +1 -1
  398. package/fixtures/receipts/zero-monthly.json +1 -1
  399. package/fixtures/receipts/zero-outage-end.json +1 -1
  400. package/fixtures/receipts/zero-start.json +1 -1
  401. package/fixtures/surface.json +25 -5
  402. package/fixtures/v3/README.md +10 -3
  403. package/fixtures/v3/antworten/belege.json +623 -125
  404. package/fixtures/v3/antworten/belegmail.json +2 -2
  405. package/fixtures/v3/antworten/kasse-belege.json +622 -122
  406. package/fixtures/v3/antworten/kasse.json +407 -31
  407. package/fixtures/v3/antworten/lager.json +1 -1
  408. package/fixtures/v3/antworten/rechnungen.json +4 -4
  409. package/fixtures/v3/antworten/storno.json +211 -3
  410. package/fixtures/v3/stored/belege.json +2 -2
  411. package/fixtures/v3/stored/kasse.json +114 -4
  412. package/fixtures/v3/stored/rechnungen.json +17 -17
  413. package/fixtures/v3/v3-vokabular.json +224 -19
  414. package/fixtures/v3/zahlbetrag-faelle.json +1070 -4
  415. package/package.json +3 -1
  416. package/dist/cjs/stored/gutscheine.d.ts +0 -3
  417. package/dist/cjs/stored/gutscheine.js +0 -60
  418. package/dist/esm/stored/gutscheine.d.ts +0 -3
  419. package/dist/esm/stored/gutscheine.js +0 -56
@@ -453,19 +453,31 @@ function barZeilen(zahlung) {
453
453
  */
454
454
  function zahlungsZeilen(receipt) {
455
455
  const zahlungen = receipt.payments;
456
+ // Trägt der Beleg eine Gutschein-Zahlungszeile, entfällt, was 0 Cent kostet
457
+ // (§ 132a Abs. 3 BAO: die Zahlungsart ist kein Pflichtinhalt, der Betrag bleibt).
458
+ const mitGutschein = receipt.vouchers.some((v) => v.action === index_js_1.VoucherAction.redeem && v.type !== index_js_1.VoucherType.promo);
456
459
  if (zahlungen == null || zahlungen.length === 0) {
460
+ if (mitGutschein && (0, index_js_2.receiptSumCents)(receipt) === 0)
461
+ return [];
457
462
  return [paarZeile('Zahlungsart:', zahlungsartText(receipt.paymentMethod))];
458
463
  }
459
464
  if (zahlungen.length === 1) {
460
465
  const zahlung = zahlungen[0];
466
+ if (mitGutschein && zahlung.amountCents === 0)
467
+ return [];
461
468
  return [paarZeile('Zahlungsart:', zahlungsartText(zahlung.method)), ...zahlungTrinkgeldZeilen(zahlung), ...barZeilen(zahlung)];
462
469
  }
470
+ // Mehrere Zahlungen: mit Gutschein entfallen die mit 0 Cent (Nummer bleibt die des Kartenblocks).
471
+ const alle = zahlungen.map((zahlung, i) => ({ zahlung, i }));
472
+ const liste = mitGutschein ? alle.filter(({ zahlung }) => zahlung.amountCents !== 0) : alle;
473
+ if (liste.length === 0)
474
+ return [];
463
475
  const zeilen = [textZeile('Zahlungsarten:')];
464
- zahlungen.forEach((zahlung, i) => {
476
+ for (const { zahlung, i } of liste) {
465
477
  zeilen.push(paarZeile(zahlungNummerText(zahlung, i), `${formatCents(zahlung.amountCents)} €`, 8, 4));
466
478
  zeilen.push(...zahlungTrinkgeldZeilen(zahlung));
467
479
  zeilen.push(...barZeilen(zahlung));
468
- });
480
+ }
469
481
  return zeilen;
470
482
  }
471
483
  // -------------------------------------------------------- Kleinunternehmer
@@ -554,10 +566,12 @@ function gutscheinText(voucher) {
554
566
  text += 'Wertgutschein';
555
567
  }
556
568
  else if (voucher.type === index_js_1.VoucherType.promo) {
557
- text += 'Promotionsgutschein';
569
+ text += 'Aktionsgutschein';
558
570
  }
559
571
  const name = voucher.name;
560
- if (name != null && name.toLowerCase().includes(text.toLowerCase())) {
572
+ // Alte Belege nennen den Aktionsgutschein noch „Promotionsgutschein": auch dieser Name steht allein.
573
+ if (name != null && (name.toLowerCase().includes(text.toLowerCase())
574
+ || (voucher.type === index_js_1.VoucherType.promo && name.toLowerCase().includes('promotionsgutschein')))) {
561
575
  return name;
562
576
  }
563
577
  // Der Betrag steht in derselben Zeile rechts in der Betragsspalte — ihn
@@ -566,7 +580,7 @@ function gutscheinText(voucher) {
566
580
  // identifiziert den Gutschein (Mehrzweck: der Kunde will wissen, WELCHER
567
581
  // eingeloest wurde).
568
582
  if (voucher.code != null && voucher.code !== '') {
569
- text += ` ${voucher.code}`;
583
+ text += ` ${codeKurz(voucher)}`;
570
584
  }
571
585
  if (name != null && name.length > 0) {
572
586
  text += ` - ${name}`;
@@ -584,21 +598,20 @@ function gutscheinText(voucher) {
584
598
  * Leistung Zeile dieses Gutscheins Text „ Einzweck, versteuert mit
585
599
  * Beleg K1-ID-4711“ (bzw. „Leistung, …“, „…, befreit
586
600
  * verkauft (Kleinunternehmer)“, 47 Zeichen: passt auf
587
- * 80 mm) und 8:4 „ Rest am Gutschein“ | „19,50 “ bzw.
601
+ * 80 mm) und 8:4 „ Rest am Gutschein“ | „19,50 €“ bzw.
588
602
  * „2 Stück“
589
603
  * Einloesung Mehrzweck nach „Zwischensumme“ 8:4 „Gutschein ····-9DWT“ |
590
604
  * „-17,50 €“ und „ Rest am Gutschein“ | „32,50 €“
591
605
  * Auszahlung 8:4 „Auszahlung Gutschein ····-9DWT“ | „-12,00 D“,
592
606
  * Text „ Grund: <Grund>“
593
- * Aktion Rabattzeile wie bisher (Promotionsgutschein)
607
+ * Aktion Rabattzeile wie bisher (Aktionsgutschein)
594
608
  *
595
609
  * Vermerke sind Textzeilen mit zwei fuehrenden Leerzeichen; das Raster bricht
596
610
  * sie mit demselben Einzug um (grid.ts, haengender Einzug), auf 58 mm etwa
597
611
  * „ Einzweck, versteuert mit“ / „ Beleg K1-ID-4711“.
598
612
  *
599
- * Die Zusatzzeilen kommen nur aus dem Eintrag: ein Beleg, den der Server fuer
600
- * ein aelteres Paket aufbereitet hat (Eintraege mit Position entfernt, Code an
601
- * der Position, functions/beleg-layout.js `gutscheineFuerPaket`), zeigt seine
613
+ * Die Zusatzzeilen kommen nur aus dem Eintrag: ein Beleg ohne Eintrag (aeltere
614
+ * Belege, bei denen der Code schon an der Position steht) zeigt seine
602
615
  * Positionen wie jede andere Position. Ein Betrag zaehlt immer genau einmal:
603
616
  * Positionen in der Steuertabelle, Eintraege mit `zeroRateBucket` nie.
604
617
  */
@@ -611,12 +624,22 @@ function istMehrzweckMitCode(voucher) {
611
624
  return voucher.type === index_js_1.VoucherType.value && voucher.voucherType === index_js_1.VoucherType.multi_purpose;
612
625
  }
613
626
  /**
614
- * Code fuer die Belegzeile: die Maske des Eintrags, ohne den Platzhalter
615
- * `no-code`, den der Server Alt-Eintraegen ohne Code setzt (index.js
616
- * checkVouchersIsValid). Leer, wenn es keinen gibt.
627
+ * Code fuer die Belegzeile: immer die kurze Maske `····-XXXX` aus dem Code-Ende
628
+ * (auch wenn ein alter Beleg die lange `····-····-XXXX` im Eintrag traegt),
629
+ * ohne den Platzhalter `no-code`, den der Server Alt-Eintraegen ohne Code
630
+ * setzt (index.js checkVouchersIsValid). Leer, wenn es keinen gibt.
617
631
  */
618
632
  function gutscheinCodeZusatz(voucher) {
619
- return typeof voucher.code === 'string' && voucher.code !== '' && voucher.code !== 'no-code' ? ` ${voucher.code}` : '';
633
+ return typeof voucher.code === 'string' && voucher.code !== '' && voucher.code !== 'no-code' ? ` ${codeKurz(voucher)}` : '';
634
+ }
635
+ /**
636
+ * Maskierte Codes (`····-····-XXXX` alt, `····-XXXX` neu) drucken immer kurz;
637
+ * ein Alt-Code ohne Maske (z. B. `GS-1`) bleibt, wie er ist.
638
+ */
639
+ function codeKurz(voucher) {
640
+ const code = voucher.code ?? '';
641
+ const endung = gutscheinEndung(voucher);
642
+ return code.includes('····') && endung != null ? `····-${endung}` : code;
620
643
  }
621
644
  /** Die vier letzten Zeichen des Codes (`codeSuffix`, sonst aus der Maske), oder null. */
622
645
  function gutscheinEndung(voucher) {
@@ -630,7 +653,7 @@ const MEHRZWECK_UST_TEXT = ' USt bei Einlösung';
630
653
  * Eintrag? Jede Position hoechstens einem Eintrag, Eintraege in ihrer
631
654
  * Reihenfolge (der Server haengt die Positionen in derselben Reihenfolge an).
632
655
  * Verkauf: erste freie Position der Art mit demselben Betrag und ohne Code im
633
- * Namen (wie `gutscheineFuerPaket` des Servers). Einloesung: freie Positionen
656
+ * Namen (wie die Zuordnung des Servers). Einloesung: freie Positionen
634
657
  * mit genau dem Namen `Gutschein ····-<Endung>`, Auszahlung: `Auszahlung
635
658
  * Gutschein ····-<Endung>` (gutschein-beleg.plane) -- der Reihe nach, bis
636
659
  * ihr Betrag den des Eintrags erreicht (ein Kleinunternehmer-Einzweck oder
@@ -708,14 +731,14 @@ function gutscheinPositionsZeilen(item, satz, zu) {
708
731
  else if (v.exempt === true) {
709
732
  zeilen.push(textZeile(` ${art}, befreit verkauft (Kleinunternehmer)`));
710
733
  }
711
- // Rest: Betrag fluchtet mit den Positionsbetraegen (zwei Zeichen statt
712
- // „ A“), Stueck rechtsbuendig. Die Gesamtzahl kennt der Beleg nicht.
734
+ // Rest: Betrag mit „€“ wie beim Mehrzweckgutschein, Stueck rechtsbuendig.
735
+ // Die Gesamtzahl kennt der Beleg nicht.
713
736
  if (v.type === index_js_1.VoucherType.service) {
714
737
  if (Number.isInteger(v.remainingQuantityAfter))
715
738
  zeilen.push(paarZeile(' Rest am Gutschein', `${v.remainingQuantityAfter} Stück`, 8, 4));
716
739
  }
717
740
  else if (Number.isInteger(v.balanceAfterCents)) {
718
- zeilen.push(paarZeile(' Rest am Gutschein', `${formatCents(v.balanceAfterCents)} `, 8, 4));
741
+ zeilen.push(paarZeile(' Rest am Gutschein', `${formatCents(v.balanceAfterCents)} €`, 8, 4));
719
742
  }
720
743
  return zeilen;
721
744
  }
@@ -1105,7 +1128,7 @@ function buildReceiptLayout(receipt, company, options = {}) {
1105
1128
  lines.push(...(art === 'discount' ? rabattZeilen(item.name, teile) : trinkgeldZeilen(item.name, teile)));
1106
1129
  }
1107
1130
  // --- Gutscheine: verkaufte Wertgutscheine sind Umsatz zu 0 %, eingeloeste
1108
- // Promotionsgutscheine mindern die Steuergruppen anteilig.
1131
+ // Aktionsgutscheine mindern die Steuergruppen anteilig.
1109
1132
  // Am Storno-Beleg zaehlen Wertgutscheine mit umgekehrtem Vorzeichen
1110
1133
  // (receiptValueVoucherSign): der verkaufte wird zurueckgezahlt.
1111
1134
  // Eintraege mit `zeroRateBucket` stehen schon als Position (0-%-Topf).
@@ -1135,7 +1158,7 @@ function buildReceiptLayout(receipt, company, options = {}) {
1135
1158
  lines.push(textZeile(MEHRZWECK_UST_TEXT));
1136
1159
  }
1137
1160
  if (voucher.action === index_js_1.VoucherAction.redeem && voucher.type === index_js_1.VoucherType.promo) {
1138
- // Am Storno-Beleg steht der Promotionsgutschein nur als Bezug: den Rabatt
1161
+ // Am Storno-Beleg steht der Aktionsgutschein nur als Bezug: den Rabatt
1139
1162
  // nimmt dort die Position „Gutschein-Ausgleich“ zurueck (receiptSubSumCents).
1140
1163
  if (wgVz === 1)
1141
1164
  promoCents += wert;
@@ -1255,7 +1278,7 @@ function buildReceiptLayout(receipt, company, options = {}) {
1255
1278
  return { lines, paperSize, ruleset };
1256
1279
  }
1257
1280
  /**
1258
- * Verteilt einen eingeloesten Promotionsgutschein anteilig auf die
1281
+ * Verteilt einen eingeloesten Aktionsgutschein anteilig auf die
1259
1282
  * Steuergruppen — Zwilling von `print_paper.dart` (Zeilen 296-325).
1260
1283
  *
1261
1284
  * Der Gutschein mindert keinen einzelnen Artikel, sondern den Umsatz: jede
@@ -120,8 +120,12 @@ export type RegisterLoginMode = 'select_user' | 'pin';
120
120
  export interface RegisterDeviceUsers {
121
121
  /** Im Modus `pin` bewusst leer — Namen haben am nur-PIN-Geraet nichts verloren. */
122
122
  users: RegisterUserSummary[];
123
- /** Kassen-Einstellungen (betriebsweit + Geraet), gemischt mit den Standardwerten. */
124
- settings: PosSettings;
123
+ /**
124
+ * Kassen-Einstellungen (betriebsweit + Geraet), gemischt mit den Standardwerten.
125
+ * Ohne `vouchers`: die Antwort des Servers fuehrt den Block nicht, er kommt
126
+ * mit `getPosSettings`; ein Vorgabe-Block waere erfunden.
127
+ */
128
+ settings: Omit<PosSettings, 'vouchers'>;
125
129
  /** Belegkopf-Daten des Betriebs (Name, Anschrift, UID, Fusszeilen), ohne Geheimnisse. */
126
130
  receiptHeader: ReceiptCompany | null;
127
131
  /**
@@ -215,7 +215,7 @@ async function listRegisterUsersForDevice(options) {
215
215
  };
216
216
  });
217
217
  const settingsRoh = daten?.settings;
218
- const settings = (0, client_js_1.posSettingsFromWire)(settingsRoh !== null && typeof settingsRoh === 'object' ? settingsRoh : null);
218
+ const { vouchers: _keinBlock, ...settings } = (0, client_js_1.posSettingsFromWire)(settingsRoh !== null && typeof settingsRoh === 'object' ? settingsRoh : null);
219
219
  const kopf = daten?.receiptHeader;
220
220
  const receiptHeader = kopf && typeof kopf === 'object' ? (0, receipt_company_js_1.fromReceiptCompanyPayload)(kopf) : null;
221
221
  return {
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.layoutWieServer = layoutWieServer;
4
4
  const layout_js_1 = require("../receipt/layout.js");
5
- const gutscheine_js_1 = require("./gutscheine.js");
6
5
  /**
7
6
  * Layout wie `beleg-layout.layoutFuerBeleg`: 80 mm, Regelwerk mindestens das
8
7
  * aktuelle. Kann der Server es nicht bauen, liefert er `null` (dann baut
@@ -11,9 +10,9 @@ const gutscheine_js_1 = require("./gutscheine.js");
11
10
  function layoutWieServer(b, regelwerk) {
12
11
  const ruleset = Math.max(Number(regelwerk) || 1, layout_js_1.CURRENT_LAYOUT_RULESET);
13
12
  try {
14
- // Wie layoutFuerBeleg: Gutscheine mit Code stehen am Bon als Positionen,
15
- // die uebrigen Eintraege so, wie das vendorte Paket des Servers sie liest.
16
- return (0, layout_js_1.buildReceiptLayout)((0, gutscheine_js_1.wieVendortesPaket)((0, gutscheine_js_1.gutscheineFuerPaket)(b.receipt)), b.company, {
13
+ // Wie layoutFuerBeleg seit dem Paket 0.34.0 des Servers: der Beleg geht
14
+ // unveraendert ans Paket (keine Aufbereitung der Gutscheine mehr).
15
+ return (0, layout_js_1.buildReceiptLayout)(b.receipt, b.company, {
17
16
  paperSize: 'mm80', ruleset, testCashregister: b.testCashregister, testSignature: b.testSignature, registrationInfo: b.registrationInfo,
18
17
  });
19
18
  }
@@ -1,5 +1,5 @@
1
1
  /** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
2
- export declare const VOKABULAR_QUELLE = "733e4385baf4b2aa50605e2ebe5903948ce77b3346aa3bb65c5fd0d450a6898f";
2
+ export declare const VOKABULAR_QUELLE = "328c8d0ff0f496f8f6b7d9ed78673e7666980e38586ec7efacb442e6906d898a";
3
3
  /** Schema-Notation des Vertrags: Blatt 'aussen': 'innen', Objekt { __: 'innen', ... }, Liste [ { __: 'innen', ... } ]. */
4
4
  export type SchemaEintrag = string | SchemaObjekt | readonly [SchemaObjekt];
5
5
  export interface SchemaObjekt {
@@ -4,7 +4,7 @@
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.KATALOGE = exports.ARTIKEL_FELDER = exports.SCHEMAS = exports.VOKABULAR_QUELLE = void 0;
6
6
  /** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
7
- exports.VOKABULAR_QUELLE = "733e4385baf4b2aa50605e2ebe5903948ce77b3346aa3bb65c5fd0d450a6898f";
7
+ exports.VOKABULAR_QUELLE = "328c8d0ff0f496f8f6b7d9ed78673e7666980e38586ec7efacb442e6906d898a";
8
8
  /** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
9
9
  exports.SCHEMAS = {
10
10
  "getReceipt": {
@@ -53,6 +53,7 @@ exports.SCHEMAS = {
53
53
  "codeSuffix": "codeEnde",
54
54
  "faceValueCents": "nennwertCents",
55
55
  "quantity": "stueck",
56
+ "articleName": "artikelName",
56
57
  "validity": {
57
58
  "__": "gueltigkeit",
58
59
  "pattern": "muster",
@@ -61,6 +62,15 @@ exports.SCHEMAS = {
61
62
  "validUntil": "gueltigBis"
62
63
  }
63
64
  }
65
+ ],
66
+ "outputs": [
67
+ {
68
+ "__": "ausgaben",
69
+ "kind": "art",
70
+ "result": "ergebnis",
71
+ "by": "durch",
72
+ "count": "anzahl"
73
+ }
64
74
  ]
65
75
  },
66
76
  "werte": {
@@ -75,6 +85,12 @@ exports.SCHEMAS = {
75
85
  },
76
86
  "issuedVouchers[].validity.pattern": {
77
87
  "$catalog": "GUTSCHEIN_MUSTER"
88
+ },
89
+ "outputs[].kind": {
90
+ "$catalog": "AUSGABE_ART"
91
+ },
92
+ "outputs[].result": {
93
+ "$catalog": "AUSGABE_ERGEBNIS"
78
94
  }
79
95
  }
80
96
  },
@@ -157,7 +173,10 @@ exports.SCHEMAS = {
157
173
  "fullscreen": "vollbild",
158
174
  "clearTendered": "gegebenLeeren",
159
175
  "clearCart": "korbLeeren",
160
- "splitPayment": "getrennt"
176
+ "splitPayment": "getrennt",
177
+ "shiftStatus": "kassenstand",
178
+ "openDrawer": "ladeOeffnen",
179
+ "voucherPayout": "gutscheinAuszahlen"
161
180
  },
162
181
  "printerEnabled": "druckerAn",
163
182
  "printerType": "druckerArt",
@@ -301,6 +320,19 @@ exports.ARTIKEL_FELDER = [
301
320
  ];
302
321
  /** Wertkataloge innen (deutsch) -> aussen (englisch). */
303
322
  exports.KATALOGE = {
323
+ "AUSGABE_ART": {
324
+ "erstdruck": "print",
325
+ "duplikat": "reprint",
326
+ "mail": "email",
327
+ "link_geteilt": "link_shared",
328
+ "pdf_geteilt": "pdf_shared",
329
+ "abruf": "opened"
330
+ },
331
+ "AUSGABE_ERGEBNIS": {
332
+ "ok": "ok",
333
+ "fehler": "failed",
334
+ "unklar": "unclear"
335
+ },
304
336
  "E1A_GRUPPE": {
305
337
  "erloese": "revenue",
306
338
  "erloese_waren": "revenue_goods",
@@ -4,4 +4,4 @@
4
4
  * Client-Version, Nachtrag §6). Ein Test haelt sie gleich mit `package.json`;
5
5
  * beim Anheben der Version beide Stellen aendern.
6
6
  */
7
- export declare const PACKAGE_VERSION = "1.12.0";
7
+ export declare const PACKAGE_VERSION = "1.14.0";
@@ -7,4 +7,4 @@ exports.PACKAGE_VERSION = void 0;
7
7
  * Client-Version, Nachtrag §6). Ein Test haelt sie gleich mit `package.json`;
8
8
  * beim Anheben der Version beide Stellen aendern.
9
9
  */
10
- exports.PACKAGE_VERSION = '1.12.0';
10
+ exports.PACKAGE_VERSION = '1.14.0';
@@ -4,7 +4,7 @@ import { type HobexPayOptions, type HobexRefundOptions } from '../payments/hobex
4
4
  import { type TransportOptions } from './transport.js';
5
5
  import { type CashregisterReportPeriod, type ReportV2, type ReportV2Options } from './reports.js';
6
6
  import { type CashboxStatus, type SignatureStatus } from './status.js';
7
- import { type SendReceiptEmailOptions, type SendReceiptEmailResult, type ListMyReceiptsOptions, type ReceiptList, type ReceiptWithCompany, type SellReceiptOptions, type CancelReceiptOptions, type CancelReceiptResult } from './receipts.js';
7
+ import { type SendReceiptEmailOptions, type SendReceiptEmailResult, type LogReceiptOutputsOptions, type LogReceiptOutputsResult, type ListMyReceiptsOptions, type ReceiptList, type ReceiptWithCompany, type SellReceiptOptions, type CancelReceiptOptions, type CancelReceiptResult } from './receipts.js';
8
8
  /**
9
9
  * Schlichte Factory ueber den Endpunkt-Funktionen: bindet einen Transport
10
10
  * einmal und liefert die Aufrufe ohne den wiederkehrenden ersten Parameter.
@@ -48,6 +48,8 @@ export interface KasseneckApi {
48
48
  getFirstReceiptDate(): Promise<ReportMonth>;
49
49
  /** Beleg als Link auf die oeffentliche Belegseite per E-Mail schicken. */
50
50
  sendReceiptEmail(options: SendReceiptEmailOptions): Promise<SendReceiptEmailResult>;
51
+ /** Drucke und Teilen eines Belegs an das Protokoll „Ausgaben“ melden (nur Kassenweg). */
52
+ logReceiptOutputs(options: LogReceiptOutputsOptions): Promise<LogReceiptOutputsResult>;
51
53
  /** Belegliste einer Kasse samt Kennzahlen (nur mit ID-Token, siehe receipts.ts). */
52
54
  listMyReceipts(options: ListMyReceiptsOptions): Promise<ReceiptList>;
53
55
  /** Kassen des angemeldeten Benutzers (nur mit ID-Token, siehe cashregisters.ts). */
@@ -3,7 +3,7 @@ import { hobexPay, hobexRefund } from '../payments/hobex.js';
3
3
  import { createTransport, createBinaryTransport } from './transport.js';
4
4
  import { downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2 } from './reports.js';
5
5
  import { getCashboxStatus, getSignatureStatus } from './status.js';
6
- import { sellReceipt, sellReceiptWithCompany, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, sendReceiptEmail, } from './receipts.js';
6
+ import { sellReceipt, sellReceiptWithCompany, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, sendReceiptEmail, logReceiptOutputs, } from './receipts.js';
7
7
  import { listMyCashregisters } from './cashregisters.js';
8
8
  import { renewRegisterSession, endRegisterSession } from '../register/session.js';
9
9
  export function createKasseneckApi(options) {
@@ -22,6 +22,7 @@ export function createKasseneckApi(options) {
22
22
  getFirstReceiptDate: () => getFirstReceiptDate(rufen),
23
23
  listMyReceipts: (o) => listMyReceipts(rufen, o),
24
24
  sendReceiptEmail: (o) => sendReceiptEmail(rufen, o),
25
+ logReceiptOutputs: (o) => logReceiptOutputs(rufen, o),
25
26
  listMyCashregisters: () => listMyCashregisters(rufen),
26
27
  getReportV2: (o) => getReportV2(rufen, o),
27
28
  getCashregisterReport: (options) => getCashregisterReport(rufenBinaer, options),
@@ -13,7 +13,7 @@
13
13
  * umhuellt, muss ihn weiterhin absetzen koennen.
14
14
  */
15
15
  import type { PdfOrData, TransportBodyFields, TransportCallOptions } from './transport.js';
16
- export declare const ALL_CALLS: readonly ["activateCashregister", "cancelInvoice", "cancelReceipt", "createCreditNote", "createCustomer", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCashregisterReport", "getCustomer", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getInvoice", "getInvoicePdf", "getInvoiceSetupStatus", "getInvoiceXml", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "getReportV2", "hobexPayApi", "hobexRefundApi", "issueInvoice", "listCustomerCashregisters", "listInvoices", "listBrands", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyStock", "listMyStockLocations", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "recordInvoicePayment", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "reportCustomerContract", "requestCustomerSignature", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift"];
16
+ export declare const ALL_CALLS: readonly ["activateCashregister", "cancelInvoice", "cancelReceipt", "createCreditNote", "createCustomer", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCashregisterReport", "getCustomer", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getInvoice", "getInvoicePdf", "getInvoiceSetupStatus", "getInvoiceXml", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "getReportV2", "hobexPayApi", "hobexRefundApi", "issueInvoice", "listCustomerCashregisters", "listInvoices", "listBrands", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyStock", "listMyStockLocations", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "recordInvoicePayment", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "reportCustomerContract", "requestCustomerSignature", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift", "logReceiptOutputs"];
17
17
  export type ApiCall = typeof ALL_CALLS[number];
18
18
  /**
19
19
  * Die oeffentlichen Endpunkte unter `/v3` (`https://api.kasseneck.at/v3/<name>`),
@@ -28,7 +28,7 @@ export declare const PUBLIC_CALLS: readonly ["createReceipt", "getReceipt", "can
28
28
  * `endpoints.register`. Sechs davon sind zugleich oeffentlich; die Kasse ruft
29
29
  * sie trotzdem ueber diesen Weg (ein Dialekt je Client, Nachtrag §5.2).
30
30
  */
31
- export declare const POS_CALLS: readonly ["pairRegisterDevice", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "registerUserLogin", "registerPinLogin", "renewRegisterSession", "endRegisterSession", "unpairRegisterDevice", "listMyCashregisters", "listMyReceipts", "getReceipt", "createReceipt", "generateFullReceiptId", "cancelReceipt", "sendReceiptEmail", "listMyArticleGroups", "listMyArticles", "getKasseSettings", "setMyKasseSettings", "setMyKasseLogo", "setMyRegisterDeviceSettings", "listMyPrinters", "createPrintJob", "getPrintJob", "listMyTipRecipients", "listMyStockLocations", "listMyStock", "setMyCashregisterStockLocation", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift"];
31
+ export declare const POS_CALLS: readonly ["pairRegisterDevice", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "registerUserLogin", "registerPinLogin", "renewRegisterSession", "endRegisterSession", "unpairRegisterDevice", "listMyCashregisters", "listMyReceipts", "getReceipt", "createReceipt", "generateFullReceiptId", "cancelReceipt", "sendReceiptEmail", "listMyArticleGroups", "listMyArticles", "getKasseSettings", "setMyKasseSettings", "setMyKasseLogo", "setMyRegisterDeviceSettings", "listMyPrinters", "createPrintJob", "getPrintJob", "listMyTipRecipients", "listMyStockLocations", "listMyStock", "setMyCashregisterStockLocation", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift", "logReceiptOutputs"];
32
32
  export type PublicCall = typeof PUBLIC_CALLS[number];
33
33
  export type PosCall = typeof POS_CALLS[number];
34
34
  /**
@@ -49,7 +49,7 @@ export type PosCall = typeof POS_CALLS[number];
49
49
  * [ALL_CALLS], [PUBLIC_CALLS] und [POS_CALLS] steht entweder hier oder in
50
50
  * [CALLS_WITHOUT_EFFECT] (Waechter `test/ausgang-einordnung.test.ts`).
51
51
  */
52
- export declare const UNKNOWN_OUTCOME_CALLS: readonly ["activateCashregister", "addVariant", "cancelInvoice", "cancelReceipt", "cancelStocktake", "changeStockCondition", "closeMyShift", "closeStocktake", "createArticle", "createCreditNote", "createCustomer", "createCustomerCashregister", "createInvoiceItem", "createPartnerCustomer", "createPartnerWebhook", "createPrintJob", "createReceipt", "createReservation", "createStocktake", "createVariantGroup", "createWebhook", "deactivateArticle", "deletePartnerWebhook", "deleteWebhook", "extendReservation", "financeWebService", "hobexPayApi", "hobexRefundApi", "issueInvoice", "logMyDrawerOpenings", "openMyShift", "orderSignatureCard", "pairRegisterDevice", "receiveGoods", "recordInvoicePayment", "recordMyCashMovement", "recordMyStocktakeCount", "recordStockLoss", "recordStocktakeCount", "recountStocktake", "releaseReservation", "reportCustomerContract", "requestCustomerSignature", "reverseStockMovement", "reviewStocktake", "revokeCustomerMandate", "rotatePartnerWebhookSecret", "rotateWebhookSecret", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "sendWebhookTest", "setCustomerMandate", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "transferStock", "unpairRegisterDevice", "updateArticle", "updateCustomer", "updateInvoiceItem", "updatePartnerWebhook", "updateVariantGroup", "updateWebhook", "voidMyStocktakeCount", "voidStocktakeCount", "withdrawInvoiceItem"];
52
+ export declare const UNKNOWN_OUTCOME_CALLS: readonly ["activateCashregister", "addVariant", "cancelInvoice", "cancelReceipt", "cancelStocktake", "changeStockCondition", "closeMyShift", "closeStocktake", "createArticle", "createCreditNote", "createCustomer", "createCustomerCashregister", "createInvoiceItem", "createPartnerCustomer", "createPartnerWebhook", "createPrintJob", "createReceipt", "createReservation", "createStocktake", "createVariantGroup", "createWebhook", "deactivateArticle", "deletePartnerWebhook", "deleteWebhook", "extendReservation", "financeWebService", "hobexPayApi", "hobexRefundApi", "issueInvoice", "logMyDrawerOpenings", "logReceiptOutputs", "openMyShift", "orderSignatureCard", "pairRegisterDevice", "receiveGoods", "recordInvoicePayment", "recordMyCashMovement", "recordMyStocktakeCount", "recordStockLoss", "recordStocktakeCount", "recountStocktake", "releaseReservation", "reportCustomerContract", "requestCustomerSignature", "reverseStockMovement", "reviewStocktake", "revokeCustomerMandate", "rotatePartnerWebhookSecret", "rotateWebhookSecret", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "sendWebhookTest", "setCustomerMandate", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "transferStock", "unpairRegisterDevice", "updateArticle", "updateCustomer", "updateInvoiceItem", "updatePartnerWebhook", "updateVariantGroup", "updateWebhook", "voidMyStocktakeCount", "voidStocktakeCount", "withdrawInvoiceItem"];
53
53
  /** Warum ein Aufruf keine Wirkung hat, die ein Zeitlimit offen lassen koennte. */
54
54
  export type CallWithoutEffectReason = 'read' | 'repeatable';
55
55
  /**
@@ -85,10 +85,10 @@ export declare const CALLS_WITHOUT_EFFECT: Readonly<Record<string, CallWithoutEf
85
85
  * absetzt, sagt es mit `hasEffect: true`.
86
86
  */
87
87
  export declare function isUnknownOutcomeCall(name: string): boolean;
88
- /** Einer der 39 Aufrufe des Kassenwegs. */
88
+ /** Einer der 42 Aufrufe des Kassenwegs. */
89
89
  export declare function isPosCall(name: string): boolean;
90
90
  /**
91
- * Nur ueber den Kassenweg erreichbar (33 Namen): unter `api.kasseneck.at/v3`
91
+ * Nur ueber den Kassenweg erreichbar (36 Namen): unter `api.kasseneck.at/v3`
92
92
  * gibt es sie nicht. Der Transport schickt sie darum ohne eigene Basis an
93
93
  * [POS_BASE_URL] statt an die oeffentliche Basis.
94
94
  */
@@ -138,6 +138,8 @@ export const ALL_CALLS = [
138
138
  'logMyDrawerOpenings',
139
139
  'getMyShiftReport',
140
140
  'closeMyShift',
141
+ // Ausgaben eines Belegs (Drucke, Teilen) melden: nur ueber den Kassenweg.
142
+ 'logReceiptOutputs',
141
143
  ];
142
144
  /**
143
145
  * Die oeffentlichen Endpunkte unter `/v3` (`https://api.kasseneck.at/v3/<name>`),
@@ -313,6 +315,8 @@ export const POS_CALLS = [
313
315
  'logMyDrawerOpenings',
314
316
  'getMyShiftReport',
315
317
  'closeMyShift',
318
+ // Ausgaben eines Belegs melden: nur ueber den Kassenweg.
319
+ 'logReceiptOutputs',
316
320
  ];
317
321
  /**
318
322
  * Die Aufrufe **mit Wirkung**, alphabetisch: sie legen etwas an, aendern oder
@@ -363,6 +367,7 @@ export const UNKNOWN_OUTCOME_CALLS = [
363
367
  'hobexRefundApi',
364
368
  'issueInvoice',
365
369
  'logMyDrawerOpenings',
370
+ 'logReceiptOutputs',
366
371
  'openMyShift',
367
372
  'orderSignatureCard',
368
373
  'pairRegisterDevice',
@@ -516,12 +521,12 @@ export function isUnknownOutcomeCall(name) {
516
521
  const OEFFENTLICH = new Set(PUBLIC_CALLS);
517
522
  const KASSENWEG = new Set(POS_CALLS);
518
523
  const NUR_KASSE = new Set(POS_CALLS.filter((name) => !OEFFENTLICH.has(name)));
519
- /** Einer der 39 Aufrufe des Kassenwegs. */
524
+ /** Einer der 42 Aufrufe des Kassenwegs. */
520
525
  export function isPosCall(name) {
521
526
  return KASSENWEG.has(name);
522
527
  }
523
528
  /**
524
- * Nur ueber den Kassenweg erreichbar (33 Namen): unter `api.kasseneck.at/v3`
529
+ * Nur ueber den Kassenweg erreichbar (36 Namen): unter `api.kasseneck.at/v3`
525
530
  * gibt es sie nicht. Der Transport schickt sie darum ohne eigene Basis an
526
531
  * [POS_BASE_URL] statt an die oeffentliche Basis.
527
532
  */
@@ -2,7 +2,7 @@ export { type AuthCredentials, type KasseneckAuth, type ApiKeyAuthOptions, type
2
2
  export { DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type TransportCallOptions, type KasseneckTransport, type KasseneckBinaryTransport, type KasseneckPdfOrDataTransport, type PdfOrData, createTransport, createBinaryTransport, createPdfOrDataTransport, } from './transport.js';
3
3
  export { ALL_CALLS, type ApiCall, PUBLIC_CALLS, POS_CALLS, UNKNOWN_OUTCOME_CALLS, type PublicCall, type PosCall, } from './aufrufe.js';
4
4
  export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, type ErrorOutcome, CLIENT_ERROR_CODES, type ClientErrorCode, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, } from './errors.js';
5
- export { type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, type CancelReceiptResult, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, } from './receipts.js';
5
+ export { type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, type CancelReceiptResult, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, type ReceiptOutputEntry, type LogReceiptOutputsOptions, type LogReceiptOutputsResult, type RejectedReceiptOutput, logReceiptOutputs, } from './receipts.js';
6
6
  export { listMyCashregisters } from './cashregisters.js';
7
7
  export { downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2, type CashregisterReportPeriod, type ReportV2, type ReportV2Metadata, type ReportV2Options } from './reports.js';
8
8
  export { type CashboxStatus, type SignatureStatus, getCashboxStatus, getSignatureStatus, } from './status.js';
@@ -2,7 +2,7 @@ export { apiKeyAuth, registerUserAuth, } from './auth.js';
2
2
  export { DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, createTransport, createBinaryTransport, createPdfOrDataTransport, } from './transport.js';
3
3
  export { ALL_CALLS, PUBLIC_CALLS, POS_CALLS, UNKNOWN_OUTCOME_CALLS, } from './aufrufe.js';
4
4
  export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, CLIENT_ERROR_CODES, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, } from './errors.js';
5
- export { sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, checkVoucherCombinationError, sendReceiptEmail, } from './receipts.js';
5
+ export { sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, checkVoucherCombinationError, sendReceiptEmail, logReceiptOutputs, } from './receipts.js';
6
6
  export { listMyCashregisters } from './cashregisters.js';
7
7
  export { downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2 } from './reports.js';
8
8
  export { getCashboxStatus, getSignatureStatus, } from './status.js';
@@ -1,5 +1,6 @@
1
1
  import { ReceiptType, type ReceiptTypeKey, KeckPaymentMethod, type KeckPaymentMethodKey } from '../enums/index.js';
2
2
  import { type Receipt, type ReceiptCompany, type ReceiptItem, type Voucher, type ReceiptSummary, type ReportMonth, type CancellationItem, type CancellationOf, type CancellationReason, type TipRefundSource, type ReturnDisposition, type ReceiptPaymentInput, type RegistrationInfo, type ReceiptEmailVia } from '../models/index.js';
3
+ import { type ReceiptOutput, type ReceiptOutputEntryErrorCode, type ReceiptOutputLogKind, type ReceiptOutputResult } from '../models/receipt-output.js';
3
4
  import type { InternerTransport } from './aufrufe.js';
4
5
  import { type ReceiptLayout } from '../receipt/layout.js';
5
6
  import type { PosPaperSize } from '../printing/escpos.js';
@@ -140,8 +141,9 @@ export type CancelReceiptOptions = {
140
141
  /**
141
142
  * Rueckzahlung je Zahlung (Betraege negativ, `refundOf` = `id` der
142
143
  * Originalzahlung). Ohne Angabe spiegelt der Server die Restbetraege jeder
143
- * Originalzahlung; ein Teilstorno eines Belegs mit mehreren Zahlungen
144
- * braucht sie (`cancellation_payments_required`).
144
+ * Originalzahlung (Ausnahme Storno einer Gutschein-Auszahlung: genau eine
145
+ * positive Barzahlung ohne `refundOf`); ein Teilstorno eines Belegs mit
146
+ * mehreren Zahlungen braucht sie (`cancellation_payments_required`).
145
147
  *
146
148
  * **Karten-Storno:** `provider`, `providerPaymentId` und `providerData`
147
149
  * beschreiben die ERSTATTUNG am Terminal, nie die Originalzahlung. Die
@@ -216,6 +218,13 @@ export interface ReceiptWithCompany {
216
218
  * setzen das Logo in genau dieser Stufe; fehlt der Wert, gilt `M`.
217
219
  */
218
220
  logoScale: SheetLogoSize;
221
+ /**
222
+ * Ausgaben des Belegs (`data.outputs`, nur `getReceipt` unter `/v3`): die
223
+ * neuesten 20, neueste zuerst. Fehlt, wenn die Antwort keine Liste traegt
224
+ * (Verkauf, `/api`). Gelesen nach [ReceiptOutput]; ein kaputter Eintrag
225
+ * faellt weg, der Beleg bleibt lesbar.
226
+ */
227
+ outputs?: ReceiptOutput[];
219
228
  }
220
229
  /**
221
230
  * Das Zeilenmodell zum Drucken und Anzeigen eines Belegs aus einer Antwort.
@@ -402,6 +411,80 @@ export interface SendReceiptEmailResult {
402
411
  * eine zweite Mail und zaehlt auf die Schleuse.
403
412
  */
404
413
  export declare function sendReceiptEmail(transport: InternerTransport, options: SendReceiptEmailOptions): Promise<SendReceiptEmailResult>;
414
+ /**
415
+ * Eine Ausgabe, wie die Kasse sie puffert und meldet: ein Druck oder ein
416
+ * Teilen des Belegs. Siehe [logReceiptOutputs].
417
+ */
418
+ export interface ReceiptOutputEntry {
419
+ /**
420
+ * Idempotenzschluessel des Eintrags, am Geraet beim Puffern vergeben und
421
+ * beim Nachsenden unveraendert: ein zweites Melden legt keinen zweiten
422
+ * Eintrag an. 8–64 Zeichen `[A-Za-z0-9_-]` (Regel des Servers); ein anderer
423
+ * Schluessel wirft vor dem Senden.
424
+ */
425
+ key: string;
426
+ /** Beleg in der Kasse der Anmeldung; ein Beleg einer anderen Kasse ist `receipt_not_found`. */
427
+ receiptId: string;
428
+ /** `print` (Erstdruck), `reprint` (Duplikat, gedruckt mit `markAsDuplicate`), `link_shared`, `pdf_shared`. */
429
+ kind: ReceiptOutputLogKind;
430
+ /**
431
+ * Zeitpunkt am Geraet: Millisekunden seit 1970 oder ISO 8601 **mit Zone**
432
+ * (`new Date().toISOString()`); Text ohne Zone wirft vor dem Senden. Eine
433
+ * falsch gehende Geraeteuhr lehnt der Server nicht ab: er klemmt die Zeit auf
434
+ * Belegzeit bis Eingang.
435
+ */
436
+ at: number | string;
437
+ /**
438
+ * Ergebnis eines Drucks: `ok`, `failed` (sicher nicht gedruckt) oder
439
+ * `unclear` (Ausgang offen). Pflicht bei `print` und `reprint` (sonst lehnt
440
+ * der Server den Eintrag mit `validation` ab); beim Teilen ohne Angabe `ok`.
441
+ */
442
+ result?: ReceiptOutputResult;
443
+ }
444
+ /** Eingabe von [logReceiptOutputs]. Die Kasse bindet die Anmeldung (wie bei [sendReceiptEmail]). */
445
+ export interface LogReceiptOutputsOptions {
446
+ /** 1–50 Eintraege ([RECEIPT_OUTPUT_ENTRIES_MAX]); ein groesserer Puffer geht in mehreren Aufrufen hinaus. */
447
+ entries: ReceiptOutputEntry[];
448
+ }
449
+ /** Ein abgelehnter Eintrag: dauerhaft, aus dem Puffer nehmen und nicht noch einmal senden. */
450
+ export interface RejectedReceiptOutput {
451
+ key: string;
452
+ /** Aus [RECEIPT_OUTPUT_ENTRY_ERROR_CODES]; ein Code, den das Paket nicht kennt, bleibt lesbar. */
453
+ code: ReceiptOutputEntryErrorCode | (string & {});
454
+ }
455
+ /** Antwort von [logReceiptOutputs]. */
456
+ export interface LogReceiptOutputsResult {
457
+ /** Angenommene Eintraege, auch die schon frueher gemeldeten (gleicher Schluessel). */
458
+ accepted: number;
459
+ rejected: RejectedReceiptOutput[];
460
+ }
461
+ /**
462
+ * Meldet Drucke und das Teilen eines Belegs an das Protokoll „Ausgaben“
463
+ * (Endpunkt `logReceiptOutputs`, nur ueber den Kassenweg `/api/v3`; mit
464
+ * `registerUserAuth` und mit `apiKeyAuth`). Registrierkassen-Erlass
465
+ * BMF-AV Nr. 2/2026, Abschnitt 4.2: die Belegerteilung ist zu dokumentieren.
466
+ * Der Beleg selbst bleibt unberuehrt; das Protokoll steht nie im DEP.
467
+ *
468
+ * **Ein Eintrag scheitert nie die anderen.** Der Server nimmt jeden Eintrag
469
+ * einzeln an oder lehnt ihn mit Code ab (`rejected`, Codes
470
+ * [RECEIPT_OUTPUT_ENTRY_ERROR_CODES]); nach einer Erfolgsantwort ist jeder
471
+ * gesendete Eintrag erledigt. Die Kasse puffert die Eintraege (offline,
472
+ * Neustart) und sendet sie spaeter; der Puffer blockiert nie Druck oder Teilen.
473
+ *
474
+ * **Wiederholen ist gefahrlos:** jeder Eintrag traegt seinen Schluessel. Bei
475
+ * unklarem Ausgang (`outcome: 'unknown'`) dieselben Eintraege mit denselben
476
+ * Schluesseln noch einmal senden.
477
+ *
478
+ * **Vor dem Senden abgewiesen** wird nur, was die ganze Anfrage scheitern
479
+ * liesse oder ohne Netz sicher falsch ist: keine oder mehr als 50 Eintraege,
480
+ * ein unbekanntes Feld (oben oder im Eintrag), ein fehlender Beleg, ein
481
+ * Schluessel ausserhalb der Regel des Servers, eine Art oder ein Ergebnis
482
+ * ausserhalb des Katalogs, eine Zeit, die weder ganze Millisekunden noch
483
+ * ISO 8601 mit Zone ist. `email` und `opened` gehen hinaus und kommen als
484
+ * `invalid_output_kind` zurueck: so verwirft der Puffer genau diesen Eintrag.
485
+ * Fehler der ganzen Anfrage: [RECEIPT_OUTPUT_ERROR_CODES].
486
+ */
487
+ export declare function logReceiptOutputs(transport: InternerTransport, options: LogReceiptOutputsOptions): Promise<LogReceiptOutputsResult>;
405
488
  /**
406
489
  * Prueft die Gutschein-Kombination eines Belegs und liefert den ersten
407
490
  * Regelverstoss als Text (oder `null`) — Zwilling von