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)500001
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.