> ## 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-25: Thay đổi trạng thái kinh doanh sản phẩm

> Là một Merchant, tôi muốn có thể kích hoạt hoặc ngừng kinh doanh một sản phẩm, để tôi ẩn sản phẩm ra khỏi cửa hàng khi cần.

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

* Merchant đã đăng nhập vào hệ thống
* Sản phẩm đã tồn tại trong hệ thống.

## Luồng quy trình thay đổi trạng thái

```mermaid theme={null}
flowchart TB
    A[Mở dialog chi tiết sản phẩm] --> B{Nhấn nút Đổi trạng thái}
    B --> C[Hiển thị popup chọn trạng thái mới]
    C --> D{Người dùng chọn trạng thái & xác nhận}
    D -->|Hủy| E[Đóng popup, không thay đổi gì]
    D -->|Xác nhận| F[Kiểm tra quy tắc chuyển trạng thái]
    F -->|Không hợp lệ| G[Hiển thị lý do không thể chuyển]
    G --> C
    F -->|Hợp lệ| H[Thay đổi trạng thái sản phẩm]
    H --> I[Ghi log lịch sử hành động]
    I --> J[Thông báo thành công]
    J --> K[Cập nhật giao diện ngay lập tức]
```

## Chức năng thay đổi trạng thái

* Merchant có thể thay đổi trạng thái sản phẩm từ màn hình chi tiết sản phẩm.
* Có 3 trạng thái cho sản phẩm:
  | Trạng thái | Tên hiển thị | Quy tắc hoạt động |
  | - | - | - |
  | `active` | Đang bán | Hiển thị mọi nơi, cho phép tất cả thao tác: giao dịch, nhập kho, điều chỉnh tồn kho |
  | `inactive` | Ngừng bán | Tạm ẩn khỏi cửa hàng bán lẻ, không cho mua. Vẫn cho phép nhập kho, điều chỉnh tồn kho, xem báo cáo. |
  | `deleted` | Đã xóa | Ẩn hoàn toàn khỏi giao diện Merchant. |
* Khi thay đổi trạng thái, hệ thống yêu cầu xác nhận lại hành động này với thông tin rõ ràng về những gì sẽ xảy ra.
* Hệ thống ghi lại lịch sử thay đổi trạng thái với thời gian và người thực hiện.

## Quy tắc xử lý

Quy tắc chuyển trạng thái:

| Từ \ Đến | Active | Inactive | Deleted |
| - | :-: | :-: | :-: |
| **Active** | ❌ | ✅ | ⚠️ |
| **Inactive** | ✅ | ❌ | ⚠️ |
| **Deleted** | ❌ | ❌ | ❌ |

⚠️ **KHÔNG BAO GIỜ cho phép xóa sản phẩm đã phát sinh ít nhất 01 giao dịch thành công**.

* Khi sản phẩm đã có ít nhất 1 bản ghi trong `stock_movement_logs` → VÔ HIỆU HÓA hoàn toàn chức năng Xóa sản phẩm
* Người dùng chỉ chuyển trạng thái sang `Ngừng bán` (`inactive`)
* Tất cả dữ liệu lịch sử, log biến động kho, báo cáo luôn được bảo toàn vĩnh viễn
* Không có bất kỳ ngoại lệ nào cho quy tắc này, kể cả ADMIN

✅ **Khi thay đổi trạng thái**:

* Không ảnh hưởng đến các đơn hàng đã tạo trước đó (vẫn xử lý bình thường)
* Không làm thay đổi dữ liệu tồn kho, lịch sử hay báo cáo
* Tất cả lô hàng của sản phẩm vẫn được giữ nguyên


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