> ## 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-29: Điều chỉnh kho thủ công

> Là một Merchant, tôi muốn có thể điều chỉnh trực tiếp số lượng tồn kho của một lô hàng cụ thể để xử lý các trường hợp thất thoát, hư hỏng hoặc bán lẻ ngoài cửa hàng mà không qua hệ thống.

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

* Merchant đã đăng nhập vào hệ thống.
* Sản phẩm và lô hàng tương ứng phải tồn tại và đang không ở trạng thái `deleted`.

## Luồng quy trình điều chỉnh kho

```mermaid theme={null}
flowchart TB
    A[Mở chi tiết sản phẩm] --> B[Kéo xuống danh sách Lô hàng]
    B --> C{Chọn Lô hàng cần điều chỉnh}
    C --> D[Nhấn nút 'Điều chỉnh']
    D --> E[Mở popup/form Điều chỉnh kho]
    E --> F[Chọn Loại: Tăng hoặc Giảm tồn kho]
    F --> G[Nhập Số lượng điều chỉnh & Lý do]
    G --> H{Kiểm tra validation}
    H -->|Không hợp lệ| I[Hiển thị lỗi]
    I --> F
    H -->|Hợp lệ| J[Nhấn Xác nhận]
    J --> K[Hệ thống tự động cộng/trừ Tồn cũ để ra Tồn mới]
    K --> L[Lưu số lượng mới vào Lô hàng]
    L --> M[Ghi log biến động kho kèm lý do]
    M --> N[Cập nhật lại Tổng tồn kho của sản phẩm]
```

## Chức năng Điều chỉnh kho (Manual Adjustment)

* Chức năng truy cập trực tiếp từ danh sách các Lô hàng bên trong màn hình Chi tiết sản phẩm.
* Mọi điều chỉnh đều tính trên **Số lượng chênh lệch (Adjustment Quantity)** thay vì ép người dùng nhập số tổng.

### Các trường thông tin trên Form Điều chỉnh

| Trường thông tin | Bắt buộc | Ràng buộc & Ghi chú |
| :- | :- | :- |
| **Loại điều chỉnh** | Bắt buộc | Dropdown chọn 1 trong 2: 1. `Giảm tồn kho` (Xuất bớt hàng ra) 2. `Tăng tồn kho` (Cộng thêm hàng vào) |
| **Số lượng điều chỉnh** | Bắt buộc | Số nguyên dương > 0. *Nếu chọn 'Giảm tồn kho', hệ thống tự động chặn lỗi nếu Số lượng điều chỉnh > Tồn kho hiện tại của lô.* |
| **Lý do điều chỉnh** | Bắt buộc | Dropdown các lý do phổ biến: - Hư hỏng / Mất mát - Bán lẻ ngoài cửa hàng (Offline) - Kiểm kê lệch - Khác |
| **Ghi chú chi tiết** | Tuỳ chọn | Textbox để điền chi tiết (VD: Bán cho anh A, hoặc Bị rách bao bì do vận chuyển). Bắt buộc nhập nếu Lý do là 'Khác'. |

## Ràng buộc và Quy tắc hệ thống (Business Rules)

**1. Bất biến dữ liệu:**

* Tuyệt đối không có nút nào cho phép click thẳng vào con số Tồn Kho để gõ lại thành số khác. Tất cả mọi thay đổi số liệu đều phải thông qua popup Điều chỉnh này.

**2. Ghi nhật ký (Audit Log):**

* Ngay sau khi điều chỉnh thành công, hệ thống sinh ra một bản ghi trong Lịch sử biến động kho (Inventory Log).
* Log ghi rõ: Thời gian, Người thực hiện, Lô hàng bị tác động, Số lượng thay đổi (VD: `-5` hoặc `+2`), và Lý do chi tiết.

**3. Khóa trạng thái Lô:**

* Không cho phép thực hiện điều chỉnh kho đối với các Lô hàng đang ở trạng thái `Expired` (Đã hết hạn) hoặc `Closed` (Đã đóng/Xuất hết). Chỉ áp dụng cho lô `Active`.

## Xử lý ngoại lệ (Exception Handling)

* **Lỗi âm kho:** Nếu Merchant chọn Giảm tồn kho và nhập số lượng = 10, trong khi tồn kho hiện tại của lô chỉ còn 5.
  * *Hệ thống:* Chặn lưu và báo lỗi đỏ: *"Số lượng giảm không được vượt quá tồn kho hiện tại của lô (5)."*


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