> ## 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.

# Các luồng ngoại lệ

Quy trình Mua bán sản phẩm không phải lúc nào cũng diễn ra suôn sẻ theo luồng chuẩn (Happy Path). Dưới đây là các luồng ngoại lệ (Exception Flows) chính và cách hệ thống xử lý để đảm bảo trải nghiệm người dùng và tính toàn vẹn dữ liệu.

## 1. Khách hàng huỷ đơn

Đây là tình huống Pet Owner thay đổi quyết định sau khi đã đặt hàng.

* **Điều kiện cho phép:** Đơn hàng phải đang ở trạng thái `Chờ xác nhận`. (Không thể huỷ khi Merchant đã chuẩn bị hàng hoặc giao hàng).
* **Cách hệ thống xử lý:**
  1. Chuyển trạng thái đơn hàng sang `Đã huỷ`.
  2. **Quan trọng:** Tự động **cộng hoàn lại số lượng** vào tồn kho khả dụng của sản phẩm (Restore Reserve).
  3. Nếu đơn hàng được thanh toán bằng phương thức Online (Bank transfer/Card), hệ thống tự động tạo một lệnh (Refund Request) gửi sang cổng thanh toán để hoàn tiền cho khách. Giao diện hiển thị nhãn: `Đã huỷ (Chờ hoàn tiền)`.

## 2. Merchant huỷ đơn (Do lỗi kho/Vận hành)

Đôi khi Merchant không thể đáp ứng đơn hàng do chênh lệch tồn kho thực tế, hàng hỏng, hoặc nhầm giá.

* **Điều kiện cho phép:** Đơn hàng đang ở trạng thái `Chờ xác nhận` hoặc `Đang chuẩn bị`.
* **Cách hệ thống xử lý:**
  1. Merchant bắt buộc phải chọn lý do huỷ từ danh sách (VD: "Hết hàng", "Lỗi giá", "Không liên hệ được khách").
  2. Tương tự như trên, hệ thống hoàn lại số lượng tồn kho (nếu đã trừ).
  3. Gửi thông báo (Push Notification/Email) xin lỗi đến Pet Owner và kích hoạt tiến trình Refund nếu đã thanh toán.

## 3. Giao hàng thất bại

Xảy ra khi shipper không thể liên lạc được với khách hàng hoặc khách hàng từ chối nhận hàng (Bom hàng).

* **Điều kiện xảy ra:** Đơn đang ở trạng thái `Đang giao`.
* **Cách hệ thống xử lý:**
  1. Đơn vị vận chuyển hoàn trả hàng về cho Merchant (Chuyển hoàn).
  2. Khi nhận lại hàng, Merchant thao tác cập nhật đơn thành `Đã huỷ (Giao thất bại)`.
  3. Tồn kho được hoàn lại và hệ thống ghi nhận lịch sử bom hàng (tăng rủi ro tín nhiệm) cho tài khoản Pet Owner.

## 4. Thanh toán Online thất bại / Quá hạn

Người dùng chọn thanh toán bằng chuyển khoản nhưng không hoàn tất giao dịch.

* **Điều kiện xảy ra:** Pet Owner thoát ứng dụng giữa chừng, lỗi ngân hàng, hoặc quá thời gian chờ (Timeout - 24 giờ).
* **Cách hệ thống xử lý:**
  1. Đơn hàng tự động bị đánh dấu là `Đã huỷ`.
  2. Tồn kho tạm giữ (Reserved) được nhả ra ngay lập tức để khách hàng khác có thể mua.
  3. Hiển thị thông báo yêu cầu người dùng đặt lại đơn mới nếu vẫn có nhu cầu mua.


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