Subscription — Góc nhìn end-user
Có hai vai chính: admin/staff (thiết lập & quản lý) và khách hàng (đăng ký & đặt chỗ). Dưới đây là hành trình của từng vai.
A. Admin/Staff thiết lập một gói
1. Tạo Subscription
Trang
Admin Portal → Setup → Subscription(/product-service/subscription).
- Bảng chia Current (chưa archive) và Archived.
- Tạo gói mới: chọn Site (một site), nhập Subscription Name, chọn loại (Billing Only hay mặc định BookingAndBilling).
- Cấu hình: giá (Price), ảnh, Booking Cut-Off (số ngày), nội dung rich text (Booking Info, Instructions, Discount Info, Payment Instructions, Important Notice), và quyền chọn period: Booking Start/End Selection (
Staff OnlyhoặcStaff & Customer).
2. Link với Term (kỳ học)
- Mở popup linked-term confirmation: chọn từng SubscriptionProduct (không có "Select All").
- Nếu gói chưa có product → popup báo "hãy thêm sessions ở mục Program trước".
- API link-term tự validate tương thích product với term; thiếu → hiện danh sách product thiếu.
3. Quản lý qua Subscription Manager
Lọc enrollment theo Site/Subscription/tab. Đổi tab → tự refresh dữ liệu (không cần bấm Apply).
- Mỗi enrollment row: mở rộng để xem add-ons và discounts đang áp.
- Hành động: Manage Add-ons, Manage Discounts (chỉ theo các kỳ đã book của enrollment).
4. Billing Details: thao tác trên hóa đơn
Trang Subscription Billing Details hiển thị theo hóa đơn (một dòng/invoice), không hiện log nội bộ.
Ba hành động chính, đều tác động lên invoice:
| Hành động | Kết quả |
|---|---|
| Schedule | Tạo InvoiceScheduler cho mỗi invoice; ScheduledOn = Invoice.Date (UTC). |
| Approve | Đổi invoice sang Approved + tạo scheduler ngay (ScheduledOn = UtcNow). |
| Skip | Hủy scheduler đang chạy + reset invoice về Initialised (0). |
B. Khách hàng đăng ký & đặt chỗ
1. Duyệt & chọn gói (Course List)
- Card hiển thị: tiêu đề, giá (chỉ khi có), lịch theo thứ trong tuần (Mon–Sun), mô tả, ảnh, thông tin site (popup bản đồ).
2. Subscription Booking (Step 1 → Step 2)
- Step 1: xem chi tiết gói (read-only), preview lịch theo kỳ (đã loại closure days).
- Chọn period/start từ BillingSchedule (nguồn canonical) — không tự tính ở client.
- Quyền chọn start/end phụ thuộc setting gói:
Staff Onlythì khách không được chọn. - Step 2: enrichment / add-ons.
3. Đặt chỗ được kiểm tra trùng lịch
Khi submit, hệ thống kiểm tra trùng lịch với các enrollment/booking đang có của attendee. Nếu trùng → cả request fail (không tạo state một phần).
4. Portal: My Subscriptions
Khách xem các subscription của mình ở Customer Portal → My Subscriptions.
Tóm lại
| Vai | Làm gì |
|---|---|
| Admin | Tạo/cấu hình gói, link term, quản lý enrollment, thao tác invoice (schedule/approve/skip). |
| Staff | Manage add-ons/discounts theo kỳ đã book; direct-confirm booking. |
| Khách hàng | Duyệt gói, chọn kỳ theo BillingSchedule, submit booking (được check trùng). |
Tiếp theo: Khái niệm cốt lõi.