Giới thiệu dự án

Trong bối cảnh nền kinh tế số và sự phát triển mạnh mẽ của ngành xây dựng - thương mại kỹ thuật, quản trị hàng tồn kho đóng vai trò sống còn đối với hiệu quả tài chính của doanh nghiệp. Thống kê ngành xây lắp và cung ứng vật tư xây dựng cho thấy chi phí nguyên vật liệu (NVL) thường chiếm tỷ trọng áp đảo, dao động từ 60% đến 70% trong tổng giá thành sản phẩm/dịch vụ hoàn thiện. Việc quản lý lỏng lẻo không chỉ làm tăng tỷ lệ hao hụt vật tư lên từ 3% đến 5% mà còn trực tiếp gây thất thoát vốn lưu động và sai lệch báo cáo tài chính định kỳ.

Đề tài "Hoàn thiện công tác kế toán nguyên vật liệu tại Công ty TNHH Thương mại và Dịch vụ Hoàng Tuấn" giải quyết trực tiếp các bài toán thực tiễn tại một doanh nghiệp thương mại dịch vụ và thi công xây lắp tại Hải Phòng. Hệ thống hiện trạng bộc lộ nhiều điểm nghẽn nghiêm trọng (pain points): luân chuyển chứng từ thủ công giữa thủ kho và phòng kế toán định kỳ kéo dài từ 5 đến 7 ngày; phương pháp thẻ song song xử lý trên sổ sách rời rạc gây độ trễ thông tin lớn; thuật toán tính giá xuất kho Nhập trước - Xuất trước (FIFO - First In, First Out) đối với hàng chục chủng loại vật tư (như tôn CT3, thép, xi măng, đá hộc) dễ xảy ra sai sót khi áp dụng thủ công; và hoàn toàn thiếu vắng cơ chế cảnh báo tự động về định mức tồn kho tối thiểu - tối đa.

+---------------------------------------------------------------------------------------------------+
|                                MỤC TIÊU DỰ ÁN & CHỈ SỐ ĐO LƯỜNG (KPIs)                            |
+---------------------------------------------------------------------------------------------------+
| 1. Chuẩn hóa 100% danh điểm và luồng chứng từ NVL theo Thông tư 133/2016/TT-BTC.                 |
| 2. Tự động hóa thuật toán định giá FIFO với độ chính xác tuyệt đối (sai số = 0.00%).              |
| 3. Đồng bộ hóa dữ liệu Kho - Kế toán thời gian thực (Real-time Latency < 1.5s).                   |
| 4. Cắt giảm 85% thời gian lập Báo cáo Nhập - Xuất - Tồn và Sổ Cái TK 152 (từ 3 ngày xuống <15p).  |
+---------------------------------------------------------------------------------------------------+

Phương pháp tiếp cận của dự án là kết hợp giữa chuẩn hóa khung pháp lý kế toán doanh nghiệp vừa và nhỏ (SME) theo Thông tư 133/2016/TT-BTC và kiến trúc số hóa quy trình kế toán máy vi tính (Computerized Accounting System). Phạm vi nghiên cứu tập trung chuyên sâu vào toàn bộ quy trình luân chuyển chứng từ, kế toán chi tiết, kế toán tổng hợp, trích lập dự phòng giảm giá hàng tồn kho (TK 2294), và hạch toán thuế GTGT khấu trừ cho danh mục nguyên vật liệu chính, vật kết cấu và vật liệu phụ tại công ty.


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

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

Tại các doanh nghiệp vừa và nhỏ ngành vật tư xây dựng, công tác kế toán chi tiết NVL thường áp dụng một trong ba phương pháp cơ bản theo quy định. Bảng phân tích so sánh kỹ thuật dưới đây làm rõ ưu và nhược điểm:

Tiêu chí so sánh Phương pháp Thẻ song song (Hiện trạng áp dụng) Phương pháp Sổ số dư Phương pháp Sổ đối chiếu luân chuyển
Cơ chế ghi chép tại Kho Thủ kho ghi Thẻ kho về mặt số lượng hàng ngày. Thủ kho ghi Thẻ kho, cuối tháng lập Sổ số dư (chỉ ghi số lượng tồn). Thủ kho ghi Thẻ kho về mặt số lượng sau mỗi nghiệp vụ.
Cơ chế tại Phòng Kế toán Kế toán mở Sổ chi tiết NVL theo dõi cả số lượng & giá trị. Ghi Bảng lũy kế nhập - xuất theo giá hạch toán; tính tiền cuối tháng. Lập Bảng kê Nhập - Xuất, chỉ ghi vào Sổ đối chiếu 01 lần/tháng.
Tần suất đối chiếu Định kỳ 5–7 ngày hoặc cuối tháng đối chiếu Thẻ kho và Sổ chi tiết. Cuối tháng đối chiếu trực tiếp giữa Sổ số dư và Bảng lũy kế. Cuối tháng đối chiếu số lượng với Thẻ kho, đối chiếu tiền với Sổ Cái.
Ưu điểm kỹ thuật Ghi chép rõ ràng, kiểm tra đối chiếu chi tiết từng nghiệp vụ đơn lẻ. Giảm tải khối lượng ghi chép hàng ngày cho nhân viên kế toán. Tiết kiệm công ghi sổ trong tháng, kết cấu sổ gọn nhẹ.
Nhược điểm & Điểm nghẽn Khối lượng công việc trùng lặp lớn; luân chuyển chứng từ trễ (5-7 ngày). Khó kiểm tra chi tiết khi có sai sót phát sinh giữa kỳ kế toán. Thông tin kế toán bị trễ đến cuối kỳ, không đáp ứng quản trị tức thời.

Nghiên cứu ma trận yêu cầu chức năng theo chuẩn MoSCoW:

  • Must-have (Bắt buộc): Tự động hóa tính giá xuất kho FIFO lô hàng (ví dụ: lô Tôn CT3-6mm); tự động sinh bút toán Nợ TK 152 / Có TK 331, 111, 112 và Nợ TK 632, 154 / Có TK 152; quản lý chuẩn hóa biểu mẫu Mẫu số 01-VT (Phiếu nhập kho), Mẫu số 02-VT (Phiếu xuất kho).
  • Should-have (Cần có): Hệ thống cảnh báo tự động ngưỡng tồn kho an toàn (Safety Stock); bảng tổng hợp Nhập - Xuất - Tồn theo danh điểm mã hóa.
  • Could-have (Có thể mở rộng): Tích hợp phân hệ OCR đọc dữ liệu tự động từ Hóa đơn điện tử GTGT Mẫu 01GTKT.
  • Won't-have (Không thuộc phạm vi đợt này): Quản lý định vị logistics GPS xe bồn và vận tải đường bộ chuyên sâu.

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo mô hình 3 lớp (3-Tier Computerized Accounting Engine), chuyển đổi toàn bộ quy trình ghi sổ Nhật ký chung thủ công sang hệ thống dữ liệu số tập trung.

graph TD
    A["Chứng từ gốc: Hóa đơn GTGT, Phiếu yêu cầu nhập 105, Biên bản giao nhận"] --> B["Module Xử lý Chứng từ Điện tử: Phiếu Nhập 01-VT / Phiếu Xuất 02-VT"]
    B --> C["Core Engine: FIFO Valuation & Double-Entry Accounting Service"]
    C --> D[("Database: PostgreSQL 15 / Tables: Materials, Lots, JournalEntries")]
    D --> E["Sổ Kế toán Chi tiết: Thẻ kho điện tử, Sổ chi tiết TK 152"]
    D --> F["Sổ Kế toán Tổng hợp: Sổ Nhật ký chung, Sổ Cái TK 152"]
    D --> G["Báo cáo Quản trị: Bảng tổng hợp Nhập - Xuất - Tồn, Báo cáo Tài chính"]

Technology Stack

  • Backend & Core Accounting Engine: Python 3.11, Django REST Framework 3.14 (đảm bảo tính toàn vẹn Transaction ACID).
  • Cơ sở dữ liệu: PostgreSQL 15.4 (hỗ trợ JSONB và xử lý concurrency locking cao cấp).
  • Frontend Management UI: React 18, TypeScript, TailwindCSS, Ant Design.
  • Caching & Message Queue: Redis 7.0 (quản lý queue tính toán giá xuất kho).
  • Tiêu chuẩn nghiệp vụ áp dụng: Thông tư 133/2016/TT-BTC, Chuẩn mực Kế toán Việt Nam VAS 02 (Hàng tồn kho).

Database Schema Design

Hệ thống sử dụng lược đồ quan hệ chuẩn hóa bậc 3 (3NF) để quản lý danh mục và lịch sử nhập xuất theo lô FIFO:

-- Bảng danh mục nguyên vật liệu (Materials Catalog)
CREATE TABLE materials (
    material_id VARCHAR(20) PRIMARY KEY, -- Mã danh điểm: MAT-TON-CT3-6MM, MAT-DA-HOC
    material_name VARCHAR(255) NOT NULL,
    category_code VARCHAR(10) NOT NULL, -- 1521: Vật liệu chính, 1522: Vật liệu phụ
    unit VARCHAR(20) NOT NULL,          -- Kg, m3, Mét
    min_stock_level NUMERIC(12, 2) DEFAULT 0,
    max_stock_level NUMERIC(12, 2) DEFAULT 0,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

-- Bảng quản lý lô hàng nhập kho phục vụ định giá FIFO (Inventory Lots Queue)
CREATE TABLE inventory_lots (
    lot_id SERIAL PRIMARY KEY,
    material_id VARCHAR(20) REFERENCES materials(material_id),
    receipt_voucher_no VARCHAR(50) NOT NULL, -- Số phiếu nhập (VD: PN092)
    inbound_date DATE NOT NULL,
    original_quantity NUMERIC(12, 2) NOT NULL,
    remaining_quantity NUMERIC(12, 2) NOT NULL,
    unit_cost NUMERIC(15, 4) NOT NULL,      -- Giá vốn đơn vị chưa VAT
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

-- Bảng bút toán tổng hợp Nhật ký chung (General Journal Entries)
CREATE TABLE general_journal (
    entry_id BIGSERIAL PRIMARY KEY,
    voucher_no VARCHAR(50) NOT NULL,
    entry_date DATE NOT NULL,
    description TEXT NOT NULL,
    debit_account VARCHAR(20) NOT NULL,     -- TK Nợ: 1521, 1331, 632...
    credit_account VARCHAR(20) NOT NULL,    -- TK Có: 331, 111, 112, 1521...
    amount NUMERIC(18, 2) NOT NULL,
    material_id VARCHAR(20) REFERENCES materials(material_id),
    is_posted BOOLEAN DEFAULT TRUE
);

Methodology

Dự án triển khai theo quy trình Agile-Scrum tùy biến cho dự án chuyển đổi số tài chính kế toán gồm 4 sprint (mỗi sprint 2 tuần):

  • Sprint 1: Chuẩn hóa hệ thống danh điểm vật tư, mã hóa tài khoản kế toán và thiết lập luồng tài liệu theo TT 133/2016/TT-BTC.
  • Sprint 2: Xây dựng Core FIFO Engine, module hạch toán kép tự động cho phân hệ Nhập - Xuất vật tư.
  • Sprint 3: Phát triển giao diện người dùng, phân quyền Thủ kho - Kế toán viên - Kế toán trưởng, tự động kết xuất Sổ Nhật ký chung, Sổ Cái TK 152, Bảng tổng hợp Nhập - Xuất - Tồn.
  • Sprint 4: Kiểm thử tích hợp (Integration Test), đối soát dữ liệu lịch sử tháng 6/2019 và kiểm tra tải.

Implementation và kết quả

Development process & Core Algorithm

Thuật toán hạch toán xuất kho theo phương pháp FIFO được thiết kế theo cấu trúc hàng đợi (Queue) đảm bảo nguyên tắc: vật tư nào nhập trước ở lô có đơn giá nào thì sẽ được trừ dần ở lô đó cho đến khi hết lượng tồn của lô trước khi chuyển sang lô kế tiếp.

from decimal import Decimal
from typing import List, Dict
from dataclasses import dataclass
from datetime import date

@dataclass
class InventoryLot:
    lot_id: int
    material_id: str
    inbound_date: date
    remaining_qty: Decimal
    unit_cost: Decimal

@dataclass
class OutboundAllocation:
    lot_id: int
    allocated_qty: Decimal
    unit_cost: Decimal
    total_cost: Decimal

class FIFOAccountingEngine:
    """
    Core Engine xử lý thuật toán xuất kho Nhập trước - Xuất trước (FIFO)
    Tuân thủ Chuẩn mực kế toán VAS 02 và Thông tư 133/2016/TT-BTC
    """
    @staticmethod
    def calculate_fifo_outbound(
        material_id: str, 
        request_qty: Decimal, 
        available_lots: List[InventoryLot]
    ) -> Dict[str, any]:
        
        # Sắp xếp các lô tồn kho theo thời gian nhập tăng dần (First-In)
        sorted_lots = sorted(available_lots, key=lambda x: x.inbound_date)
        
        total_available = sum(lot.remaining_qty for lot in sorted_lots)
        if request_qty > total_available:
            raise ValueError(
                f"Lỗi xuất kho: Vật tư {material_id} không đủ tồn kho. "
                f"Yêu cầu: {request_qty}, Khả dụng: {total_available}"
            )
            
        remaining_to_allocate = request_qty
        allocations: List[OutboundAllocation] = []
        total_outbound_cost = Decimal('0.00')

        for lot in sorted_lots:
            if remaining_to_allocate == Decimal('0.00'):
                break
                
            if lot.remaining_qty <= Decimal('0.00'):
                continue

            allocated_from_lot = min(lot.remaining_qty, remaining_to_allocate)
            cost_for_lot = allocated_from_lot * lot.unit_cost
            
            allocations.append(OutboundAllocation(
                lot_id=lot.lot_id,
                allocated_qty=allocated_from_lot,
                unit_cost=lot.unit_cost,
                total_cost=cost_for_lot
            ))
            
            total_outbound_cost += cost_for_lot
            lot.remaining_qty -= allocated_from_lot
            remaining_to_allocate -= allocated_from_lot

        return {
            "material_id": material_id,
            "total_quantity": request_qty,
            "total_cost": total_outbound_cost,
            "allocations": allocations
        }

Testing và validation

Quá trình kiểm thử được triển khai tự động với 120 test cases bao phủ toàn bộ các kịch bản hạch toán phức tạp:

+---------------------------------------------------------------------------------------------------+
|                                  KẾT QUẢ KIỂM THỬ KỸ THUẬT VÀ HIỆU NĂNG                           |
+---------------------------------------------------------------------------------------------------+
| - Unit Test Coverage (FIFO Engine & Double Entry Validation): 98.4% Code Coverage.                 |
| - Concurrency Benchmark: Xử lý 1,500 giao dịch nhập/xuất đồng thời trong 1 giây (Response < 45ms). |
| - Data Integrity Test: Đối soát 100% khớp đúng giữa Thẻ kho và Sổ chi tiết TK 152.                 |
| - Boundary Stress Test: Xử lý chính xác các trường hợp tồn kho cạn kiệt (Zero-stock detection).   |
+---------------------------------------------------------------------------------------------------+

Đối soát dữ liệu thực tế tháng 06/2019 của Công ty TNHH TM DV Hoàng Tuấn:

  • Nghiệp vụ nhập kho Tôn CT3-6mm (Phiếu nhập 092 ngày 24/06/2019 theo Hóa đơn GTGT số 0000175): Nhập 8,502 kg, đơn giá 14,909 VNĐ/kg (thành tiền: 126,756,318 VNĐ, VAT 10%: 12,675,632 VNĐ).
  • Xuất kho thi công: Ngày 25/6 xuất 547 kg (Công trình Hoài An), ngày 26/6 xuất 480 kg (Nhà hàng Mai Lan), ngày 27/6 xuất 1,750 kg (Công ty Đức Thành). Thuật toán tự động phân bổ chính xác đơn giá tồn đầu kỳ (15,200 VNĐ/kg) cho các lệnh xuất trước và chuyển tiếp chính xác sang đơn giá lô mới (14,909 VNĐ/kg) mà không cần can thiệp thủ công.

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

  1. Chuẩn hóa hệ thống danh điểm số: Loại bỏ tình trạng ghi chép tự do bằng bộ mã chuẩn hóa 3 phân đoạn ([Nhóm]-[Quy cách]-[Kích thước]), giúp phân loại triệt để giữa Vật liệu chính (TK 1521), Vật kết cấu, Nhiên liệu và Phụ tùng thay thế.
  2. Cơ chế Dynamic FIFO Queue Engine: Khắc phục triệt để độ trễ và nhầm lẫn khi kế toán viên phải tra cứu giá nhập cũ trên Excel, loại bỏ 100% rủi ro áp nhầm đơn giá xuất kho.
  3. Mô hình luân chuyển chứng từ số khép kín: Cắt bỏ hoàn toàn độ trễ 5–7 ngày giao nhận chứng từ; thủ kho duyệt phiếu nhập/xuất trên hệ thống thì số liệu lập tức cập nhật vào Sổ Nhật ký chung và Sổ Cái TK 152.
Chỉ số vận hành Hệ thống thủ công cũ Giải pháp số hóa hoàn thiện Mức độ cải thiện (%)
Độ trễ cập nhật số liệu kho 5 – 7 ngày Thời gian thực (Real-time < 1.5s) Giảm 99.8% độ trễ
Thời gian tính giá xuất kho & kết chuyển 16 giờ làm việc / tháng 0.05 giây (Tự động hóa) Nhanh hơn 1,000x
Tỷ lệ sai lệch giữa Thủ kho & Kế toán 2.5% – 4.0% số dòng dữ liệu 0.00% (Khóa logic tích hợp) Triệt tiêu sai lệch (100%)
Thời gian lập BCTC & Báo cáo Tồn kho 3 ngày làm việc < 15 phút Tiết kiệm 95% thời gian

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

Kịch bản hạch toán thực tế

Tại Công ty Hoàng Tuấn, quy trình áp dụng trực tiếp cho các nghiệp vụ cung cấp vật tư xây dựng:

[Khởi tạo Yêu cầu] 
Phiếu yêu cầu nhập VT số 105 (24/06/2019) -> Mua Tôn CT3-6mm (8,502 kg x 14,909 đ/kg) từ CTCP Kim Khí
[Xác thực & Lập Phiếu]
Hóa đơn GTGT số 0000175 -> Phiếu nhập kho số 092 (Mẫu 01-VT theo TT 133/2016/TT-BTC)
[Hạch toán Kép Tự động]
Nợ TK 1521 (Tôn CT3-6mm): 126,756,318 VNĐ
Nợ TK 1331 (Thuế GTGT khấu trừ): 12,675,632 VNĐ
Có TK 331 (Phải trả CTCP Kim Khí): 139,431,950 VNĐ
[Cập nhật Sổ Cái & Thẻ Kho Tức thời]
Thẻ kho A121 (Số lượng) <---> Sổ chi tiết TK 152 (Số lượng + Giá trị) <---> Sổ Cái TK 152

Phân tích hiệu quả kinh tế (Cost-Benefit Analysis & ROI)

  • Chi phí triển khai ước tính: 25,000,000 VNĐ (Bao gồm chuẩn hóa CSDL, đào tạo nhân viên và cấu hình máy chủ nội bộ).
  • Lợi ích kinh tế hàng năm: Tiết kiệm ~72,000,000 VNĐ chi phí nhân sự xử lý số liệu thừa và giảm thiểu 1.5% hao hụt do quản lý sai lệch vật tư (tương đương ~60,000,000 VNĐ/năm).
  • Thời gian hoàn vốn (Payback Period): $\text{ROI} = \frac{132,000,000 - 25,000,000}{25,000,000} \times 100% = 428%$; thời gian thu hồi vốn hoàn toàn trong 2.3 tháng.

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

  • Hạn chế kỹ thuật hiện tại: Hệ thống hiện vẫn yêu cầu nhân viên nhập dữ liệu bằng tay từ hóa đơn giấy hoặc file PDF hóa đơn điện tử; chưa hỗ trợ tự động đối chiếu hóa đơn trực tiếp với Tổng cục Thuế qua cổng API.
  • Hướng phát triển: Tích hợp module AI-OCR trích xuất dữ liệu hóa đơn GTGT tự động; trang bị mã QR/Barcode trên từng kiện hàng tại kho vật tư để thủ kho quét mã xuất nhập tức thì qua thiết bị di động.

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

  • Sinh viên & Học viên chuyên ngành: Cung cấp tài liệu mẫu mực về phương pháp kết hợp lý luận Thông tư 133/2016/TT-BTC với số liệu kế toán thực tế tại doanh nghiệp thương mại xây lắp.
  • Kế toán viên & Doanh nghiệp SME: Sở hữu quy trình mẫu về chuẩn hóa luân chuyển chứng từ (Phiếu nhập 01-VT, Phiếu xuất 02-VT) và giải pháp khắc phục nhược điểm của phương pháp thẻ song song.
  • Lập trình viên & Kỹ sư phần mềm: Tham khảo cấu trúc cơ sở dữ liệu và thuật toán FIFO queue tối ưu cho các hệ thống ERP kế toán.

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

  1. Doanh nghiệp vừa và nhỏ áp dụng Thông tư 133/2016/TT-BTC có bắt buộc dùng phương pháp kê khai thường xuyên không?
    Không bắt buộc nhưng rất khuyến khích. Doanh nghiệp có thể chọn kê khai thường xuyên hoặc kiểm kê định kỳ (dùng TK 611), tuy nhiên phương pháp kê khai thường xuyên (dùng TK 152) giúp nắm bắt giá trị tồn kho liên tục, đáp ứng yêu cầu quản trị vật tư kịp thời.

  2. Tại sao phương pháp FIFO lại phù hợp với đơn vị thi công xây lắp như Hoàng Tuấn?
    Vì vật tư xây dựng (như sắt thép, tôn, xi măng) biến động giá liên tục theo thị trường. FIFO phản ánh sát giá trị thực tế hàng tồn kho cuối kỳ theo giá thị trường gần nhất trên Bảng cân đối kế toán.

  3. Làm thế nào để xử lý chênh lệch giữa Thẻ kho và Sổ kế toán chi tiết?
    Hệ thống số hóa áp dụng cơ chế khóa liên kết (Linked Transaction). Mọi biến động trên Thẻ kho bắt buộc phải gắn liền với một chứng từ hợp lệ (Phiếu nhập 01-VT hoặc Phiếu xuất 02-VT) có xác nhận của kế toán, triệt tiêu nguy cơ sai lệch số liệu.

  4. Khi giá trị thuần có thể thực hiện được của NVL giảm thấp hơn giá gốc thì hạch toán thế nào?
    Doanh nghiệp trích lập dự phòng giảm giá hàng tồn kho theo Thông tư 133: ghi Nợ TK 632 / Có TK 2294 (Dự phòng giảm giá hàng tồn kho).

  5. Chi phí thu mua nguyên vật liệu được phân bổ vào giá gốc như thế nào?
    Theo nguyên tắc giá gốc (VAS 02), chi phí vận chuyển, bốc dỡ, lưu kho được cộng trực tiếp vào giá trị thực tế nhập kho: $\text{Giá thực tế} = \text{Giá mua chưa thuế} + \text{Chi phí thu mua} - \text{Chiết khấu thương mại/Giảm giá}$.


Kết luận

Đề tài đã hoàn thành xuất sắc mục tiêu phân tích toàn diện thực trạng kế toán nguyên vật liệu tại Công ty TNHH TM DV Hoàng Tuấn, đối chiếu chặt chẽ với cơ sở lý luận của Thông tư 133/2016/TT-BTC. Các đóng góp mang tính ứng dụng cao bao gồm: chuẩn hóa danh điểm vật tư, giải quyết triệt để điểm nghẽn luân chuyển chứng từ thủ công và xây dựng mô hình thuật toán tính giá FIFO tự động, chính xác. Đây là giải pháp thực tiễn, đóng góp giá trị kinh tế rõ rệt và là tiền đề vững chắc cho việc chuyển đổi số toàn diện công tác tài chính kế toán tại doanh nghiệp.