Optional Fields Trong Sage 300: Lưu Dữ Liệu Đặc Thù Mà Không Cần Customization
Cần thêm “Mã dự án”, “Số hợp đồng”, hay “Ghi chú hải quan” vào từng phiếu kế toán mà không muốn can thiệp SDK? Optional Fields là tính năng tiêu chuẩn của Sage 300 — cấu hình một lần, dùng mãi, không ảnh hưởng nâng cấp phiên bản.
1. Optional Fields Là Gì Và Tại Sao Doanh Nghiệp Việt Nam Cần?
Mỗi doanh nghiệp có những thông tin nghiệp vụ riêng mà hệ thống ERP tiêu chuẩn không có sẵn trường. Ví dụ điển hình:
- Kế toán cần ghi Mã dự án vào từng phiếu chi phí G/L — nhưng bút toán G/L tiêu chuẩn không có trường này
- Phòng xuất nhập khẩu cần lưu Số tờ khai hải quan vào từng hóa đơn mua hàng A/P
- Kế toán thuế cần đánh dấu Trạng thái hóa đơn điện tử (CQT đã chấp nhận / pending) trên từng invoice A/R
- Sales cần ghi Mã hợp đồng khung vào từng đơn hàng O/E
Thay vì yêu cầu lập trình SDK (tốn chi phí + phức tạp nâng cấp), Sage 300 cung cấp Optional Fields — cho phép tự định nghĩa trường dữ liệu tùy chỉnh và gắn vào transaction header hoặc detail line của từng module. Doanh nghiệp Việt Nam — đặc biệt các đơn vị áp dụng chế độ kế toán TT133 — thường dùng Optional Fields để bổ sung trường quản lý nội bộ mà không làm phức tạp Chart of Accounts.
2. Các Module Hỗ Trợ Optional Fields
Nguồn: Sage 300 System Manager Help / help.sage.com. Khả năng cụ thể có thể khác nhau theo phiên bản Sage 300.
3. Hướng Dẫn Thiết Lập Optional Fields — Từng Bước
Bước A: Định nghĩa Optional Field trong Common Services
-
Common Services → Optional Fields Mở màn hình Optional Fields Setup. Đây là nơi định nghĩa tập trung — mọi module đều chia sẻ danh sách này. Mỗi Optional Field cần: mã trường (tối đa 12 ký tự), tên hiển thị, loại dữ liệu.
-
Chọn loại dữ liệu (Type) Sage 300 hỗ trợ các kiểu: Text (văn bản, tối đa 60 ký tự), Amount (số tiền, 18 chữ số thập phân), Integer (số nguyên), Yes/No (Boolean), Date (ngày), Time (giờ). Chọn đúng kiểu giúp validation và báo cáo chính xác.
-
Cấu hình Validation Table (nếu cần) Tick “Validate” để bật bảng giá trị hợp lệ — ví dụ: trường “Loại chi phí” chỉ cho phép nhập “DIRECT”, “INDIRECT”, “OVERHEAD”. Ngăn người dùng nhập sai mã và giúp filter báo cáo chuẩn xác.
-
Đặt Default Value và Required Nhập Default Value nếu trường có giá trị thông dụng (ví dụ: Department mặc định = “HO” cho trụ sở chính). Tick “Required” nếu muốn bắt buộc nhập — Sage 300 sẽ không cho Save transaction nếu thiếu trường này.
Bước B: Kích hoạt Optional Field trong từng Module
Sau khi định nghĩa trong Common Services, cần “bật” field đó cho từng module muốn dùng:
| Module | Đường dẫn kích hoạt | Level |
|---|---|---|
| General Ledger | G/L → G/L Setup → Optional Fields | Transaction Header / Detail |
| Accounts Receivable | A/R → A/R Setup → Optional Fields | Invoice Header / Detail |
| Accounts Payable | A/P → A/P Setup → Optional Fields | Invoice Header / Detail |
| Order Entry | O/E → O/E Setup → Optional Fields | Order Header / Order Detail / Shipment |
| Purchase Orders | P/O → P/O Setup → Optional Fields | PO Header / PO Detail / Receipt |
| Inventory Control | I/C → I/C Setup → Optional Fields | Item Master / Transactions |
Lưu ý: Trước khi kích hoạt Optional Fields cho G/L, đảm bảo đã hoàn thành việc cấu hình Chart of Accounts phù hợp với chế độ kế toán đang áp dụng (TT133 hoặc TT99/2025).
Bước C: Thiết lập Auto-Insert và propagation
Trong màn hình Optional Fields của từng module, tick “Auto Insert” để trường tự xuất hiện trong mọi transaction mới (không cần người dùng thêm thủ công). Sage 300 cũng hỗ trợ propagation — khi tạo hóa đơn A/R từ O/E shipment, Optional Field từ O/E header có thể tự “copy sang” A/R invoice nếu cấu hình đúng. Kỹ thuật này đặc biệt hữu ích khi kết hợp với mapping VAS vào Sage 300 General Ledger để phân tích chi phí đa chiều.
4. Năm Use Case Phổ Biến Cho Doanh Nghiệp Việt Nam
Mã dự án / Project Code
Thêm trường PRJCODE (Text, 12 ký tự) vào G/L Journal và A/P Invoice header. Lọc chi phí theo dự án trực tiếp từ G/L — không cần mở thêm phân hệ Project Job Cost nếu dự án đơn giản.
Số tờ khai hải quan
Thêm CUSTOMDECL (Text, 20 ký tự) vào A/P Invoice header cho hàng nhập khẩu. Tra cứu tờ khai theo hóa đơn thuế nhà thầu, đối chiếu với C/O, sẵn sàng cho thanh tra thuế.
Mã hợp đồng khung
Thêm CONTRACTNO (Text, 20 ký tự) vào O/E Order Header và A/R Invoice header. Tất cả đơn hàng và hóa đơn trong một hợp đồng khung được gắn chung mã — báo cáo doanh thu theo hợp đồng trong Sage Intelligence.
Trạng thái hóa đơn điện tử
Thêm EINVSTATUS (Text, Validation: “PENDING” / “APPROVED” / “CANCELLED”) vào A/R Invoice header. Đội kế toán cập nhật trạng thái khi CQT phản hồi — có thể filter hóa đơn chưa được chấp nhận chưa đủ điều kiện khấu trừ.
Mã trung tâm chi phí nội bộ
Thêm COSTCENTER (Text, Validation Table: danh sách phòng ban) vào G/L Journal Detail và A/P Detail. Phân tích chi phí theo trung tâm chi phí song song với segment phòng ban — hai chiều phân tích độc lập nhau.
5. Optional Fields Trong Báo Cáo
Dữ liệu Optional Fields được lưu vào cơ sở dữ liệu Sage 300 và có thể truy xuất trong:
| Công cụ báo cáo | Cách truy xuất Optional Fields | Mức độ |
|---|---|---|
| Sage Intelligence | Connector wizard cho phép join bảng Optional Field vào data source | Phổ biến nhất cho báo cáo Excel |
| Crystal Reports | Join với bảng XXOPTF (XX = prefix module) trong database Sage 300 | Linh hoạt, in trực tiếp từ Sage |
| G/L Drilldown | Xem Optional Fields khi drilldown vào từng posting detail | Xem trực tiếp trong Sage 300 |
| SQL Query trực tiếp | Query bảng optional field theo module (cần DBA quyền đọc DB) | Dành cho IT / BI team |
6. Best Practices Và Giới Hạn Cần Biết
| Khía cạnh | Khuyến nghị / Giới hạn |
|---|---|
| Số lượng Optional Fields | Không nên quá 10–12 fields / module — nhiều hơn sẽ làm màn hình nhập liệu rối và ảnh hưởng tốc độ |
| Đổi tên field code | KHÔNG thể đổi code sau khi đã có giao dịch. Lập kế hoạch naming convention trước khi go-live |
| Xóa Optional Field | Có thể “deactivate” (inactive) nhưng không xóa được nếu đã có dữ liệu — dữ liệu cũ vẫn còn trong DB |
| Nâng cấp Sage 300 | Optional Fields tồn tại qua các lần nâng cấp — dữ liệu không bị mất khi upgrade phiên bản |
| Import dữ liệu | Có thể import giao dịch kèm Optional Fields qua Sage 300 Import function hoặc SDK Import Wizard |
| Bảo mật | Quyền xem / sửa Optional Fields tuân theo Security Group của user — không có permission riêng cho từng field |
7. Checklist Thiết Lập Optional Fields
- Lập danh sách các trường dữ liệu cần thêm và module sử dụng trước khi bắt đầu cấu hình
- Đặt naming convention cho field code (ngắn, tiếng Anh, không dấu, tối đa 12 ký tự)
- Xác định kiểu dữ liệu phù hợp: Text / Amount / Integer / Yes-No / Date / Time
- Tạo Validation Table cho trường có danh sách giá trị cố định (tránh nhập tay sai mã)
- Quyết định Required / Not Required và Default Value cho từng field
- Kích hoạt Optional Field trong từng module tương ứng (G/L, A/R, A/P, O/E, P/O, I/C)
- Bật Auto Insert nếu muốn field tự xuất hiện trong mọi transaction mới
- Test nhập giao dịch thử và kiểm tra dữ liệu lưu đúng chưa
- Cập nhật template báo cáo (Sage Intelligence hoặc Crystal) để hiển thị Optional Field
- Hướng dẫn user cuối cách nhập và ý nghĩa từng trường — viết SOP ngắn
Cần Thiết Kế Optional Fields Cho Nghiệp Vụ Đặc Thù?
ERP Sài Gòn tư vấn cấu hình Optional Fields phù hợp theo từng ngành: sản xuất, thương mại, dịch vụ, xây dựng. Hỗ trợ thiết kế naming convention, validation table, và tích hợp vào báo cáo Sage Intelligence.
Đặt Lịch Tư Vấn Miễn Phí →Câu Hỏi Thường Gặp — Optional Fields Sage 300
Optional Fields trong Sage 300 có phải mua add-on riêng không?
Không. Optional Fields là tính năng tiêu chuẩn có sẵn trong Sage 300, không cần mua thêm module hay license riêng. Chức năng này được kích hoạt thông qua Common Services — miễn là bạn đang dùng Sage 300 bản Standard, Advanced hoặc Premium với các module tương ứng. (Nguồn: help.sage.com, Sage 300 System Manager documentation)
Optional Fields có bị mất khi nâng cấp phiên bản Sage 300 không?
Không. Optional Fields là tính năng kiến trúc của Sage 300, dữ liệu được lưu vào cơ sở dữ liệu SQL Server theo cấu trúc tiêu chuẩn. Khi nâng cấp phiên bản (ví dụ từ Sage 300 2020 lên 2024), quá trình database upgrade sẽ migrate dữ liệu Optional Fields sang cấu trúc mới — không mất dữ liệu. Đây là ưu điểm lớn so với SDK customization vốn phải recompile sau mỗi lần nâng cấp.
Có thể dùng Optional Fields để thay thế hoàn toàn Sage 300 SDK customization không?
Một phần. Optional Fields đáp ứng nhu cầu thêm trường dữ liệu đơn giản mà không cần code. Tuy nhiên, nếu yêu cầu phức tạp hơn — như tự động tính toán giá trị, thêm validation logic phức tạp, thay đổi workflow hoặc giao diện — thì vẫn cần SDK. Nguyên tắc: bắt đầu với Optional Fields trước, chỉ đến SDK khi Optional Fields không đủ.
Dữ liệu Optional Fields nằm ở đâu trong database Sage 300?
Dữ liệu Optional Fields được lưu trong các bảng riêng có tên theo pattern module. Ví dụ: G/L lưu trong bảng optional field của G/L, A/R lưu trong bảng A/R optional field tương ứng. Khi viết báo cáo Crystal Reports hoặc SQL query, cần join bảng giao dịch chính với bảng Optional Field tương ứng qua các khóa transaction. Đội IT hoặc đối tác triển khai có thể cung cấp cấu trúc bảng cụ thể theo phiên bản Sage 300 đang dùng.
Có thể import dữ liệu Optional Fields từ Excel vào Sage 300 không?
Có. Sage 300 Import Wizard hỗ trợ import giao dịch kèm Optional Fields — bạn cần map đúng cột Optional Field trong file Excel với code field đã định nghĩa. Một số module yêu cầu cột Optional Field có định dạng đặc biệt (ví dụ: cột tên phải là “OPTFIELD” + mã field). Đội tư vấn ERP Sài Gòn có template import mẫu cho các use case phổ biến.
- Sage 300 ERP — System Manager Help: Optional Fields (help.sage.com)
- Sage 300 — General Ledger User Guide: Optional Fields Setup
- Sage 300 — Accounts Receivable / Accounts Payable User Guide: Optional Fields
- Sage 300 — Order Entry / Purchase Orders User Guide: Optional Fields