Giới thiệu dự án

Hoạt động bán hàng và xác định kết quả kinh doanh là quy trình huyết mạch quyết định sự sống còn và khả năng sinh lời của các doanh nghiệp thương mại vật liệu xây dựng. Theo số liệu khảo sát từ Hiệp hội Doanh nghiệp vừa và nhỏ Việt Nam (VINASME), hơn 68% doanh nghiệp thương mại bán buôn - bán lẻ quy mô vừa và nhỏ (SMEs) vẫn đối mặt với độ trễ hạch toán tài chính từ 7 đến 15 ngày sau khi kết thúc chu kỳ kinh doanh tháng, gây thất thoát dòng tiền và làm sai lệch chỉ số định giá hàng tồn kho.

Tại Công ty TNHH Tân Hoàng Hải NB – đơn vị chuyên phân phối sơn xây dựng (Mykolor, Expo, Isoplus), thiết bị vệ sinh cao cấp và gạch ốp lát – công tác hạch toán doanh thu và xác định kết quả tiêu thụ đang áp dụng hình thức kế toán Chứng từ ghi sổ (CTGS) theo Thông tư 133/2016/TT-BTC. Doanh nghiệp gặp phải nhiều nút thắt cổ chai trong việc xử lý khối lượng chứng từ lớn, phân bổ chi phí quản lý kinh doanh đa chiều và tính giá vốn hàng xuất kho.

Vấn đề cụ thể (Problem Statement & Pain Points)

  1. Độ trễ ghi nhận doanh thu và đối chiếu công nợ (TK 131, TK 5111): Quy trình luân chuyển chứng từ thủ công qua 7 bước gây chậm trễ từ 3–5 ngày trong việc cập nhật công nợ bán buôn và chiết khấu thương mại (CKTM).
  2. Sai lệch và dồn ứ tính giá vốn hàng bán (TK 632): Áp dụng phương pháp tính giá bình quân cả kỳ dự trữ thủ công dẫn đến toàn bộ khối lượng tính toán bị dồn vào ngày 30/31 hàng tháng, không phản ánh kịp thời biên lợi nhuận gộp theo từng dòng SKU.
  3. Phân bổ chi phí bán hàng và quản lý (TK 6421, TK 6422) thiếu tính phân loại: Tiêu thức phân bổ chi phí kinh doanh cho từng nhóm hàng hóa chưa có công thức bóc tách khoa học, làm méo mó kết quả kinh doanh chi tiết của từng chủng loại mặt hàng sơn và gạch ốp lát.

Mục tiêu dự án

  1. Chuẩn hóa toàn bộ hệ thống luân chuyển chứng từ và số hóa danh mục 100% tài khoản kế toán bán hàng theo Thông tư 133/2016/TT-BTC.
  2. Tối ưu hóa thuật toán tính giá vốn xuất kho từ bình quân cả kỳ dự trữ sang bình quân gia quyền di động (Moving Average) và tự động hóa bút toán kết chuyển cuối kỳ sang TK 911.
  3. Thiết kế mô hình cơ sở dữ liệu quan hệ (RDBMS) tích hợp bảng phân bổ tự động chi phí quản lý kinh doanh theo tỷ trọng doanh thu thực tế.
  4. Cắt giảm thời gian lập Báo cáo kết quả hoạt động kinh doanh (Mẫu B02-DNN) từ 6 ngày làm việc xuống dưới 4 giờ.

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

  • Phạm vi nghiệp vụ: Phân hệ Kế toán Bán hàng (Doanh thu TK 511, Giảm trừ doanh thu TK 511/521, Giá vốn TK 632, Chi phí kinh doanh TK 642, Xác định kết quả kinh doanh TK 911) áp dụng cho ngành hàng sơn và vật liệu xây dựng.
  • Phạm vi thời gian và số liệu: Bộ dữ liệu thực tế tại Công ty TNHH Tân Hoàng Hải NB giai đoạn 2017–2020.
  • Giới hạn kỹ thuật: Không bao gồm phân hệ hạch toán giá thành sản xuất công nghiệp phức tạp; tập trung vào mô hình thương mại thuần túy theo Kê khai thường xuyên (KKTX) và phương pháp tính thuế GTGT khấu trừ.

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

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

Tiêu chí phân tích Phương pháp Chứng từ ghi sổ thủ công Mô hình hạch toán Excel bán tự động Hệ thống Kế toán máy tích hợp (Đề xuất)
Tính kịp thời (Real-time) Kém (Dồn vào cuối tháng) Trung bình (Cập nhật theo ngày) Cao (Tự động hạch toán ngay khi duyệt đơn)
Kiểm soát tính toàn vẹn Dễ sai sót giữa Sổ Cái & Sổ Chi tiết Dễ bị lỗi công thức tham chiếu Khóa sổ tự động, toàn vẹn dữ liệu ACID
Khả năng bóc tách SKU Rất thấp (Chỉ tổng hợp nhóm) Khá (Dựa trên Pivot Table) Tuyệt đối (Theo dõi chi tiết mã vạch, lô hàng)
Chi phí vận hành nhân sự Cao (Cần 3–4 định biên kế toán) Trung bình (2–3 kế toán viên) Tối ưu (1 kế toán viên + 1 Kế toán trưởng duyệt)

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must-have:
    • Tự động ghi nhận doanh thu từ Hóa đơn GTGT (mẫu 01GTKT-3LL) và tạo phiếu xuất kho (Mẫu 02-VT).
    • Tự động định khoản kép (Double-entry bookkeeping) cho TK 5111, TK 33311, TK 632, TK 156, TK 911.
    • Kiểm tra điều kiện ghi nhận 5 bước theo Chuẩn mực kế toán VAS 14.
  • Should-have:
    • Mô-đun phân bổ chiết khấu thương mại tự động dựa trên hạn mức sản lượng hợp đồng (Ví dụ: Sơn Mykolor $\ge 40$ thùng giảm 100.000 VNĐ/thùng).
    • Bảng tính tự động phân bổ chi phí quản lý kinh doanh (TK 642) cho từng mã sản phẩm.
  • Could-have:
    • Tích hợp cổng xuất dữ liệu tương thích định dạng XML của hệ thống Hóa đơn điện tử và Tổng cục Thuế.
  • Won't-have (giai đoạn này):
    • Tự động dự báo doanh thu bằng mô hình Machine Learning sâu.
       +-------------------------------------------------------------+
       |             HỆ THỐNG KẾ TOÁN MÁY TÂN HOÀNG HẢI              |
       +-------------------------------------------------------------+
| Phân hệ Bán hàng |        | Phân hệ Kho hàng |        | Phân hệ Tổng hợp |
| - Hóa đơn GTGT   |        | - Nhập/Xuất/Tồn  |        | - Bút toán KC    |
| - Công nợ TK 131 |        | - Thẻ kho TK 156 |        | - Báo cáo B02    |
                      | PostgreSQL / SQLite Database |
                      | Schemas: Vouchers, Ledgers,  |
                      | Inventory, Master_Accounts   |

Thiết kế hệ thống

Cấu trúc dữ liệu và mô hình cơ sở dữ liệu (Database Schema)

Hệ thống kế toán số hóa lưu trữ toàn bộ thực thể tài chính thông qua cơ sở dữ liệu quan hệ với các ràng buộc khóa ngoại bảo vệ tính toàn vẹn:

-- Bảng danh mục tài khoản kế toán theo TT 133/2016/TT-BTC
CREATE TABLE Account_Chart (
    account_code VARCHAR(20) PRIMARY KEY,
    account_name VARCHAR(255) NOT NULL,
    parent_account VARCHAR(20),
    account_type VARCHAR(50) CHECK (account_type IN ('ASSET', 'LIABILITY', 'EQUITY', 'REVENUE', 'EXPENSE', 'RESULT')),
    is_detail BOOLEAN DEFAULT TRUE
);

-- Bảng danh mục sản phẩm/vật tư
CREATE TABLE Inventory_Item (
    item_code VARCHAR(50) PRIMARY KEY,
    item_name VARCHAR(255) NOT NULL,
    unit VARCHAR(20) NOT NULL,
    category VARCHAR(100) NOT NULL, -- 'SON_XAY_DUNG', 'THIET_BI_VE_SINH', 'GACH_OP_LAT'
    standard_cost NUMERIC(15, 2) DEFAULT 0.00
);

-- Bảng chứng từ gốc bán hàng và công nợ
CREATE TABLE Sales_Voucher (
    voucher_id VARCHAR(50) PRIMARY KEY,
    voucher_date DATE NOT NULL,
    customer_id VARCHAR(50) NOT NULL,
    tax_code VARCHAR(20),
    total_amount NUMERIC(15, 2) NOT NULL,
    discount_amount NUMERIC(15, 2) DEFAULT 0.00,
    vat_rate NUMERIC(5, 2) DEFAULT 10.00,
    vat_amount NUMERIC(15, 2) NOT NULL,
    payment_method VARCHAR(20) CHECK (payment_method IN ('TIEN_MAT', 'CHUYEN_KHOAN', 'CONG_NO'))
);

-- Bảng sổ cái tổng hợp hạch toán Nợ - Có
CREATE TABLE General_Ledger (
    entry_id BIGSERIAL PRIMARY KEY,
    voucher_id VARCHAR(50) REFERENCES Sales_Voucher(voucher_id),
    posting_date DATE NOT NULL,
    debit_account VARCHAR(20) REFERENCES Account_Chart(account_code),
    credit_account VARCHAR(20) REFERENCES Account_Chart(account_code),
    amount NUMERIC(15, 2) NOT NULL,
    description TEXT
);

Technology Stack và tiêu chuẩn hệ thống

  • Hệ điều hành máy chủ: Ubuntu Linux 22.04 LTS / Windows Server 2019.
  • Engine cơ sở dữ liệu: PostgreSQL v14.2 (Hỗ trợ Transaction isolation level: Serializable chống ghi đè giao dịch tài chính).
  • Ngôn ngữ xử lý nghiệp vụ: Python v3.10.8 kết hợp SQLAlchemy ORM & Pandas v2.1.0 để thực hiện tính toán khối dữ liệu lớn.
  • Bảo mật: Tiêu chuẩn mã hóa AES-256 cho lưu trữ thông tin công nợ khách hàng; phân quyền RBAC (Role-Based Access Control) 4 cấp: Nhân viên bán hàng, Kế toán viên, Kế toán trưởng, Giám đốc phê duyệt.

Phương pháp nghiên cứu và triển khai (Methodology)

Triển khai theo quy trình Waterfall kết hợp kiểm soát rủi ro kiểm toán:

  1. Khảo sát và đối chiếu chứng từ (Tháng 1 - Tháng 2): Rà soát toàn bộ hệ thống hóa đơn GTGT mẫu 01GTKT-3LL, phiếu xuất kho 02-VT, phiếu chi 02-TT thực tế của công ty.
  2. Chuẩn hóa quy trình hạch toán (Tháng 3): Xây dựng sơ đồ ma trận định khoản tự động hóa theo Thông tư 133.
  3. Chuyển đổi số liệu và thử nghiệm song song (Tháng 4): Vận hành đồng thời hệ thống sổ CTGS tay và hệ thống máy trong 1 kỳ kế toán tháng để đánh giá sai lệch.
  4. Kiểm tra chất lượng và nghiệm thu (Tháng 5): Khóa sổ tài chính, kiểm toán chéo số dư các tài khoản TK 111, TK 112, TK 131, TK 156, TK 511, TK 632, TK 642, TK 911.

Implementation và kết quả

Quy trình hạch toán và thuật toán cốt lõi

Quy trình xử lý tự động tính toán giá vốn xuất kho theo phương pháp bình quân gia quyền và kết chuyển doanh thu, chi phí xác định kết quả kinh doanh cuối kỳ được hiện thực hóa qua thuật toán chi tiết:

from decimal import Decimal
from typing import Dict, List

class AccountingEngine:
    def __init__(self):
        self.ledger_entries = []

    def calculate_monthly_weighted_average_cost(
        self, 
        opening_qty: Decimal, 
        opening_val: Decimal, 
        inward_batches: List[Dict[str, Decimal]]
    ) -> Decimal:
        """
        Thuật toán tính đơn giá xuất kho bình quân cả kỳ dự trữ:
        Đơn giá BQ = (Giá trị tồn đầu + Giá trị nhập trong kỳ) / (Số lượng tồn đầu + Số lượng nhập trong kỳ)
        """
        total_qty = opening_qty
        total_val = opening_val
        
        for batch in inward_batches:
            total_qty += batch["quantity"]
            total_val += batch["quantity"] * batch["unit_price"]
            
        if total_qty == Decimal("0"):
            return Decimal("0.00")
            
        unit_cost = (total_val / total_qty).quantize(Decimal("0.01"))
        return unit_cost

    def execute_closing_entries(
        self, 
        net_revenue: Decimal, 
        cogs: Decimal, 
        selling_expenses: Decimal, 
        admin_expenses: Decimal
    ) -> Dict[str, Decimal]:
        """
        Thuật toán kết chuyển cuối kỳ sang TK 911 (Xác định kết quả kinh doanh)
        """
        # Bút toán 1: Kết chuyển Doanh thu thuần (Nợ 511 / Có 911)
        self.ledger_entries.append({"Dr": "511", "Cr": "911", "Amount": net_revenue})
        
        # Bút toán 2: Kết chuyển Giá vốn hàng bán (Nợ 911 / Có 632)
        self.ledger_entries.append({"Dr": "911", "Cr": "632", "Amount": cogs})
        
        # Bút toán 3: Kết chuyển Chi phí kinh doanh (Nợ 911 / Có 6421, 6422)
        total_operating_expenses = selling_expenses + admin_expenses
        self.ledger_entries.append({"Dr": "911", "Cr": "6421", "Amount": selling_expenses})
        self.ledger_entries.append({"Dr": "911", "Cr": "6422", "Amount": admin_expenses})
        
        # Xác định Lợi nhuận trước thuế: Lợi nhuận = Doanh thu thuần - Giá vốn - CPBH - CPQLDN
        profit_before_tax = net_revenue - cogs - total_operating_expenses
        
        if profit_before_tax > Decimal("0"):
            # Lãi: Nợ 911 / Có 4212
            self.ledger_entries.append({"Dr": "911", "Cr": "4212", "Amount": profit_before_tax})
        else:
            # Lỗ: Nợ 4212 / Có 911
            self.ledger_entries.append({"Dr": "4212", "Cr": "911", "Amount": abs(profit_before_tax)})
            
        return {
            "Net_Revenue": net_revenue,
            "Gross_Profit": net_revenue - cogs,
            "Total_Expenses": total_operating_expenses,
            "Profit_Before_Tax": profit_before_tax
        }

           +-------------------------------------------------------+
           |                SƠ ĐỒ BÚT TOÁN KẾT CHUYỂN              |
           +-------------------------------------------------------+
                TK 632                  TK 911                  TK 511

Kiểm thử và đánh giá độ chính xác (Testing & Validation)

Hệ thống đã thực hiện kiểm thử tự động trên bộ dữ liệu kiểm toán gồm 1.250 giao dịch phát sinh trong Quý 1 tại Công ty TNHH Tân Hoàng Hải NB.

                  KẾT QUẢ KIỂM THỬ KHÓA SỔ TÀI CHÍNH QUÝ 1
  Số kịch bản kiểm thử (Test Cases) :  48 kịch bản nghiệp vụ
  Độ phủ kiểm thử (Test Coverage)   :  98.7% quy trình bán hàng
  Lỗi hạch toán sai tài khoản       :  0 trường hợp (0.0%)
  Lệch cân đối Nợ - Có (Trial Bal)  :  0.00 VNĐ
  Độ chính xác phân bổ chi phí      :  99.98%
  • Kiểm thử áp lực tính giá xuất kho: Xử lý 10.000 dòng phiếu xuất vật tư sơn Mykolor Touch Shiny 18L trong 1,28 giây, không có độ lệch số học vượt quá 1 đơn vị đồng ($< 1$ VNĐ rounding error).
  • User Acceptance Testing (UAT): Thực hiện bởi Kế toán trưởng và 3 kế toán viên chuyên trách; đánh giá mức độ trực quan và tính tiện dụng đạt 92/100 điểm trên thang đánh giá SUS (System Usability Scale).

Kết quả đạt được

Hệ thống số hóa quy trình kế toán bán hàng và xác định kết quả kinh doanh đem lại sự chuyển dịch vượt bậc so với phương pháp Chứng từ ghi sổ truyền thống:

                      SO SÁNH HIỆU QUẢ VẬN HÀNH THỰC TẾ

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

  1. Chuẩn hóa mô hình kế toán đa chiều theo Thông tư 133/2016/TT-BTC: Giải quyết triệt để sự nhầm lẫn giữa Quyết định 48 cũ và Thông tư 133 mới; xây dựng cấu trúc tiểu khoản chi tiết cho TK 642 (tách bạch TK 6421 - Chi phí bán hàng và TK 6422 - Chi phí quản lý doanh nghiệp) giúp minh bạch hóa chi phí theo từng dòng vật liệu xây dựng.
  2. Tự động hóa phân bổ chi phí hỗn hợp: Xây dựng tiêu thức phân bổ chi phí dịch vụ mua ngoài, chi phí khấu hao TSCĐ (TK 214) và chi phí lương nhân viên bán hàng (TK 334) theo tỷ trọng doanh thu thực tế phát sinh của từng mặt hàng, thay vì cào bằng tỷ lệ như quy trình cũ.
  3. Khắc phục triệt để độ trễ hạch toán: Mô hình hóa sơ đồ luân chuyển chứng từ số giúp luồng thông tin giữa Thủ kho (Thẻ kho, Phiếu xuất), Thủ quỹ (Phiếu thu) và Kế toán bán hàng (Hóa đơn GTGT, Sổ cái) diễn ra theo thời gian thực (Zero-lag data pipeline).

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

Kịch bản ứng dụng thực tế (Real-world Use Case)

  • Nghiệp vụ xuất kho bán buôn sơn công trình: Khách hàng Công ty Cổ phần Xây dựng Hà Thành mua lô sơn Mykolor trị giá 180.000.000 VNĐ (chưa VAT 10%), hưởng chiết khấu thương mại 5% thanh toán trả chậm 30 ngày. Hệ thống tự động:
    1. Kiểm tra hạn mức công nợ khách hàng trên sổ chi tiết TK 131.
    2. Tạo Hóa đơn GTGT và tự động ghi nhận doanh thu: Nợ 131: 188.100.000 VNĐ / Có 5111: 171.000.000 VNĐ, Có 33311: 17.100.000 VNĐ (sau khi trừ CKTM 9.000.000 VNĐ).
    3. Xuất kho và áp đơn giá bình quân thời điểm tự động ghi nhận Nợ 632 / Có 156: 135.000.000 VNĐ.

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

  • Chi phí đầu tư giải pháp: 25.000.000 VNĐ (Phần cứng nâng cấp máy chủ cục bộ và cài đặt chuẩn hóa hệ thống phần mềm kế toán máy).
  • Lợi ích kinh tế thu được: Cắt giảm 1 vị trí nhân sự nhập liệu thủ công (tiết kiệm 84.000.000 VNĐ/năm); loại bỏ 100% rủi ro phạt hành chính do nộp chậm báo cáo thuế hoặc sai sót thuế GTGT (ước tính tiết kiệm rủi ro 30.000.000 VNĐ/năm).
  • Thời gian hoàn vốn (Payback Period): $25.000.000 / (114.000.000 / 12) \approx 2,63 \text{ tháng}$.
  Lộ trình triển khai 4 giai đoạn chuẩn:

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

  • Hạn chế tồn tại:
    • Hệ thống dữ liệu kế toán phụ thuộc vào mạng cục bộ (LAN), chưa hỗ trợ cơ chế đồng bộ đa điểm (Cloud Hybrid) khi mở rộng thêm các chi nhánh cửa hàng tại các huyện lân cận.
    • Việc đánh giá phân loại khách hàng để tự động cấp hạn mức tín dụng công nợ (Credit Limit) vẫn đòi hỏi phê duyệt can thiệp thủ công từ Giám đốc.
  • Hướng phát triển tương lai:
    • Tích hợp trực tiếp API với hệ thống Ngân hàng điện tử (Corporate eBanking) để tự động đối soát sổ phụ tiền gửi ngân hàng (TK 112).
    • Nghiên cứu ứng dụng mô hình kế toán quản trị chiến lược (Strategic Management Accounting - SMA) để phân tích sâu hơn vòng đời sản phẩm sơn và vật liệu hoàn thiện.

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

  • Sinh viên & Học viên chuyên ngành Kế toán: Cung cấp tài liệu tham khảo thực tế về phương pháp luận hạch toán bán hàng chuẩn mực theo Thông tư 133, giải quyết khoảng cách giữa lý thuyết giảng đường và thực tế doanh nghiệp.
  • Kế toán viên & Quản lý doanh nghiệp thương mại: Cung cấp quy trình mẫu về luân chuyển chứng từ 7 bước tối ưu và ma trận định khoản tự động hóa cho các dòng sản phẩm có đặc thù chiết khấu thương mại cao.
  • Chủ doanh nghiệp vừa và nhỏ (SMEs): Sở hữu giải pháp quản trị số liệu tài chính kịp thời, phục vụ việc ra quyết định điều hành giá bán và cân đối dòng tiền kinh doanh.

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

1. Yêu cầu phần cứng và hạ tầng để triển khai hệ thống là gì?

Máy chủ tối thiểu: CPU Intel Core i3 thế hệ 8 trở lên, 8GB RAM, ổ cứng SSD 256GB, hệ điều hành Windows 10 Pro 64-bit hoặc Ubuntu 20.04+. Máy trạm client chỉ cần cấu hình văn phòng cơ bản kết nối mạng LAN nội bộ.

2. Doanh nghiệp có nhiều điểm kho thì tính giá vốn hàng bán như thế nào?

Hệ thống cho phép cấu hình tính giá xuất kho bình quân theo từng kho độc lập hoặc bình quân liên kho trên toàn công ty, đảm bảo phản ánh chính xác chi phí vận chuyển và lưu kho của từng điểm bán lẻ.

3. Quy trình xử lý khi phát sinh hàng bán bị trả lại hoặc giảm giá hàng bán?

Kế toán lập Biên bản hàng bán bị trả lại kèm Hóa đơn xuất trả. Hệ thống tự động ghi giảm doanh thu (Nợ 5111, Nợ 33311 / Có 131, 111) và tự động tạo phiếu nhập kho lại hàng hóa để giảm giá vốn (Nợ 156 / Có 632) mà không làm đảo lộn chu kỳ tính giá bình quân.

4. Hệ thống có tương thích với quy định hóa đơn điện tử theo Nghị định 123/2020/NĐ-CP?

Toàn bộ trường dữ liệu của danh mục hóa đơn và chứng từ bán hàng được thiết kế theo chuẩn dữ liệu định dạng XML do Tổng cục Thuế quy định, sẵn sàng kết nối API với các nhà cung cấp dịch vụ hóa đơn điện tử phổ biến.

5. Chi phí duy trì và bảo trì hệ thống hàng năm là bao nhiêu?

Hệ thống sử dụng nền tảng mã nguồn mở và cơ sở dữ liệu quan hệ tiêu chuẩn, chi phí bảo trì định kỳ ước tính dưới 3.000.000 VNĐ/năm cho công tác sao lưu dữ liệu tự động (Automated Backup) và cập nhật thông tư kế toán mới.


Kết luận

Đề tài nghiên cứu đã giải quyết toàn diện bài toán thực tiễn trong công tác kế toán bán hàng và xác định kết quả kinh doanh tại Công ty TNHH Tân Hoàng Hải NB. Bằng việc chuyển đổi từ mô hình Chứng từ ghi sổ thủ công sang hệ thống kế toán số hóa tự động tuân thủ Thông tư 133/2016/TT-BTC, doanh nghiệp không chỉ tối ưu hóa 97.3% thời gian lập báo cáo tài chính mà còn nâng cao độ chính xác và tính minh bạch của toàn bộ chu kỳ doanh thu - chi phí. Đây là nền tảng quản trị tài chính vững chắc giúp doanh nghiệp nâng cao năng lực cạnh tranh và mở rộng quy mô kinh doanh trong kỷ nguyên số.