Bài 1.2: DocType trong ERPNext là gì? (Giải thích bằng tiếng Việt đời thường)
Nếu bạn là người mới làm quen với ERPNext, từ khóa xuất hiện nhiều nhất và gây bối rối nhất chắc chắn là "DocType". Lập trình viên nói về nó, tài liệu cấu hình nhắc về nó, và ngay cả trên giao diện hệ thống cũng tràn ngập thuật ngữ này.
Vậy DocType thực chất là gì? Tại sao nó lại là linh hồn và là viên gạch nền móng xây dựng nên toàn bộ hệ thống ERPNext đồ sộ? Hãy cùng giải mã nó bằng những ví dụ cực kỳ đời thường trong bài học này.
📋 Khái niệm: DocType là "Bản thiết kế mẫu phiếu"
Để dễ hình dung nhất, bạn hãy tưởng tượng doanh nghiệp của mình hoạt động bằng các tờ phiếu giấy: Phiếu thu tiền, Phiếu nhập kho, Tờ khai thông tin khách hàng, Đơn đặt hàng.
- Trước khi nhân viên có thể viết một Phiếu thu tiền cụ thể, công ty phải thuê nhà in thiết kế ra một mẫu phiếu trống (gồm tiêu đề "Phiếu Thu", các ô trống để điền: Người nộp tiền, Lý do nộp, Số tiền, Ngày thu, chữ ký Thủ quỹ...).
- Mẫu phiếu trống in hàng loạt đó chính là DocType (Document Type - Loại tài liệu).
- Khi thủ quỹ cầm một tờ phiếu trống đó, điền thông tin: "Thu 2.000.000đ của anh Nam mua bánh mì ngày 08/06/2026" rồi bấm lưu. Tờ phiếu cụ thể đã điền thông tin đó được gọi là một Document (Tài liệu) - viết tắt là Doc.
💡 Công thức ghi nhớ:
- DocType: Là cái khuôn, là bản thiết kế, là tờ phiếu trống (ví dụ:
Customer- Khách hàng).- Document: Là cái bánh đúc ra từ khuôn, là tờ phiếu đã điền dữ liệu thực tế (ví dụ: Khách hàng "Anh Nam", Khách hàng "WinMart").
🗂️ Phân loại: 4 nhóm DocType cốt lõi của ERPNext
ERPNext phân loại các DocType thành 4 nhóm chính dựa trên tính chất hoạt động và mục đích sử dụng. Việc hiểu rõ 4 nhóm này sẽ giúp bạn không bao giờ bị lẫn lộn khi thao tác trên hệ thống:
1. Normal DocType (Phiếu thông tin thông thường)
Đây là loại DocType phổ biến nhất, dùng để lưu trữ các danh mục dữ liệu chủ (Master Data) hoạt động xuyên suốt hệ thống.
- Đặc điểm: Chỉ lưu trữ thông tin thực thể, không tạo ra các bút toán định khoản kế toán hay trừ kho trực tiếp khi lưu lại.
- Ví dụ:
Customer: Lưu thông tin khách hàng.Supplier: Lưu thông tin nhà cung cấp.Item: Lưu thông tin sản phẩm (Mã hàng, Tên hàng, Đơn vị tính).Warehouse: Lưu thông tin địa điểm kho hàng.
2. Child Table DocType (Bảng dữ liệu con)
Trong Excel, khi viết hóa đơn bán hàng, bạn thường phải thiết kế các dòng sản phẩm nằm chung trên một trang tính. Nếu hóa đơn có 1 dòng hay 20 dòng, bạn sẽ gặp khó khăn trong việc kéo dãn bảng. ERPNext giải quyết việc này bằng Child Table.
- Đặc điểm: Đây là loại DocType không thể tồn tại độc lập. Nó bắt buộc phải nằm lồng bên trong một DocType khác để ghi nhận danh sách chi tiết nhiều dòng.
- Ví dụ:
- DocType
Sales Invoice Item(Bảng con chứa: Mã hàng, Số lượng, Đơn giá, Thuế) nằm lồng bên trong DocType mẹ làSales Invoice(Hóa đơn bán hàng). - Nếu hóa đơn bán 5 mặt hàng, Child Table này sẽ tự động sinh ra 5 dòng tương ứng.
- DocType
+-------------------------------------------------------------+
| SALES INVOICE (DocType Mẹ) |
| Số hóa đơn: HD-001 Ngày: 08/06/2026 |
| Khách hàng: Anh Nam |
|-------------------------------------------------------------|
| DANH SÁCH MẶT HÀNG (Child Table - Bảng con) |
| [ Dòng 1: Bánh mì kẹp | Qty: 2 | Price: 25.000 | VAT: 8% ] |
| [ Dòng 2: Nước suối | Qty: 2 | Price: 10.000 | VAT: 8% ] |
|-------------------------------------------------------------|
| Tổng tiền: 70.000 đ |
+-------------------------------------------------------------+
3. Submittable DocType (Chứng từ duyệt khóa sổ kế toán)
Đây là nhóm DocType quan trọng nhất liên quan trực tiếp đến hoạt động Giao dịch (Transactions), ảnh hưởng trực tiếp đến Sổ kho và Sổ cái kế toán của doanh nghiệp.
- Ví dụ:
Stock Entry(Phiếu kho),Sales Invoice(Hóa đơn bán),Payment Entry(Phiếu thu/chi). - Vòng đời hoạt động bắt buộc qua 2 bước:
- Draft (Lưu nháp - Nút Save):
- Nhân viên nhập liệu tạo chứng từ, bấm Save.
- Trạng thái này giống như ghi bằng bút chì. Nhân viên có thể sửa, xóa thoải mái.
- Hệ thống chưa ghi nhận vào sổ sách tài chính hay trừ kho.
- Submitted (Đã duyệt - Nút Submit):
- Sau khi kiểm tra chính xác, người có thẩm quyền bấm Submit.
- Trạng thái này giống như đóng dấu đỏ chính thức. Chứng từ bị khóa vĩnh viễn, không ai (kể cả admin) được sửa số liệu trực tiếp.
- Hệ thống ngay lập tức chạy bút toán ghi nhận tự động vào Sổ cái Kế toán (
GL Entry) và Sổ kho (Stock Ledger Entry).
- Cancel & Amend (Hủy & Sửa đổi):
- Nếu phát hiện chứng từ đã Submit bị sai, cách duy nhất là bấm Cancel (Hủy) để hệ thống chạy bút toán ngược đảo số liệu (hạch toán đỏ).
- Sau đó bấm Amend (Sửa đổi) để hệ thống tự đẻ ra một chứng từ nháp mới sao chép từ bản cũ (có mã đuôi
-1,-2) để chỉnh sửa lại rồi Submit bản mới. Điều này đảm bảo tính minh bạch, không thể âm thầm sửa số liệu cũ xóa dấu vết.
4. Single DocType (Phiếu cấu hình hệ thống)
Đây là loại DocType đặc biệt, chỉ có duy nhất một trang cấu hình cho toàn doanh nghiệp, không có khái niệm tạo ra tờ phiếu thứ 2, thứ 3.
- Ví dụ:
Accounts Settings: Nơi bật/tắt các quy tắc kế toán toàn cục.Stock Settings: Cấu hình cho phép xuất âm kho hay không.
🔗 Mối liên kết thông tin: Trường dữ liệu loại "Link"
Làm thế nào hệ thống ERPNext biết tự động điền địa chỉ khách hàng hay đơn giá sản phẩm khi bạn làm hóa đơn? Đó là nhờ Trường liên kết (Link Field).
Trong cấu hình DocType:
- Tại DocType
Sales Invoice(Hóa đơn), ô chọn khách hàng được định nghĩa kiểu dữ liệu làLink, trỏ nguồn dữ liệu tới DocTypeCustomer. - Khi người dùng click vào ô này trên màn hình, ERPNext sẽ hiển thị danh sách tất cả các khách hàng đang có trong hệ thống để chọn.
- Khi khách hàng "WinMart" được chọn, hệ thống dựa trên mối liên kết này để tự động truy vấn sang tài liệu "WinMart" gốc để lấy thông tin mã số thuế, địa chỉ, số điện thoại điền tự động vào hóa đơn.
Điều này tạo ra sự nhất quán dữ liệu tuyệt đối: Nếu bạn sửa địa chỉ khách hàng trong danh mục gốc, toàn bộ các hóa đơn lập mới sau đó sẽ tự động cập nhật theo địa chỉ mới.
🕵️♂️ Vết kiểm toán (Audit Trail) - Vũ khí chống gian lận dữ liệu
Một trong những lý do doanh nghiệp dùng Excel dễ bị thất thoát là vì nhân viên có thể âm thầm sửa số tiền trong file Excel từ ngày hôm trước mà sếp không hề hay biết.
Trong ERPNext, dưới chân mỗi Document luôn có một vùng lịch sử (Timeline):
🕒 Timeline Lịch Sử Giao Dịch:
-----------------------------------------------------------
- 08/06/2026 08:30 | Nhân viên Nam tạo bản nháp (Draft).
- 08/06/2026 09:00 | Kế toán trưởng Hoa bấm Submit chứng từ.
-> [GL Entry] Tự động tạo: Nợ 1111 / Có 5111: 2.000.000đ.
- 08/06/2026 14:15 | Admin Minh thực hiện Cancel chứng từ.
-> [GL Entry] Tự động đảo số liệu hoàn tiền.
-----------------------------------------------------------
Bất kỳ thay đổi nào đối với từng ô dữ liệu (ví dụ thay đổi hạn mức nợ từ 10 triệu lên 50 triệu) đều được hệ thống ghi nhận rõ ràng: Ai sửa, sửa vào giờ nào, giá trị cũ là gì và giá trị mới là gì. Đây gọi là Audit Trail (Vết kiểm toán), đảm bảo tính minh bạch tuyệt đối cho doanh nghiệp.
📝 Câu hỏi ôn tập (Quick Quiz)
- Một hóa đơn bán hàng (Sales Invoice) khi đang ở trạng thái Draft (Nháp) thì lượng tồn kho trong kho thực tế đã bị trừ đi chưa?
- Trả lời: Chưa. Chỉ khi chứng từ được bấm duyệt chuyển sang trạng thái Submitted thì hệ thống mới chính thức thực hiện trừ kho và tạo các bút toán kế toán.
- Tại sao Child Table lại cần thiết trong thiết kế DocType?
- Trả lời: Vì nó cho phép lưu trữ danh sách động nhiều dòng chi tiết (ví dụ: các mặt hàng trong một đơn hàng) lồng bên trong một chứng từ lớn, đảm bảo cấu trúc dữ liệu gọn gàng và không bị giới hạn số lượng dòng.
[!TIP] Bài học tiếp theo: Trong Bài 1.3: Khởi tạo doanh nghiệp giả định & Thiết lập ban đầu, chúng ta sẽ bắt tay vào thực hành cấu hình doanh nghiệp đầu tiên mang tên "Bánh Mì Việt", từng bước tự tay tạo Company, Warehouse và Item.