@kreiseck/kasseneck-api 1.10.1 → 1.11.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 (146) hide show
  1. package/CHANGELOG.md +241 -0
  2. package/dist/cjs/client/aufrufe.d.ts +5 -5
  3. package/dist/cjs/client/aufrufe.js +22 -2
  4. package/dist/cjs/client/errors.js +2 -0
  5. package/dist/cjs/client/receipts.d.ts +34 -1
  6. package/dist/cjs/client/receipts.js +34 -1
  7. package/dist/cjs/index.d.ts +1 -1
  8. package/dist/cjs/index.js +9 -2
  9. package/dist/cjs/inventory/vertrag.d.ts +1 -1
  10. package/dist/cjs/inventory/vertrag.js +2 -0
  11. package/dist/cjs/invoice/vertrag.d.ts +1 -1
  12. package/dist/cjs/invoice/vertrag.js +2 -0
  13. package/dist/cjs/models/cancellation.d.ts +49 -1
  14. package/dist/cjs/models/cancellation.js +139 -1
  15. package/dist/cjs/models/index.d.ts +1 -1
  16. package/dist/cjs/models/index.js +9 -2
  17. package/dist/cjs/models/payment-errors.d.ts +1 -1
  18. package/dist/cjs/models/payment-errors.js +2 -0
  19. package/dist/cjs/models/receipt-email.d.ts +1 -1
  20. package/dist/cjs/models/receipt-email.js +2 -0
  21. package/dist/cjs/models/receipt-errors.d.ts +1 -1
  22. package/dist/cjs/models/receipt-errors.js +2 -0
  23. package/dist/cjs/models/receipt-item.d.ts +10 -0
  24. package/dist/cjs/models/receipt-item.js +3 -0
  25. package/dist/cjs/pos/client.js +10 -0
  26. package/dist/cjs/pos/errors.d.ts +4 -3
  27. package/dist/cjs/pos/errors.js +21 -2
  28. package/dist/cjs/pos/index.d.ts +6 -2
  29. package/dist/cjs/pos/index.js +33 -3
  30. package/dist/cjs/pos/schicht-lesen.d.ts +39 -0
  31. package/dist/cjs/pos/schicht-lesen.js +405 -0
  32. package/dist/cjs/pos/schicht-typen.d.ts +380 -0
  33. package/dist/cjs/pos/schicht-typen.js +59 -0
  34. package/dist/cjs/pos/schicht.d.ts +208 -0
  35. package/dist/cjs/pos/schicht.js +235 -0
  36. package/dist/cjs/pos/settings.d.ts +37 -1
  37. package/dist/cjs/pos/settings.js +43 -3
  38. package/dist/cjs/pos/texte.d.ts +627 -0
  39. package/dist/cjs/pos/texte.js +236 -0
  40. package/dist/cjs/react/index.js +1 -1
  41. package/dist/cjs/receipt/grid.js +2 -2
  42. package/dist/cjs/receipt/layout.d.ts +5 -0
  43. package/dist/cjs/receipt/shift-sheet.d.ts +33 -0
  44. package/dist/cjs/receipt/shift-sheet.js +207 -0
  45. package/dist/cjs/register/errors.d.ts +1 -1
  46. package/dist/cjs/register/errors.js +2 -0
  47. package/dist/cjs/stored/draht.d.ts +1 -1
  48. package/dist/cjs/stored/draht.js +4 -3
  49. package/dist/cjs/stored/einstellungen.js +26 -3
  50. package/dist/cjs/stored/vokabular.d.ts +1 -1
  51. package/dist/cjs/stored/vokabular.js +118 -12
  52. package/dist/cjs/version.d.ts +1 -1
  53. package/dist/cjs/version.js +1 -1
  54. package/dist/esm/client/aufrufe.d.ts +5 -5
  55. package/dist/esm/client/aufrufe.js +22 -2
  56. package/dist/esm/client/errors.js +2 -0
  57. package/dist/esm/client/receipts.d.ts +34 -1
  58. package/dist/esm/client/receipts.js +35 -2
  59. package/dist/esm/index.d.ts +1 -1
  60. package/dist/esm/index.js +1 -1
  61. package/dist/esm/inventory/vertrag.d.ts +1 -1
  62. package/dist/esm/inventory/vertrag.js +2 -0
  63. package/dist/esm/invoice/vertrag.d.ts +1 -1
  64. package/dist/esm/invoice/vertrag.js +2 -0
  65. package/dist/esm/models/cancellation.d.ts +49 -1
  66. package/dist/esm/models/cancellation.js +132 -0
  67. package/dist/esm/models/index.d.ts +1 -1
  68. package/dist/esm/models/index.js +1 -1
  69. package/dist/esm/models/payment-errors.d.ts +1 -1
  70. package/dist/esm/models/payment-errors.js +2 -0
  71. package/dist/esm/models/receipt-email.d.ts +1 -1
  72. package/dist/esm/models/receipt-email.js +2 -0
  73. package/dist/esm/models/receipt-errors.d.ts +1 -1
  74. package/dist/esm/models/receipt-errors.js +2 -0
  75. package/dist/esm/models/receipt-item.d.ts +10 -0
  76. package/dist/esm/models/receipt-item.js +3 -0
  77. package/dist/esm/pos/client.js +11 -1
  78. package/dist/esm/pos/errors.d.ts +4 -3
  79. package/dist/esm/pos/errors.js +21 -2
  80. package/dist/esm/pos/index.d.ts +6 -2
  81. package/dist/esm/pos/index.js +7 -2
  82. package/dist/esm/pos/schicht-lesen.d.ts +39 -0
  83. package/dist/esm/pos/schicht-lesen.js +392 -0
  84. package/dist/esm/pos/schicht-typen.d.ts +380 -0
  85. package/dist/esm/pos/schicht-typen.js +56 -0
  86. package/dist/esm/pos/schicht.d.ts +208 -0
  87. package/dist/esm/pos/schicht.js +222 -0
  88. package/dist/esm/pos/settings.d.ts +37 -1
  89. package/dist/esm/pos/settings.js +40 -2
  90. package/dist/esm/pos/texte.d.ts +627 -0
  91. package/dist/esm/pos/texte.js +236 -0
  92. package/dist/esm/react/index.js +1 -1
  93. package/dist/esm/receipt/grid.js +2 -2
  94. package/dist/esm/receipt/layout.d.ts +5 -0
  95. package/dist/esm/receipt/shift-sheet.d.ts +33 -0
  96. package/dist/esm/receipt/shift-sheet.js +203 -0
  97. package/dist/esm/register/errors.d.ts +1 -1
  98. package/dist/esm/register/errors.js +2 -0
  99. package/dist/esm/stored/draht.d.ts +1 -1
  100. package/dist/esm/stored/draht.js +4 -3
  101. package/dist/esm/stored/einstellungen.js +27 -4
  102. package/dist/esm/stored/vokabular.d.ts +1 -1
  103. package/dist/esm/stored/vokabular.js +118 -12
  104. package/dist/esm/version.d.ts +1 -1
  105. package/dist/esm/version.js +1 -1
  106. package/fixtures/cancellation-tip-cases.json +679 -0
  107. package/fixtures/expected/cash-movement.grid32.txt +15 -0
  108. package/fixtures/expected/cash-movement.grid48.txt +15 -0
  109. package/fixtures/expected/cash-movement.lines.json +171 -0
  110. package/fixtures/expected/shift-close-blind.grid32.txt +28 -0
  111. package/fixtures/expected/shift-close-blind.grid48.txt +27 -0
  112. package/fixtures/expected/shift-close-blind.lines.json +275 -0
  113. package/fixtures/expected/shift-close-put-in.grid32.txt +38 -0
  114. package/fixtures/expected/shift-close-put-in.grid48.txt +35 -0
  115. package/fixtures/expected/shift-close-put-in.lines.json +403 -0
  116. package/fixtures/expected/shift-close-take-out.grid32.txt +38 -0
  117. package/fixtures/expected/shift-close-take-out.grid48.txt +35 -0
  118. package/fixtures/expected/shift-close-take-out.lines.json +403 -0
  119. package/fixtures/expected/shift-close.grid32.txt +37 -0
  120. package/fixtures/expected/shift-close.grid48.txt +35 -0
  121. package/fixtures/expected/shift-close.lines.json +413 -0
  122. package/fixtures/expected/shift-interim.grid32.txt +28 -0
  123. package/fixtures/expected/shift-interim.grid48.txt +27 -0
  124. package/fixtures/expected/shift-interim.lines.json +293 -0
  125. package/fixtures/hobex-hps-codes.json +1 -1
  126. package/fixtures/invoice-api.schema.json +1 -1
  127. package/fixtures/invoice-texts.json +1 -1
  128. package/fixtures/pos-message-cases.json +45 -0
  129. package/fixtures/pos-texts.json +723 -1
  130. package/fixtures/receipt-due-generated.json +1 -1
  131. package/fixtures/shift-cases.json +87 -0
  132. package/fixtures/shift-receipts.json +41 -0
  133. package/fixtures/surface.json +119 -3
  134. package/fixtures/v3/antworten/belege.json +1 -1
  135. package/fixtures/v3/antworten/belegmail.json +1 -1
  136. package/fixtures/v3/antworten/kasse-belege.json +1 -1
  137. package/fixtures/v3/antworten/kasse.json +10874 -4865
  138. package/fixtures/v3/antworten/lager.json +1 -1
  139. package/fixtures/v3/antworten/rechnungen.json +1 -1
  140. package/fixtures/v3/antworten/storno.json +1 -1
  141. package/fixtures/v3/stored/belege.json +18 -6
  142. package/fixtures/v3/stored/kasse.json +4667 -183
  143. package/fixtures/v3/stored/rechnungen.json +1 -1
  144. package/fixtures/v3/v3-vokabular.json +739 -32
  145. package/fixtures/v3/zahlbetrag-faelle.json +1 -1
  146. package/package.json +1 -1
@@ -0,0 +1,679 @@
1
+ {
2
+ "_note": "Shared cases for cancelling a receipt with or without the tip (npm @kreiseck/kasseneck-api and Dart kasseneck_api): openStaffTipCents (staff tip not yet cancelled), asksRefundTip (ask 'refund the tip too?': open staff tip and no value voucher on the receipt; with a value voucher the tip is always refunded), cancellationItemsForTip (items sent after the answer; null = whole receipt), asksTipRefundSource (ask 'where does the tip come back from?' only when the cash refund covers it and the employee already had it) and cancellationCashRefundCents (cash part of the refund). Receipts in the /v3 form (the receipt part of the response, without signature fields); the tests add the required fields.",
3
+ "receipts": {
4
+ "cash_with_tip": {
5
+ "paymentMethod": "cash",
6
+ "payments": [
7
+ {
8
+ "id": "p1",
9
+ "method": "cash",
10
+ "amountCents": 1180
11
+ }
12
+ ],
13
+ "items": [
14
+ {
15
+ "name": "Kaffee",
16
+ "quantity": 2,
17
+ "unitPriceCents": 280,
18
+ "vatRate": 20
19
+ },
20
+ {
21
+ "name": "Kuchen",
22
+ "quantity": 1,
23
+ "unitPriceCents": 420,
24
+ "vatRate": 10
25
+ },
26
+ {
27
+ "name": "Trinkgeld Personal",
28
+ "quantity": 1,
29
+ "unitPriceCents": 200,
30
+ "vatRate": 0,
31
+ "kind": "tip",
32
+ "paymentMethod": "cash",
33
+ "recipient": {
34
+ "registerUserId": "ru_livia",
35
+ "name": "Livia Lindmayr"
36
+ },
37
+ "receivedImmediately": true
38
+ }
39
+ ]
40
+ },
41
+ "tip_already_cancelled": {
42
+ "paymentMethod": "cash",
43
+ "payments": [
44
+ {
45
+ "id": "p1",
46
+ "method": "cash",
47
+ "amountCents": 1180
48
+ }
49
+ ],
50
+ "items": [
51
+ {
52
+ "name": "Kaffee",
53
+ "quantity": 2,
54
+ "unitPriceCents": 280,
55
+ "vatRate": 20
56
+ },
57
+ {
58
+ "name": "Kuchen",
59
+ "quantity": 1,
60
+ "unitPriceCents": 420,
61
+ "vatRate": 10
62
+ },
63
+ {
64
+ "name": "Trinkgeld Personal",
65
+ "quantity": 1,
66
+ "unitPriceCents": 200,
67
+ "vatRate": 0,
68
+ "kind": "tip",
69
+ "paymentMethod": "cash",
70
+ "recipient": {
71
+ "registerUserId": "ru_livia",
72
+ "name": "Livia Lindmayr"
73
+ },
74
+ "receivedImmediately": true
75
+ }
76
+ ],
77
+ "cancellations": [
78
+ {
79
+ "receiptId": "S1",
80
+ "at": 1,
81
+ "by": null,
82
+ "note": null,
83
+ "items": [
84
+ {
85
+ "index": 2,
86
+ "quantity": 1
87
+ }
88
+ ]
89
+ }
90
+ ]
91
+ },
92
+ "only_tip_open": {
93
+ "paymentMethod": "cash",
94
+ "items": [
95
+ {
96
+ "name": "Kaffee",
97
+ "quantity": 2,
98
+ "unitPriceCents": 280,
99
+ "vatRate": 20
100
+ },
101
+ {
102
+ "name": "Trinkgeld Personal",
103
+ "quantity": 1,
104
+ "unitPriceCents": 200,
105
+ "vatRate": 0,
106
+ "kind": "tip",
107
+ "paymentMethod": "cash",
108
+ "recipient": {
109
+ "registerUserId": "ru_livia",
110
+ "name": "Livia Lindmayr"
111
+ },
112
+ "receivedImmediately": true
113
+ }
114
+ ],
115
+ "cancellations": [
116
+ {
117
+ "receiptId": "S1",
118
+ "at": 1,
119
+ "by": null,
120
+ "note": null,
121
+ "items": [
122
+ {
123
+ "index": 0,
124
+ "quantity": 2
125
+ }
126
+ ]
127
+ }
128
+ ]
129
+ },
130
+ "tip_retained": {
131
+ "paymentMethod": "creditCard",
132
+ "payments": [
133
+ {
134
+ "id": "p1",
135
+ "method": "creditCard",
136
+ "amountCents": 1180,
137
+ "provider": "sumup"
138
+ }
139
+ ],
140
+ "items": [
141
+ {
142
+ "name": "Kaffee",
143
+ "quantity": 2,
144
+ "unitPriceCents": 280,
145
+ "vatRate": 20
146
+ },
147
+ {
148
+ "name": "Kuchen",
149
+ "quantity": 1,
150
+ "unitPriceCents": 420,
151
+ "vatRate": 10
152
+ },
153
+ {
154
+ "name": "Trinkgeld Personal",
155
+ "quantity": 1,
156
+ "unitPriceCents": 200,
157
+ "vatRate": 0,
158
+ "kind": "tip",
159
+ "paymentMethod": "creditCard",
160
+ "recipient": {
161
+ "registerUserId": "ru_livia",
162
+ "name": "Livia Lindmayr"
163
+ },
164
+ "receivedImmediately": false
165
+ }
166
+ ]
167
+ },
168
+ "legacy_without_flag": {
169
+ "paymentMethod": "cash",
170
+ "items": [
171
+ {
172
+ "name": "Kaffee",
173
+ "quantity": 1,
174
+ "unitPriceCents": 280,
175
+ "vatRate": 20
176
+ },
177
+ {
178
+ "name": "Trinkgeld Personal",
179
+ "quantity": 1,
180
+ "unitPriceCents": 150,
181
+ "vatRate": 0,
182
+ "kind": "tip",
183
+ "recipient": {
184
+ "registerUserId": "ru_ben",
185
+ "name": "Ben"
186
+ }
187
+ }
188
+ ]
189
+ },
190
+ "without_recipient": {
191
+ "paymentMethod": "cash",
192
+ "items": [
193
+ {
194
+ "name": "Kaffee",
195
+ "quantity": 1,
196
+ "unitPriceCents": 280,
197
+ "vatRate": 20
198
+ },
199
+ {
200
+ "name": "Trinkgeld Personal",
201
+ "quantity": 1,
202
+ "unitPriceCents": 150,
203
+ "vatRate": 0,
204
+ "kind": "tip",
205
+ "paymentMethod": "cash",
206
+ "recipient": null,
207
+ "receivedImmediately": true
208
+ }
209
+ ]
210
+ },
211
+ "owner_tip": {
212
+ "paymentMethod": "cash",
213
+ "items": [
214
+ {
215
+ "name": "Kaffee",
216
+ "quantity": 1,
217
+ "unitPriceCents": 280,
218
+ "vatRate": 20
219
+ },
220
+ {
221
+ "name": "Trinkgeld",
222
+ "quantity": 1,
223
+ "unitPriceCents": 100,
224
+ "vatRate": 20,
225
+ "kind": "tip",
226
+ "paymentMethod": "cash",
227
+ "recipient": {
228
+ "registerUserId": "ru_owner",
229
+ "name": "Owner",
230
+ "owner": true
231
+ }
232
+ }
233
+ ]
234
+ },
235
+ "without_tip": {
236
+ "paymentMethod": "cash",
237
+ "items": [
238
+ {
239
+ "name": "Kaffee",
240
+ "quantity": 2,
241
+ "unitPriceCents": 280,
242
+ "vatRate": 20
243
+ }
244
+ ]
245
+ },
246
+ "mixed_payments": {
247
+ "paymentMethod": "mixed",
248
+ "payments": [
249
+ {
250
+ "id": "p1",
251
+ "method": "creditCard",
252
+ "amountCents": 980,
253
+ "provider": "sumup"
254
+ },
255
+ {
256
+ "id": "p2",
257
+ "method": "cash",
258
+ "amountCents": 200
259
+ }
260
+ ],
261
+ "items": [
262
+ {
263
+ "name": "Kaffee",
264
+ "quantity": 2,
265
+ "unitPriceCents": 280,
266
+ "vatRate": 20
267
+ },
268
+ {
269
+ "name": "Kuchen",
270
+ "quantity": 1,
271
+ "unitPriceCents": 420,
272
+ "vatRate": 10
273
+ },
274
+ {
275
+ "name": "Trinkgeld Personal",
276
+ "quantity": 1,
277
+ "unitPriceCents": 200,
278
+ "vatRate": 0,
279
+ "kind": "tip",
280
+ "paymentMethod": "cash",
281
+ "recipient": {
282
+ "registerUserId": "ru_livia",
283
+ "name": "Livia Lindmayr"
284
+ },
285
+ "receivedImmediately": true
286
+ }
287
+ ]
288
+ },
289
+ "with_value_voucher": {
290
+ "paymentMethod": "cash",
291
+ "payments": [
292
+ {
293
+ "id": "p1",
294
+ "method": "cash",
295
+ "amountCents": 980
296
+ }
297
+ ],
298
+ "vouchers": [
299
+ {
300
+ "action": "redeem",
301
+ "type": "value",
302
+ "code": "WG-1",
303
+ "name": "Wertgutschein",
304
+ "value": 2
305
+ }
306
+ ],
307
+ "items": [
308
+ {
309
+ "name": "Kaffee",
310
+ "quantity": 2,
311
+ "unitPriceCents": 280,
312
+ "vatRate": 20
313
+ },
314
+ {
315
+ "name": "Kuchen",
316
+ "quantity": 1,
317
+ "unitPriceCents": 420,
318
+ "vatRate": 10
319
+ },
320
+ {
321
+ "name": "Trinkgeld Personal",
322
+ "quantity": 1,
323
+ "unitPriceCents": 200,
324
+ "vatRate": 0,
325
+ "kind": "tip",
326
+ "paymentMethod": "cash",
327
+ "recipient": {
328
+ "registerUserId": "ru_livia",
329
+ "name": "Livia Lindmayr"
330
+ },
331
+ "receivedImmediately": true
332
+ }
333
+ ]
334
+ },
335
+ "with_promo_voucher": {
336
+ "paymentMethod": "cash",
337
+ "vouchers": [
338
+ {
339
+ "action": "redeem",
340
+ "type": "promo",
341
+ "code": "RABATT",
342
+ "name": "Rabatt",
343
+ "value": 1
344
+ }
345
+ ],
346
+ "items": [
347
+ {
348
+ "name": "Kaffee",
349
+ "quantity": 2,
350
+ "unitPriceCents": 280,
351
+ "vatRate": 20
352
+ },
353
+ {
354
+ "name": "Kuchen",
355
+ "quantity": 1,
356
+ "unitPriceCents": 420,
357
+ "vatRate": 10
358
+ },
359
+ {
360
+ "name": "Trinkgeld Personal",
361
+ "quantity": 1,
362
+ "unitPriceCents": 200,
363
+ "vatRate": 0,
364
+ "kind": "tip",
365
+ "paymentMethod": "cash",
366
+ "recipient": {
367
+ "registerUserId": "ru_livia",
368
+ "name": "Livia Lindmayr"
369
+ },
370
+ "receivedImmediately": true
371
+ }
372
+ ]
373
+ }
374
+ },
375
+ "openStaffTipCents": [
376
+ {
377
+ "receipt": "cash_with_tip",
378
+ "expected": 200
379
+ },
380
+ {
381
+ "receipt": "tip_already_cancelled",
382
+ "expected": 0
383
+ },
384
+ {
385
+ "receipt": "only_tip_open",
386
+ "expected": 200
387
+ },
388
+ {
389
+ "receipt": "tip_retained",
390
+ "expected": 200
391
+ },
392
+ {
393
+ "receipt": "owner_tip",
394
+ "expected": 0
395
+ },
396
+ {
397
+ "receipt": "without_tip",
398
+ "expected": 0
399
+ }
400
+ ],
401
+ "asksRefundTip": [
402
+ {
403
+ "receipt": "cash_with_tip",
404
+ "expected": true
405
+ },
406
+ {
407
+ "receipt": "tip_already_cancelled",
408
+ "expected": false
409
+ },
410
+ {
411
+ "receipt": "only_tip_open",
412
+ "expected": true
413
+ },
414
+ {
415
+ "receipt": "owner_tip",
416
+ "expected": false
417
+ },
418
+ {
419
+ "receipt": "without_tip",
420
+ "expected": false
421
+ },
422
+ {
423
+ "receipt": "with_value_voucher",
424
+ "expected": false
425
+ },
426
+ {
427
+ "receipt": "with_promo_voucher",
428
+ "expected": true
429
+ }
430
+ ],
431
+ "cancellationItemsForTip": [
432
+ {
433
+ "receipt": "cash_with_tip",
434
+ "items": null,
435
+ "refundTip": true,
436
+ "expected": null
437
+ },
438
+ {
439
+ "receipt": "cash_with_tip",
440
+ "items": null,
441
+ "refundTip": false,
442
+ "expected": [
443
+ {
444
+ "index": 0,
445
+ "quantity": 2
446
+ },
447
+ {
448
+ "index": 1,
449
+ "quantity": 1
450
+ }
451
+ ]
452
+ },
453
+ {
454
+ "receipt": "cash_with_tip",
455
+ "items": [
456
+ {
457
+ "index": 1,
458
+ "quantity": 1,
459
+ "returnDisposition": "defective"
460
+ }
461
+ ],
462
+ "refundTip": true,
463
+ "expected": [
464
+ {
465
+ "index": 1,
466
+ "quantity": 1,
467
+ "returnDisposition": "defective"
468
+ },
469
+ {
470
+ "index": 2,
471
+ "quantity": 1
472
+ }
473
+ ]
474
+ },
475
+ {
476
+ "receipt": "cash_with_tip",
477
+ "items": [
478
+ {
479
+ "index": 1,
480
+ "quantity": 1
481
+ }
482
+ ],
483
+ "refundTip": false,
484
+ "expected": [
485
+ {
486
+ "index": 1,
487
+ "quantity": 1
488
+ }
489
+ ]
490
+ },
491
+ {
492
+ "receipt": "cash_with_tip",
493
+ "items": [],
494
+ "refundTip": true,
495
+ "expected": [
496
+ {
497
+ "index": 2,
498
+ "quantity": 1
499
+ }
500
+ ]
501
+ },
502
+ {
503
+ "receipt": "cash_with_tip",
504
+ "items": [],
505
+ "refundTip": false,
506
+ "expected": []
507
+ },
508
+ {
509
+ "receipt": "cash_with_tip",
510
+ "items": [
511
+ {
512
+ "index": 2,
513
+ "quantity": 1
514
+ }
515
+ ],
516
+ "refundTip": false,
517
+ "expected": []
518
+ },
519
+ {
520
+ "receipt": "only_tip_open",
521
+ "items": null,
522
+ "refundTip": false,
523
+ "expected": []
524
+ },
525
+ {
526
+ "receipt": "tip_already_cancelled",
527
+ "items": [
528
+ {
529
+ "index": 0,
530
+ "quantity": 1
531
+ }
532
+ ],
533
+ "refundTip": true,
534
+ "expected": [
535
+ {
536
+ "index": 0,
537
+ "quantity": 1
538
+ }
539
+ ]
540
+ },
541
+ {
542
+ "receipt": "without_tip",
543
+ "items": null,
544
+ "refundTip": false,
545
+ "expected": null
546
+ },
547
+ {
548
+ "receipt": "owner_tip",
549
+ "items": null,
550
+ "refundTip": false,
551
+ "expected": null
552
+ },
553
+ {
554
+ "receipt": "tip_already_cancelled",
555
+ "items": null,
556
+ "refundTip": false,
557
+ "expected": null
558
+ }
559
+ ],
560
+ "asksTipRefundSource": [
561
+ {
562
+ "receipt": "cash_with_tip",
563
+ "cashRefundCents": 1180,
564
+ "expected": true
565
+ },
566
+ {
567
+ "receipt": "cash_with_tip",
568
+ "cashRefundCents": 200,
569
+ "expected": true
570
+ },
571
+ {
572
+ "receipt": "cash_with_tip",
573
+ "cashRefundCents": 199,
574
+ "expected": false
575
+ },
576
+ {
577
+ "receipt": "cash_with_tip",
578
+ "cashRefundCents": 0,
579
+ "expected": false
580
+ },
581
+ {
582
+ "receipt": "tip_retained",
583
+ "cashRefundCents": 1180,
584
+ "expected": false
585
+ },
586
+ {
587
+ "receipt": "legacy_without_flag",
588
+ "cashRefundCents": 430,
589
+ "expected": true
590
+ },
591
+ {
592
+ "receipt": "without_recipient",
593
+ "cashRefundCents": 430,
594
+ "expected": false
595
+ },
596
+ {
597
+ "receipt": "tip_already_cancelled",
598
+ "cashRefundCents": 980,
599
+ "expected": false
600
+ },
601
+ {
602
+ "receipt": "without_tip",
603
+ "cashRefundCents": 560,
604
+ "expected": false
605
+ },
606
+ {
607
+ "receipt": "with_value_voucher",
608
+ "cashRefundCents": 980,
609
+ "expected": true
610
+ }
611
+ ],
612
+ "cancellationCashRefundCents": [
613
+ {
614
+ "receipt": "cash_with_tip",
615
+ "payments": null,
616
+ "dueCents": 1180,
617
+ "expected": 1180
618
+ },
619
+ {
620
+ "receipt": "tip_retained",
621
+ "payments": null,
622
+ "dueCents": 1180,
623
+ "expected": 0
624
+ },
625
+ {
626
+ "receipt": "legacy_without_flag",
627
+ "payments": null,
628
+ "dueCents": 430,
629
+ "expected": 430
630
+ },
631
+ {
632
+ "receipt": "mixed_payments",
633
+ "payments": null,
634
+ "dueCents": 1180,
635
+ "expected": 0
636
+ },
637
+ {
638
+ "receipt": "mixed_payments",
639
+ "payments": [
640
+ {
641
+ "method": "creditCard",
642
+ "amountCents": -980,
643
+ "refundOf": "p1",
644
+ "provider": "sumup"
645
+ },
646
+ {
647
+ "method": "cash",
648
+ "amountCents": -200,
649
+ "refundOf": "p2"
650
+ }
651
+ ],
652
+ "dueCents": 1180,
653
+ "expected": 200
654
+ },
655
+ {
656
+ "receipt": "mixed_payments",
657
+ "payments": [
658
+ {
659
+ "method": "cash",
660
+ "amountCents": -980,
661
+ "refundOf": "p1"
662
+ },
663
+ {
664
+ "method": "cash",
665
+ "amountCents": -200,
666
+ "refundOf": "p2"
667
+ }
668
+ ],
669
+ "dueCents": 1180,
670
+ "expected": 1180
671
+ },
672
+ {
673
+ "receipt": "with_value_voucher",
674
+ "payments": null,
675
+ "dueCents": 980,
676
+ "expected": 980
677
+ }
678
+ ]
679
+ }
@@ -0,0 +1,15 @@
1
+ ================================
2
+ Kassenbewegung
3
+ ================================
4
+ Café Welt
5
+ Kasse Theke 1
6
+ Lade Hauptlade
7
+ Schicht Nr. 2
8
+ --------------------------------
9
+ Nr. 4
10
+ Art Abschöpfung
11
+ Betrag -200,00
12
+ Ort Tresor
13
+ Grund Abend
14
+ Bediener Anna Chef
15
+ Zeit 26.09.2026 10:00
@@ -0,0 +1,15 @@
1
+ ================================================
2
+ Kassenbewegung
3
+ ================================================
4
+ Café Welt
5
+ Kasse Theke 1
6
+ Lade Hauptlade
7
+ Schicht Nr. 2
8
+ ------------------------------------------------
9
+ Nr. 4
10
+ Art Abschöpfung
11
+ Betrag -200,00
12
+ Ort Tresor
13
+ Grund Abend
14
+ Bediener Anna Chef
15
+ Zeit 26.09.2026 10:00