fix(tariff): reject stepped base combined with time/seasonal tiers
A stepped ("up-to") default card prices the whole stay as one total, so the V2
engine short-circuits to steppedFee and NEVER consults windowed cards — any
time/seasonal tiers would silently never fire. Found live: an active tariff had a
stepped base plus weekday-night + weekend tiers, and every 3h stay priced 600 ALL
regardless of hour/day because the tiers were dead.
- validateTariffV2 now rejects a stepped defaultCard combined with windowedCards,
with an actionable message (switch the base to ladder/flat, or remove the tiers).
- Composer shows an inline red warning the moment base mode is stepped and tiers
exist; publishing is blocked server-side regardless.
- ApiError now carries the server's problems[], so the publish error surfaces the
SPECIFIC reason instead of a generic "invalid tariff structure".
- 2 new validation tests (55 pass).
Wiki: tariff, log.
Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
This commit is contained in:
+13
@@ -1040,3 +1040,16 @@ addStep (sq+en). 8 new unit tests incl. the exact owner matrix + multi-day + ove
|
||||
+ validation (53 pass). VERIFIED end-to-end via the real UI: authored the matrix in the
|
||||
composer, published, Tariff Lab priced it exactly (3h->500, 6h->800, 12h->1000,
|
||||
2d->2000). Build+lint green. Updated [[tariff]].
|
||||
|
||||
## [2026-06-20] fix | Reject stepped base + time tiers (silently-ignored tiers)
|
||||
|
||||
Found live: the active tariff had a STEPPED ("up-to") base card AND two windowed tiers
|
||||
(weekday-night "Nata gjate javes", weekend "Fundjava"). computeFeeV2 short-circuits to
|
||||
steppedFee on a stepped default card, so the tiers NEVER fired — a 3h stay was 600 ALL
|
||||
at every hour/day. The composer happily let this contradictory combo be built + published.
|
||||
Fix: validateTariffV2 now rejects a stepped defaultCard combined with windowedCards
|
||||
(clear message: switch base to ladder/flat or remove tiers); the composer shows an inline
|
||||
red warning when base.mode==="stepped" && tiers>0. Also: ApiError now carries the
|
||||
server's problems[] so the publish error shows the SPECIFIC reason (was generic "invalid
|
||||
tariff structure"). 2 new validation tests (55 pass). Verified live: warning renders +
|
||||
publish blocked with the full message. Build+lint green. Updated [[tariff]].
|
||||
|
||||
Reference in New Issue
Block a user