E7-F7: Quota Cancellation¶
Epic: E7: Quota Management
Size: S (Small)
Problem / Outcome¶
Admin cancels quota with options for what to cancel.
Scope¶
In-Scope:
- Cancel All Unused: ALLOCATED + RESERVED tickets
- Cancel Unfulfilled Only: ALLOCATED only, preserves RESERVED
- Seat return to inventory
- Notification to quota holder
Out-of-Scope:
- Refund of paid tickets (handled by refund flow)
Acceptance Criteria¶
- AC1: "Cancel All Unused" cancels both ALLOCATED and RESERVED tickets
- AC2: "Cancel Unfulfilled Only" cancels only ALLOCATED, preserves RESERVED
- AC3: Cancelled seats return to inventory, recipients notified
Data Model Impact¶
Quota table:
- status = CANCELLED
- cancelled_at (TIMESTAMP)
- cancelled_by (UUID, FK)
- cancellation_type (ENUM: all_unused, unfulfilled_only)
QuotaSeat table:
- status = CANCELLED (for affected seats)
Seat table:
- status = AVAILABLE (returned to inventory)
Permissions/Roles¶
- Admin (Quota Manager)
How to Verify¶
npm test -- --grep "quota cancellation"
Expected: Correct tickets cancelled based on option.
Dependencies¶
Implementation Tasks¶
See E7: Quota Management Tasks
Doc References¶
Last Updated: January 2026