Skip to main content
Là một Pet Owner, tôi muốn có tính năng “Mua lại” từ các đơn hàng cũ để nhanh chóng thêm các sản phẩm quen thuộc vào giỏ hàng mà không cần phải tìm kiếm lại từng món.

Acceptance Criteria (AC)

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

  • Một phần sản phẩm không khả dụng:
    • Flow: Đơn cũ có Hạt (Còn hàng) và Đồ chơi (Hết hàng). User bấm Mua lại.
    • Error UI: Hệ thống chỉ thêm Hạt vào giỏ. Hiển thị Popup cảnh báo: “Sản phẩm ‘Đồ chơi’ hiện không còn khả dụng và đã bị loại khỏi giỏ hàng.”
  • Toàn bộ đơn cũ không còn khả dụng:
    • Flow: Tất cả mặt hàng trong đơn cũ đều đã bị xoá hoặc hết hàng.
    • Error UI: Không điều hướng sang trang Giỏ hàng. Hiển thị Toast lỗi: “Rất tiếc, tất cả các sản phẩm trong đơn hàng này hiện đã hết hàng hoặc ngừng kinh doanh.”
  • Cập nhật số lượng theo tồn kho:
    • Flow: User mua lại 5 gói Pate, nhưng Shop chỉ còn 2.
    • Error UI: Thêm 2 gói vào giỏ, và báo Toast: “Pate chỉ còn 2 sản phẩm, chúng tôi đã cập nhật lại số lượng tối đa cho bạn.”

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

  1. Rule 1: Bỏ qua Voucher cũ: Tính năng Mua lại (Re-order) chỉ sao chép Mã Sản phẩm và Số lượng. Hệ thống hoàn toàn bỏ qua các Mã Voucher hoặc Giảm giá đã được áp dụng trong lịch sử đơn hàng đó. Người dùng phải tự chọn lại Voucher ở Giỏ hàng.
  2. Rule 2: Cộng dồn Giỏ hàng (Cart Merging): Nếu giỏ hàng hiện tại đã có 2 gói Hạt X, và user nhấn Mua lại một đơn cũ có chứa 3 gói Hạt X. Hệ thống sẽ merge thành 2+3=52 + 3 = 5 gói Hạt X trong giỏ. Quá trình merge này phải check lại điều kiện chặn số lượng tồn kho tối đa.