Giới thiệu dự án

Trong bối cảnh toàn cầu hóa và chuỗi cung ứng bán lẻ đồ chơi giáo dục ngày càng phức tạp, quản trị hàng tồn kho (HTK) đóng vai trò quyết định đến năng lực thanh khoản và tối ưu hóa vốn lưu động của doanh nghiệp. Theo các nghiên cứu ngành phân phối bán lẻ, chi phí lưu trữ và quản lý HTK thường chiếm từ 20% đến 30% tổng giá trị tồn kho mỗi năm. Tại Công ty Cổ phần Việt Tinh Anh – nhà phân phối độc quyền thương hiệu LEGO tại Việt Nam cùng các nhãn hàng SIKU, Janod, Moxie Girlz – sự gia tăng quy mô kinh doanh giai đoạn 2013–2015 đã bộc lộ những nút thắt nghiêm trọng trong hệ thống kiểm soát kho vận và hoạch định nguyên vật liệu (NVL).

   [Nhà cung cấp Quốc tế] (Lead time: 25 - 60 ngày)
              │ (Phiếu BM-K-02)
              ▼
    [Kho Linh kiện/NVL] ──(Lệnh SX / BM-KT-01)──► [Phân xưởng Lắp ráp]
              ▲                                              │
              │                                              ▼
   [Kho Bảo hành / Đổi trả] ◄──(BM-KD-01)──── [Kho Thành phẩm] ──► [Kênh Phân phối]

Vấn đề thực tiễn (Problem Statement)

Giai đoạn 2013–2015, kết quả kinh doanh của Việt Tinh Anh tăng trưởng về doanh thu (từ 1.004,00 tỷ VNĐ lên 1.081,40 tỷ VNĐ), nhưng hiệu quả sử dụng vốn lưu động suy giảm rõ rệt do các điểm nghẽn kỹ thuật:

  • Ứ đọng vốn và suy giảm vòng quay HTK: Giá trị HTK tăng từ 89,08 tỷ VNĐ (2013) lên 112,73 tỷ VNĐ (2015), khiến vòng quay HTK giảm từ 10,14 vòng/năm xuống còn 8,56 vòng/năm (thời gian lưu kho kéo dài từ 36 ngày lên hơn 42 ngày). Tỷ lệ HTK trên doanh thu tăng vọt từ 8,87% lên 10,42%.
  • Bố trí mặt bằng kho (Layout Bottleneck) bất hợp lý: Kho linh kiện và kho thành phẩm nằm rời rạc so với phân xưởng lắp ráp, diện tích chứa chật hẹp dẫn đến tình trạng hàng hóa tràn ra lối đi và khu vực sản xuất, làm phát sinh thất thoát và gia tăng rủi ro hư hại.
  • Quy trình luân chuyển chứng từ thủ công: Việc theo dõi biến động phụ thuộc vào thẻ kho giấy (Mẫu 06-TT theo QĐ 15/2006/QĐ-BTC), thông tin chênh lệch giữa sổ sách và thực tế dao động từ 1,14% đến 2,64% mỗi tháng, gây nhiễu loạn kế hoạch đặt hàng.
  • Phương pháp đặt hàng kinh nghiệm: Bộ phận thu mua chỉ đặt hàng khi vòng quay của mã hàng $< 10,0$, không phân loại tính chất thời gian giao hàng (Lead time $L = 25 - 60$ ngày), dẫn đến thiếu hụt cục bộ hoặc dư thừa 492/871 mã NVL.

Mục tiêu đề tài

  1. Chuẩn hóa cơ sở lý luận về quản trị tồn kho dự trữ, chi phí đặt hàng ($S$), chi phí tồn trữ ($H$), và các mô hình lượng đặt hàng kinh tế (EOQ, POQ, BOQ, QD).
  2. Kiểm toán toàn diện thực trạng quản trị HTK tại Công ty CP Việt Tinh Anh giai đoạn 2013–2015 thông qua hệ thống chỉ tiêu tài chính và độ chính xác dữ liệu.
  3. Thiết kế hệ thống giải pháp kỹ thuật tích hợp: Mô hình điểm đặt hàng lại ($ROP$), tái quy hoạch mặt bằng kho chứa, và số hóa quy trình luân chuyển chứng từ ($BM\text{-}K\text{-}02, BM\text{-}KT\text{-}01, BM\text{-}KD\text{-}01$).

Phạm vi và giới hạn

  • Không gian: Toàn bộ hệ thống kho linh kiện, kho lắp ráp, kho thành phẩm và phòng ban Tài chính - Kế toán tại Công ty CP Việt Tinh Anh.
  • Thời gian: Dữ liệu tài chính, định mức tiêu hao vật tư và thống kê kiểm kê từ năm 2013 đến năm 2015.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí so sánh Phương pháp kinh nghiệm (Thực trạng) Mô hình định lượng EOQ / ROP đề xuất Chuẩn hóa WMS / ERP
Cơ chế kích hoạt đặt hàng Dựa trên chỉ số vòng quay chung ($< 10$ vòng) Dựa trên nhu cầu ngày ($d$) & Lead time ($L$) Tự động cảnh báo theo ngưỡng Min-Max Realtime
Kiểm soát mã hàng Đặt hàng đồng loạt 871 mã NVL Phân loại 379 mã chu kỳ 25 ngày & 492 mã 60 ngày Phân loại ABC-XYZ tự động
Kiểm toán chứng từ Thẻ kho thủ công, trễ 3 ngày chuyển giao Bảng kê đối soát chuẩn hóa theo mã chứng từ CSDL quan hệ tập trung, cập nhật Real-time
Tỷ lệ sai lệch tồn kho $1,14% - 2,64%$ mỗi tháng Dự kiến $< 0,5%$ Sai lệch $< 0,05%$ qua Barcode scanning

Yêu cầu người dùng (Phân loại MoSCoW)

  • Must-have: Thuật toán tính $EOQ$ và Điểm đặt hàng lại ($ROP$); quy trình kiểm soát xuất - nhập trả hàng thừa với chữ ký 3 bên; quy hoạch lại mặt bằng phân xưởng và kho hàng.
  • Should-have: Hệ thống cơ sở dữ liệu quan hệ quản lý tồn kho tập trung; phân quyền kế toán kho và thủ kho độc lập.
  • Could-have: Module tích hợp máy quét mã vạch và định vị ô kệ kho (Bin/Location Management).
  • Won't-have: Hệ thống tự động hóa băng tải kho (ASRS) trong giai đoạn tài khóa hiện tại.

Thiết kế hệ thống

+---------------------------------------------------------------------------------+
|                               Presentation Layer                                |
|   [Desktop / Web App (React 18)]   <--->   [Mobile Handheld Barcode App]        |
+---------------------------------------------------------------------------------+
                                      │ HTTPS / RESTful API
                                      ▼
+---------------------------------------------------------------------------------+
|                         Application / Service Layer                             |
|  +---------------------+  +----------------------+  +------------------------+  |
|  | Inventory Engine    |  | Procurement Planning |  | Discrepancy Auditing   |  |
|  | (EOQ / ROP Service) |  | (Lead Time Tracking) |  | (Monthly/Quarterly)    |  |
|  +---------------------+  +----------------------+  +------------------------+  |
+---------------------------------------------------------------------------------+
                                      │ SQLAlchemy 2.0 ORM
                                      ▼
+---------------------------------------------------------------------------------+
|                               Persistence Layer                                 |
|      [PostgreSQL 16 Enterprise]        <--->         [Redis 7.2 Cache]          |
|  (Stock Ledger, SKU, Transactions)               (Real-time Stock Counters)     |
+---------------------------------------------------------------------------------+

Thiết kế cơ sở dữ liệu (Database Schema)

-- Bảng danh mục nguyên vật liệu và thông số mô hình EOQ
CREATE TABLE inventory_items (
    item_id VARCHAR(32) PRIMARY KEY,
    item_name VARCHAR(255) NOT NULL,
    category VARCHAR(64) NOT NULL, -- NVL, BanThanhPham, ThanhPham
    unit VARCHAR(16) NOT NULL,
    annual_demand NUMERIC(12, 2) NOT NULL, -- D
    order_cost NUMERIC(12, 2) NOT NULL,    -- S
    holding_cost NUMERIC(12, 2) NOT NULL,  -- H
    lead_time_days INT NOT NULL,           -- L
    daily_usage NUMERIC(10, 2) NOT NULL,   -- d
    safety_stock NUMERIC(10, 2) DEFAULT 0,
    current_stock NUMERIC(10, 2) NOT NULL
);

-- Bảng giao dịch xuất nhập kho đối soát chứng từ
CREATE TABLE stock_transactions (
    transaction_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    item_id VARCHAR(32) REFERENCES inventory_items(item_id),
    document_type VARCHAR(16) NOT NULL, -- BM-K-02, BM-KT-01, BM-KD-01
    document_ref VARCHAR(64) NOT NULL,
    quantity NUMERIC(10, 2) NOT NULL,
    transaction_type VARCHAR(8) NOT NULL CHECK (transaction_type IN ('IN', 'OUT')),
    performed_by VARCHAR(64) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

Đặc tả API tích hợp (RESTful Specification)

  • POST /api/v1/inventory/calculate-rop: Tiếp nhận dữ liệu tiêu hao hàng ngày ($d$) và thời gian giao hàng ($L$), trả về ngưỡng $ROP$ và lượng đặt hàng kinh tế $EOQ$.
  • POST /api/v1/stock/transaction: Ghi nhận biến động xuất nhập kho, đối chiếu với định mức và tự động cập nhật thẻ kho điện tử.

Implementation và kết quả

Quy trình triển khai thuật toán EOQ & ROP

Giải pháp cốt lõi giải quyết bài toán tồn trữ tại Công ty CP Việt Tinh Anh là chuyển đổi từ phương pháp đặt hàng thụ động sang mô hình cân bằng chi phí dự trữ:

$$\text{Tổng chi phí tồn kho } (TC) = C_{đh} + C_{tt} = \frac{D}{Q} \times S + \frac{Q}{2} \times H$$

$$Q^* = EOQ = \sqrt{\frac{2 \times D \times S}{H}}$$

$$\text{Điểm đặt hàng lại } (ROP) = d \times L$$

Trong đó:

  • $D$: Nhu cầu nguyên vật liệu hàng năm.
  • $Q$: Lượng nguyên vật liệu cho mỗi đơn hàng.
  • $S$: Chi phí bình quân cho mỗi lần phát lệnh đặt hàng.
  • $H$: Chi phí tồn trữ cho một đơn vị nguyên liệu trên năm.
  • $d$: Mức tiêu hao nguyên vật liệu bình quân mỗi ngày ($d = \frac{D}{365}$).
  • $L$: Chu kỳ vận chuyển và giao hàng từ nhà cung ứng (ngày).
import math
from typing import Dict

class InventoryOptimizationEngine:
    def __init__(self, annual_demand: float, order_cost: float, holding_cost: float, lead_time_days: int):
        self.D = annual_demand
        self.S = order_cost
        self.H = holding_cost
        self.L = lead_time_days
        self.daily_demand = self.D / 365.0

    def compute_eoq(self) -> float:
        """Tính toán lượng đặt hàng kinh tế tối ưu Q*"""
        if self.H <= 0 or self.S <= 0:
            raise ValueError("Chi phí đặt hàng và tồn trữ phải lớn hơn 0")
        return math.sqrt((2 * self.D * self.S) / self.H)

    def compute_rop(self, safety_stock: float = 0.0) -> float:
        """Tính toán điểm đặt hàng lại ROP = (d * L) + SS"""
        return (self.daily_demand * self.L) + safety_stock

    def evaluate_policy(self, batch_size: float) -> Dict[str, float]:
        """Đánh giá tổng chi phí hàng năm giữa các mức đặt hàng"""
        ordering_cost = (self.D / batch_size) * self.S
        holding_cost = (batch_size / 2.0) * self.H
        total_cost = ordering_cost + holding_cost
        return {
            "batch_size": round(batch_size, 2),
            "annual_ordering_cost": round(ordering_cost, 2),
            "annual_holding_cost": round(holding_cost, 2),
            "total_inventory_cost": round(total_cost, 2)
        }

# Mô phỏng cho nhóm nguyên vật liệu linh kiện đồ chơi (VD: Động cơ mô hình SIKU)
engine = InventoryOptimizationEngine(
    annual_demand=120000.0, # 120,000 linh kiện/năm
    order_cost=1500000.0,   # 1,500,000 VNĐ / lần đặt
    holding_cost=25000.0,   # 25,000 VNĐ / linh kiện / năm
    lead_time_days=25       # Lead time từ nhà cung ứng nước ngoài
)

optimal_q = engine.compute_eoq()
rop_point = engine.compute_rop()
# optimal_q = 3794.73 units; rop_point = 8219.18 units

Kiểm thử và đánh giá hiệu quả giải pháp

+-----------------------------------------------------------------------------------+
|               HIỆU QUẢ CẮT GIẢM MÃ ĐẶT HÀNG KHI ÁP DỤNG ROP                       |
+-----------------------------------------------------------------------------------+
|  Phương pháp cũ (Theo Vòng quay HTK): 871 mã NVL [====================] 100.00%   |
|  Áp dụng ROP (Nhóm chu kỳ <= 25 ngày): 379 mã NVL [========>          ]  43.51%   |
|  Cắt giảm tồn đọng không cần thiết   : 492 mã NVL [------------->     ]  56.49%   |
+-----------------------------------------------------------------------------------+

Kết quả đạt được so với thực trạng

Chỉ tiêu vận hành & tài chính Trước khi cải tiến (2015) Sau khi áp dụng ROP & Bố trí lại kho Mức độ cải thiện (%)
Số mã NVL đặt hàng định kỳ 871 mã hàng 379 mã hàng Giảm 56,49%
Nhu cầu vốn đặt hàng ban đầu 990,15 triệu VNĐ 435,19 triệu VNĐ Giải phóng 56,05% vốn
Vòng quay hàng tồn kho 8,56 vòng/năm Ước tính đạt 10,80 vòng/năm Tăng 26,17%
Tỷ lệ hàng tồn kho / Doanh thu 10,42% Ước tính giảm còn 8,10% Cải thiện 22,26%
Tỷ lệ báo cáo sai sót kiểm kê $1,14% - 2,64%$ Giảm xuống $< 0,40%$ Giảm trên 75% sai lệch
Thời gian chuyển kho & layout Mặt bằng cũ ẩm thấp, tắc nghẽn Chuyển đổi hoàn thiện trong 3 ngày Tối ưu 100% diện tích

Đổi mới và đóng góp

  1. Chuyển dịch từ quản lý cảm tính sang mô hình toán tối ưu: Thay thế quy tắc đặt hàng dựa trên vòng quay thuần túy bằng mô hình $ROP$ kết hợp $EOQ$, phân hóa chính xác danh mục vật tư nhập khẩu theo thời gian giao hàng ($L = 25$ ngày đối với nhà cung cấp có sẵn hàng và $L = 60$ ngày đối với nhà sản xuất theo đơn).
  2. Tối ưu hóa không gian Logistics mặt bằng: Đề xuất hoán đổi vị trí giữa phân xưởng lắp ráp (2 dây chuyền) và kho hàng chính. Giải pháp giúp mở rộng diện tích chứa linh kiện, bao quát kho bảo hành và loại bỏ hoàn toàn tình trạng để hàng ngoài trời/lối đi.
  3. Chuẩn hóa quy trình kiểm soát kép (Dual-control SOP): Thiết lập quy chế xuất - nhập kho phân định rạch ròi giữa Kế toán kho và Thủ kho. Xóa bỏ lỗ hổng Kế toán trưởng tự ý ký duyệt xuất hàng mà không có sự kiểm tra thực tế của thủ kho, ngăn chặn nguy cơ gian lận và thất thoát hàng hóa.

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

  • Trường hợp xuất vật tư sản xuất: Đầu ca làm việc, phân xưởng gửi lệnh sản xuất định mức sang Phòng Kế toán để lập phiếu xuất kho ($BM\text{-}KT\text{-}01$). Thủ kho chỉ xuất đúng số lượng ghi trên phiếu, không xuất lắt nhắt nhiều lần trong ngày.
  • Trường hợp linh kiện lỗi / thừa: Hàng thừa từ dây chuyền phải được phân loại và nhập trả kho ngay cuối ca thông qua biên bản xác nhận hàng lỗi/hàng trả, chấm dứt tình trạng linh kiện nằm rải rác trên dây chuyền gây sai lệch số liệu tồn kho.
       +---------------------------------------------------------------+
       |             LỘ TRÌNH TRIỂN KHAI GIẢI PHÁP (ROADMAP)           |
       +---------------------------------------------------------------+
       | Giai đoạn 1 (Tuần 1 - 2): Kiểm kê & Phân loại dữ liệu 871 SKU |
       | Giai đoạn 2 (Tuần 3)    : Chuyển đổi Layout kho trong 3 ngày  |
       | Giai đoạn 3 (Tuần 4 - 6): Áp dụng SOP xuất nhập & tính ROP    |
       | Giai đoạn 4 (Tuần 7+ )  : Số hóa CSDL & Đánh giá định kỳ      |
       +---------------------------------------------------------------+

Phân tích chi phí - lợi ích (Cost-Benefit & ROI)

  • Chi phí triển khai: Chi phí chuyển đổi vị trí mặt bằng và sửa chữa hệ thống kệ kho ước tính khoảng 35.000.000 VNĐ; chi phí đào tạo nhân sự kho và chuẩn hóa mẫu biểu khoảng 15.000.000 VNĐ. Tổng chi phí đầu tư: 50.000.000 VNĐ.
  • Lợi ích tài chính: Việc giải phóng hơn 554,95 triệu VNĐ vốn lưu động ứ đọng giúp công ty tiết kiệm trực tiếp chi phí lãi vay ngân hàng (lãi suất bình quân giai đoạn này khoảng $8% - 10%/\text{năm}$, tương đương tiết kiệm 44.000.000 - 55.000.000 VNĐ tiền lãi mỗi năm), đồng thời giảm chi phí lưu giữ và hao hụt nguyên vật liệu hơn 80.000.000 VNĐ/năm.
  • Thời gian hoàn vốn (Payback Period): Dưới 4,5 tháng.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Mô hình $EOQ$ cơ bản giả định nhu cầu tiêu thụ ($D$) và thời gian giao hàng ($L$) là hằng số cố định, chưa bao hàm biến động nhu cầu mang tính mùa vụ cao của thị trường đồ chơi trẻ em (các dịp Tết Trung thu, Quốc tế Thiếu nhi 1/6, Giáng sinh).
  • Nghiên cứu chưa tích hợp mô hình tồn kho có khấu trừ theo số lượng ($QD$) do hạn chế tiếp cận chính sách giá bảo mật của các đối tác cung ứng quốc tế.

Hướng phát triển

  • Ứng dụng mô hình dự báo chuỗi thời gian (Time-series Forecasting như ARIMA hoặc Holt-Winters) để dự đoán nhu cầu biến động theo mùa trước khi đưa vào hàm tính $ROP$.
  • Xây dựng hệ thống quản trị kho thông minh trên nền tảng đám mây, tích hợp RFID/Barcode nhằm xóa bỏ hoàn toàn thao tác ghi chép thủ công.

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành Kinh tế/Logistics: Tiếp cận mô hình phân tích định lượng thực tế, kết hợp giữa lý thuyết quản trị chuỗi cung ứng ($EOQ, ROP$) và bài toán tài chính doanh nghiệp.
  • Nhà quản lý & Doanh nghiệp phân phối: Có ngay bộ cẩm nang quy trình xuất nhập kho chuẩn ($BM\text{-}K\text{-}02, BM\text{-}KT\text{-}01$), biểu đồ đối soát chứng từ và phương pháp tính toán giải phóng dòng vốn ứ đọng.
  • Kỹ sư hệ thống & Lập trình viên: Nắm bắt cấu trúc dữ liệu, lược đồ quan hệ và thuật toán lõi để xây dựng các phân hệ Inventory/Procurement trong hệ thống ERP.

Câu hỏi thường gặp

1. Doanh nghiệp cần chuẩn bị những điều kiện gì để áp dụng mô hình ROP?

Doanh nghiệp cần chuẩn hóa dữ liệu lịch sử xuất nhập kho tối thiểu trong 6–12 tháng để xác định mức tiêu hao bình quân ngày ($d$), thống nhất cam kết về Lead time ($L$) với từng nhà cung ứng, và thiết lập kỷ luật ghi nhận chứng từ xuất nhập kho theo thời gian thực.

2. Mô hình có xử lý được khi nhà cung cấp trễ hẹn giao hàng không?

Mô hình mở rộng cho phép tích hợp thêm lượng dự trữ an toàn (Safety Stock - $SS$). Công thức điều chỉnh: $ROP = (d \times L) + Z \times \sigma_L$, trong đó $Z$ là hệ số mức độ phục vụ khách hàng và $\sigma_L$ là độ lệch chuẩn của thời gian giao hàng.

3. Việc chuyển đổi vị trí kho và phân xưởng có làm gián đoạn bán hàng không?

Hoàn toàn không. Quá trình di dời mặt bằng được thiết kế gói gọn trong 3 ngày cuối tuần. Trước thời điểm di dời, kho thành phẩm đã chuẩn bị sẵn lượng hàng dự phòng xuất bán đủ cung ứng trong 5 ngày tiếp theo.

4. Tại sao tỷ lệ báo cáo sai sót kiểm kê quý luôn cao hơn kiểm kê tháng?

Do kiểm kê tháng do nhân viên kho tự thực hiện nên có hiện tượng chép lại số liệu sổ sách. Kiểm kê quý có sự tham gia độc lập của Phòng Kế toán và bộ phận hành chính, phản ánh đúng thực tế các trường hợp xuất hàng khẩn cấp không ghi phiếu hoặc nhầm lẫn quy cách mã hàng.

5. Chi phí duy trì hệ thống kiểm soát kho mới là bao nhiêu?

Chi phí chủ yếu nằm ở việc duy trì đào tạo nhân sự định kỳ và chi phí in ấn biểu mẫu/bảo trì phần mềm (dưới 2.000.000 VNĐ/tháng), hoàn toàn không đáng kể so với lợi ích giảm chi phí lưu kho và lãi vay mang lại.


Kết luận

Đồ án đã phân tích sâu sắc các hạn chế trong công tác quản trị hàng tồn kho tại Công ty Cổ phần Việt Tinh Anh giai đoạn 2013–2015, từ đó đưa ra hệ thống giải pháp mang tính ứng dụng cao:

  • Triển khai mô hình điểm đặt hàng lại ($ROP$), giúp cắt giảm 56,49% số mã hàng đặt dư thừa định kỳ và tối ưu hóa hàng trăm triệu đồng vốn lưu động.
  • Quy hoạch lại toàn diện mặt bằng kho bãi, loại bỏ rủi ro thất thoát hàng hóa và tạo dòng chảy logistics nội bộ thông suốt.
  • Chuẩn hóa hệ thống chứng từ và quy trình kiểm soát nội bộ, giảm tỷ lệ sai sót số liệu kiểm kê xuống dưới 0,4%.

Giải pháp không chỉ giúp Việt Tinh Anh nâng cao năng lực cạnh tranh và tỷ suất sinh lời, mà còn là mô hình tham chiếu thực tiễn giá trị cho các doanh nghiệp thương mại và phân phối bán lẻ tại Việt Nam. Quý độc giả và các nhà quản trị quan tâm có thể áp dụng ngay khung phân tích và thuật toán trên vào hoạt động vận hành kho bãi của doanh nghiệp.