> ## 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-OWN-17: Quản lý đơn hàng

> Pet Owner theo dõi lịch sử, quản lý trạng thái các đơn hàng, thực hiện huỷ đơn hoặc xác nhận nhận hàng

Là một Pet Owner, tôi muốn theo dõi danh sách và chi tiết các đơn hàng sản phẩm của mình để nắm bắt hành trình giao hàng, quản lý chi phí và thực hiện các tác vụ như hủy đơn.

## Acceptance Criteria (AC)

| Feature | Acceptance Criteria | Ràng buộc & Ghi chú |
| :- | :- | :- |
| **1. Danh sách Đơn hàng** | • Hệ thống hiển thị các Tab trạng thái: Tất cả, Chờ xác nhận, Đang chuẩn bị, Đang giao, Hoàn tất, Đã huỷ. • Mỗi đơn hàng là 1 Card hiển thị: Tên Shop, Ảnh & Tên 1 SP đại diện, Nút "Xem thêm +X SP", Tổng tiền thanh toán, Nhãn trạng thái đơn. | • Sort theo thời gian tạo mới nhất lên đầu. • Infinite Scroll khi danh sách dài. |
| **2. Chi tiết Đơn hàng** | • Nhấn vào Card để vào trang chi tiết. • Hiển thị đầy đủ thông tin: Địa chỉ nhận, Mã đơn hàng, Ngày đặt, Phương thức thanh toán, Danh sách chi tiết các item. | • Header có thể hiện mã `Order ID` để tiện theo dõi. |
| **3. Hành trình đơn hàng (Timeline)** | • Biểu diễn trực quan trạng thái hiện tại dưới dạng các bước (Stepper): `Đã đặt đơn` -> `Shop đã xác nhận` -> `Đang giao`. | • Đi kèm mốc thời gian (Timestamp) cho từng trạng thái. |
| **4. Tác vụ: Huỷ đơn hàng** | • Nút "Huỷ đơn" chỉ hiển thị khi đơn đang ở trạng thái `Chờ xác nhận`. • Bấm Huỷ sẽ hiện Popup yêu cầu chọn lý do (VD: Đổi ý, Sai địa chỉ, Muốn thêm đồ). • Sau khi huỷ, chuyển đơn sang Tab `Đã huỷ`. | • Không thể huỷ khi Shop đã xác nhận đơn. |
| **5. Tác vụ: Đã nhận được hàng** | • Nút "Đã nhận được hàng" chỉ hiển thị khi đơn đang ở trạng thái `Đang giao`. • Khi nhấn, trạng thái chuyển sang `Hoàn tất`. | • Hệ thống cũng tự động chuyển `Hoàn tất` sau 3 ngày kể từ lúc Shipper báo giao thành công (tuỳ quy định giao vận). |
| **6. Tác vụ: Đánh giá & Mua lại** | • Ở các đơn `Hoàn tất`, hiển thị nút "Đánh giá sản phẩm" và nút "Mua lại" (Re-order). | • Xem chi tiết tác vụ Mua lại ở US-OWN-18. |

## Luồng ngoại lệ (Exception Flows) & Validations

* **Huỷ đơn đã thanh toán Online:**
  * **Flow:** Pet Owner chọn Huỷ đơn với đơn đã thanh toán bằng tài khoản ngân hàng.
  * **Logic:** Giao diện hiển thị cảnh báo: *"Đơn hàng này đã thanh toán. Tiền sẽ được hoàn lại vào tài khoản của bạn trong 3-5 ngày làm việc. Bạn có chắc chắn muốn huỷ?"*
  * **Hệ thống:** Gửi lệnh huỷ API và kích hoạt quy trình Refund tự động.
* **Lỗi mạng khi cập nhật trạng thái:**
  * **Validation:** Bấm "Đã nhận được hàng" nhưng mất kết nối.
  * **Error UI:** Báo lỗi mạng *"Kết nối thất bại. Vui lòng thử lại"*. Không chuyển trạng thái trên giao diện để tránh nhầm lẫn.

## Quy tắc nghiệp vụ (Business Rules)

1. **Rule 1: Bảo lưu số lượng (Inventory Revert)**: Khi Pet Owner thao tác Huỷ đơn thành công, hệ thống phải trả lại số lượng bị giam (Reserved) vào trong tổng Tồn kho (Stock) của Merchant để người khác có thể mua tiếp.
2. **Rule 2: Chặn Huỷ đơn khi Đang giao**: Không cho phép khách hàng đơn phương huỷ đơn hàng khi hàng đã được giao cho Đơn vị vận chuyển (tránh thất thoát cho Merchant). Nếu khách không nhận, shipper sẽ cập nhật trạng thái Giao thất bại.


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