OpsOne AI · Phê duyệt
Hướng dẫn sử dụng · v1.0

Cấu hình phê duyệt nhiều cấp + ngưỡng giá trị

Tài liệu này hướng dẫn admin doanh nghiệp thiết lập quy trình phê duyệt tự động cho 4 loại yêu cầu: mua hàng, thanh toán, phiếu nhận tiền, phiếu nhập kho. Không cần code — toàn bộ qua giao diện.

Engine phê duyệt của OpsOne hỗ trợ 4 năng lực chính giúp doanh nghiệp quy mô lớn kiểm soát chi tiêu mà vẫn nhanh:

  1. Ngưỡng giá trị — yêu cầu nhỏ duyệt 1 cấp, yêu cầu lớn yêu cầu cả giám đốc duyệt.
  2. Nhiều cấp tuần tự — qua bước 1 mới đến bước 2, v.v.
  3. SLA mỗi bước — đếm giờ chờ duyệt, tô màu cảnh báo khi sắp quá hạn.
  4. Vai trò hoặc người cụ thể — bước này dành cho "Kế toán trưởng" (vai trò) hoặc cho "Nguyễn Văn A" (người cụ thể).
Đối tượng phù hợp: doanh nghiệp 20+ nhân sự, có 2 cấp quản lý trở lên (trưởng phòng — giám đốc), nhiều giao dịch cần kiểm soát chi.

1. Thuật ngữ cần biết

Flow Quy trình duyệt
Một quy trình phê duyệt áp dụng cho 1 loại yêu cầu (vd "Phiếu nhận tiền > 50tr"). Gồm điều kiện áp dụng + các bước duyệt.
Ví dụ: flow "Mua hàng > 100tr" gồm 2 bước: Trưởng phòng → Giám đốc.
Step / Bước duyệt
Một cấp duyệt trong flow. Mỗi bước có tên, người duyệt (vai trò hoặc user cụ thể) và SLA tính bằng giờ.
Bước 1: "Trưởng phòng duyệt" — vai trò manager — SLA 24 giờ.
Condition / Điều kiện áp dụng
Quy tắc quyết định flow nào áp dụng. Hiện hỗ trợ điều kiện theo số tiền với toán tử >, >=, <, <=, =. Bỏ trống = luôn áp dụng.
Điều kiện amount > 50000000 nghĩa là flow chỉ áp dụng cho yêu cầu trên 50 triệu.
Sort order / Độ ưu tiên
Khi nhiều flow cùng khớp một yêu cầu, flow nào có sort_order cao hơn sẽ được chọn. Dùng để xếp lớp "ngưỡng càng cao càng ưu tiên".
Flow A (amount > 10tr, sort_order=1) và Flow B (amount > 100tr, sort_order=2). Yêu cầu 200tr khớp cả 2 → engine chọn B (sort_order cao hơn).
SLA Service Level Agreement
Thời hạn duyệt mỗi bước, tính bằng giờ. Inbox tô màu cảnh báo: còn <4h: đỏ, còn <24h: vàng, quá hạn: đỏ đậm.
SLA 24h cho bước Trưởng phòng → sau 24h chưa duyệt sẽ hiển thị "Quá hạn" trên inbox của trưởng phòng.
Approver type / Loại người duyệt
Bước duyệt có thể gán theo vai trò (role) — ai có vai trò đó đều duyệt được; hoặc theo người cụ thể (user) — chỉ user đó duyệt được.
Bước "Giám đốc duyệt" — chọn role = director → 3 phó giám đốc đều có thể duyệt. Hoặc chọn user = "Anh A" → chỉ anh A duyệt được.

2. Truy cập module Phê duyệt

  1. Đăng nhập app.opsoneai.com bằng tài khoản admin.
  2. Sidebar bên trái → mục "📥 Phê duyệt" (trong nhóm "Vận hành").
  3. Trên thanh tab phía trên có 3 mục: 📥 Hộp thư · ⚙️ Cấu hình flow · 📊 Báo cáo.
  4. Chọn "⚙️ Cấu hình flow" để thiết lập flow mới.
Chỉ admin được tạo/sửa flow. Nhân viên thường vào tab "Cấu hình flow" cũng không thấy nút "+ Tạo flow" — gọi API thẳng cũng bị server trả 403.

3. Bốn loại yêu cầu hỗ trợ

LoạiKhi nào tự kích hoạt flowTrường được match điều kiện
🛒 Yêu cầu mua hàngKhi NV tạo phiếu YCMH trong module Mua hàngamount = giá trị ước tính (đồng)
💳 Đề nghị thanh toánKhi NV tạo đề nghị chi tiền cho NCCamount = số tiền đề nghị (đồng)
🧾 Phiếu nhận tiềnKhi NV ghi nhận tiền khách thanh toánamount = số tiền phiếu (đồng)
📦 Phiếu nhập khoKhi NV nhập kho hàng từ NCCtotal_value = giá trị nhập kho
Trường amount dùng đơn vị đồng VN. Vd nhập 50000000 = 50 triệu.

4. Tạo flow đơn giản (1 cấp, không ngưỡng)

Trường hợp đơn giản nhất: mọi phiếu nhận tiền đều cần kế toán trưởng duyệt.

  1. Vào tab "⚙️ Cấu hình flow" → bấm "+ Tạo flow".
  2. Trong form:
    • Loại yêu cầu: 🧾 Phiếu nhận tiền
    • Tên: "Phiếu nhận tiền — duyệt bởi KTT"
    • Độ ưu tiên: 0 (mặc định)
    • Điều kiện áp dụng: chọn "(không)" → luôn áp dụng
  3. Mục "Các bước duyệt" đã có sẵn 1 bước. Sửa:
    • Tên bước: "Kế toán trưởng duyệt"
    • Loại người duyệt: Theo vai trò
    • Vai trò: chọn "Kế toán trưởng" (hoặc role có trong list)
    • SLA: 24 (giờ)
  4. Bấm "Lưu" → flow active ngay. Mọi phiếu nhận tiền tạo từ giờ sẽ vào hộp thư của KTT.
Backward compatible: Phiếu cũ đã tồn tại trước khi tạo flow vẫn duyệt theo cách cũ (admin duyệt trực tiếp). Chỉ phiếu mới tạo sau khi flow active mới chạy qua engine.

5. Flow theo ngưỡng giá trị

Đây là pattern quan trọng nhất với doanh nghiệp scale: giao dịch nhỏ duyệt nhanh, giao dịch lớn duyệt kỹ.

5.1. Cách hoạt động

Khi NV tạo yêu cầu, engine:

  1. Lấy tất cả flow active của loại yêu cầu đó.
  2. Sắp xếp theo sort_order giảm dần.
  3. Duyệt từ trên xuống, gặp flow đầu tiên có điều kiện khớp → áp dụng.
Quy tắc bắt buộc: Flow ngưỡng cao phải có sort_order cao hơn flow ngưỡng thấp, nếu không yêu cầu lớn sẽ rơi vào flow nhỏ.

5.2. Ví dụ: 3 tầng cho Đề nghị thanh toán

Flow A — Thanh toán nhỏ
Điều kiện: amount <= 5000000 · sort_order = 1
Kế toán duyệt (24h)
Flow B — Thanh toán trung bình
Điều kiện: amount > 5000000 · sort_order = 2
Kế toán duyệt (24h) → Trưởng phòng duyệt (24h)
Flow C — Thanh toán lớn
Điều kiện: amount > 50000000 · sort_order = 3
Kế toán (24h) → Trưởng phòng (24h) → Giám đốc (48h)

Yêu cầu 3 triệu khớp Flow A. Yêu cầu 20 triệu khớp Flow B (Flow C không khớp). Yêu cầu 80 triệu khớp Flow C (cả 3 đều khớp, sort_order cao nhất là 3 nên chọn C).

Tip: Đặt sort_order = mức trần triệu đồng (1 cho <5tr, 2 cho 5-50tr, 3 cho >50tr) cho dễ nhớ.

6. Flow nhiều cấp tuần tự

Trong cùng 1 flow, thêm nhiều bước. Engine xử lý tuần tự — qua bước 1 mới đến bước 2.

  1. Khi tạo/sửa flow, ở mục "Các bước duyệt", bấm "+ Thêm bước" để thêm bước mới.
  2. Điền tên, vai trò/user, SLA giống bước 1.
  3. Bước hiển thị theo thứ tự sẽ là thứ tự duyệt thực tế. Để đổi thứ tự, xoá rồi thêm lại (UI hiện chưa có drag-drop).
  4. Lưu flow.

6.1. Quy trình thực thi

  1. NV tạo yêu cầu → engine khớp flow → khởi tạo các bước với trạng thái pending.
  2. Bước 1 approver được notify (chuông + email + Zalo nếu đã cấu hình).
  3. Approver vào Hộp thư duyệt → bấm "Duyệt".
  4. Bước 1 chuyển sang approved. Engine notify approver bước 2.
  5. Cứ thế đến bước cuối. Khi bước cuối approved → yêu cầu hoàn tất.
Bị từ chối ở bước nào → các bước sau bị skip. Yêu cầu chuyển sang rejected ngay. NV tạo yêu cầu được notify lý do.

7. SLA — thời hạn mỗi bước

Mỗi bước có SLA riêng tính bằng giờ. Engine ghi sla_due_at = thời điểm step pending + SLA giờ. Inbox hiển thị thời gian còn lại + phân loại màu:

Trạng tháiĐiều kiệnHiệu ứng inbox
OKCòn > 24hBình thường
Sắp tới hạnCòn < 24hVàng cảnh báo
KhẩnCòn < 4hCam đậm
Quá hạnĐã qua deadlineĐỏ + filter "Quá hạn" có thể bật
SLA chỉ là tín hiệu, không tự reject hoặc escalate (chưa có). Approver vẫn duyệt bình thường sau SLA. Roadmap: escalation tự chuyển bước khi quá hạn.

8. Hộp thư duyệt (Inbox)

📥
3 tab phụ trong hộp thư
Lọc theo vai trò của người xem
  • Của tôi (mine): các yêu cầu mà bạn là approver bước hiện tại + đang pending.
  • Đã gửi (submitted): các yêu cầu do chính bạn tạo (tracker tiến độ).
  • Tất cả (all): chỉ super admin tenant 1 thấy được — toàn bộ pending trong project.

8.1. Phím tắt

  • J / K — chọn dòng kế tiếp / trước.
  • A — duyệt yêu cầu đang chọn (mở modal confirm).
  • R — từ chối (yêu cầu nhập lý do).
  • Enter — mở chi tiết yêu cầu.

8.2. Bulk approve

Tick chọn nhiều yêu cầu cùng loại → bấm "Duyệt hàng loạt". Mỗi yêu cầu vẫn chạy qua engine riêng, có yêu cầu pass có yêu cầu fail (vd Sapo không match) — UI trả về danh sách kết quả từng item.

9. Yêu cầu bổ sung (Needs revision)

Thay vì reject cứng, approver có thể trả lại để NV bổ sung. Đỡ rejection rate, giảm phiền NV làm lại từ đầu.

  1. Approver bấm "↩ Yêu cầu bổ sung" (thay vì Duyệt/Từ chối).
  2. Nhập lý do cụ thể (bắt buộc, vd "Thiếu hoá đơn đầu vào").
  3. Yêu cầu chuyển trạng thái needs_revision. NV tạo yêu cầu được notify.
  4. NV sửa nội dung yêu cầu → bấm "Gửi lại". Engine reset về bước 1, các bước sau pending lại.
  5. Approver bước 1 lại được notify.
Mỗi vòng trả lại + gửi lại được lưu trong bảng revision_logs. Báo cáo có thể đếm tỉ lệ bổ sung theo NV → đào tạo NV nào hay sai sót.

10. Ba tình huống thực tế

10.1. Tình huống: Doanh nghiệp 50 NV, kiểm soát chi tiêu

Bối cảnh: Cty TBBV bán cân điện tử, doanh thu ~700tr/tháng. Hiện admin (giám đốc) duyệt tay mọi đơn mua hàng — quá tải. Muốn delegate cho trưởng phòng nhưng vẫn kiểm soát đơn lớn.

Cấu hình:

  • Flow A: YC mua hàng — không điều kiện, sort=1 — 1 bước: Trưởng phòng mua (24h)
  • Flow B: YC mua hàng — amount > 30000000, sort=2 — 2 bước: Trưởng phòng (24h) → Giám đốc (48h)

Kết quả: 80% đơn nhỏ (<30tr) trưởng phòng duyệt; 20% đơn lớn vẫn cần giám đốc. Giám đốc giảm 80% workload.

10.2. Tình huống: Chuỗi 4 cửa hàng (EduTrust)

Bối cảnh: Trung tâm tư vấn du học có 4 chi nhánh. Cần kiểm soát phiếu nhận tiền học phí: phiếu <10tr giáo viên báo lên kế toán xác nhận; phiếu lớn cần cả giám đốc duyệt.

Cấu hình:

  • Flow A: Phiếu nhận tiền — amount <= 10000000, sort=1 — 1 bước: Kế toán
  • Flow B: Phiếu nhận tiền — amount > 10000000, sort=2 — 2 bước: Kế toán → Giám đốc

Kết quả: Phiếu nhỏ duyệt trong giờ. Phiếu lớn (đặt cọc khoá học >30tr) qua 2 cấp, có dấu vết audit đầy đủ.

10.3. Tình huống: Cấu hình sai sort_order

Triệu chứng: Tạo phiếu 80tr nhưng chỉ thấy kế toán duyệt, không có bước giám đốc.

Nguyên nhân: Flow B (ngưỡng 50tr, 2 bước) có sort_order = 1, bằng Flow A (luôn áp dụng, 1 bước). Engine sort theo sort_order desc rồi id asc → Flow A được chọn trước.

Cách sửa: Sửa Flow B → set sort_order = 2 (cao hơn A). Phiếu mới tạo từ đó sẽ vào đúng B.

Lưu ý: Phiếu đã chạy theo flow cũ không tự đổi sang flow mới khi anh sửa cấu hình. Chỉ phiếu mới tạo sau khi sửa mới áp dụng.

11. Câu hỏi thường gặp

Tôi đã tạo flow nhưng phiếu mới vẫn duyệt bằng admin, không đi qua flow?

Có 3 nguyên nhân phổ biến:

  • Flow không active (cờ is_active = false). Vào sửa lại flow, bật active.
  • Điều kiện không khớp. Vd flow đặt amount > 100000000 nhưng phiếu 50tr. Sửa lại điều kiện.
  • Phiếu được tạo TRƯỚC khi flow được tạo. Engine chỉ áp dụng cho phiếu mới.
Tôi muốn 2 người trong cùng 1 bước cùng phải duyệt (chữ ký kép)?

Engine có hỗ trợ parallel mode (chế độ song song) với 2 lựa chọn: parallel_any (1 trong N duyệt là pass) và parallel_all (cả N phải duyệt). Hiện UI Cấu hình flow chưa expose toggle này — sẽ bổ sung ở phiên bản tiếp theo. Tạm thời nếu cần, liên hệ hỗ trợ để config qua DB.

Sửa flow đang chạy thì các phiếu pending có bị ảnh hưởng không?

Không. Khi engine khởi tạo các bước cho 1 phiếu, nó COPY các step vào bảng approval_steps riêng cho phiếu đó. Sau đó sửa flow chỉ ảnh hưởng phiếu mới. Đây là design để tránh "đổi luật giữa chừng" gây tranh cãi.

Quá SLA thì sao? Có tự reject không?

Hiện không. SLA chỉ là tín hiệu inbox (đổi màu cảnh báo). Approver vẫn duyệt được sau deadline. Roadmap có escalation: quá SLA bao giờ → tự eskal lên cấp cao hơn, hoặc gửi reminder lần 2/3.

Tôi (admin) có thể duyệt thay người khác không?

Mặc định không — engine check user phải khớp role/user của bước. Nếu muốn admin bypass, dùng delegation (uỷ quyền): trong phần Hồ sơ → Uỷ quyền duyệt → chọn người uỷ quyền + khoảng thời gian. User được uỷ quyền sẽ pass canApproveStep cho mọi bước thuộc người uỷ quyền gốc.

NV tạo phiếu sai amount, sửa lại thì flow có đổi không?

Phụ thuộc loại. Phiếu nhận tiền không cho sửa amount sau khi tạo (phải xoá + tạo lại). YC mua hàng có thể sửa nhưng flow đã khởi tạo sẽ không tự chuyển sang flow ngưỡng khác. Nếu sửa amount vượt ngưỡng mới → tạo lại phiếu hoặc liên hệ admin reset.

Tôi muốn báo cáo "phiếu nào đang ở bước nào, ai chưa duyệt"?

Vào tab "📊 Báo cáo" trong module Phê duyệt. Đang có: số phiếu pending theo loại, theo người duyệt, theo SLA bucket (ok/warning/overdue), throughput theo tuần. Báo cáo "approver throughput cá nhân" (ai duyệt nhanh/chậm) đang trên roadmap.

Phiếu nhận tiền — sau khi flow approve, Sapo + Hoá đơn điện tử có tự chạy không?

Có. Khi bước cuối của flow approve, engine gọi helper approvePaymentReceipt — helper này tự (1) cập nhật orders.paid_amount, (2) đẩy giao dịch lên Sapo (nếu có sapo_id), (3) gọi MISA/Viettel để phát hành hoá đơn điện tử (nếu config). Hoạt động giống như trước có flow — chỉ thêm phần duyệt nhiều cấp ở trước.

Cần em hỗ trợ thiết lập?

Liên hệ [email protected] để được demo 15 phút thiết lập flow cho doanh nghiệp anh/chị.

Mở module Phê duyệt Xem hướng dẫn khác
Dùng OpsOne trên điện thoại
Quét mã bằng camera, chấm công GPS kèm ảnh, mở khoá bằng vân tay.
App Store Google Play