Quản lý kho đa kho, đa vị trí, lot & serial
Module Quản lý kho OpsOne AI giúp anh/chị vận hành đầy đủ chuỗi nghiệp vụ kho hiện đại: nhiều kho, nhiều vị trí (bin), lot/batch, serial/IMEI, mã vạch, pick list, putaway, kiểm kê, trả hàng và phân tích kho thông minh bằng AI.
Mọi giao dịch (nhập, xuất, chuyển, kiểm kê, trả hàng) đều ghi vào bảng stock_transactions bất biến — phục vụ truy vết và đối soát kế toán. Tồn kho luôn tách thành 5 lớp: Tồn vật lý (on hand), Có thể bán (available), Giữ hàng (committed cho đơn đã chốt), Đang lấy (picking), Đang giao (shipping) — giúp anh/chị tránh oversell.
Năng lực chính
- Multi-warehouse — đăng ký nhiều kho (kho chính, kho chi nhánh, kho ký gửi), chuyển hàng nội bộ.
- Multi-location (bin) — chia kho thành vị trí kệ/ô, gán SKU vào vị trí, scan mã vị trí khi nhập/xuất.
- Lot/Batch tracking — quản lý theo số lô, hạn sử dụng, FEFO (First Expired First Out).
- Serial/IMEI — track từng đơn vị có số seri (xe máy, điện tử, máy móc bảo hành).
- Barcode — sinh mã vạch SKU, in label, quét bằng app di động.
- AI Phân tích & Dự báo — gợi ý nhập hàng dựa trên lịch sử bán + tồn kho hiện tại.
2. Thuật ngữ cốt lõi
Hiểu đúng các khái niệm dưới đây sẽ giúp anh/chị đọc báo cáo, cấu hình quy trình và đào tạo nhân viên kho nhanh hơn.
on_hand (tồn vật lý), available_qty (có thể bán), committed_qty (giữ hàng), min_qty (mức tối thiểu cảnh báo), cost_price, selling_price.source ghi rõ nguồn (sapo, manual, transfer, return, stocktake).PK-2026-0001), trạng thái pending → picking → picked → packed → shipped, và danh sách item kèm số lượng + vị trí gợi ý.in_stock (đang trong kho), sold (đã bán), warranty (đang bảo hành), disposed (huỷ/loại bỏ).3. Truy cập module & các tab
Vào ứng dụng tại app.opsoneai.com → bấm 📦 Kho vận trên sidebar bên trái. Module gồm các tab sau (tab hiện ra tuỳ quyền và gói plan):
| Tab | Mục đích | Đối tượng dùng |
|---|---|---|
| 📊 Tổng quan | Dashboard: số kho, số SKU, tồn, giá trị, đơn chờ, biểu đồ giao dịch 30 ngày. | Quản lý kho, giám đốc |
| 🏭 Kho hàng | CRUD kho: tên, địa chỉ, người phụ trách, kho mặc định. | Admin |
| 📦 Tồn kho | Xem tồn theo SKU × kho, cảnh báo low-stock, bulk adjust, transfer. | NV kho, mua hàng |
| 📤 Lấy hàng | Pick list từ đơn đã xác nhận, scan vị trí, đóng gói, ship. | NV đóng gói |
| ↩️ Trả hàng | Tiếp nhận hàng trả, kiểm tra, duyệt cộng tồn hoặc loại huỷ. | NV kho, CSKH |
| 📥 Xếp kho | Quy tắc auto-suggest vị trí khi nhập hàng mới. | Admin kho |
| 🎯 Gán vị trí (quét) | Workflow di động: nhân viên quét SKU → quét bin → gán xong. | NV kho |
| 📋 Phiếu nhập kho | Stock request: phiếu yêu cầu nhập/xuất/chuyển có duyệt. | NV kho, quản lý |
| 📜 Giao dịch | Lịch sử mọi nhập/xuất/chuyển/kiểm kê có thể lọc và export CSV. | Kế toán, kiểm toán |
| 🏷 Mã vạch | Sinh barcode SKU, in label, gán/sửa barcode mapping. | NV kho |
| 📋 Kiểm kê | Tạo kế hoạch kiểm kê, đếm hàng, đối chiếu, sinh adjustment. | Kế toán, NV kho |
| 🧠 Phân tích | ABC, hàng cần nhập, hàng chết, aging, lifecycle, pricing, AI gợi ý. | Giám đốc, mua hàng |
warehouse_inventory, warehouse_picking, warehouse_putaway, warehouse_stocktake, warehouse_barcode, warehouse_transactions, warehouse_returns, warehouse_analytics). Admin có thể cấp lẻ từng tab cho từng vai trò (vd: nhân viên đóng gói chỉ thấy Pick list).4. Tồn kho (Inventory)
Đây là tab dùng nhiều nhất hằng ngày. Anh/chị xem được toàn bộ tồn kho theo kho × SKU, biết ngay SKU nào sắp hết, có thể adjust hàng loạt hoặc chuyển kho ngay tại bảng.
Các cột tồn kho
- Tồn vật lý (
on_hand) — số lượng đang nằm thực trong kho. - Có thể bán (
available_qty) —on_hand - committed - picking, dùng để chốt đơn mới. - Giữ hàng (
committed_qty) — đơn đã chốt, đang chờ đóng gói. - Đang lấy (
picking_qty) — pick list đã bắt đầu lấy. - Đang giao (
shipping_qty) — đã đóng gói và bàn giao shipper.
Các thao tác chính
- Lọc theo kho, bin, danh mục, từ khoá SKU/tên/barcode.
- Sort theo tồn, giá trị, ngày cập nhật.
- Adjust nhanh: bấm số lượng → nhập số mới → ghi lý do → tạo transaction kiểu
adjust. - Transfer: chọn nhiều dòng → bấm "Chuyển kho" → chọn kho đích → hệ thống tạo cặp giao dịch outbound + inbound.
- Export CSV: toàn bộ tồn theo bộ lọc hiện tại, kèm giá vốn nếu có quyền
view_cost.
Cảnh báo Low-Stock (reorder point)
Mỗi inventory item có 2 ngưỡng cấu hình: min_qty (mức tối thiểu) và max_qty (mức tối đa). Khi available_qty ≤ min_qty → SKU vào danh sách "🚨 Cần nhập". Hệ thống có 1 endpoint GET /api/warehouse/reorder/:projectId trả về tất cả SKU đang dưới ngưỡng, kèm tốc độ tiêu thụ 30 ngày gần nhất để đề xuất số lượng cần đặt.
min_qty = 0 nghĩa là tắt cảnh báo cho SKU đó. Anh/chị nên đặt min_qty cho ít nhất top 20% SKU bán chạy (theo phân tích ABC) để không bị out-of-stock.Lot / Batch view (khi bật)
Nếu doanh nghiệp bật lot tracking trong cấu hình SKU, tab Tồn kho sẽ hiện thêm panel mở rộng cho từng SKU — liệt kê các lô đang còn, số lượng, ngày sản xuất, hạn sử dụng. Lô có HSD < 60 ngày sẽ tô vàng, < 14 ngày tô đỏ.
5. Giao dịch kho (Stock Transactions)
Đây là "sổ cái" của kho — mọi nhập/xuất/chuyển/kiểm kê/trả hàng đều ghi 1 dòng vào đây. Tab này chính là chỗ kế toán đối soát và kiểm toán truy vết.
Các loại giao dịch (tx_type)
| Loại | Hướng | Nguồn sinh ra |
|---|---|---|
| Nhận hàng vào kho | inbound | Nhận từ PO mua hàng |
| Đóng gói & xuất kho đơn hàng | outbound | Pick list ship xong |
| Chuyển kho nội bộ | transfer | Bấm "Chuyển kho" từ tab Tồn kho |
| Trả hàng NCC | outbound | Tab Mua hàng — Returns |
| Nhận hàng trả lại | inbound | Tab Trả hàng (khách hàng) |
| Huỷ giao hàng | inbound | Đơn bị huỷ — cộng lại tồn |
| Điều chỉnh kiểm kê | adjust | Sinh từ Stocktake |
| Khởi tạo tồn kho | inbound | Setup ban đầu khi go-live |
Trường source
Mỗi transaction có trường source để truy ngược nguồn gốc: sapo (đồng bộ từ Sapo POS), manual (do người dùng tự nhập), transfer, return, stocktake, system (job tự động).
Reverse Transaction
Khi cần huỷ 1 giao dịch sai (vd: nhập nhầm số lượng), KHÔNG sửa trực tiếp record cũ. Anh/chị bấm "Đảo chiều" — hệ thống sinh 1 transaction ngược dấu với reverse_of trỏ về record gốc. Cả 2 dòng cùng tồn tại trong sổ — đảm bảo audit trail.
sapo_id chưa.Export & Filter
Hỗ trợ lọc theo: khoảng thời gian, kho, SKU, loại transaction, source, người tạo. Bấm "Export CSV" tải toàn bộ giao dịch theo bộ lọc — file có UTF-8 BOM, mở trực tiếp được trong Excel có dấu tiếng Việt.
6. Lấy hàng & Đóng gói (Picking)
Sau khi đơn hàng được chốt và xác nhận, hệ thống tự động sinh pick list để nhân viên kho thực hiện lấy hàng. Pick list chính là cầu nối giữa CRM/Sales và Kho.
Quy trình 5 bước
- Sinh pick list — từ đơn đã xác nhận. Có thể tạo 1 pick list / 1 đơn hoặc gộp nhiều đơn (batch pick).
- Start picking — nhân viên mở pick list trên di động, hệ thống chuyển status
pending → picking, đồng thời cộngpicking_qtyở inventory để chặn oversell. - Scan item — quét barcode SKU + barcode vị trí cho từng dòng. Sai SKU → app báo lỗi đỏ.
- Packed — đóng gói xong, in shipping label nếu có tích hợp ĐVVC.
- Shipped — bàn giao shipper. Status thành
shipped, sinh transaction outbound, trừ tồn vật lý.
Status flow
Hủy pick list
Pick list có thể huỷ ở bất kỳ status nào TRƯỚC khi shipped. Khi huỷ, anh/chị bắt buộc ghi reason (lý do) — hệ thống lưu vào audit trail và rollback các phản ánh tồn (trả lại committed/picking).
Dashboard pick list
Endpoint GET /api/picking/:projectId/stats/dashboard trả về số liệu: pending, picking, picked, packed, shipped, cancelled theo ngày — phục vụ KPI cho leader kho.
7. Quy tắc xếp kho (Putaway)
Khi hàng mới về (từ PO mua hàng), nhân viên cần biết "đưa hàng này vào kệ nào?". Quy tắc Putaway giúp hệ thống tự gợi ý vị trí — giảm phụ thuộc kinh nghiệm cá nhân, giảm sai sót.
Các trường rule
- Tên rule — vd "Hàng lạnh → khu A1".
- Điều kiện — kết hợp 1-3 yếu tố:
- Theo SKU cụ thể (vd: SKU "MILK-100ML")
- Theo danh mục (vd: "Thực phẩm đông lạnh")
- Theo nhà cung cấp (vd: "NCC Vinamilk")
- Vị trí gợi ý — bin cụ thể hoặc nhóm bin (vd: "A1-*", "Khu lạnh").
- Ưu tiên — số nhỏ hơn ưu tiên hơn. Khi nhiều rule match cùng 1 SKU, hệ thống chọn rule priority thấp nhất.
Workflow Putaway Scan
- Nhân viên mở tab "🎯 Gán vị trí (quét)" trên di động.
- Quét barcode SKU → hệ thống tra rule → gợi ý 1-3 vị trí phù hợp.
- Nhân viên đi đến vị trí gợi ý, quét barcode bin để xác nhận.
- Nhập số lượng → bấm "Lưu" → tồn kho cộng vào bin đó.
GET /api/putaway/:projectId/suggest?sku=... trả về danh sách vị trí gợi ý theo rule. PUT /api/putaway/:projectId/assign ghi nhận hàng đã gán vào bin.8. Kiểm kê (Stocktake)
Kiểm kê là "khám sức khoẻ" định kỳ của kho — đối chiếu sổ sách với thực tế. OpsOne hỗ trợ kiểm kê toàn kho, kiểm kê 1 khu vực, hoặc cycle count (mỗi ngày đếm 1 nhóm SKU theo vòng).
Quy trình 5 bước
- Tạo phiếu kiểm kê — chọn kho, phạm vi (toàn bộ / theo bin / theo danh mục), ngày dự kiến đếm.
- Hệ thống snapshot — chốt số tồn sổ sách (book qty) tại thời điểm tạo phiếu, để so sánh sau.
- Nhân viên đếm — quét barcode SKU / bin trên di động, nhập số đếm thực tế. Có thể chụp ảnh làm bằng chứng.
- Variance report — hệ thống tính lệch (counted - book), tô đỏ SKU lệch, kèm % lệch.
- Adjustment — Admin duyệt → sinh transaction kiểu
stocktakeđể cộng/trừ tồn theo số đếm thực, kèm lý do (vd: "hao hụt tự nhiên", "mất cắp", "đếm sót").
Cycle Count
Endpoint POST /api/returns/:projectId/cycle-count tạo phiếu kiểm kê vòng — mỗi ngày 1 nhóm SKU (chia theo ABC: hàng A đếm tuần, hàng B đếm tháng, hàng C đếm quý). Cách này nhẹ nhàng hơn kiểm kê toàn kho cuối năm và phát hiện sai lệch sớm hơn.
9. Serial / IMEI
Áp dụng cho hàng có số seri duy nhất: xe máy, điện thoại, điện tử, máy móc công nghiệp, hàng bảo hành. Mỗi serial là 1 đơn vị độc lập có thể track xuyên suốt vòng đời.
Trạng thái serial
in_stock— đang trong kho, sẵn sàng bán.sold— đã bán, gắn vào order line.warranty— khách mang về bảo hành, đang ở kho dịch vụ.disposed— huỷ/loại bỏ (hỏng không sửa được, mất, v.v.).
Nhập serial hàng loạt
Endpoint POST /api/serial/:projectId/bulk cho phép nhập 1 danh sách serial cùng SKU 1 lúc — vd: nhập 50 chiếc xe máy cùng model. Hệ thống tự sinh transaction inbound + tạo serial records với status in_stock.
Lookup serial
GET /api/serial/:projectId/lookup/:serial — quét serial bất kỳ → trả về toàn bộ thông tin: SKU, trạng thái, ngày nhập, đơn bán (nếu sold), lịch sử bảo hành.
Gắn vào order line
Khi bán hàng có serial, lúc đóng gói nhân viên phải scan serial → app verify serial đang in_stock và cùng SKU với order line → gắn serial vào order line → chuyển status sang sold.
in_stock, serial mới về sold. Toàn bộ thao tác có audit log.10. Mã vạch (Barcode)
Mã vạch là "ngôn ngữ" của kho hiện đại — quét nhanh hơn gõ tay 10 lần, sai sót gần như bằng 0. OpsOne hỗ trợ sinh barcode tự động, in label, và quét bằng app di động.
Sinh barcode
- Một SKU:
POST /api/warehouse/barcode/generate/:projectId— sinh barcode EAN-13 tự động cho SKU chưa có. - Hàng loạt:
POST /api/warehouse/barcode/generate-all/:projectId— sinh cho tất cả SKU đang thiếu barcode. - Gán thủ công:
PUT /api/warehouse/barcode/assign/:id— nếu nhà cung cấp đã có barcode in sẵn, anh/chị nhập tay vào.
In label
Bấm "In label" trong tab → chọn cỡ giấy (thường A4 chia 30 ô hoặc decal Brother 38×25 mm) → hệ thống render PDF có barcode + tên SKU + giá → in.
Lookup barcode
GET /api/warehouse/barcode/lookup/:projectId/:barcode — quét barcode bất kỳ → trả về SKU, tồn kho, giá. Endpoint này dùng cho POS, pick list, putaway, kiểm kê.
GET /api/warehouse/location/lookup/:projectId/:barcode lookup vị trí từ barcode.11. Trả hàng (Returns)
Khách hàng trả hàng là chuyện không tránh khỏi. Tab Trả hàng giúp anh/chị quản lý quy trình: tiếp nhận → kiểm tra → quyết định cộng tồn hay huỷ → cập nhật doanh thu/công nợ.
Quy trình 4 bước
- Tạo phiếu trả — chọn đơn gốc, chọn line trả về, số lượng, lý do (lỗi, không thích, ship sai...). Phiếu có status
pending. - Kiểm tra — NV kho mở phiếu → bấm "Inspect" → ghi nhận tình trạng (mới nguyên / xước nhẹ / hỏng / mất phụ kiện). Hỗ trợ upload ảnh làm bằng chứng.
PUT /api/returns/:projectId/:id/inspect - Admin duyệt — bấm "Approve" + chọn xử lý: Cộng tồn (hàng còn nguyên, restock) hoặc Loại huỷ (hàng hỏng, disposed).
PUT /api/returns/:projectId/:id/approve - Sinh transaction — nếu cộng tồn → sinh "Nhận hàng trả lại" inbound. Nếu disposed → sinh outbound vào "kho huỷ" để vẫn ghi sổ.
Damaged list
GET /api/returns/:projectId/damaged/list — danh sách hàng hỏng đang chờ xử lý (gửi NCC bảo hành, sửa, thanh lý...). PUT /api/returns/:projectId/damaged/:id/resolve để kết thúc record.
ABC Returns Analyze
GET /api/returns/:projectId/abc/analyze — phân tích tỷ lệ trả hàng theo SKU. SKU có % trả cao bất thường → cần review chất lượng hoặc mô tả sản phẩm.
reason rõ ràng để CSKH giải thích với khách.12. Phân tích kho (Analytics)
Tab "🧠 Phân tích" tổng hợp các insight quan trọng để anh/chị ra quyết định mua hàng, thanh lý, định giá. Có 9 sub-tab: Tổng quan, ABC, Cần nhập, Hàng chết, Hoàn trả, Thất thoát, Lifecycle, Giá, Tuổi tồn.
Các góc nhìn chính
| Sub-tab | Trả lời câu hỏi |
|---|---|
| 📊 Tổng quan | Tồn tổng, giá trị tồn, số SKU active, tốc độ luân chuyển (turnover). |
| 🏆 ABC | SKU nào tạo 80% doanh thu (A), 15% (B), 5% (C)? Hàng A cần ưu tiên không out-of-stock. |
| 🚨 Cần nhập | SKU đang dưới ngưỡng min, kèm tốc độ tiêu thụ → đề xuất số lượng cần đặt. |
| 💀 Hàng chết | SKU không bán được trong N ngày (mặc định 90). Đề xuất thanh lý, discount, ngừng nhập. |
| 📦 Hoàn trả | % trả theo SKU, lý do trả phổ biến. |
| ⚠️ Thất thoát | Variance kiểm kê tích luỹ — phát hiện rò rỉ, mất cắp. |
| 📈 Lifecycle | Pha vòng đời SKU: introduction → growth → mature → decline. |
| 💰 Giá | So sánh giá vốn vs giá bán, biên lợi nhuận theo SKU. |
| ⏳ Tồn theo tuổi (aging) | Tồn đang nằm trong kho bao lâu: 0-30 / 31-60 / 61-90 / 90+ ngày. Hàng tồn lâu = rủi ro. |
AI Analyze & Forecast
POST /api/warehouse/ai/analyze/:projectId chạy Gemini đọc tồn + lịch sử bán → sinh nhận xét tổng quát: SKU nào cần ưu tiên, kho nào quá tải, đề xuất rebalancing.
POST /api/warehouse/ai/forecast/:projectId dự báo mua hàng 30/60/90 ngày tới dựa trên tốc độ bán + tồn hiện tại + min_qty. Có thể bấm "Tạo Purchase Request" để xuất luôn PR sang module Mua hàng.
Tình huống thực tế
Tình huống 1 — Cửa hàng bán lẻ 1 kho cơ bản
Bối cảnh: Shop quần áo có 1 cửa hàng tại HCM, kho ngay tại shop, 500 SKU, không cần lot/serial. Mục tiêu: biết tồn chính xác, không out-of-stock hàng bán chạy, tránh tồn dư hàng ế.
- Hằng ngày: bán hàng qua POS → tự trừ tồn. Cuối ngày check tab "🚨 Cần nhập".
- Hàng tuần: mở "💀 Hàng chết" → SKU 90 ngày không bán → discount 30% xả.
- Hàng tháng: kiểm kê cycle count theo phân tích ABC.
Tình huống 2 — Doanh nghiệp phân phối 3 kho có transfer thường xuyên
Bối cảnh: Công ty phân phối thiết bị có 3 kho (HCM, HN, ĐN), 2.000 SKU, mỗi tuần chuyển hàng nội bộ 1-2 chuyến. Mục tiêu: biết tồn từng kho, transfer dễ dàng, phân tích kho nào dư/thiếu.
- Mỗi sáng T6: quản lý kho HCM mở "🧠 Phân tích" → kho nào dư SKU X, kho nào thiếu → tạo Transfer Request.
- Transfer flow: Tạo phiếu chuyển → kho gửi pack + ship → kho nhận inbound + putaway scan.
- KPI: Tốc độ pick (đơn/giờ/người), tỷ lệ pick chính xác (≥ 99.5%), tồn dư theo kho.
Tình huống 3 — Doanh nghiệp thực phẩm cần FEFO + lot tracking
Bối cảnh: Công ty nhập khẩu thực phẩm chức năng, 300 SKU, mỗi SKU có 3-5 lô đang còn trong kho với HSD khác nhau. Mục tiêu: không bao giờ giao hàng sắp hết hạn cho khách lớn; truy vết lô khi có recall.
- Khi nhập kho: nhân viên scan SKU + nhập lot code + HSD + số lượng. Hệ thống tạo inventory record gắn lot.
- Khi pick: hệ thống ưu tiên gợi ý lô có HSD gần nhất (FEFO). Nhân viên scan đúng lô để xác nhận.
- Aging report: SKU có HSD < 60 ngày → discount; < 14 ngày → block bán cho khách doanh nghiệp, chỉ bán lẻ + ghi rõ.
- Recall: Truy vết "Lô LOT-2026-05-A đã bán cho ai?" → query stock_transactions có lot_id → danh sách đơn → khách hàng.
Câu hỏi thường gặp
Sapo đẩy đơn nhưng tồn kho không trừ?
Kiểm tra theo thứ tự:
- Scheduler còn chạy không? Vào tab "🔗 Sapo Sync" → xem last_sync_at. Nếu > 1 giờ, restart scheduler hoặc kiểm tra PM2 logs.
- SKU đã map sapo_id chưa? Mở inventory_items của SKU đó → kiểm tra trường
sapo_idphải có giá trị. Nếu null → vào Sapo Sync → "Map lại SKU". - Status transaction là gì? Vào tab Giao dịch lọc
source = sapotheo ngày → nếu KHÔNG thấy transaction tương ứng đơn → scheduler chưa đọc tới. Nếu CÓ transaction nhưng tồn không đổi → có thể doreverse_ofđã đảo dấu.
Multi-warehouse — đơn mới chốt sẽ trừ vào kho nào?
Theo thứ tự ưu tiên:
- Nếu đơn có chỉ định kho cụ thể trong order metadata → dùng kho đó.
- Nếu khách hàng có kho mặc định (vd: khách HCM gắn với kho HCM) → dùng kho đó.
- Nếu không có → dùng kho mặc định của project (đánh dấu
is_default = 1trong tab Kho hàng).
Nếu kho được chọn KHÔNG đủ tồn → hệ thống cảnh báo và đề xuất kho khác có đủ. Admin có thể bật rule "auto split" để chia đơn ra nhiều kho cùng giao.
Lô hàng FEFO — hệ thống có tự xuất lô hết hạn trước không?
Có. Khi pick list được sinh cho SKU có lot tracking, hệ thống tự sắp thứ tự lô theo HSD tăng dần (lô sắp hết hạn xếp đầu) và gợi ý nhân viên lấy lô đầu tiên. Nhân viên scan lot code để xác nhận đúng. Nếu lô đầu không đủ số lượng, hệ thống tự đề xuất bổ sung từ lô kế tiếp.
Nếu doanh nghiệp muốn FIFO thay vì FEFO (vd: hàng không HSD), vào cấu hình SKU → đổi rotation_method sang FIFO.
Serial nhập nhầm vào đơn sai — làm sao gỡ?
Mở chi tiết đơn → tab "Serial/IMEI" của đơn → bấm "Sửa serial" trên line bị nhầm → quét hoặc nhập serial đúng → bấm Lưu. Hệ thống:
- Chuyển serial cũ về
in_stock(có sẵn để bán tiếp). - Chuyển serial mới về
sold(gắn với đơn này). - Ghi audit log: ai sửa, lúc nào, từ serial X → serial Y.
Nếu đơn đã ship và khách đã nhận hàng → KHÔNG sửa serial trên hệ thống nữa (sai lệch với thực tế khách đang giữ). Phải xử lý qua quy trình bảo hành/đổi trả.
Pick list đã ship rồi có hủy được không?
Không huỷ trực tiếp được. Phải xử lý qua quy trình Trả hàng:
- Liên hệ shipper / khách thu hồi hàng.
- Khi hàng về kho → tạo phiếu trả (Returns) liên kết với đơn gốc.
- NV kho inspect → admin duyệt → cộng tồn (nếu hàng còn nguyên) hoặc disposed (nếu đã hỏng).
- Đơn gốc sẽ có liên kết tới phiếu trả — kế toán có cơ sở refund cho khách.
Kiểm kê phát hiện lệch lớn — xử lý sao?
Theo % lệch:
- Lệch < 1%: sai số đếm thường gặp → admin duyệt adjustment, lý do "sai số đếm".
- Lệch 1-5%: đếm lại lần 2 để chắc chắn → nếu vẫn lệch, ghi lý do "hao hụt tự nhiên" (đối với hàng dễ vỡ, dễ bay hơi).
- Lệch > 5%: escalate lên giám đốc + báo CSO. Kiểm tra camera, audit log thao tác kho, check transaction outbound bất thường. Khả năng cao là: thất thoát/mất cắp, nhập sai data ban đầu, hoặc lỗi sync (vd: Sapo đẩy thiếu đơn).
Mọi adjustment dù lý do gì cũng ghi audit trail và có sub-tab "⚠️ Thất thoát" trong Phân tích để theo dõi xu hướng.
Quy tắc xếp kho — ưu tiên theo gì khi nhiều rule cùng match?
Hệ thống chọn rule có giá trị priority nhỏ nhất (priority = 1 ưu tiên hơn priority = 10).
Nguyên tắc đặt priority:
- 1-10: rule theo SKU cụ thể (cụ thể nhất, ưu tiên cao nhất).
- 11-50: rule theo danh mục (vd: "Hàng lạnh → khu A1").
- 51-100: rule theo nhà cung cấp.
- 101+: rule fallback (vd: "Bất kỳ → khu chờ").
Khi nhiều rule cùng priority match, hệ thống chọn rule tạo gần nhất (updated_at mới nhất).
Quyền nào cần để dùng module này?
Mỗi tab gắn permission riêng để admin cấp lẻ:
warehouse— Tổng quan + Kho hàng.warehouse_inventory— Tồn kho + Phiếu nhập.warehouse_picking— Lấy hàng & đóng gói.warehouse_putaway— Xếp kho.warehouse_stocktake— Kiểm kê.warehouse_transactions— Lịch sử giao dịch.warehouse_barcode— Mã vạch.warehouse_returns— Trả hàng.warehouse_analytics— Phân tích.
Để xem giá vốn (cost_price, biên lợi nhuận) cần thêm quyền view_cost. Không có quyền này, các cột giá vốn sẽ bị che.
Sẵn sàng vận hành kho chuyên nghiệp?
Mở app, vào Kho vận, bắt đầu với cấu hình tối thiểu cho 1 kho — anh/chị có thể nâng dần lên multi-warehouse, lot và serial khi quy mô lớn lên.
Mở app OpsOne Xem tất cả hướng dẫn