> ## 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-ADM-06: Nhập kho Chip định danh từ Nhà cung cấp 

> Là một Admin, tôi muốn thực hiện nhập hàng loạt Chip định danh vào hệ thống thông qua file Excel để khởi tạo tồn kho khả dụng, sẵn sàng phục vụ quy trình ký gửi cho các phòng khám.

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

* Người dùng đã đăng nhập với quyền **Central Admin**
* Hệ thống đã sẵn sàng cấu hình mẫu file Import với các trường: `Model`, `ID`, `SN No.`, `Expiry Date`

## Luồng quy trình nhập kho

```mermaid theme={null}
flowchart TD
    A[Admin vào màn hình Quản lý kho] --> B[Nhấn nút Nhập kho]
    B --> C[Chọn file Excel]
    C --> D{File có đúng định dạng?}
    D -->|Không| E[Báo lỗi: Định dạng không hợp lệ]
    E --> C
    D -->|Có| F[Upload file lên hệ thống]
    F --> G{Kiểm tra cấu trúc Header}
    G -->|Thiếu cột| H[Báo lỗi: File sai cấu trúc mẫu]
    H --> C
    G -->|Đủ cột| I[Đọc và validate toàn bộ dữ liệu]
    I --> J{Tất cả dòng hợp lệ?}
    J -->|Không| K[Báo lỗi chi tiết, hủy bỏ toàn bộ file]
    K --> C
    J -->|Có| L[Hiển thị preview cho Admin]
    L --> M{Admin xác nhận?}
    M -->|Không| N[Huỷ bỏ]
    M -->|Có| O[Lưu dữ liệu vào DB]
    O --> P[Tạo chip với status = Available]
    P --> Q[Cập nhật tồn kho]
    Q --> R[Hiển thị báo cáo kết quả]
    R --> S[Hoàn tất]
```

## Các trường thông tin file Import

| Trường thông tin | Bắt buộc | Validate & Ràng buộc |
| - | - | - |
| **Model** | Bắt buộc | Loại/model chip |
| **ID** | Tùy chọn | Mã định danh theo dữ liệu nhà máy |
| **SN No.** | Bắt buộc | Serial number duy nhất, không trùng lặp với dữ liệu đã có trong hệ thống |
| **Expiry Date** | Bắt buộc | Phải đúng định dạng ngày tháng và có giá trị trong tương lai |

## Quy tắc nghiệp vụ

* Hệ thống chỉ chấp nhận định dạng file `.xlsx` hoặc `.xls`
* Sau khi tải file lên, hiển thị màn hình xem trước để Admin kiểm tra lại trước khi lưu
* **Cơ chế Import "All or Nothing"**: Nếu có bất kỳ 1 dòng dữ liệu nào bị lỗi, hệ thống sẽ báo lỗi và từ chối import toàn bộ file (không lưu bất kỳ chip nào). Admin cần chỉnh sửa file và tải lên lại từ đầu.
* Tất cả Chip mới nhập sẽ được gắn trạng thái mặc định là `Available`
* Hệ thống tự động tạo Mã Lô hàng theo định dạng `BATCH-YYYYMMDD-XXX`
* Tất cả thao tác nhập kho đều được ghi audit log vĩnh viễn


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