1. Tổng quan
Mẫu in giúp đưa dữ liệu từ chứng từ OhCRM vào biểu mẫu của doanh nghiệp, không cần nhập lại từng thông tin. Bài này hướng dẫn từ thiết lập, soạn file Word và chèn trường trộn, đến upload và xuất file trong Báo giá, Đơn hàng, Hợp đồng.
2. Mở Thiết lập và tạo mẫu in
Bước 1. Bấm biểu tượng bánh răng (Thiết lập) trên thanh trên cùng → mục Tuỳ chỉnh → Mẫu in. Đường dẫn: /settings/print-templates.
Dùng ô chọn phân hệ và ô tìm kiếm để tìm mẫu. Các tab Tất cả, Tạo bởi tôi, Chia sẻ cho tôi giúp thu hẹp danh sách. Mỗi mẫu hiển thị tên, phân hệ, phạm vi chia sẻ, người sửa cuối và mô tả.

Bước 2. Bấm Thêm mẫu in. Chọn đúng Phân hệ trước khi tải trường mẫu. Ví dụ xuyên suốt bên dưới chọn Đơn hàng.

| Thông tin | Cách nhập |
|---|---|
| Phân hệ * | Chọn nơi sử dụng: Báo giá, Đơn hàng hoặc Hợp đồng. |
| Tên mẫu * | Đặt dễ phân biệt, ví dụ “Đơn hàng – có thuế và QR”. |
| Tải tệp lên * | File .docx đã chứa trường trộn; có thể tải trường mẫu trước rồi quay lại upload. |
| Mô tả | Ghi mục đích và phạm vi dùng mẫu. |
| Tên file sau khi nhập dữ liệu | Tuỳ chọn tên file đầu ra. Ví dụ trong hướng dẫn để trống để dùng tên hệ thống; không tự nhập cú pháp chưa kiểm tra. |
| Chia sẻ * | Chọn rõ Mình tôi / Mọi người / Người dùng / Cơ cấu tổ chức. Nếu chọn đối tượng cụ thể, hoàn tất danh sách đối tượng trên giao diện. |
3. Tải và chọn trường dữ liệu
Bước 1. Trong cửa sổ Thêm mẫu in, chọn phân hệ → bấm Tải trường mẫu. Hệ thống tải danh sách Excel, ví dụ CRM_order_mixing_fields.xlsx.
Bước 2. Mở file Excel. Tìm theo Tên trường dữ liệu, sao chép nguyên văn ô Trường trộn, rồi dán vào vị trí cần in trong Word. File Excel là danh mục mã trường, không phải file mẫu Word để upload.

| Loại | Ví dụ | Đặt ở đâu? |
|---|---|---|
| Thông tin chung | <<order.code>><<order.account.name>> | Đoạn văn hoặc ô bảng thông tin; thường một giá trị cho mỗi chứng từ. |
| Hàng hoá nhiều dòng | [[order.product.name]][[order.product.quantity]] | Cùng một dòng mẫu trong bảng hàng hoá; hệ thống điền/lặp theo sản phẩm. |
| QR thanh toán | <<order.qrcode.payment>> | Một đoạn riêng trong mẫu Đơn hàng để dành chỗ cho ảnh QR. |
4. Soạn mẫu Word và bảng hàng hoá
Bước 1. Mở Microsoft Word, tạo văn bản và thiết lập khổ giấy/lề, tiêu đề, logo, thông tin doanh nghiệp. Hướng dẫn này dùng mẫu .docx; không dùng ảnh chụp biểu mẫu thay cho văn bản có thể chỉnh sửa.
Bước 2. Gõ nhãn tĩnh rồi dán trường tương ứng. Ví dụ: Số đơn: <<order.code>>; Khách hàng: <<order.account.name>>. Có thể định dạng font/cỡ chữ của cả trường cho thống nhất.
Bước 3. Tạo bảng gồm hàng tiêu đề và một hàng dữ liệu mẫu. Trong hàng này đặt các trường cùng nhóm, mỗi ô tương ứng một cột. Không gõ sẵn STT 1/2/3 và không sao chép nhiều hàng chứa cùng trường.
| STT | Hàng hoá | SL | Thuế % | Tổng dòng |
|---|---|---|---|---|
[[order.product.stt]] | [[order.product.name]] | [[order.product.quantity]] | [[order.product.tax]] | [[order.product.line_total]] |
Bước 4. Bên ngoài bảng, thêm tổng tiền <<order.total_amount>>, bằng chữ <<order.total_amount_in_words>> và QR <<order.qrcode.payment>> nếu cần. Lưu thành .docx.
4.1. Đầy đủ trường giá, chiết khấu, thuế và tổng tiền mới
Các giá trị dòng được tính theo đơn giá và số lượng của dòng chứng từ; chiết khấu là phần trăm, thuế tính sau chiết khấu. Đặt trường tổng ngoài bảng lặp. Mô tả dòng lấy nội dung riêng từng dòng; chỉ dùng mô tả sản phẩm gốc khi dòng không có nội dung.
| Tên trường | Mã chính xác | Công thức / ý nghĩa |
|---|---|---|
| Thông tin sản phẩm / Tên | [[order.product.name]] | Giá trị tương ứng trên chứng từ |
| Thông tin sản phẩm / Mã | [[order.product.code]] | Giá trị tương ứng trên chứng từ |
| Thông tin sản phẩm / Đơn vị tính | [[order.product.unit]] | Giá trị tương ứng trên chứng từ |
| Thông tin sản phẩm / Số lượng | [[order.product.quantity]] | Giá trị tương ứng trên chứng từ |
| Thông tin sản phẩm / Đơn giá | [[order.product.price]] | Giá trị tương ứng trên chứng từ |
| Thông tin sản phẩm / Chiết khấu | [[order.product.discount]] | Phần trăm (%) chiết khấu của dòng. |
| Thông tin sản phẩm / Thành tiền | [[order.product.amount]] | Thành tiền của dòng = Số lượng × Đơn giá (chưa trừ chiết khấu, chưa gồm thuế). |
| Số tiền bằng chữ (Tổng giá trị) | <<order.total_amount_in_words>> | <<order.total_amount>> |
| Số tiền bằng chữ (Còn lại) | <<order.remaining_amount_in_words>> | <<order.remaining_amount>> |
| Tổng giá trị | <<order.total_amount>> | Tổng giá trị đơn hàng (đã gồm thuế) lấy từ dữ liệu đơn. |
| Số tiền đã thu | <<order.paid_amount>> | Giá trị tương ứng trên chứng từ |
| Số tiền còn lại | <<order.remaining_amount>> | Giá trị tương ứng trên chứng từ |
| Thông tin sản phẩm / Số thứ tự (STT) | [[order.product.stt]] | Giá trị tương ứng trên chứng từ |
| Thông tin sản phẩm / Thuế (%) | [[order.product.tax]] | Phần trăm (%) thuế GTGT của dòng. |
| Thông tin sản phẩm / Mô tả dòng hàng | [[order.product.description]] | Giá trị tương ứng trên chứng từ |
| Thông tin sản phẩm / Tiền chiết khấu | [[order.product.discount_amount]] | Tiền chiết khấu của dòng = Thành tiền × % chiết khấu. |
| Thông tin sản phẩm / Tiền thuế | [[order.product.tax_amount]] | Tiền thuế của dòng = (Thành tiền − Tiền chiết khấu) × % thuế. |
| Thông tin sản phẩm / Tổng tiền dòng | [[order.product.line_total]] | Tổng tiền của dòng = Thành tiền − Tiền chiết khấu + Tiền thuế (đã gồm thuế). |
| Tổng số tiền (trước CK và Thuế) | <<order.total_before_discount_tax>> | Tổng Thành tiền tất cả dòng, chưa trừ chiết khấu, chưa gồm thuế. |
| Tổng số tiền CK | <<order.total_discount>> | Tổng tiền chiết khấu của tất cả dòng. |
| Tổng số tiền thuế | <<order.total_tax>> | Tổng tiền thuế GTGT của tất cả dòng. |
| Tổng số tiền sau CK và sau thuế | <<order.total_after_discount_tax>> | Tổng tiền sau chiết khấu và đã gồm thuế (tổng các dòng). |
| Tổng số tiền sau CK (trước thuế) | <<order.total_after_discount>> | Tổng tiền sau khi trừ chiết khấu, chưa gồm thuế. |
Ví dụ: 3.250.000 − CK 237.500 = 3.012.500; cộng thuế 237.000 = 3.249.500đ. Đã thu 100.000đ → còn lại 3.149.500đ. Tiền CK/thuế tổng là tổng tất cả dòng, không phải tổng các tỷ lệ %.
4.2. Tổng tiền theo phân hệ và nguồn dữ liệu
| Phân hệ | Trường tổng có trong danh mục mới |
|---|---|
| Báo giá | <<quote.total_discount>> — Tổng số tiền CK<<quote.total_tax>> — Tổng số tiền thuế<<quote.total_after_discount_tax>> — Tổng số tiền sau CK và sau thuế<<quote.total_after_discount>> — Tổng số tiền sau CK (trước thuế) |
| Hợp đồng | <<contract.total_before_discount_tax>> — SP từ Cơ hội / Tổng số tiền (trước CK và Thuế)<<contract.total_discount>> — SP từ Cơ hội / Tổng số tiền CK<<contract.total_tax>> — SP từ Cơ hội / Tổng số tiền thuế<<contract.total_after_discount_tax>> — SP từ Cơ hội / Tổng số tiền sau CK và sau thuế<<contract.total_after_discount>> — SP từ Cơ hội / Tổng số tiền sau CK (trước thuế)<<contract.order.total_before_discount_tax>> — SP từ Đơn hàng / Tổng số tiền (trước CK và Thuế)<<contract.order.total_discount>> — SP từ Đơn hàng / Tổng số tiền CK<<contract.order.total_tax>> — SP từ Đơn hàng / Tổng số tiền thuế<<contract.order.total_after_discount_tax>> — SP từ Đơn hàng / Tổng số tiền sau CK và sau thuế<<contract.order.total_after_discount>> — SP từ Đơn hàng / Tổng số tiền sau CK (trước thuế) |
Hợp đồng: nhóm contract.product lấy hàng từ Cơ hội, nhóm contract.order.product lấy từ Đơn hàng liên kết. Tổng của từng nguồn phải đi với đúng bảng nguồn; không cộng hai nguồn nếu chúng biểu diễn cùng hàng hoá. Bảng này đối chiếu danh mục live ngày 12/11; không có nghĩa đã kiểm thử mọi công thức của cả hai nguồn Hợp đồng.

4.3. Khác biệt giữa các phân hệ
| Phân hệ | Trường chung | Nhóm hàng hoá và tổng tiền |
|---|---|---|
| Báo giá | <<quote.code>><<quote.account.name>> | [[quote.product.name]]Tổng thanh toán: <<quote.total_payment_amount>>Bằng chữ: <<quote.total_payment_amount_in_words>> |
| Đơn hàng | <<order.code>><<order.account.name>> | [[order.product.name]]Tổng: <<order.total_amount>>QR: <<order.qrcode.payment>> |
| Hợp đồng | <<contract.contract_number>><<contract.account.name>> | Từ Cơ hội: [[contract.product.name]]Từ Đơn hàng: [[contract.order.product.name]] |
5. Upload và lưu mẫu trên hệ thống
Bước 1. Quay lại Thiết lập → Mẫu in → Thêm mẫu in. Chọn đúng phân hệ, nhập tên mẫu, bấm Chọn tệp và chọn file .docx vừa soạn.
Bước 2. Kiểm tra tên tệp xuất hiện dưới nút Chọn tệp. Nhập mô tả nếu cần và chọn Chia sẻ. Ví dụ minh hoạ dùng Mình tôi, không mở rộng quyền xem mẫu cho người khác.

Bước 3. Bấm Lưu. Khi tạo thành công, tìm lại mẫu trong danh sách; đối chiếu tên và phân hệ. Nếu còn thông báo bắt buộc dưới trường, hoàn tất trường đó rồi lưu lại.

5.1. Cập nhật mẫu đã có
Tại dòng mẫu cần cập nhật, mở menu … → Sửa. Kiểm tra đúng mẫu, chọn file Word thay thế nếu sửa nội dung, điều chỉnh thông tin/chia sẻ rồi lưu. In thử lại sau mỗi lần thay tệp. Giữ bản Word cũ ở máy để có thể đối chiếu khi cần.

6. Dùng mẫu để in từ chứng từ
Không in từ màn hình Settings: mở bản ghi nghiệp vụ cần lấy dữ liệu. Chọn đúng mẫu của phân hệ hiện tại.
6.1. In Báo giá
Bước 1. Vào phân hệ Báo giá → mở bản ghi cần in. Ví dụ DEV: BG00009. Kiểm tra thông tin khách hàng, ngày, nội dung và dữ liệu hàng hoá/liên kết trước khi xuất.

Bước 2. Bấm biểu tượng máy in → Chọn mẫu. Chọn mẫu đúng phân hệ: HDSD 1011 - Báo giá. Nếu chưa thấy, tìm kiếm hoặc chuyển trang trong cửa sổ chọn mẫu.

Bước 3. Bấm In PDF để tạo PDF đã điền dữ liệu. Khi trình duyệt mở PDF, dùng nút tải xuống/lưu của trình xem PDF. Dùng In khi cần đầu ra Word đã điền dữ liệu với mẫu .docx trong hướng dẫn này.
Bước 4. Mở file đầu ra, kiểm tra số chứng từ, khách hàng, hàng hoá, số lượng, thuế và các tổng có trong mẫu. Kiểm tra thêm ngắt trang, font chữ, logo/QR trước khi gửi khách.

6.2. In Đơn hàng
Bước 1. Vào phân hệ Đơn hàng → mở bản ghi cần in. Ví dụ DEV: DH00024. Kiểm tra thông tin khách hàng, ngày, nội dung và dữ liệu hàng hoá/liên kết trước khi xuất.

Bước 2. Bấm biểu tượng máy in → Chọn mẫu. Chọn mẫu đúng phân hệ: QA 1111 - Du gia CK Thue Tong QR. Nếu chưa thấy, tìm kiếm hoặc chuyển trang trong cửa sổ chọn mẫu.

Bước 3. Bấm In PDF để tạo PDF đã điền dữ liệu. Khi trình duyệt mở PDF, dùng nút tải xuống/lưu của trình xem PDF. Dùng In khi cần đầu ra Word đã điền dữ liệu với mẫu .docx trong hướng dẫn này.
Bước 4. Mở file đầu ra, kiểm tra số chứng từ, khách hàng, hàng hoá, số lượng, thuế và các tổng có trong mẫu. Kiểm tra thêm ngắt trang, font chữ, logo/QR trước khi gửi khách.

6.3. In Hợp đồng
Bước 1. Vào phân hệ Hợp đồng → mở bản ghi cần in. Ví dụ DEV: 0005/2026/HDB. Kiểm tra thông tin khách hàng, ngày, nội dung và dữ liệu hàng hoá/liên kết trước khi xuất.

Bước 2. Bấm biểu tượng máy in → Chọn mẫu. Chọn mẫu đúng phân hệ: HDSD 1011 - Hợp đồng. Nếu chưa thấy, tìm kiếm hoặc chuyển trang trong cửa sổ chọn mẫu.

Bước 3. Bấm In PDF để tạo PDF đã điền dữ liệu. Khi trình duyệt mở PDF, dùng nút tải xuống/lưu của trình xem PDF. Dùng In khi cần đầu ra Word đã điền dữ liệu với mẫu .docx trong hướng dẫn này.
Bước 4. Mở file đầu ra, kiểm tra số chứng từ, khách hàng, hàng hoá, số lượng, thuế và các tổng có trong mẫu. Kiểm tra thêm ngắt trang, font chữ, logo/QR trước khi gửi khách.

6.4. Các lựa chọn khác trong Chọn mẫu
Giao diện còn có Xem trước và Tải xuống. Không nhầm tải mẫu nguồn với kết quả đã điền dữ liệu; để lấy chứng từ như các ví dụ đã kiểm tra, dùng In hoặc In PDF.
7. Tài khoản QR và chọn QR trên từng mẫu in
Bước 1. Mở Thiết lập → QR thanh toán → Thêm tài khoản. Nhập tên gợi nhớ, ngân hàng, số tài khoản, tên chủ tài khoản; nhập tiền tố/hậu tố nội dung chuyển khoản nếu cần.

Bước 2. Chỉ bật Tài khoản mặc định khi muốn thay mặc định chung. Bấm Lưu sau khi kiểm tra thông tin. Hướng dẫn dùng tài khoản QA đã có, không tạo thêm hoặc đổi mặc định để chụp ảnh.

Bước 3. Mở Thiết lập → Mẫu in → Thêm mẫu in hoặc … → Sửa. Chọn phân hệ Đơn hàng; tại Tài khoản QR, chọn tài khoản nhận tiền cho mẫu này rồi lưu. Mở lại mẫu kiểm tra lựa chọn đã được giữ.

Bước 4. Chèn trường QR vào đoạn riêng trong Word. Chọn đúng số tiền cần thu:
| Trường | Ý nghĩa | DH00024 |
|---|---|---|
<<order.qrcode.payment>> | Còn lại phải trả = Tổng giá trị − Đã thu | 3.149.500đ |
<<order.qrcode.payment_total>> | Tổng giá trị đơn, không trừ đã thu | 3.249.500đ |
Bước 5. Xuất file và quét kiểm tra ngân hàng, số tài khoản, số tiền, nội dung. Ví dụ đã thu 100.000đ nên hai QR có số tiền khác nhau; không chọn QR tổng nếu chỉ cần thu phần còn lại.

8. Lỗi thường gặp và cách kiểm tra
| Hiện tượng | Kiểm tra / xử lý |
|---|---|
| Không vào được Mẫu in | Nhờ quản trị viên kiểm tra quyền truy cập Thiết lập và dữ liệu. Không dùng tài khoản khác để bỏ qua phân quyền. |
| Không lưu được mẫu | Kiểm tra các trường dấu *: Phân hệ, Tên mẫu, Tải tệp lên, Chia sẻ. Đọc thông báo ngay dưới trường; chọn rõ phạm vi chia sẻ. |
| Không thấy mẫu khi in | Đối chiếu phân hệ, ô tìm kiếm/phân trang, phạm vi chia sẻ. Mẫu Hợp đồng không dùng cho Đơn hàng. |
| Còn nguyên mã trường hoặc mất dữ liệu | So mã với file trường tải mới; giữ đủ dấu và đúng tiền tố. Kiểm tra giá trị thực tế trên bản ghi/đối tượng liên kết. Chép lại nguyên trường, lưu .docx rồi cập nhật tệp mẫu. |
| Bảng hàng hoá không lặp hoặc lặp sai | Đặt một hàng dữ liệu mẫu chứa các trường [[...]] cùng nhóm. Hợp đồng: kiểm tra nguồn Cơ hội và Đơn hàng; không trộn hai nhóm vào cùng một hàng. |
| Thuế/tổng tiền không như mong đợi | Phân biệt thuế suất, tiền thuế, thành tiền và tổng dòng. Báo giá: phân biệt total_amount với total_payment_amount; đối chiếu dữ liệu chứng từ, chiết khấu/phí. |
| Không có QR hoặc QR sai | Dùng trường QR của Đơn hàng; kiểm tra Thiết lập → QR thanh toán và số tiền trên chứng từ. In lại rồi quét đối chiếu. |
| PDF mở nhưng chưa thấy file trên máy | PDF có thể được mở trực tiếp trong trình duyệt. Bấm nút tải xuống/lưu trong trình xem PDF; không cần tạo lại mẫu. |
| Lệch trang, chữ quá nhỏ | Sửa khổ giấy/lề, độ rộng cột, font và vị trí ngắt trang trong Word. Chừa vùng cho QR, thử với chứng từ nhiều dòng; upload lại và in thử. |
9. Tệp thực hành và danh sách kiểm tra
Các tệp dưới đây nằm trong gói bàn giao. Ba danh mục Excel được tái xuất từ dữ liệu API ngày 12/11/2026; không phải tệp tải trực tiếp qua nút trên giao diện. Mẫu chỉ minh hoạ cách trộn dữ liệu, không phải hợp đồng pháp lý hay biểu mẫu doanh nghiệp đã phê duyệt.
- Báo giá: Word mẫu · Danh mục trường trộn · PDF đã in · Word đã điền dữ liệu
- Đơn hàng: Word mẫu · Danh mục trường trộn · PDF đã in · Word đã điền dữ liệu
- Hợp đồng: Word mẫu · Danh mục trường trộn · PDF đã in · Word đã điền dữ liệu
- Đúng phân hệ, đúng phạm vi chia sẻ.
- Không còn mã trường chưa thay trong kết quả.
- Số dòng, STT, số lượng và số tiền khớp chứng từ.
- Thông tin ngân hàng/QR đúng nếu có thanh toán.
- Bố cục dễ đọc và không mất nội dung qua trang.
10. Phiên bản và lịch sử cập nhật
Version hệ thống: OhCRM v1.1.32 — đọc trực tiếp tại menu tài khoản trên DEV ngày 12/11/2026. Version tài liệu: v1.1.32-doc.1. Phần trước “-doc” luôn khớp version hệ thống; số doc tăng khi chỉ sửa tài liệu trong cùng version. Không dùng ngày thay cho version hệ thống.

| Bản | Ngày | Thay đổi |
|---|---|---|
| v1.1.32-doc.1 | 12/11/2026 | Chọn tài khoản theo mẫu; 2 loại QR; trường CK/thuế và 5 tổng mới; mẫu thực hành DH00024; số tiền còn lại/bằng chữ và mô tả dòng đã sửa. Tải danh mục live và chụp UI mới. |
| 1.1 (bản cũ, chưa gắn version hệ thống) | 11/11/2026 | Cập nhật công thức và file in Báo giá BG00009. |

