You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A refund/exchange today can't say **how** money comes back to the passenger *with
12
+
amounts*: `ReimbursementMethod.paymentMethod` is a single value (no split) and
13
+
`issuedVouchers` carries issuer+code but **no amount**. So neither "€80 voucher +
14
+
€40 to card" nor "several vouchers re-credited individually" is expressible.
15
+
16
+
## What changed
17
+
18
+
| File | Change |
19
+
|---|---|
20
+
|`schemas/aftersales.yml`| New `ReimbursementBreakdownItem` (`additionalProperties:false`; required `type` → `PaymentType`; optional `reimbursementAmount` → `Price`, `voucherInformation`). New `reimbursementBreakdown` array on `RefundOffer`, `ExchangeOperation`, `ExchangeOffer`. New `usedPaymentMethods` (array of `PaymentMethod`) on `ExchangeOperationPatchRequest`. |
21
+
|`OSDM-online-api.yml`| Hub `$ref` for `ReimbursementBreakdownItem`. |
22
+
23
+
Nothing is deprecated, renamed, or removed. `ReimbursementMethod`, `issuedVouchers`
24
+
and `complaint.yml` are **untouched**.
25
+
26
+
## Review notes
27
+
28
+
-**`reimbursementBreakdown` = the realized per-channel split.** Per-item `type`
29
+
(one entry per channel) is what lets it express a mix; single-channel is a
30
+
one-element array.
31
+
-**`reimbursementAmount` is optional on purpose.** It's authoritative for the
32
+
`VOUCHER` channel (system knows the credited amount, like `appliedVoucherAmount`
33
+
on `PaymentMethod`); for other channels it's declarative and may be omitted. So
34
+
"sum of items = total" holds only when every item carries an amount.
35
+
-**No new voucher-issuance flag.** A voucher in `issuedVouchers` is newly issued;
36
+
one in the breakdown but not in `issuedVouchers` is a re-credit — membership
37
+
already encodes it. The breakdown's `voucherInformation` is just the key to
38
+
attach a per-voucher amount.
39
+
-**`usedPaymentMethods` on the exchange PATCH** settles the exchange surcharge
40
+
(`ExchangeOffer.amountToBePaid`), mirroring `BookingPatchRequest`. The exchange
41
+
PATCH is idempotency-key protected, so payment is retry-safe.
42
+
43
+
## Scope / out of scope
44
+
45
+
Voucher consolidation (`issuedVoucherRefs`/`VoucherRef` already on `dev-osdm-v4`),
46
+
target-instrument identity for non-voucher items, and first-class
47
+
eligible-methods + customer choice (EU Reg 2021/782) are **deferred to the v4
48
+
payment module** — not introduced here.
49
+
50
+
Ships identically to **3.8, 3.9 and master** (three additive PRs).
0 commit comments