Bỏ qua, đến nội dung

Cài đặt và sử dụng ​

Kích hoạt plugin ​

Vào Settings → Plugin Manager, bật @digiforce-nc/plugin-field-sequence. Plugin tạo bảng sequences để quản lý counter.

Thêm field Sequence ​

  1. Mở Collection Manager → chọn collection.
  2. Thêm field mới → chọn interface Sequence.
  3. Đặt tên field (ví dụ: orderCode, invoiceNo, employeeId).
  4. Cấu hình patterns — mẫu sinh mã.
  5. Lưu — mã tự động được sinh khi tạo bản ghi mới.
typescript
const orderCodeField = {
  name: 'orderCode',
  type: 'sequence',
  interface: 'sequence',
  patterns: [
    { type: 'string', options: { value: 'DH-' } },
    { type: 'integer', options: { digits: 5, start: 1, cycle: '0 0 1 1 *' } },
  ],
};

Cấu hình Patterns ​

Pattern gồm nhiều phần ghép nối:

Phần string — chuỗi cố định ​

Thuộc tínhMô tảVí dụ
valueChuỗi cố định"DH-", "INV-2024-"

Phần integer — số tự tăng ​

Thuộc tínhMô tảVí dụ
digitsSố chữ số (zero padding)5 → 00001
startGiá trị bắt đầu1
cycleCron expression để reset counter0 0 1 1 * (đầu năm)

Ví dụ patterns ​

Mục đíchPatternsKết quả
Mã đơn hàng"DH-" + integer(5)DH-00001, DH-00002
Mã hóa đơn"HD-2024-" + integer(4)HD-2024-0001
Mã nhân viên"NV-" + integer(3)NV-001, NV-002

Cấu hình Cron Reset ​

Counter tự reset theo lịch cron:

Cron expressionÝ nghĩaVí dụ
0 0 1 1 *Đầu mỗi nămDH-00001 (2024) → DH-00001 (2025)
0 0 1 * *Đầu mỗi thángHD-0001 (tháng 1) → HD-0001 (tháng 2)
0 0 * * *Mỗi ngàyMã hàng ngày reset từ 1
(không đặt)Không resetCounter tăng liên tục

Sử dụng trên giao diện ​

  1. Khi tạo bản ghi mới, field sequence tự động hiển thị mã tiếp theo.
  2. Người dùng không thể nhập thủ công — mã do hệ thống sinh.
  3. Mã đảm bảo duy nhất ngay cả khi nhiều người tạo bản ghi cùng lúc.

Ví dụ kết quả theo thời gian ​

Pattern: "DH-" + integer(digits: 5, cycle: "0 0 1 1 *")

Năm 2024: DH-00001, DH-00002, ..., DH-00150
Năm 2025: DH-00001 (reset), DH-00002, ...

Lưu ý ​

  • Counter lưu trong bảng sequences riêng biệt, không tính từ MAX() dữ liệu.
  • An toàn đồng thời (concurrent-safe) — nhiều request đồng thời không bị trùng mã.
  • Xóa bản ghi không giảm counter — mã bị bỏ trống không được tái sử dụng.
  • Nếu counter lệch (ví dụ sau import dữ liệu), dùng cơ chế repair để đồng bộ lại.