Các mẫu dùng trong EzyDelivery
Back to ezydeliveryBài viết này giới thiệu các mẫu (template) mà EzyDelivery sử dụng, mỗi mẫu dùng ở đâu, có cấu trúc như thế nào và cách tùy chỉnh để file Excel xuất ra hoặc tin nhắn gửi cho khách hàng đúng với nhu cầu của bạn.
EzyDelivery dùng 2 loại mẫu:
| Loại mẫu | Kiểu (`type`) | Định dạng nội dung | Dùng cho |
|---|---|---|---|
| Mẫu trường dữ liệu xuất | EXPORTABLE_DATA_FIELDS | JSON | Quy định các cột của file Excel khi xuất mã vận đơn, bao hàng, khách hàng được phân chia mã đơn. |
| Mẫu tin nhắn OA | OA_RESPONSE_MESSAGE | Văn bản hoặc Thymeleaf | Nội dung tin nhắn gửi cho khách hàng qua OA (ví dụ Zalo OA): báo mã vận đơn mới, tra cứu mã vận đơn, theo dõi chuyển phát nhanh, báo công nợ. |
Mỗi mẫu được xác định bởi cặp kiểu + tên mẫu (
templateName). EzyDelivery tìm mẫu theo đúng cặp này, vì vậy không được đổi tên của các mẫu mặc định.Mẫu được tạo tự động
Khi plugin EzyDelivery (admin) khởi động, hệ thống tự tạo các mẫu mặc định nếu chưa có. Điều này có nghĩa là:
- Bạn có thể sửa nội dung mẫu mặc định, nội dung đã sửa sẽ được giữ nguyên sau khi khởi động lại.
- Nếu bạn xóa một mẫu mặc định, lần khởi động tiếp theo hệ thống sẽ tạo lại mẫu đó với nội dung gốc.
- Hai mẫu tin nhắn
new_customer_messagevàpayment_messagekhông được tạo tự động, bạn cần tự tạo nếu muốn dùng (xem phần Các mẫu tin nhắn OA).
Các mẫu được xem, sửa và tạo mới qua plugin EzySupport (xem phần tiếp theo).
Cập nhật mẫu qua EzySupport
Trang quản trị cần cài plugin EzySupport. Các mẫu nằm ở menu Các mẫu của EzySupport (
/ezysupport/templates).
Tìm mẫu
- Vào Các mẫu (
/ezysupport/templates). - Ở ô Kiểu, chọn
EXPORTABLE_DATA_FIELDShoặcOA_RESPONSE_MESSAGE. Có thể mở thẳng đường dẫn đã lọc sẵn:/ezysupport/templates?type=EXPORTABLE_DATA_FIELDS. - Gõ tên mẫu (ví dụ
delivery_order_code) vào ô Từ khoá để lọc nhanh.
Mỗi dòng trong danh sách có các nút xem, sửa và xóa ở cột cuối.
Sửa mẫu có sẵn
- Bấm vào tên mẫu hoặc biểu tượng sửa để mở trang chi tiết, rồi bấm Sửa (
/ezysupport/templates/{id}/edit). - Sửa ô Nội dung:
- Mẫu
EXPORTABLE_DATA_FIELDS: sửa mảng JSON các cột. - Mẫu
OA_RESPONSE_MESSAGE: sửa nội dung tin nhắn.
- Mẫu
- Bấm Cập nhật.
Khi sửa mẫu có sẵn, giữ nguyên các ô sau:
| Ô | Lý do |
|---|---|
| Tên mẫu | EzyDelivery tìm mẫu theo tên. Đổi tên thì hệ thống không tìm thấy mẫu, và lần khởi động sau sẽ tạo lại một mẫu mặc định mới. |
| Kiểu | Đổi kiểu cũng làm hệ thống không tìm thấy mẫu. Riêng mẫu được chọn cho đại lý, nếu đổi kiểu thì đại lý quay về dùng mẫu mặc định. |
| Kiểu tiêu đề và nội dung | Mẫu EXPORTABLE_DATA_FIELDS là JSON. Mẫu track_shipment_message là THYMELEAF. Đổi kiểu này làm nội dung được hiểu sai. |
Ô Tiêu đề chỉ để hiển thị trong danh sách và trong ô chọn mẫu ở trang chi tiết đại lý, có thể đổi thoải mái.
Xem trước mẫu tin nhắn
Với mẫu
OA_RESPONSE_MESSAGE, bạn có thể xem trước nội dung tin nhắn trước khi lưu:- Ở ô Các tham số, nhập giá trị thử cho các biến dưới dạng JSON, ví dụ:
{ "vocative": "anh", "displayName": "Nguyễn Văn A", "deliveryOrderCodes": "7712345678n7712345679", "totalWeight": "2.5", "shippingRate": "30,000 VND", "totalShippingCost": "75,000 VND" } - Bấm Xem trước ở phía trên ô nội dung để xem tin nhắn sau khi chèn biến. Bấm Trình soạn thảo để quay lại sửa.
Ô Các tham số chỉ dùng để xem trước, không ảnh hưởng tới tin nhắn thật.
Tạo mẫu mới
Dùng khi cần tạo mẫu riêng cho đại lý, hoặc tạo các mẫu tin nhắn không có sẵn (
new_customer_message, payment_message).- Ở trang Các mẫu, bấm Thêm mới.
- Điền các ô:
Ô Mẫu cột Excel cho đại lý Mẫu tin nhắn OA Tên mẫu Tên mới, chưa trùng, ví dụ agency_hn_delivery_order_codeĐúng tên hệ thống cần, ví dụ new_customer_messageKiểu EXPORTABLE_DATA_FIELDSOA_RESPONSE_MESSAGEKiểu tiêu đề và nội dung JSONVăn bản thường, hoặc THYMELEAFnếu cần vòng lặpTiêu đề Tên dễ nhận biết, ví dụ Mã vận đơn - Đại lý Hà Nội Tên dễ nhận biết Nội dung Mảng JSON các cột Nội dung tin nhắn Ô Mẫu cột Excel cho đại lý Mẫu tin nhắn OA Tên mẫu Tên mới, chưa trùng, ví dụ agency_hn_delivery_order_codeĐúng tên hệ thống cần, ví dụ new_customer_messageKiểu EXPORTABLE_DATA_FIELDSOA_RESPONSE_MESSAGEKiểu tiêu đề và nội dung JSONVăn bản thường, hoặc THYMELEAFnếu cần vòng lặpTiêu đề Tên dễ nhận biết, ví dụ Mã vận đơn - Đại lý Hà Nội Tên dễ nhận biết Nội dung Mảng JSON các cột Nội dung tin nhắn - Bấm Lưu.
Mẹo: để tạo mẫu cột Excel cho đại lý nhanh, mở mẫu mặc định (
delivery_order_code hoặc product_package), sao chép toàn bộ nội dung, rồi dán vào mẫu mới và chỉnh sửa.
Xóa mẫu
Bấm biểu tượng thùng rác ở dòng của mẫu trong danh sách.
- Xóa mẫu mặc định: lần khởi động sau, hệ thống tạo lại mẫu với nội dung gốc. Đây cũng là cách nhanh để khôi phục mẫu mặc định sau khi sửa sai.
- Xóa mẫu đang được chọn cho đại lý: đại lý tự quay về dùng mẫu mặc định.
- Xóa
new_customer_messagehoặcpayment_message: khách hàng sẽ không nhận được tin trả lời trong các trường hợp tương ứng.
Khi nào thay đổi có hiệu lực
- Mẫu cột Excel: được nạp khi mở trang có nút xuất. Sau khi sửa mẫu, tải lại trang Các bao hàng, Các phương tiện, Phân chia mã đơn hoặc trang vận đơn trên website đang mở, rồi xuất lại.
- Mẫu tin nhắn OA: áp dụng cho tin nhắn gửi đi tiếp theo.
Các mẫu trường dữ liệu xuất
Danh sách mẫu
| Tên mẫu | Tiêu đề mặc định | Dùng ở |
|---|---|---|
delivery_order_code | Delivery order code exportable fields | File Excel các mã vận đơn (khai báo hải quan). |
product_package | Product package exportable fields | File Excel các bao hàng (khai báo hải quan). |
order_code_allocation_customer | Order code allocation customer exportable fields | File Excel danh sách khách hàng được phân chia mã đơn. |
user_delivery_order_code | User delivery order code exportable fields | File Excel mã vận đơn mà khách hàng tự xuất trên website. |
Nơi xuất file
Mã vận đơn và bao hàng (
delivery_order_code và product_package) luôn được xuất cùng lúc: mỗi lần bấm xuất, trình duyệt sẽ tải về 2 file, một file mã vận đơn và một file bao hàng. Nút xuất có ở:- Các bao hàng (
/ezydelivery/product-packages): chọn các bao hàng rồi bấm Xuất các mã vận đơn ra Excel. - Các phương tiện: chọn các phương tiện rồi bấm Xuất các mã vận đơn ra Excel, hoặc bấm biểu tượng Excel ở từng dòng. Khi xuất cho đúng một phương tiện, tên file được thêm tiền tố là biển số xe, ví dụ
29C12345_D-20261009-120.xlsx. - Các đại lý → Các bao hàng của đại lý: chọn các bao hàng rồi bấm Xuất các mã vận đơn ra Excel.
Khách hàng được phân chia mã đơn (
order_code_allocation_customer): vào Phân chia mã đơn (/ezydelivery/allocate-delivery-order-codes), bấm Xuất ra Excel ở danh sách khách hàng. Nút này chỉ hiển thị với tài khoản có quyền truy cập API xuất dữ liệu.
Mã vận đơn của khách hàng (
user_delivery_order_code): khách hàng đăng nhập website, vào trang danh sách vận đơn của tài khoản và bấm Xuất ra Excel.Cấu trúc mẫu
Nội dung mẫu là một mảng JSON. Mỗi phần tử là một cột trong file Excel, thứ tự các phần tử chính là thứ tự các cột.
[
{
"title": "PACKAGE CODE",
"field": "packageLabel",
"defaultValue": ""
},
{
"title": "CREATED AT",
"field": "createdAt",
"defaultValue": "",
"dateTimeFormat": "YYYY-MM-DD HH:mm:ss"
}
]
| Thuộc tính | Bắt buộc | Ý nghĩa |
|---|---|---|
title | Có | Tiêu đề cột, nằm ở dòng đầu tiên của file. |
field | Có | Đường dẫn tới dữ liệu cần lấy. Dữ liệu lồng nhau được nối bằng dấu chấm, ví dụ product.productName, receiver.phoneNumber. |
defaultValue | Có | Giá trị dùng khi dữ liệu trống hoặc field để trống. |
dateTimeFormat | Không | Định dạng ngày giờ cho các trường thời gian, theo cú pháp của thư viện moment, ví dụ YYYY-MM-DD HH:mm:ss, DD/MM/YYYY. |
Một số mẹo:
- Cột có giá trị cố định: để
fieldtrống và đặt giá trị vàodefaultValue. Ví dụ mẫuproduct_packagemặc định có cộtSHIPPING METHODluôn làVCN. - Cột để trống cho người dùng tự điền: để cả
fieldvàdefaultValuetrống. Ví dụ cộtPRODUCT NAMEtrong mẫudelivery_order_codemặc định. - Bỏ cột: xóa phần tử tương ứng khỏi mảng.
- Đổi tên cột: chỉ sửa
title, giữ nguyênfield. - Giá trị
0cũng được coi là trống, nên cột số lượng, trọng lượng nên códefaultValuelà"0". - Nội dung phải là JSON hợp lệ (dùng dấu nháy kép, không có dấu phẩy thừa ở phần tử cuối). Nếu JSON sai, trang chứa nút xuất sẽ bị lỗi script và không xuất được file.
Các trường thường dùng
Mẫu
delivery_order_code:| `field` | Dữ liệu |
|---|---|
orderCode | Mã vận đơn của người gửi. |
orderIdText12 | Mã vận đơn phía người nhận. |
productPackage.packageLabel | Mã bao hàng chứa mã vận đơn. |
product.productName | Tên sản phẩm. |
product.weightInKg | Trọng lượng (kg). |
order.totalProductQuantity | Số lượng sản phẩm. |
order.formattedTotalAmountMoney | Giá trị hàng đã định dạng. |
from, to | Nơi gửi, nơi nhận. |
warehouse.addressShort, warehouse.nameAndAddressDetails | Địa chỉ kho (rút gọn, chi tiết). |
receiver.fullName, receiver.address, receiver.phoneNumber | Tên, địa chỉ, số điện thoại khách hàng. |
district, province, recipientName | Quận/huyện, tỉnh/thành phố, tên người nhận. |
Mẫu
product_package:| `field` | Dữ liệu |
|---|---|
packageLabel | Mã bao hàng. |
numberOfProducts | Số mã vận đơn trong bao. |
formattedWeightInKg | Trọng lượng bao (kg). |
createdAt | Thời gian tạo bao (nên kèm dateTimeFormat). |
Mẫu
order_code_allocation_customer:| `field` | Dữ liệu |
|---|---|
customerCode | Mã khách hàng. |
numberOfDeliveryOrders | Số mã vận đơn. |
totalWeightInKg | Tổng trọng lượng (kg). |
Mẫu
user_delivery_order_code:| `field` | Dữ liệu |
|---|---|
orderCode, trackingId | Mã vận đơn người gửi, mã theo dõi phía người nhận. |
productName, userEnteredProductName | Tên sản phẩm, tên sản phẩm khách hàng tự nhập. |
quantity, userEnteredQuantity | Số lượng, số lượng khách hàng tự nhập. |
weightInKg, notes | Trọng lượng (kg), ghi chú. |
status, statusGroup | Trạng thái, nhóm trạng thái. |
estimatedDomesticWarehouseArrivalTime, estimatedReceiptTime, atReceivingWarehouseTime, exitReceivingWarehouseTime | Các mốc thời gian (nên kèm dateTimeFormat). |
Danh sách đầy đủ có trong nội dung các mẫu mặc định. Khi cần thêm trường khác, hãy sao chép mẫu mặc định rồi chỉnh sửa từ đó.
Mẫu riêng cho từng đại lý
Mỗi đại lý có thể xuất file theo cột riêng, khác với mẫu mặc định, cho mã vận đơn và bao hàng.
- Vào EzySupport → Các mẫu và tạo mẫu mới (xem phần Tạo mẫu mới) với kiểu
EXPORTABLE_DATA_FIELDS, tên mẫu khác với các tên mặc định (ví dụagency_hn_delivery_order_code), nội dung JSON theo cấu trúc ở trên. Nên tạo 2 mẫu: một cho mã vận đơn và một cho bao hàng. - Vào Các đại lý → Chi tiết đại lý.
- Ở ô Mẫu trường dữ liệu xuất mã vận đơn và Mẫu trường dữ liệu xuất bao hàng, gõ tên mẫu để tìm và chọn. Ô chỉ gợi ý các mẫu kiểu
EXPORTABLE_DATA_FIELDS. - Bấm Lưu.
Để trống một ô (hiển thị Mặc định) nghĩa là đại lý dùng mẫu mặc định cho loại dữ liệu đó.
Mẫu của đại lý được áp dụng ở:
- Các đại lý → Các bao hàng của đại lý.
- Các bao hàng, khi tài khoản quản trị đang đăng nhập là thành viên của đại lý.
Trang Các phương tiện luôn dùng mẫu mặc định.
Nếu mẫu đã chọn bị xóa hoặc bị đổi sang kiểu khác, hệ thống tự quay về dùng mẫu mặc định.
Tên file xuất
Tên file được cấu hình ở Quản lý vận chuyển → Cài đặt (
/ezydelivery/settings), phần Nhập mã vận đơn.| Trường | Mặc định | Biến có thể dùng |
|---|---|---|
| Mẫu tên tập tin các mã vận đơn khai báo hải quan | D-- | , , |
| Mẫu tên tập tin các bao hàng khai báo hải quan | P-- | , , |
| Mẫu tên tập tin các khách hàng phân chia mã đơn | Order-Code-Allocation-Customer-- | , , |
| Mẫu tên tập tin các mã vận đơn của khách hàng | User-Delivery-Order-Code-- | , , |
-
có dạngYYYYMMDD, ví dụ20261009. -
có dạngYYYYMMDD_HH_mm_ss, ví dụ20261009_14_30_05. - Biến đếm số mã vận đơn ở dòng đầu là
(không có chữy), khác vớiở dòng cuối. Hãy gõ đúng tên biến của từng dòng. - Đuôi
.xlsxđược tự động thêm vào, không cần ghi trong mẫu.
Các mẫu tin nhắn OA
Các mẫu này dùng khi EzyDelivery được kết nối với OA (ví dụ Zalo OA), để tự trả lời hoặc chủ động gửi tin nhắn cho khách hàng.
Danh sách mẫu
| Tên mẫu | Tạo tự động | Khi nào được gửi |
|---|---|---|
new_customer_message | Không | Khách hàng nhắn số điện thoại hoặc email đã đăng ký nhưng chưa có phần hàng nào được phân chia tại kho. |
new_delivery_order_codes_message | Có | Khách hàng nhắn số điện thoại hoặc email và đã có phần hàng được phân chia tại kho. Cũng được gửi chủ động khi có phần hàng mới cho khách hàng. Tin nhắn trả lời kèm ảnh QR thanh toán. |
payment_message | Không | Dùng thay cho new_delivery_order_codes_message khi nội dung khách hàng nhắn là một lệnh thanh toán. |
search_delivery_order_code_message | Có | Khách hàng nhắn # kèm mã vận đơn (ví dụ #7712345678) hoặc nhắn một mã vận đơn dạng số dài, để tra cứu trạng thái. |
track_shipment_message | Có | Khách hàng nhắn lệnh theo dõi chuyển phát nhanh, mặc định là /cpn. |
outstanding_balance_notice_message | Có | Gửi thông báo công nợ cho khách hàng. |
delivery_order_codes_message | Có | Được tạo sẵn, hiện không có luồng nào trong EzyDelivery tự gửi mẫu này. |
new_delivery_order_item | Có | Được tạo sẵn, hiện không có luồng nào trong EzyDelivery tự gửi mẫu này. |
Nếu hệ thống cần gửi một mẫu mà mẫu đó không tồn tại (ví dụ chưa tạo
new_customer_message), khách hàng sẽ không nhận được tin trả lời. Vì vậy nên tạo đủ new_customer_message và payment_message ngay khi bật OA.Cú pháp nội dung
Mẫu tin nhắn có 2 dạng.
Văn bản thường (mặc định): chèn biến bằng
, xuống dòng bằng n.
Hello ! Below are your new delivery order codes:
The total weight is: .
Biến thời gian có thể kèm định dạng theo cú pháp
hoặc , ví dụ .Thymeleaf: đặt kiểu nội dung (
contentType) là THYMELEAF khi cần lặp qua danh sách hoặc dùng bản dịch. Mẫu track_shipment_message mặc định dùng dạng này:<th:block th:each="shipment : "> Tracking ID: [[]] Current location: [[]] Status: [[#{}]] </th:block>
Các bản dịch
#{...} dùng ngôn ngữ mặc định của website.Các biến thường dùng
| Biến | Có trong mẫu | Ý nghĩa |
|---|---|---|
displayName, username, phone | Hầu hết các mẫu | Tên hiển thị, tên đăng nhập (mã khách hàng), số điện thoại. |
vocative, customerCode | Các mẫu gửi cho khách hàng đã có hồ sơ | Danh xưng, mã khách hàng (lấy từ thông tin khách hàng, có thể trống nếu chưa khai báo). |
deliveryOrderCodes | new_delivery_order_codes_message, payment_message | Danh sách mã vận đơn, mỗi mã một dòng. |
totalWeight, shippingRate, totalShippingCost | new_delivery_order_codes_message, payment_message | Tổng trọng lượng, đơn giá vận chuyển, tổng tiền. |
websiteUrl | new_delivery_order_codes_message, payment_message, search_delivery_order_code_message | Địa chỉ website. |
deliveryOrderCode, statusGroup | search_delivery_order_code_message | Mã vận đơn được tra cứu, nhóm trạng thái hiện tại. |
estimateDeliveryDate, estimatedReceiptDate, exitReceivingWarehouseDate | search_delivery_order_code_message | Các mốc ngày dự kiến giao, dự kiến nhận, rời kho nhận. |
shipments | track_shipment_message | Danh sách lịch sử chuyển phát nhanh, mỗi phần tử có trackingId, location, status, deliveryServiceName, expectedDeliveryDate, ... |
totalDebtIncludeIsoCode | outstanding_balance_notice_message | Tổng công nợ kèm mã tiền tệ. |
Nội dung mặc định của các mẫu là tiếng Anh. Nên dịch lại sang ngôn ngữ của khách hàng trước khi đưa vào sử dụng.
Kiểm tra lại
- [ ] Các mẫu
EXPORTABLE_DATA_FIELDScó nội dung JSON hợp lệ, đúng thứ tự cột mong muốn. - [ ] Các đại lý cần file riêng đã được chọn mẫu ở trang chi tiết đại lý.
- [ ] Mẫu tên tập tin trong Cài đặt dùng đúng tên biến của từng dòng.
- [ ] Đã tạo
new_customer_messagevàpayment_messagenếu dùng OA. - [ ] Các mẫu tin nhắn OA đã được dịch sang ngôn ngữ của khách hàng.
Bạn có thể kiểm tra nhanh bằng cách chọn một bao hàng ở trang Các bao hàng, bấm Xuất các mã vận đơn ra Excel và mở 2 file vừa tải về để xem các cột.