Booking — Data & external links
A database view and the external concepts Booking references. Convention: 📖 READ, ✏️ WRITE (insert/update).
Related external concepts
Booking does not own these — it links to them.
| Concept | What | Role in Booking | Owning domain |
|---|---|---|---|
| Term / TermProduct | Term & its products/sessions. | Source of available sessions, capacity, price. | Program/Term |
| TermProgramSet | Group of products/courses. | Unit for applying discounts & grouping lines. | Program |
| ProgramCategory | Program grouping. | Holds CombinedBookingOptionId, DiscountRuleType. | Program |
| ActionLog | A record of one action. | ActionLogId groups bookings for combined edit. | Platform |
| Account / Attendee | Parent / child. | Target account & attendee of the booking. | Account |
| Billing | A booking's financial ledger. | Submit creates Billing; attaches invoices. | Finance/Billing |
| Invoice / CreditNote | Invoice & credit note. | Confirm generates invoices; cancel → credit note. | Finance/Billing |
| TermAttendance | Session roll call. | Confirm creates; cancel/remove → deactivate. | Attendance |
| Discount | Discount rule. | Auto-applied during pricing (see Discount rule). | Discount |
📌 Domains outside the wiki scope (Finance/Xero, detailed discount pricing) see Documentation scope.
Data tables — grouped by aggregate
| Aggregate | Main tables | Purpose |
|---|---|---|
| TermBookingOrder (request) | TermBookingOrder | Booking request: account, type, status, ActionLogId. |
TermBookingOrderLine | Session rows (date/time/product/price, discount slots). | |
TermBookingOrderExtra | Order-level add-ons. | |
TermBookingOrderDiscount | Order-level applied discounts. | |
| TermBooking (confirmed) | TermBooking | Confirmed booking: status, ProgramCategoryId, LockTypeId. |
TermBookingLine / TermBookingExtra / TermBookingDiscount | Confirmed session / add-on / discount rows. | |
| Discount | Discount, TermProgramSetDiscount, ProfileDiscount | Definition & apply config. |
DiscountApplication, DiscountApplicationAllocation | Records & allocates discount. |
Data tables per flow
Flow 1 — Create order
| Action | Tables | Purpose |
|---|---|---|
| Get sessions/capacity | TermProduct, TermProgramSetCapacity 📖 READ | Available sessions + capacity. |
| Create order | TermBookingOrder, TermBookingOrderLine ✏️ WRITE | Cart (status Created). |
Flow 2 — Submit
| Action | Tables | Purpose |
|---|---|---|
| Apply discounts | TermProgramSetDiscount, Discount 📖 READ; TermBookingOrderDiscount ✏️ WRITE | Automatic discounts. |
| Overlap guard | TermBookingOrder, TermBooking 📖 READ | Conflict check (excludes Subscription/WaitingList). |
| Create finance | Billing ✏️ WRITE | The order's financial ledger. |
Flow 3 — Confirm / Quote
| Action | Tables | Purpose |
|---|---|---|
| Create booking | TermBooking, TermBookingLine/Extra/Discount ✏️ WRITE | Copied from the order. |
| Roll call | TermAttendance ✏️ WRITE | One record per session. |
| Invoice | Invoice, InvoiceLine ✏️ WRITE (via Finance) | Generated on confirm. |
| Allocate discount | DiscountApplication, DiscountApplicationAllocation ✏️ WRITE | Billing audit. |
Flow 4 — Cancel
| Action | Tables | Purpose |
|---|---|---|
| Cancel booking | TermBooking ✏️ UPDATE (→ Canceled) | Cancelled state. |
| Reverse invoice | CreditNote ✏️ WRITE | Credit note for issued invoices. |
| Remove roll call | TermAttendance ✏️ UPDATE (IsActive=false) | Deactivate (even lines that left Approved). |
Schema references
docs/DB_SCHEMA_DESIGN/AZURE_SQL_GLOSSARY.md— term → table.docs/ONBOARD/flows/booking.md— booking flow with READ/WRITE tables.- Related: Architecture & data, Discount rule.