Booking — Dữ liệu & bảng đọc/ghi
Góc nhìn database và các khái niệm bên ngoài mà Booking tham chiếu. Quy ước: 📖 READ, ✏️ WRITE (insert/update).
Khái niệm liên quan bên ngoài
Booking không tự sở hữu các thứ dưới đây — nó liên kết tới chúng.
| Khái niệm | Là gì | Vai trò trong Booking | Domain sở hữu |
|---|---|---|---|
| Term / TermProduct | Kỳ học & sản phẩm/suất trong kỳ. | Nguồn session khả dụng, capacity, giá. | Master Data |
| TermProgramSet | Nhóm sản phẩm/course. | Đơn vị áp discount & gom line. | Master Data |
| ProgramCategory | Nhóm chương trình. | Giữ CombinedBookingOptionId, DiscountRuleType. | Master Data |
| ActionLog | Bản ghi một thao tác. | ActionLogId nhóm booking cho combined edit. | Platform |
| Account / Attendee | Phụ huynh / trẻ. | Target account & attendee của booking. | Master Data |
| Billing | "Sổ" tài chính của booking. | Submit tạo Billing; gắn invoice. | Finance |
| Invoice / CreditNote | Hóa đơn & ghi có. | Confirm sinh invoice; cancel → credit note. | Finance |
| TermAttendance | Điểm danh suất học. | Confirm tạo; cancel/remove → deactivate. | Attendance |
| Discount | Quy tắc giảm giá. | Áp tự động khi pricing (xem Discount rule). | Discount |
📌 Các domain liên quan đã có trang riêng: Finance, Payment và Master Data.
Bảng dữ liệu — nhóm theo aggregate
| Aggregate | Bảng chính | Tác dụng |
|---|---|---|
| TermBookingOrder (request) | TermBookingOrder | Yêu cầu booking: account, type, status, ActionLogId. |
TermBookingOrderLine | Dòng session (date/time/product/price, slot discount). | |
TermBookingOrderExtra | Add-on mức order. | |
TermBookingOrderDiscount | Discount đã áp mức order. | |
| TermBooking (confirmed) | TermBooking | Booking chính thức: status, ProgramCategoryId, LockTypeId. |
TermBookingLine / TermBookingExtra / TermBookingDiscount | Dòng session / add-on / discount đã confirm. | |
| Discount | Discount, TermProgramSetDiscount, ProfileDiscount | Định nghĩa & cấu hình áp. |
DiscountApplication, DiscountApplicationAllocation | Ghi nhận & phân bổ discount. |
Bảng dữ liệu trong từng luồng
Luồng 1 — Create order
| Hành động | Bảng | Tác dụng |
|---|---|---|
| Lấy session/capacity | TermProduct, TermProgramSetCapacity 📖 READ | Session khả dụng + capacity. |
| Tạo order | TermBookingOrder, TermBookingOrderLine ✏️ WRITE | Giỏ hàng (status Created). |
Luồng 2 — Submit
| Hành động | Bảng | Tác dụng |
|---|---|---|
| Áp discount | TermProgramSetDiscount, Discount 📖 READ; TermBookingOrderDiscount ✏️ WRITE | Discount tự động. |
| Overlap guard | TermBookingOrder, TermBooking 📖 READ | Chống trùng (loại trừ Subscription/WaitingList). |
| Tạo tài chính | Billing ✏️ WRITE | Sổ tài chính của order. |
Luồng 3 — Confirm / Quote
| Hành động | Bảng | Tác dụng |
|---|---|---|
| Tạo booking | TermBooking, TermBookingLine/Extra/Discount ✏️ WRITE | Copy từ order. |
| Điểm danh | TermAttendance ✏️ WRITE | Mỗi session một bản ghi. |
| Hóa đơn | Invoice, InvoiceLine ✏️ WRITE (qua Finance) | Sinh theo confirm. |
| Phân bổ discount | DiscountApplication, DiscountApplicationAllocation ✏️ WRITE | Audit billing. |
Luồng 4 — Cancel
| Hành động | Bảng | Tác dụng |
|---|---|---|
| Hủy booking | TermBooking ✏️ UPDATE (→ Canceled) | Trạng thái hủy. |
| Đảo hóa đơn | CreditNote ✏️ WRITE | Credit note cho invoice đã phát hành. |
| Gỡ điểm danh | TermAttendance ✏️ UPDATE (IsActive=false) | Deactivate (kể cả line đã rời Approved). |
Liên quan
- Kiến trúc & dữ liệu — quan hệ các "vật thể".
- Discount rule — quy tắc giảm giá & cách áp.