Problem
The booking flow has no promo or discount code input. Members who have been given a promotional code (e.g. for a corporate rate or referral reward) have no way to apply it at checkout. This makes promo codes backend-only with no member-facing surface.
Proposed Solution
Extend the booking wizard in frontend/app/bookings/new/page.tsx to include a promo code field in the payment step.
Changes:
- Add a "Have a promo code?" collapsible section before the payment button
- Inside: text input for the code + an Apply button
- On clicking Apply, call
POST /promo-codes/validate with { code, workspaceId, bookingAmount }
- On success: show a green confirmation banner — "₦X discount applied" or "X% off" — and update the displayed total
- On error: show inline error message ("Code expired", "Code not valid for this workspace type", etc.)
- Show a Remove link to clear the applied code and restore the original total
- Pass the validated promo code to the booking creation/payment request
Acceptance Criteria
Depends on: [GF-BE-09] Build promo codes and discount backend module
Problem
The booking flow has no promo or discount code input. Members who have been given a promotional code (e.g. for a corporate rate or referral reward) have no way to apply it at checkout. This makes promo codes backend-only with no member-facing surface.
Proposed Solution
Extend the booking wizard in
frontend/app/bookings/new/page.tsxto include a promo code field in the payment step.Changes:
POST /promo-codes/validatewith{ code, workspaceId, bookingAmount }Acceptance Criteria
POST /promo-codes/validateis called when Apply is clicked