Cấu trúc bảng cốt lõi cho module Quản lý Tồn kho
1. Bảng products - Sản phẩm
Index:
(merchant_id, name), (merchant_id, category), (merchant_id, code)
Quy tắc tạo Mã sản phẩm:
- Định dạng:
PRD-{YYYYMMDD}-{XXXX} - Tự động tăng dần theo thời gian tạo sản phẩm
- Duy nhất trên toàn hệ thống
- Không thể sửa đổi sau khi tạo
- Không cần người dùng nhập hay cấu hình
2. Bảng stock_batches - Lô hàng
Quy tắc:
- Không bao giờ được xóa dòng này
remaining_quantitychỉ có thể giảm theo thời gian- Khi
remaining_quantity= 0 thì tự động chuyển trạng tháiclosed - KHÔNG BAO GIỜ được phép sửa
cost_pricesau khi lô hàng đã được tạo. Nếu nhập giá nhầm phải tạo giao dịch điều chỉnh riêng biệt, không sửa trực tiếp giá nhập lô cũ batch_codeđược hệ thống tự động tạo tại thời điểm nhập kho, không cho phép người dùng chỉnh sửa- Khi tạo sản phẩm lần đầu tiên, thông tin giá nhập sẽ được dùng để tạo lô hàng đầu tiên tự động
3. Bảng stock_movement_logs - Log biến động kho
Bảng quan trọng nhất, bất biến, không bao giờ được update hay delete
Quy tắc bất biến:
KHÔNG UPDATE, KHÔNG DELETE, KHÔNG SOFT DELETE. CHỈ CHO PHÉP INSERT.Giải thích trường tham chiếu (Reference): Hai trường
reference_type và reference_id sử dụng kỹ thuật đa hình (Polymorphism) để truy vết chính xác chứng từ hoặc nghiệp vụ nào đã làm thay đổi số lượng tồn kho:
- Khách mua hàng:
reference_type=Order,reference_id= ID của Đơn hàng. - Nhập kho:
reference_type=ImportNote,reference_id= ID của Phiếu nhập kho. - Điều chỉnh thủ công:
reference_type=Adjustment,reference_id= ID của Phiếu điều chỉnh. Việc này giúp hệ thống lưu vết minh bạch và Merchant dễ dàng bấm vào xem lại chi tiết nguyên nhân biến động kho.
Quy tắc tính toán
- Số lượng tồn kho hiện tại của sản phẩm =
SUM(stock_batches.remaining_quantity) - Giá vốn tồn kho hiện tại =
SUM(stock_batches.remaining_quantity * stock_batches.cost_price) - Tổng giá trị xuất kho = Tổng giá trị các lô hàng đã xuất