checkpro.vn

Phân cấp QRT

Menu: Nhãn & QR → Nhãn định danh → Phân cấp QRT
Route: /qrt-codes/hierarchy
Quyền yêu cầu: qr.view, qr.edit
Phiên bản: v1.0 — 2026-05-08


1. Giới thiệu

Trang Phân cấp QRT là giao diện trực quan để xây dựng và quản lý cấu trúc cây phân cấp của mã QR Tổng. Hỗ trợ kéo-thả (Kéo & Drop) để di chuyển QRT giữa các nhánh, niêm phong để khóa cấu trúc, và audit log để theo dõi mọi thay đổi.

Ví dụ cấu trúc thực tế:

📦 Pallet A (Cấp 1 — Quản lý QRT)
├── 📦 Thùng 1 (Cấp 2 — Quản lý QR1)
│   ├── 📱 Sản phẩm 001
│   ├── 📱 Sản phẩm 002
│   └── 📱 Sản phẩm 003
├── 📦 Thùng 2 (Cấp 2 — Quản lý QR1)
│   └── 📱 Sản phẩm 004
└── 📦 Thùng 3 (Cấp 2 — Quản lý QR1)

2. Điều kiện truy cập

Điều kiện Chi tiết
Quyền xem qr.view
Quyền chỉnh sửa qr.edit (tạo, liên kết, niêm phong, xóa)
Trạng thái tổ chức Đã duyệt

3. Giao diện

3.1 Layout 2 cột

Vùng Mô tả
Cột trái (8/12) Cây phân cấp với kéo & drop
Cột phải (4/12) Panel chi tiết node đang chọn + Toolbar hành động

3.2 Toolbar trên cùng

Nút Mô tả
Tạo QRT mới Mở hộp thoại tạo QRT
Cấu hình cấp Đặt tên, icon, màu cho từng cấp
Lọc trạng thái danh sách thả xuống chọn nhiều: Nháp / Sẵn sàng / Đang dùng / Hoàn thành / Lưu trữ / Đã xóa
Làm mới Reload cây

3.3 Dạng cây — Mỗi node hiển thị

Thành phần Mô tả
⠿ Kéo handle Kéo để di chuyển (chỉ hiện khi chưa niêm phong/xóa)
▶ công tắc Mở rộng/thu gọn nhánh con
Icon loại 📁 Quản lý QRT / 📱 Quản lý QR1
Alias + rawData Tên gợi nhớ + mã QR
huy hiệu cấp VD: "Pallet", "Thùng"
huy hiệu trạng thái Nháp / Sẵn sàng / Đang dùng...
huy hiệu niêm phong 🔒 Niêm phong (nếu bị seal)
Counter Số con / Số kỳ vọng

4. Hướng dẫn thao tác

4.1 Tạo QRT mới

  1. Nhấn "Tạo QRT mới" → hộp thoại:
Trường Mô tả
Loại QRT Quản lý QRT (chứa QRT con) / Quản lý QR1 (chứa QR1)
QRT cha danh sách thả xuống — chọn QRT làm cha (bỏ trống = root)
Lô sản xuất danh sách thả xuống — liên kết lô (tùy chọn)
Alias Tên gợi nhớ (VD: "Pallet A - Kho HCM")
Nhãn cấp Tên tùy chỉnh (VD: "Container")
SL kỳ vọng Số con dự kiến (tùy chọn)
  1. Nhấn "Tạo" → QRT xuất hiện trong cây

4.2 Chỉnh sửa QRT

  1. Chọn node trong cây → Panel phải hiển thị chi tiết
  2. Nhấn "Chỉnh sửa" → hộp thoại:
    • Sửa Alias, nhãn cấp, SL kỳ vọng
    • Nhập lý do thay đổi (ghi vào audit log)
  3. Nhấn "Cập nhật"
  1. Chọn QRT cha trong cây
  2. Nhấn "Liên kết con" → hộp thoại hiển thị QRT chưa có cha
  3. ô tích chọn 1 hoặc nhiều QRT → Nhấn "Liên kết"

[!WARNING]
Số lượng con liên kết không được vượt quá SL kỳ vọng (nếu đã khai báo).

4.4 Kéo thả (Kéo & Drop) — Di chuyển QRT

  1. Nhấn giữ ⠿ Kéo handle trên node nguồn
  2. Kéo đến node đích → Highlight xanh khi hợp lệ
  3. Thả → hộp thoại xác nhận "Chuyển QRT":
    • Hiển thị: Từ QRT nào → Đến QRT nào
    • Nhập lý do (tùy chọn)
  4. Nhấn "Xác nhận" → Di chuyển thành công

Quy tắc kéo thả:

  • ❌ Không kéo node đã niêm phong
  • ❌ Không kéo node đã xóa
  • ❌ Không kéo node vào chính nó hoặc con cháu của nó
  • ❌ Không thả vào node đã niêm phong

4.5 Niêm phong / Mở niêm phong (Seal / Unseal)

Niêm phong:

  1. Chọn node → Nhấn "🔒 Niêm phong"
  2. Nhập lý do (tùy chọn) → Nhấn xác nhận
  3. Node bị khóa: không thể thêm/xóa/di chuyển con

Mở niêm phong:

  1. Chọn node đã niêm phong → Nhấn "🔓 Mở niêm phong"
  2. Nhập lý do (bắt buộc) → Nhấn xác nhận

[!CAUTION]
Niêm phong thường dùng khi hàng đã xuất kho. Mở niêm phong cần ghi rõ lý do để audit.

4.6 Đổi trạng thái

  1. Chọn node → Nhấn "Đổi trạng thái"
  2. Chọn trạng thái mới: Nháp → Sẵn sàng → Đang dùng → Hoàn thành → Lưu trữ
  3. Nhập lý do (tùy chọn) → Nhấn xác nhận

[!NOTE]
Đổi trạng thái áp dụng cascade cho tất cả QRT con.

4.7 Xem Audit Log

  1. Chọn node → Nhấn "📋 Audit Log"
  2. hộp thoại hiển thị timeline: mọi hành động (tạo, liên kết, niêm phong, di chuyển, đổi trạng thái) kèm thời gian + người thực hiện + lý do

4.8 Xóa vĩnh viễn

  1. Chọn node → Nhấn "🗑 Xóa vĩnh viễn" (chỉ hiện khi đủ điều kiện)
  2. Xác nhận → QRT bị xóa hoàn toàn

Điều kiện xóa:

  • Node không có con
  • Node không bị niêm phong
  • Node ở trạng thái Nháp hoặc Đã xóa mềm

4.9 Cấu hình tên cấp

  1. Nhấn "⚙ Cấu hình cấp" → hộp thoại
  2. Đặt cho mỗi cấp (Level 1, 2, 3...):
Trường Mô tả
Tên cấp VD: "Pallet", "Thùng", "Hộp"
Icon Class icon (VD: ri-inbox-line)
Màu Hex color
Sức chứa mặc định Số con mặc định

5. Các quy tắc nghiệp vụ quan trọng

5.1 Tự động điều chỉnh cấp (Auto-Level)

Khi bạn liên kết hoặc di chuyển QRT bằng kéo thả, hệ thống sẽ tự động thực hiện:

  • Điều chỉnh cấp (Level) của QRT con = Cấp QRT cha + 1.
  • Thực hiện đệ quy cho toàn bộ các node con cháu cấp dưới mà không cần can thiệp thủ công. Ví dụ: QRT A (Cấp 1) ← liên kết QRT B (Cấp 3) → QRT B tự động thành Cấp 2, các con của B cũng tự lùi cấp tương ứng.

5.2 Tự động đồng bộ lô (Auto-Lot)

Khi gắn hoặc di chuyển QRT:

  • Cha có lô, Con chưa có → Con tự động nhận lô của cha.
  • Con có lô, Cha chưa có → Cha tự động nhận lô của con.
  • Cả hai đều đã có lô khác nhau → ❌ Chặn liên kết, hiển thị lỗi để tránh vi phạm tính nhất quán của chuỗi truy xuất nguồn gốc.

5.3 Niêm phong lan truyền

  • Khi một QRT bị Niêm phong, trạng thái khóa sẽ lan truyền xuống các node con cháu.
  • Bạn không thể thêm/bớt con, kéo thả hoặc di chuyển bất kỳ node nào thuộc nhánh đã niêm phong cho đến khi mở khóa và nhập lý do bắt buộc.

5.4 Hướng dẫn ngữ cảnh

  • Giao diện có các biểu tượng dấu "?" nhỏ bên cạnh các tùy chọn cấu hình. Di chuột (rê chuột) vào để xem giải thích nhanh.
  • Có thể bật/tắt hiển thị dấu "?" này bằng cách vào Hồ sơ (/profile) → Cài đặt → bật/tắt "Hướng dẫn sử dụng".

6. FAQ

Câu hỏi Trả lời
QRT có bao nhiêu cấp? Không giới hạn. Thực tế thường 2-4 cấp (VD: Pallet → Thùng → Hộp → SP).
Di chuyển QRT ảnh hưởng tem? Không. Chỉ thay đổi cấu trúc quản lý, tem QR1 vẫn giữ nguyên thông tin.
Tại sao không kéo được? Kiểm tra: node đã niêm phong? đã xóa? đang kéo vào chính nó? Hai bên có trùng lô không?
Audit log lưu bao lâu? Vĩnh viễn. Mọi hành động đều được ghi lại.

Cập nhật lần cuối: 2026-05-08