fix(pi): SumUp cancel, failure sheet, and pay lock
Summary
- Operators can Abbrechen an in-progress SumUp connected checkout from the shared waiting overlay (all POS entry points).
- Failed/declined/timed-out SumUp attempts show a prominent failure sheet (not toast-only); dismiss returns to settle/pay without auto-retry.
- Cancel is quiet (Twint-style); order stays unpaid; pay is locked for the whole collection window to avoid empty-settle races after a reported failure.
OpenSpec change: sumup-payment-fail-cancel-ux.
Test plan
- Unit:
sumupCheckoutcancel during poll terminates and rejects withcancelled - Unit: timeout/failed status still terminate and do not return a payment
- Unit:
resolvePaymentsets failure message on fail, not on cancel;onSumupHideon both - Unit: App overlay shows Abbrechen / failure sheet and wires cancel + dismiss
- Unit:
useSplitPayignores re-entry while collection is in flight - Unit:
PayOrderViewmock includesterminalPaymentBusylock exports - Manual: start SumUp connected on register/table/collective → Abbrechen → still on settle, can pay again with another method
- Manual: decline/timeout → failure sheet → OK → retry or other method; no “nothing to settle”
Release
- No release (merge only;
latestPi images update) -
release:patch— bugfix release -
release:minor— feature release -
release:major— breaking release
Add exactly one release label to the PR if you want a semver bump, Git tag, and GitHub Release on merge. Do not edit VERSION manually — automation commits the bump on this branch after you add the label.
See docs/RELEASE.md.

