Khuyến Mãi¶
Trang Khuyến Mãi (/dashboard/pricing/promotions) cho phép tạo và quản lý các chương trình khuyến mãi có mã code — giảm giá theo %, giảm tiền cố định hoặc tặng đêm miễn phí. Mỗi promotion có thể giới hạn số lần sử dụng, khoảng thời gian, loại phòng và nhiều điều kiện khác.
Danh Sách Khuyến Mãi¶

| # | Thành phần | Mô tả |
|---|---|---|
| ① | Stat Cards | Tổng số KM · Đang Hoạt Động · Doanh Thu · Tỷ Lệ Chuyển Đổi |
| ② | Tìm Kiếm | Tìm theo tên hoặc mã code khuyến mãi |
| ③ | Lọc Trạng Thái | Active / Inactive |
| ④ | Lọc Loại Giảm Giá | PERCENTAGE / FIXED / FREE_NIGHT |
| ⑤ | Tạo Khuyến Mãi | Mở modal tạo promotion mới |
| ⑥ | Cột Promotion | Tên + mã code + tag trạng thái (Active/Scheduled/Expired/Exhausted) |
| ⑦ | Cột Khoảng Thời Gian | Ngày bắt đầu → kết thúc + số ngày còn lại |
| ⑧ | Cột Giảm Giá | Giá trị giảm (25% / 100.000 VND) + loại giảm giá |
| ⑨ | Cột Sử Dụng | Số lần đã dùng / giới hạn + thanh tiến trình |
| ⑩ | Hành Động | Xem · Sửa · Xóa (có xác nhận) |
Trạng Thái Promotion¶
| Trạng Thái | Màu | Điều Kiện |
|---|---|---|
| Active | Xanh lá | Đang trong khoảng ngày, chưa hết lượt, isActive = true |
| Scheduled | Xanh dương | startDate ở tương lai |
| Expired | Đỏ | Đã qua endDate |
| Exhausted | Cam | Đã đạt giới hạn số lượt (usageCount ≥ usageLimit) |
| Inactive | Xám | isActive = false (tắt thủ công) |
Tạo / Sửa Khuyến Mãi — Phần Cơ Bản¶

Nhấp Tạo Khuyến Mãi (hoặc nút Sửa trên hàng) để mở modal.
Trường Thông Tin Cơ Bản¶
| # | Trường | Loại | Bắt buộc | Ghi chú |
|---|---|---|---|---|
| ① | Tên Khuyến Mãi | Text | Có | VD: "Ưu Đãi Mùa Hè 2025" |
| ② | Mã Code | Text (tự chuyển hoa) | Có | VD: "SUMMER2025" — khách nhập code này khi đặt phòng |
| ③ | Mô Tả | TextArea | Có | Nội dung hiển thị cho khách về chương trình |
| ④ | Loại Giảm Giá | Select | Có | PERCENTAGE / FIXED AMOUNT / FREE_NIGHT |
| ⑤ | Giá Trị Giảm | InputNumber | Có* | % nếu PERCENTAGE; VND nếu FIXED; ẩn nếu FREE_NIGHT |
| ⑥ | Giới Hạn Lượt Dùng | InputNumber | Không | Để trống = không giới hạn |
| ⑦ | Tối Đa / Khách | InputNumber | Không | Số lần tối đa một khách có thể dùng code |
| ⑧ | Khoảng Thời Gian | RangePicker | Có | Ngày bắt đầu và kết thúc của chương trình |
| ⑨ | Trạng Thái | Switch | Không | Bật/Tắt promotion (mặc định: Bật) |
Loại FREE_NIGHT
Khi chọn FREE_NIGHT, trường Giá Trị Giảm được thay bằng hai trường: Số Đêm Yêu Cầu (ở tối thiểu bao nhiêu đêm) và Số Đêm Miễn Phí (tặng bao nhiêu đêm). VD: ở 3 đêm tặng 1 đêm.
Tạo / Sửa Khuyến Mãi — Điều Kiện¶

Điều Kiện Áp Dụng¶
| # | Trường | Loại | Bắt buộc | Ghi chú |
|---|---|---|---|---|
| ① | Giờ Bắt Đầu Flash Sale | TimePicker (HH:mm) | Không | Promotion chỉ áp dụng từ giờ này |
| ② | Giờ Kết Thúc Flash Sale | TimePicker (HH:mm) | Không | Promotion ngưng áp dụng sau giờ này |
| ③ | Số Đêm Tối Thiểu | InputNumber | Không | Booking phải từ N đêm trở lên |
| ④ | Số Phòng Tối Thiểu | InputNumber | Không | Dành cho đoàn — yêu cầu đặt ít nhất N phòng |
| ⑤ | Loại Phòng Áp Dụng | Multi-select | Không | Để trống = áp dụng tất cả loại phòng |
| ⑥ | Hạn Chế Ngày Trong Tuần | Checkbox Group | Không | Chọn ngày promotion có hiệu lực; để trống = tất cả ngày |
Flash Sale theo giờ
Kết hợp Khoảng Thời Gian (ngày) và Giờ Flash Sale (giờ) để tạo flash sale trong khung giờ cụ thể — VD: chỉ áp dụng mã giảm 30% từ 10:00–12:00 trong ngày Black Friday.
Loại Giảm Giá¶
| Loại | Ký hiệu | Mô tả | Ví dụ |
|---|---|---|---|
| PERCENTAGE | % | Giảm theo % giá phòng | Mã SUMMER25 giảm 25% |
| FIXED | VND | Giảm số tiền cố định | Mã SAVE500K giảm 500.000 VND |
| FREE_NIGHT | 🌙 | Ở N đêm tặng M đêm | Ở 3 đêm tặng 1 đêm miễn phí |
Vòng Đời Promotion¶
Tạo mới (isActive = true, startDate = tương lai)
→ SCHEDULED (chờ đến ngày bắt đầu)
→ ACTIVE (trong khoảng ngày, còn lượt dùng)
→ EXHAUSTED (hết lượt dùng, nếu có giới hạn)
→ EXPIRED (qua endDate)
Hoặc: Admin tắt isActive → INACTIVE (bất kỳ lúc nào)
Mẹo & Thực Hành Tốt Nhất¶
Đặt giới hạn lượt dùng để tạo cảm giác khan hiếm
Promotion với Giới Hạn Lượt Dùng nhỏ (VD: 50 lượt) tạo tâm lý "hàng có hạn" — khách có xu hướng quyết định nhanh hơn. Thanh tiến trình đỏ khi >80% cũng tăng urgency.
Kết hợp Điều Kiện để target đúng khách
Dùng Số Đêm Tối Thiểu + Loại Phòng để target chính xác — VD: giảm 20% cho phòng Suite đặt từ 3 đêm trở lên giúp tăng doanh thu trung bình mà không ảnh hưởng phòng tiêu chuẩn.
Mã code phải độc nhất toàn hệ thống
Trường Mã Code là duy nhất. Nên dùng định dạng rõ ràng như SUMMER25, TET2026, VIP-EARLY thay vì ký tự ngẫu nhiên để nhân viên và khách dễ nhớ.
Promotion không ghi đè, chỉ cộng thêm
Promotion áp dụng sau toàn bộ chuỗi tính giá (Seasonal → LOS → Phụ thu). Giảm giá % của promotion tính trên tổng giá sau tất cả điều chỉnh khác.
Câu Hỏi Thường Gặp¶
Khách nhập mã code ở đâu?
Mã code được nhập trong quy trình đặt phòng (Create Booking hoặc kênh OTA hỗ trợ). Hệ thống kiểm tra tất cả điều kiện trước khi áp dụng giảm giá.
Một booking có thể dùng nhiều mã code không?
Không — mỗi booking chỉ áp dụng một promotion tại một thời điểm.
Promotion EXPIRED có tự xóa không?
Không — promotion hết hạn vẫn lưu trong hệ thống với trạng thái EXPIRED để theo dõi lịch sử. Xóa thủ công nếu muốn dọn dẹp.
Hạn chế ngày trong tuần hoạt động thế nào?
Nếu chọn Mon–Fri trong Hạn Chế Ngày, promotion chỉ áp dụng khi ngày check-in rơi vào các ngày đó. Để trống = áp dụng mọi ngày.
FREE_NIGHT tính toán thế nào trong booking?
Với cấu hình \"ở 3 tặng 1\": booking 3 đêm → chỉ tính tiền 2 đêm. Booking 6 đêm → tính 5 đêm (1 đêm miễn phí). Tỷ lệ tặng theo bội số.
Liên Kết Liên Quan¶
- Rate Plans — Gói giá cơ bản — promotion áp dụng trên nền Rate Plan
- Giảm Giá LOS — Giảm giá tự động theo số đêm (không cần mã code)
- Giá Theo Mùa — Điều chỉnh giá tự động theo mùa
- Tạo Booking — Nhập mã code promotion khi tạo booking