Quản Lý Kho Và Dự Báo Nhu Cầu Với Odoo 20: Cơ Chế Dự Báo, Quy Tắc Bổ Sung Hàng Và Cách Xây Hệ Thống Cảnh Báo Cháy Kho
Cách quản lý tồn kho thông dụng nhất tại các doanh nghiệp thương mại Việt Nam vẫn dựa trên cảm tính: kiểm kho định kỳ bằng sổ hoặc Excel, đặt hàng khi "cảm thấy sắp hết", và xử lý sự cố cháy kho bằng cách gọi nhà cung cấp gấp. Mô hình này hoạt động được ở quy mô nhỏ, nhưng khi dòng đơn hàng tăng và danh mục sản phẩm mở rộng, sai số giữa lượng hàng dự trữ và nhu cầu thực tế phát sinh ở hai hướng: tồn kho ứ đọng chiếm dụng dòng tiền, hoặc thiếu hàng làm mất đơn và mất khách. Hệ thống ERP giải quyết bài toán này bằng một cơ chế cụ thể: tính toán lượng tồn kho dự báo (forecasted stock) từ toàn bộ đơn hàng đã xác nhận và đơn hàng đang lên kế hoạch, rồi tự động tạo lệnh mua hàng hoặc lệnh sản xuất khi lượng dự báo rơi xuống dưới ngưỡng đã thiết lập. Odoo 20 triển khai cơ chế này thành một chuỗi tính năng có thể cấu hình từng bước: báo cáo dự báo tồn kho (Forecasted report), quy tắc bổ sung hàng (reordering rules), thời gian chờ (lead time) và các báo cáo phân tích đi kèm.
Bài viết mô tả cách các thành phần này vận hành trong Odoo 20, dựa trên tài liệu chính thức của Odoo phiên bản 20.0, và nêu các bước thiết lập một hệ thống cảnh báo cháy kho hoàn chỉnh. Odoo 20 được công bố vào tháng 9 năm 2026 và hiện đang trong giai đoạn phát hành ổn định; các tính năng được mô tả trong bài là tính năng hiện hành của phiên bản này.
📑 Mục Lục
- Kỹ thuật toán tồn kho dự báo: ba con số nền tảng
- Quy tắc bổ sung hàng: biến dự báo thành lệnh mua tự động
- Thời gian chờ: biến số quyết định độ chính xác của dự báo
- Dự báo nhu cầu từ dữ liệu thực tế
- Lộ trình xây hệ thống cảnh báo cháy kho
- ROI và phạm vi áp dụng
Kỹ thuật toán tồn kho dự báo: ba con số nền tảng
Mọi cơ chế dự báo trong Odoo đều xây trên ba chỉ số được tính toán liên tục cho mỗi sản phẩm tại mỗi vị trí kho. Ba chỉ số này xuất hiện trên màn hình sản phẩm, trên đơn hàng và trong các báo cáo phân tích, nên việc hiểu chính xác cách tính của chúng là bước đầu tiên trước khi cấu hình bất kỳ quy tắc bổ sung hàng nào.
📊 Mô hình dữ liệu của ứng dụng kho
Ứng dụng kho của Odoo 20 quản lý tồn kho ở cấp độ vị trí (location) trong mỗi kho (warehouse). Mỗi vị trí có thể là kho thành phẩm, kho nguyên vật liệu, khu vực chờ nhập, hoặc kho của đối tác. Sản phẩm được phân loại theo cách theo dõi: sản phẩm có tính tồn kho (storable product) được theo dõi đầy đủ số lượng, lô và số serial; sản phẩm theo dõi số lượng đơn giản (tracked product) chỉ theo dõi con số; sản phẩm tiêu hao (consumable) không theo dõi tồn kho. Toàn bộ các tính năng dự báo trong bài chỉ áp dụng cho nhóm storable product — đây là ràng buộc quan trọng khi làm sạch danh mục sản phẩm trước khi triển khai.
🔢 Ba chỉ số: On Hand, Forecasted và To Order
On Hand (tồn kho thực) là số lượng hiện vật lý có sẵn tại vị trí. Forecasted (tồn kho dự báo) là con số quan trọng nhất: nó bằng On Hand cộng các lô hàng đang đi đường (đơn mua hàng đã xác nhận, lệnh sản xuất đang chạy) trừ các đơn đã đặt chỗ (reserved) cho đơn bán hàng, lệnh chuyển kho và lệnh sản xuất đang chờ nguyên liệu. Forecasted trả lời câu hỏi "khi các giao dịch đang chờ hoàn tất được thực hiện hết, còn bao nhiêu hàng". To Order (cần đặt thêm) là số lượng cần mua hoặc sản xuất để đưa tồn kho dự báo về mức tối đa của quy tắc bổ sung hàng. Ví dụ: một sản phẩm có On Hand là 10, đơn mua hàng đang đi đường là 20, đơn bán đã đặt chỗ là 25, thì Forecasted bằng 5. Nếu quy tắc bổ sung hàng yêu cầu mức tối thiểu 10 và mức tối đa 40, hệ thống sẽ tính To Order đủ để đưa con số dự báo về 40.
📈 Báo cáo Forecasted: nhìn toàn bộ dòng chảy theo thời gian
Báo cáo dự báo tồn kho (Forecasted report) trong Odoo 20 trình bày ba chỉ số trên dưới dạng biểu đồ theo trục thời gian. Phần biểu đồ hiển thị bốn đường: On Hand, Incoming (lượng đang đến từ đơn mua hàng hoặc lệnh sản xuất đã xác nhận), Outgoing (lượng đã đặt chỗ cho đơn bán hàng và các giao dịch xuất) và Forecasted (dòng tồn kho dự báo). Phần bảng liệt kê chi tiết từng giao dịch ảnh hưởng đến dự báo: loại giao dịch (bổ sung, nhập, xuất), ngày nhận dự kiến, số lượng, giao dịch sử dụng, ngày giao hàng và mức tồn kho dự báo sau giao dịch. Báo cáo có thể mở từ nút Forecasted trên form sản phẩm, hoặc từ biểu tượng đồ thị cạnh sản phẩm trong đơn bán hàng và đơn mua hàng. Một điểm đáng chú ý của bản 20: trong báo cáo này, người dùng có thể đặt chỗ hoặc hủy đặt chỗ sản phẩm trực tiếp, giao (assign) hoặc hủy giao các lô hàng nhập cho nhu cầu xuất, và nhấn nút Replenish để tạo đơn bổ sung ngay tại chỗ mà không cần rời báo cáo.
Quy tắc bổ sung hàng: biến dự báo thành lệnh mua tự động
Chỉ số dự báo chỉ có giá trị khi được chuyển thành hành động. Odoo 20 thực hiện việc chuyển đổi này qua quy tắc bổ sung hàng (reordering rules): cho mỗi sản phẩm tại mỗi vị trí, một quy tắc gồm mức tối thiểu (Min) và mức tối đa (Max) xác định hệ thống cần đặt bao nhiêu và khi nào cần đặt.
🎯 Thiết lập mức tối thiểu và tối đa
Mỗi quy tắc bổ sung hàng gắn với một sản phẩm, một vị trí kho và một tuyến (route) xác định cách bổ sung: mua hàng (Buy) hoặc sản xuất (Manufacture). Trường Min là mức tồn kho dự báo thấp nhất cho phép: khi Forecasted rơi xuống dưới Min, quy tắc được kích hoạt và một lệnh bổ sung được tạo. Trường Max là mức cần đạt tới: lệnh đặt hàng được tính để đưa tồn kho dự báo về đúng Max. Trường hợp số lượng cần đặt không chia hết cho đơn vị đóng gói của sản phẩm, hệ thống làm tròn lên để On Hand có thể vượt Max một lượng nhỏ — đây là hành vi được tài liệu chính thức mô tả, cần lưu ý khi xây ngưỡng cho các sản phẩm đóng gói theo kiện.
⚡ Kích hoạt tự động hay bán tự động
Odoo 20 cho phép chọn cơ chế kích hoạt cho từng quy tắc. Với cơ chế Auto (mặc định), đơn mua hàng hoặc lệnh sản xuất được tạo ngay lập tức khi tồn kho dự báo xuyên qua ngưỡng Min — không cần ai thao tác. Với cơ chế Manual, hệ thống không tự tạo đơn mà liệt kê sản phẩm cần bổ sung trong báo cáo bổ sung hàng (Replenishment report), hiển thị tồn kho hiện tại và dự báo, thời gian chờ và ngày dự kiến nhập hàng; người phụ trách kho xem lại dự báo rồi mới nhấn Order để xác nhận. Việc bật cơ chế Manual được thực hiện trong menu cấu hình của ứng dụng kho (Operations ‣ Replenishment, chọn cột Trigger). Cơ chế Manual phù hợp cho giai đoạn đầu triển khai, khi các ngưỡng Min/Max chưa được hiệu chỉnh và đội ngũ cần thời gian làm quen với con số dự báo; cơ chế Auto phù hợp khi quy tắc đã chạy ổn định và cần vận hành không gián đoạn.
🔄 Quy tắc theo tuyến: tạo đơn RFQ hay lệnh sản xuất
Tuyến (route) của sản phẩm quyết định loại lệnh được tạo khi quy tắc kích hoạt. Sản phẩm có tuyến Buy sẽ sinh yêu cầu báo giá (RFQ) gửi nhà cung cấp; sản phẩm có tuyến Manufacture sẽ sinh lệnh sản xuất; sản phẩm có tuyến kết hợp sẽ sinh cả hai, ví dụ nguyên liệu mua về để sản xuất thành phẩm bán ra. Quy tắc có thể tạo từ form sản phẩm qua nút Reordering Rules, hoặc tạo trực tiếp trong ứng dụng Mua hàng với khả năng áp tạm thời cho một giai đoạn (temporary reordering rules) — hữu ích cho mùa cao điểm hoặc khi một nhà cung cấp tạm thời không đáp ứng được.
Thời gian chờ: biến số quyết định độ chính xác của dự báo
Một quy tắc bổ sung hàng đúng mà thời gian chờ sai vẫn dẫn đến kết quả sai: đặt hàng muộn hơn thời điểm cần đặt là hàng về sau khi cháy kho; đặt sớm hơn là vốn nằm trong kho lâu hơn cần thiết. Odoo 20 tách thời gian chờ thành nhiều loại, mỗi loại gắn với một bước trong chuỗi cung ứng.
⏱️ Các loại thời gian chờ trong Odoo 20
Tài liệu chính thức phân loại thời gian chờ như sau: sales lead time (thời gian từ khi xác nhận đơn bán đến khi giao được hàng), delivery time (thời gian vận chuyển), sales security lead time (thời gian an toàn cho bên bán), manufacturing lead time (thời gian sản xuất), days to prepare manufacturing order (số ngày chuẩn bị lệnh sản xuất), vendor lead time (thời gian nhà cung cấp) và days to purchase (số ngày xử lý đơn mua). Mỗi loại được cấu hình ở một nơi khác nhau: trên đơn vị bán, trên nhà cung cấp, trên đơn đặt hàng nguyên vật liệu (BoM), và trên tuyến của sản phẩm.
🧮 Ví dụ tính thời gian chờ tổng hợp
Xét một sản phẩm bán ra cần sản xuất từ hai nguyên liệu nhập từ nhà cung cấp. Chuỗi thời gian chờ được cộng dồn như sau: đơn mua nguyên liệu cần 3 ngày xử lý cộng 7 ngày vận chuyển (vendor lead time 7 ngày); sau khi nguyên liệu về, lệnh sản xuất cần 2 ngày chuẩn bị cộng 4 ngày sản xuất; thành phẩm cần 1 ngày đóng gói và 2 ngày giao hàng. Tổng thời gian từ lúc quyết định đặt nguyên liệu đến khi khách nhận hàng là 19 ngày. Con số 19 ngày chính là căn cứ để đặt ngưỡng Min: tồn kho dự báo phải vượt Min đủ xa để lệnh mua có thời gian hoàn thành trước khi dự báo chạm 0.
📦 Dự báo nguyên liệu cho sản xuất
Trong báo cáo Forecasted, nút Manufacturing Forecast hiển thị mức dự báo của nguyên vật liệu theo từng lệnh sản xuất đang lên kế hoạch, cho biết nguyên liệu nào sẽ thiếu trước khi lệnh sản xuất bị dừng. Tính năng này giúp phát hiện thiếu hụt thành phần ở giai đoạn lập kế hoạch thay vì khi lệnh sản xuất đã chạy — điều mà các hệ thống không tách dự báo thành phẩm khỏi dự báo nguyên liệu không làm được.
Dự báo nhu cầu từ dữ liệu thực tế
Min/Max đặt đúng hay sai phụ thuộc vào mức độ hiểu nhu cầu thực của sản phẩm. Odoo 20 cung cấp các công cụ phân tích để xây ngưỡng từ số liệu lịch sử thay vì ước lượng.
📉 Gợi ý số lượng dựa trên nhu cầu lịch sử
Trong ứng dụng Mua hàng, Odoo 20 có chức năng gợi ý số lượng đặt hàng dựa trên nhu cầu lịch sử (Suggest quantities based on historical demand). Chức năng này phân tích lượng tiêu thụ trong quá khứ của sản phẩm tại vị trí để đề xuất số lượng đặt, thay vì đặt theo con số cố định do người dùng tự chọn. Khi kết hợp với quy tắc bổ sung hàng, người phụ trách mua hàng có căn cứ để xác định Min/Max sát với nhịp tiêu thụ thật: sản phẩm bán đều 50 đơn vị một tuần có ngưỡng khác hẳn sản phẩm bán theo mùa hoặc theo dự án.
⚙️ Ba chiến lược theo đơn: MTO, JIT và dự trữ
Không phải sản phẩm nào cũng nên dự trữ. Odoo 20 hỗ trợ ba chiến lược: Make-to-Order (MTO) — không giữ tồn kho, mọi đơn bán hàng kích hoạt một lệnh mua hoặc sản xuất riêng; Just-in-time (JIT) — kết hợp dự trữ tối thiểu với đặt hàng theo đơn khi dự trữ cạn; và dự trữ theo quy tắc Min/Max cho các sản phẩm bán chạy ổn định. Việc phân loại danh mục theo ba chiến lược này trực tiếp quyết định dòng tiền: sản phẩm MTO trả chi phí vận chuyển và thời gian cho từng đơn, sản phẩm dự trữ trả chi phí vốn tồn kho. Báo cáo phân tích mua hàng (Purchase Analysis report) và dashboard mua hàng trong Odoo 20 cho phép theo dõi chi phí và hiệu suất theo nhà cung cấp để hiệu chỉnh chiến lược theo từng nhóm sản phẩm.
📋 Báo cáo bổ sung hàng và phân bổ
Báo cáo bổ sung hàng (Replenishment report) tập hợp toàn bộ sản phẩm đang ở trạng thái cần bổ sung trong một màn hình: tồn kho hiện tại, tồn kho dự báo, thời gian chờ và ngày dự kiến nhập. Báo cáo phân bổ (Allocation report) trong bản 20 cho phép kiểm tra cách các đơn nhập hàng đang được phân bổ cho các nhu cầu xuất, phát hiện các nhu cầu chưa có nguồn hàng khớp. Hai báo cáo này là công cụ theo dõi hằng ngày của người phụ trách kho khi hệ thống đã vận hành.
Lộ trình xây hệ thống cảnh báo cháy kho
Cấu hình kỹ thuật chỉ là một phần; hệ thống cảnh báo cháy kho chỉ phát huy tác dụng khi được triển khai theo lộ trình có kiểm soát, bắt đầu từ nhóm sản phẩm hẹp và mở rộng dần.
🗺️ Bước 1: chuẩn hóa dữ liệu nền
Trước khi bật quy tắc bổ sung hàng, danh mục sản phẩm cần được làm sạch: gán đúng loại theo dõi (storable cho mọi sản phẩm cần dự báo), nhập số tồn kho thực bằng kiểm kê, cấu hình tuyến Buy hoặc Manufacture cho từng sản phẩm, và khai báo lead time của từng nhà cung cấp và từng BoM. Dữ liệu nền sai khiến mọi con số dự báo sai theo: tồn kho thực lệch làm Forecasted lệch, lead time thiếu làm thời điểm kích hoạt quy tắc lệch. Với doanh nghiệp chuyển từ Excel sang Odoo, bước này đồng thời là bước đối chiếu toàn bộ danh mục, nên được làm như một dự án riêng trước khi đi vào vận hành.
🧪 Bước 2: chạy bán tự động trên nhóm SKU trọng yếu
Chọn nhóm sản phẩm có giá trị cao hoặc hay cháy kho (thường là 20–30 SKU trong giai đoạn đầu), thiết lập Min/Max từ số liệu tiêu thụ 6 tháng gần nhất, bật cơ chế Manual để đội kho xem báo cáo bổ sung hàng hằng ngày và so sánh số lượng hệ thống gợi ý với kinh nghiệm thực tế. Giai đoạn này kéo dài đủ lâu để hiệu chỉnh ngưỡng: Min đặt quá cao kéo tồn kho tăng, Min đặt quá thấp khiến cảnh báo đến muộn. Khi con số dự báo đã khớp với thực tế kho trong nhiều chu kỳ đặt hàng, chuyển nhóm này sang cơ chế Auto.
📈 Bước 3: mở rộng và đo lường
Mở rộng quy tắc sang các nhóm sản phẩm còn lại theo cùng chu trình Manual rồi Auto. Đo lường bằng các chỉ số vận hành: số lần cháy kho mỗi tháng (giảm hay tăng so với giai đoạn trước), số ngày hàng nằm trong kho, và giá trị tồn kho bình quân. Odoo 20 có sẵn báo cáo tồn kho chi tiết (Detailed Stock report), lịch sử giao dịch (Moves history) và dashboard kho để theo dõi các chỉ số này theo thời gian. Khi hệ thống chạy ổn định, việc rà soát Min/Max trở thành công việc định kỳ hằng quý thay vì hằng ngày.
ROI và phạm vi áp dụng
Giá trị của hệ thống dự báo tồn kho đo được bằng ba khoản chi phí mà nó tác động trực tiếp, và phạm vi áp dụng phụ thuộc vào đặc điểm dòng hàng của doanh nghiệp.
💰 Ba khoản chi phí được tác động
Vốn tồn kho ứ đọng: mỗi đơn vị hàng nằm trong kho lâu hơn cần thiết là một phần dòng tiền bị giam. Khi tồn kho được giữ sát mức dự báo thay vì mức "để chắc chắn", giá trị tồn kho bình quân giảm và dòng tiền giải phóng cho hoạt động khác. Chi phí thiếu hàng: cháy kho gây mất đơn trực tiếp, mất khách hàng do chuyển sang đối thủ, và phát sinh chi phí đặt hàng gấp — thường là đơn hàng nhỏ, giá cao hơn, thời gian giao nhanh hơn. Chi phí lao động quản lý kho: quy tắc tự động thay thế thao tác kiểm tra tay hằng ngày; người phụ trách kho chuyển từ việc đếm và báo cáo sang việc xử lý ngoại lệ mà hệ thống đã lọc sẵn trong báo cáo bổ sung hàng.
🏭 Doanh nghiệp nào nên triển khai trước
Hệ thống Min/Max và forecasted stock phù hợp nhất với ba nhóm: doanh nghiệp thương mại nhiều SKU bán chạy đều (nhóm hàng tiêu dùng, phụ kiện, vật tư), nhà bán lẻ có kho trung tâm phục vụ nhiều điểm bán, và nhà máy cần quản lý nguyên liệu đầu vào theo lịch sản xuất. Với doanh nghiệp bán hàng theo dự án hoặc đơn hàng đặc thù cao, chiến lược MTO kết hợp báo cáo Forecasted phù hợp hơn dự trữ. Điểm chung của cả ba nhóm là dữ liệu giao dịch dồn về một hệ thống — đây là điều mà cách quản lý bằng Excel phân tán không đáp ứng được, và là tiền đề để mọi tính năng dự báo hoạt động đúng.
🧭 Bước tiếp theo
Xác định nhóm SKU trọng yếu, đối chiếu số liệu tiêu thụ 6 tháng, và mô phỏng một quy tắc Min/Max mẫu trước khi triển khai toàn danh mục là ba việc có thể bắt đầu ngay. Odoo 20 cung cấp đủ công cụ để xây hệ thống này trong phạm vi ứng dụng kho và mua hàng tiêu chuẩn, không yêu cầu phát triển riêng cho phần dự báo. SkyERP hỗ trợ khảo sát dữ liệu kho, thiết lập quy tắc bổ sung hàng và đào tạo vận hành cho doanh nghiệp tại Việt Nam — các cấu hình trong bài có thể được thiết lập và kiểm chứng trực tiếp trên dữ liệu thực tế của doanh nghiệp.
Để được tư vấn phương án quản lý kho và dự báo nhu cầu phù hợp với quy mô doanh nghiệp, liên hệ SkyERP qua https://skyerp.net/contactus hoặc truy cập trang liên hệ trên skyerp.net. Đội ngũ SkyERP sẽ khảo sát dòng hàng, cấu hình thử nghiệm các quy tắc bổ sung hàng trên dữ liệu mẫu và đề xuất lộ trình triển khai cụ thể.
Quản Lý Kho Và Dự Báo Nhu Cầu Với Odoo 20: Cơ Chế Dự Báo, Quy Tắc Bổ Sung Hàng Và Cách Xây Hệ Thống Cảnh Báo Cháy Kho