> For the complete documentation index, see [llms.txt](https://spsvn.gitbook.io/product-docs-1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://spsvn.gitbook.io/product-docs-1/huong-dan-cai-dat-va-cau-hinh-quan-tri-vien/cau-hinh-quy-trinh/cau-hinh-cong-thuc-dieu-kien-tinh-toan.md).

# Cấu hình công thức điều kiện, tính toán

1\. Tính năng là gì?&#x20;

Trước đây, mỗi khi cần thiết lập một điều kiện rẽ nhánh trong module Quy trình (ví dụ: "nếu số tiền > 10 triệu thì chuyển bước duyệt cấp trên") hoặc một công thức tính toán (ví dụ: "thành tiền = số lượng × đơn giá"), người cấu hình phải gõ tay cú pháp Jexl — dễ sai chính tả, dễ nhầm tên trường, và thường phải nhờ kỹ thuật viên hỗ trợ.&#x20;

Tính năng mới cung cấp một popup trực quan với 3 cột: trường dữ liệu — toán tử/hàm — mô tả cú pháp. Người dùng chỉ cần click chọn để xây dựng công thức. Hệ thống sẽ tự động kiểm tra cú pháp khi xác nhận.&#x20;

&#x20;

<img src="/files/PVAXupqDmGY3e3wK02Si" alt="" height="273" width="601">

&#x20;2\. Ý nghĩa & lợi ích nghiệp vụ&#x20;

* Tự chủ trong cấu hình: đội vận hành/nghiệp vụ có thể tự xây dựng logic workflow mà không phụ thuộc IT, giảm thời gian chờ đợi từ vài ngày xuống vài phút.&#x20;
* Giảm rủi ro sai logic: click chọn từ danh sách giúp tránh hoàn toàn lỗi sai tên trường, sai chính tả toán tử.&#x20;
* Học cú pháp nhanh hơn: mô tả và ví dụ hiển thị ngay tại chỗ — người mới có thể vừa làm vừa học.&#x20;
* Kiểm soát chất lượng: validate cú pháp tự động trước khi lưu, tránh trường hợp workflow bị lỗi runtime.&#x20;

3\. Ứng dụng vào nghiệp vụ&#x20;

Một số tình huống thực tế mà tính năng này giải quyết:&#x20;

Tình huống 1 — Phê duyệt nhiều cấp theo hạn mức&#x20;

Quy trình "Đề nghị mua hàng" cần rẽ nhánh: dưới 5 triệu duyệt tại cấp Trưởng nhóm, từ 5–50 triệu duyệt thêm cấp Trưởng phòng, trên 50 triệu phải có Giám đốc duyệt. Trước đây phải gõ tay 3 công thức điều kiện trên 3 cạnh nối; giờ chỉ cần click.&#x20;

Tình huống 2 — Quy trình song song theo loại yêu cầu&#x20;

Khi loại yêu cầu là "Khẩn cấp" thì chạy song song nhánh thông báo SMS; ngược lại chỉ chạy nhánh email thường. Người cấu hình dùng popup để xây điều kiện: loại\_yeu\_cau == "Khẩn cấp".&#x20;

Tình huống 3 — Tính toán tự động trên form&#x20;

Trường "Thành tiền" tự động bằng "Số lượng" × "Đơn giá" × (1 − "Chiết khấu %"/100). Người dùng cuối không cần nhập tay; người cấu hình xây công thức bằng popup. &#x20;

<img src="/files/nnPYcK7LPm7msT2OmnCK" alt="" height="375" width="601">

Sau khi nhập công thức người dùng ấn “Xác nhận”. Khi người dùng nhập 2 cột “Số lượng” và “Thành tiền” hệ thống sẽ tự động tính toán.&#x20;

<img src="/files/me1E6uO1P01E44PIzzAi" alt="" height="273" width="601">

&#x20;4\. Hướng dẫn sử dụng chi tiết&#x20;

4.1. Cách mở popup&#x20;

Popup mở ra trong 2 trường hợp:&#x20;

1. Khi cấu hình điều kiện rẽ nhánh / song song trên cạnh nối giữa 2 bước workflow.&#x20;

<img src="/files/P2nHHmlAQpY8GGn1Xp3m" alt="" height="275" width="601">

2. Khi cấu hình trường dữ liệu kiểu Calculated: chọn loại trường "Calculated" → click vào ô nhập công thức → popup tự động mở.&#x20;

<img src="/files/riB4hgcAqroOiQHq3Qmv" alt="" height="368" width="601">

4.2. Cột 1 — Trường dữ liệu&#x20;

Cột bên trái liệt kê toàn bộ trường dữ liệu của workflow. Cách thao tác:&#x20;

* Gõ vào ô tìm kiếm để lọc nhanh theo tên trường — hữu ích khi workflow có nhiều trường.&#x20;
* Trường có bảng con (Table) hoặc Lookup: click vào mũi tên ▶ để mở rộng và xem các cột con.&#x20;

<img src="/files/hbNcRIWOp3FU1YBZj7vx" alt="" height="272" width="601">

* Trường số (Number, Currency, Calculated): có thêm 2 nút bên cạnh — Tính tổng (tự sinh hàm SUM trên cột) và Lấy thông tin (chèn giá trị trường vào công thức).&#x20;
* Tính tổng&#x20;

<img src="/files/6MnMzFkMMfeP1MvwhosA" alt="" height="274" width="601">

* Lấy thông tin&#x20;

<img src="/files/8aO2caA0jqo3CVrNCOIF" alt="" height="273" width="601">

* Trường Lookup: click để chèn thông tin hiển thị của trường.&#x20;

<img src="/files/x5E9NYyypMUwhbfRX3dn" alt="" height="275" width="601">

* Trường multiLookup: có thêm 2 nút Numbering (đánh số thứ tự) và Bullets (gạch đầu dòng).&#x20;
* Numbering&#x20;

<img src="/files/N24uXqntbbja7iLdT2UJ" alt="" height="272" width="601">

* Bullets&#x20;

<img src="/files/Afkl6Wn4JxZShD8mtYyA" alt="" height="274" width="601">

4.3. Cột 2 — Toán tử & Hàm&#x20;

Cột giữa thay đổi nội dung tùy theo chế độ:&#x20;

Chế độ Điều kiện — toán tử và hàm được nhóm thành 5 mục, có thể mở/thu gọn:&#x20;

* Toán tử logic: AND, OR, NOT, ...&#x20;

<img src="/files/ezWQqsbabJiZC1bFzXLw" alt="" height="272" width="601">

* Toán tử so sánh: ==, !=, >, <, >=, <=, ...&#x20;

<img src="/files/fgEkQvtlsydYDdlaMNWF" alt="" height="275" width="601">

* Toán tử tập hợp/chuỗi: in, ...&#x20;

<img src="/files/HzWxUS8W4TVqCAIDpdOo" alt="" height="276" width="601">

* Hàm tính toán/tổng hợp: SUM, COUNT, AVG, ...&#x20;

<img src="/files/2KcC733QJFGQF9raXmT3" alt="" height="276" width="601">

* Hàm xử lý số & logic nâng cao: IF, ROUND, ABS, ...&#x20;

Chế độ Tính toán — hiển thị danh sách phẳng các toán tử tính toán (không nhóm).&#x20;

Có ô tìm kiếm phía trên giúp lọc nhanh khi danh sách dài.&#x20;

4.4. Cột 3 — Mô tả cú pháp&#x20;

Cột bên phải hiển thị mô tả chi tiết và ví dụ sử dụng. Cách hoạt động:&#x20;

* Khi chưa di chuột vào bất kỳ toán tử nào: hiển thị thông báo gợi ý "Di chuột vào toán tử để xem mô tả".&#x20;
* Khi di chuột (hover) vào một toán tử/hàm ở cột 2: nội dung cột 3 tự động cập nhật, hiển thị: tên toán tử, mô tả ý nghĩa, cú pháp đầy đủ, ví dụ minh họa.&#x20;

<img src="/files/RgjslwyNkDdqf6xuTpKF" alt="" height="273" width="601">

2.4.5. Ô nhập công thức (Editor)&#x20;

Ô editor nằm phía trên popup, là nơi công thức được tạo ra theo các thao tác click:&#x20;

* Trường dữ liệu được chèn dưới dạng tag @ (mention) — ví dụ: @soLuong, @khachHang.ten.&#x20;

<img src="/files/JJw6oB4PNbrje4SL0c3i" alt="" height="278" width="602">

* Toán tử/hàm được chèn dưới dạng tag # — ví dụ: #SUM, #AND, #IF.&#x20;

<img src="/files/uPmyHHXwynyLmDK9CXSr" alt="" height="278" width="602">

* Click chuột vào vị trí mong muốn trong editor → click chọn trường hoặc toán tử ở cột 1, 2 → nội dung tự chèn vào đúng vị trí con trỏ.&#x20;
* Fullscreen: nhấn biểu tượng phóng to ở góc trên phải editor để mở rộng vùng làm việc khi công thức dài.&#x20;

<img src="/files/jzyfxnMqeZ4eFJQ2JFLe" alt="" height="274" width="602">

4.6. Xác nhận hoặc Hủy công thứ&#x20;

* Nếu cú pháp đúng: công thức được lưu, popup tự đóng, công thức hiển thị trên giao diện cấu hình.&#x20;
* Nếu có lỗi: hiển thị thông báo màu đỏ gồm 3 phần — tiêu đề lỗi, mô tả lỗi, gợi ý sửa. Đọc kỹ phần gợi ý để chỉnh lại.&#x20;

&#x20;

<img src="/files/IioFylK5MCFNw8ULySOV" alt="" height="276" width="602">

5\. Lưu ý quan trọng&#x20;

| ⚠️ Công thức trống không được phép:  Hệ thống sẽ báo lỗi nếu nhấn 'Xác nhận' mà editor trống. Phải có ít nhất một biểu thức hợp lệ.                                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 📋 Thứ tự thao tác khuyến nghị:  (1) Hover để hiểu hàm trước → (2) Click trường vào editor → (3) Click toán tử/hàm → (4) Xác nhận. Đừng vội bấm xác nhận khi chưa quen. |
| 🔄 Sửa công thức cũ:  Mọi công thức đã lưu đều có thể click mở lại popup để chỉnh sửa, không cần xóa và làm lại từ đầu.                                                 |
