> ## Documentation Index
> Fetch the complete documentation index at: https://tomotek.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# US-MER-04: Quản lý Danh mục Dịch vụ

> Merchant tạo và quản lý các dịch vụ (Thường & Lưu trú), thiết lập cấu hình giá, thời gian và xử lý xung đột khi thay đổi dịch vụ.

> [!NOTE]
>
> **Cập nhật v.1.6.0:** Loại bỏ cấu hình cọc linh hoạt do hệ thống đã áp dụng
> chuẩn Thanh toán 100% trả trước.

## 1. Điều kiện tiên quyết (Pre-conditions)

* Kế thừa toàn bộ điều kiện từ **US-MER-01.1** (Admin đã tạo Master Data).
* Merchant đã có danh mục mẫu từ Admin để lựa chọn.

## 2. Ràng buộc Khởi tạo (Deferred Onboarding Check)

* Khi Merchant nhấn nút "Tạo Dịch vụ", hệ thống sẽ kiểm tra xem Merchant đã cấu hình **Giờ mở cửa (`US-MER-03`)** chưa.
* Nếu chưa, hiển thị Popup cảnh báo: *"Vui lòng thiết lập Giờ mở cửa cửa hàng trước khi tạo dịch vụ nhận khách"*, kèm nút điều hướng tới trang cấu hình Giờ mở cửa.

## 3. Tiêu chí chấp nhận (Acceptance Criteria)

> [accordion] US-MER-04.1: Phân loại luồng vận hành
>
> Khi tạo/sửa dịch vụ, Merchant phải chọn 1 danh mục từ Master Categories. Danh mục đó sẽ thuộc 1 trong 2 loại:
>
> 1. **Dịch vụ Thường (Service-based):** Tính theo slot giờ thông thường.
> 2. **Dịch vụ Lưu trú (Stay-based):** Tính theo đêm (theo kiểu book phòng khách sạn).

> [accordion] US-MER-04.2: Cấu hình Dịch vụ Thường (Service-based)
>
> * **Thời lượng (Duration):** Select tabs số phút (VD: 30, 60, 90, 120p). -
>   **Hạn mức tải/1 Nhân viên (Capacity Cap):** Số lượng thú cưng tối đa có thể
>   xử lý trong 1 slot (Mặc định = 1).

> [accordion] US-MER-04.3: Cấu hình Dịch vụ Lưu trú (Stay-based)
>
> * **Tổng kho (Inventory):** Nhập số lượng chuồng thực tế hiện có cho loại
>   dịch vụ này. - **Kiểu tính phí:** - *Hotel:* Tính theo Đêm (Nights). -
>   *Trông giữ:* Tính theo giờ (Cứ X giờ đầu là số tiền Y, sau mỗi giờ sẽ + Z).

> [accordion] US-MER-04.4 & 04.5: Thông tin bổ sung, Media & Ràng buộc
>
> * **Giá trị:** Giá > 0. *(Lưu ý: Hệ thống áp dụng thanh toán trả trước 100% đối với mọi lịch đặt, Merchant không cần/không thể cấu hình phần trăm cọc linh hoạt).*
> * **Ảnh:** Tối đa 5 ảnh (\< 5MB/ảnh) (1 Avatar + 4 ảnh thường).
> * **Trường bắt buộc (Require):** Tên, Loại dịch vụ, Duration (đối với Service) / Inventory (đối với Stay).
> * Tên dịch vụ được phép trùng lặp trong cùng một Merchant.

> [accordion] US-MER-04.6 & 04.7: Quản lý trạng thái và Xóa
>
> * Cho phép Bật/Tắt (Active/Inactive) dịch vụ.
> * Cho phép Merchant xoá dịch vụ và hiển thị popup cảnh báo xóa.

## 4. Khóa thuộc tính & Xử lý xung đột (Business Rules)

**1. US-MER-04.9: Khóa thuộc tính cốt lõi (Field Locking)**

Khi ở chế độ "Chỉnh sửa" (Edit Mode), các trường sau sẽ bị **Disabled (Chỉ đọc)** để tránh gãy cấu trúc lịch trình (Calendar Slots):

* Phân loại luồng vận hành (Service-based vs Stay-based).
* Danh mục Master.
* Kiểu tính phí của Dịch vụ Lưu trú.
  *(Merchant muốn thay đổi thì phải "Vô hiệu hóa/Xóa" dịch vụ cũ và tạo dịch vụ mới).*

**2. US-MER-04.8: Phân loại thay đổi (Breaking Changes)**

Hệ thống phân loại các thay đổi khi nhấn "Lưu":

* **Nhóm 1 (Safe Changes):** Tên, Mô tả, Ảnh, Giá tiền.
  * *Xử lý:* Cho phép lưu ngay. Giá tiền mới chỉ áp dụng cho booking tương lai. Các Booking cũ giữ nguyên giá thời điểm đặt.
* **Nhóm 2 (Breaking Changes):**
  * Thay đổi Thời lượng (Duration) làm slot đẩy lùi/chồng chéo.
  * Giảm Hạn mức/Nhân viên (Capacity) dẫn đến overbooking.
  * Giảm Tổng kho (Inventory) phòng lưu trú.
  * Tắt Status (Active -> Inactive) khi vẫn còn khách đã đặt.

**3. Xử lý Xung đột Lịch trình (Conflict Resolution)**

* Đối với các thay đổi thuộc **Nhóm 2 (Breaking Changes)**, hệ thống sẽ KHÔNG cho phép lưu tự do.
* Hệ thống sẽ gọi luồng kiểm tra và bắt buộc Merchant dọn dẹp theo **`US-MER-37: Xử lý Xung đột Booking`**.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.