Giao diện
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
- Mở Collection Manager → chọn collection.
- Thêm field mới → chọn interface Sequence.
- Đặt tên field (ví dụ:
orderCode,invoiceNo,employeeId). - Cấu hình patterns — mẫu sinh mã.
- 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ính | Mô tả | Ví dụ |
|---|---|---|
value | Chuỗi cố định | "DH-", "INV-2024-" |
Phần integer — số tự tăng
| Thuộc tính | Mô tả | Ví dụ |
|---|---|---|
digits | Số chữ số (zero padding) | 5 → 00001 |
start | Giá trị bắt đầu | 1 |
cycle | Cron expression để reset counter | 0 0 1 1 * (đầu năm) |
Ví dụ patterns
| Mục đích | Patterns | Kế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ĩa | Ví dụ |
|---|---|---|
0 0 1 1 * | Đầu mỗi năm | DH-00001 (2024) → DH-00001 (2025) |
0 0 1 * * | Đầu mỗi tháng | HD-0001 (tháng 1) → HD-0001 (tháng 2) |
0 0 * * * | Mỗi ngày | Mã hàng ngày reset từ 1 |
| (không đặt) | Không reset | Counter tăng liên tục |
Sử dụng trên giao diện
- Khi tạo bản ghi mới, field sequence tự động hiển thị mã tiếp theo.
- Người dùng không thể nhập thủ công — mã do hệ thống sinh.
- 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
sequencesriê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.