Trong các ứng dụng doanh nghiệp, QR Code và Barcode xuất hiện ở rất nhiều nơi:
hóa đơn bán hàng, phiếu kho, tem sản phẩm, tài sản cố định, vé điện tử, link xác nhận,
hoặc các màn hình cần quét nhanh bằng điện thoại và máy đọc mã vạch.
Trước đây, khi muốn tạo QR Code hoặc Barcode trong Oracle APEX, lập trình viên thường phải dùng
thư viện JavaScript bên ngoài hoặc gọi dịch vụ tạo mã từ bên thứ ba. Cách này vẫn dùng được,
nhưng có thêm rủi ro về bảo mật, phụ thuộc thư viện và khó kiểm soát trong môi trường doanh nghiệp.
Trong Oracle APEX, package APEX_BARCODE giúp tạo QR Code và Barcode trực tiếp bằng
SQL hoặc PL/SQL. Đây là cách làm gọn, sạch và phù hợp với kiến trúc APEX, vì dữ liệu có thể được
lấy trực tiếp từ database và render ngay trong report, form hoặc các luồng in ấn, xuất file.
APEX_BARCODE là gì?
APEX_BARCODE là package có sẵn trong Oracle APEX, dùng để sinh các loại mã như
QR Code, CODE128, EAN8 và EAN13. Kết quả có thể trả về dạng SVG hoặc PNG BLOB.
Với SVG, bạn có thể hiển thị trực tiếp trong HTML report hoặc region của APEX. Với PNG BLOB,
bạn có thể dùng khi cần tải ảnh, nhúng vào tài liệu, in ấn hoặc xuất ra file.
Điểm mạnh của package này là bạn không cần thêm thư viện JavaScript bên ngoài. Việc tạo mã được xử lý
ở phía database/APEX, giúp ứng dụng dễ triển khai và dễ kiểm soát hơn.
Khi nào nên dùng QR Code và Barcode?
QR Code và Barcode có thể dùng cho nhiều tình huống thực tế trong ứng dụng APEX:
- Tạo QR Code cho đường dẫn xác nhận đơn hàng hoặc phiếu giao hàng.
- Tạo Barcode cho mã sản phẩm, mã tài sản hoặc mã tồn kho.
- In mã vạch trên hóa đơn, phiếu xuất kho, phiếu nhập kho.
- Gắn QR Code vào báo cáo để người dùng mở nhanh chi tiết bản ghi.
- Tạo mã cho vé tham dự sự kiện, thẻ nhân viên hoặc tài liệu nội bộ.
- Hỗ trợ thao tác quét nhanh trên thiết bị di động.
Với những hệ thống như POS, inventory, warehouse, service desk hoặc asset management,
QR Code và Barcode giúp giảm nhập liệu thủ công và hạn chế sai sót.
Tạo QR Code dạng SVG bằng SQL
Cách đơn giản nhất là gọi hàm APEX_BARCODE.GET_QRCODE_SVG.
Hàm này trả về SVG, có thể hiển thị trực tiếp trong report.
select apex_barcode.get_qrcode_svg(
p_value => 'https://dokhala.com'
) as qr_code_svg
from dual;
Nếu bạn muốn tạo QR Code cho từng dòng dữ liệu, ví dụ mỗi sản phẩm có một mã riêng,
có thể dùng trong query như sau:
select product_id,
product_name,
product_code,
apex_barcode.get_qrcode_svg(
p_value => product_code
) as qr_code
from products;
Trong APEX report, cột QR_CODE cần được cấu hình để hiển thị HTML/SVG,
thay vì escape toàn bộ nội dung.
Tạo Barcode CODE128
Với barcode dạng mã vạch truyền thống, bạn có thể dùng CODE128.
Đây là loại barcode phổ biến cho mã sản phẩm, mã đơn hàng hoặc mã vận chuyển.
select product_id,
product_name,
product_code,
apex_barcode.get_code128_svg(
p_value => product_code
) as barcode_svg
from products;
Khi hiển thị trong APEX report, mỗi dòng sẽ có barcode tương ứng với mã sản phẩm.
Người dùng có thể in report hoặc quét trực tiếp từ màn hình nếu kích thước đủ rõ.
Hiển thị trong Classic Report hoặc Interactive Report
Khi dùng SVG trong report, bạn cần lưu ý thuộc tính escaping của cột.
Nếu APEX escape SVG như text bình thường, người dùng sẽ chỉ thấy đoạn mã XML/SVG thay vì hình ảnh.
Với Classic Report hoặc Interactive Report, bạn có thể cấu hình cột barcode/QR Code theo hướng:
- Không escape HTML nếu dữ liệu SVG được tạo từ nguồn tin cậy.
- Đặt heading rõ ràng như “QR Code” hoặc “Barcode”.
- Giới hạn kích thước hiển thị bằng CSS nếu cần.
Ví dụ thêm class cho vùng report hoặc dùng CSS:
.barcode-cell svg,
.qr-cell svg {
max-width: 120px;
height: auto;
}
Tạo QR Code cho URL chi tiết bản ghi
Một use case rất hay trong APEX là tạo QR Code dẫn đến trang chi tiết của bản ghi.
Ví dụ, mỗi đơn hàng có một QR Code. Khi quét mã, người dùng mở ngay trang chi tiết đơn hàng.
select order_id,
customer_name,
order_status,
apex_barcode.get_qrcode_svg(
p_value => 'https://dokhala.com/orders/' || order_id
) as order_qr
from orders;
Với hệ thống nội bộ, bạn có thể tạo QR Code trỏ về URL có checksum hoặc route bảo mật,
tránh để người dùng tự sửa URL và truy cập dữ liệu không được phép.
SVG hay PNG: nên chọn loại nào?
SVG phù hợp khi bạn muốn hiển thị trực tiếp trong giao diện web,
report hoặc region HTML. SVG nhẹ, rõ nét khi phóng to và dễ style bằng CSS.
PNG BLOB phù hợp khi bạn cần tạo file ảnh, tải xuống, nhúng vào tài liệu PDF,
hoặc phục vụ cho quy trình in ấn.
Trong phần lớn tình huống hiển thị trên màn hình APEX, SVG là lựa chọn tiện nhất.
Nếu mục tiêu là xuất file hoặc tích hợp với hệ thống in, PNG sẽ phù hợp hơn.
Lưu ý về bảo mật
QR Code thường chứa URL hoặc dữ liệu nghiệp vụ, vì vậy không nên đưa trực tiếp thông tin nhạy cảm
vào mã QR. Ví dụ, không nên nhúng số điện thoại, token dài hạn, thông tin tài chính hoặc dữ liệu cá nhân
nếu không thật sự cần thiết.
Cách an toàn hơn là QR Code chỉ chứa một URL hoặc mã định danh ngắn. Khi người dùng mở URL,
ứng dụng APEX sẽ kiểm tra quyền truy cập, session, authorization scheme và dữ liệu hợp lệ ở phía server.
Với barcode sản phẩm hoặc barcode kho hàng, hãy đảm bảo mã được tạo ra là duy nhất,
dễ quét và không bị trùng giữa các nhóm dữ liệu quan trọng.
Gợi ý áp dụng trong ứng dụng Dokhala/POS
Nếu bạn đang xây dựng ứng dụng POS hoặc quản lý kho bằng Oracle APEX,
APEX_BARCODE có thể dùng cho các tính năng như:
- In barcode cho sản phẩm.
- Tạo QR Code cho hóa đơn bán hàng.
- Quét mã để mở nhanh chi tiết sản phẩm.
- Gắn QR Code vào phiếu nhập kho hoặc phiếu xuất kho.
- Tạo mã cho khách hàng, đơn hàng hoặc chương trình khuyến mãi.
Đây là một tính năng nhỏ nhưng rất thực tế, vì nó kết nối dữ liệu trong database với thao tác vật lý
ngoài đời như quét mã, in tem, kiểm hàng và tra cứu nhanh.
Kết luận
APEX_BARCODE giúp việc tạo QR Code và Barcode trong Oracle APEX trở nên đơn giản hơn nhiều.
Thay vì phụ thuộc vào thư viện bên ngoài, bạn có thể sinh mã trực tiếp bằng SQL/PLSQL,
hiển thị trong report, form hoặc dùng trong quy trình in ấn.
Với các ứng dụng doanh nghiệp, đặc biệt là POS, inventory, asset management, logistics và reporting,
đây là một package rất đáng biết. Khi kết hợp đúng với authorization, URL bảo mật và thiết kế dữ liệu tốt,
QR Code và Barcode có thể giúp ứng dụng APEX trở nên tiện dụng và chuyên nghiệp hơn.