TỔNG KẾT KHÓA HỌC: KẾ TOÁN LẬP TRÌNH PYTHON & SQL

Chúc mừng bạn đã hoàn thành lộ trình đào tạo Xây dựng Hệ thống Kế toán & Phân tích Tài chính Tự động hóa bằng Python & SQL.

Khóa học đã trang bị cho bạn tư duy kết hợp giữa Nghiệp vụ Kế toán Quản trị/Tài chính chuẩn mực và Kỹ thuật Lập trình Hiện đại, giúp tự động hóa toàn bộ vòng đời xử lý dữ liệu kế toán từ khâu ghi sổ ban đầu đến khâu lập báo cáo và trực quan hóa.

1. Tổng quan Lộ trình Đào tạo đã Đi qua

  [MODULE 1: NỀN TẢNG CƠ SỞ DỮ LIỆU KẾ TOÁN]
  └─ Cấu trúc DB Kế toán (COA, Journal Entries, Transactions) & Chuẩn hóa Quan hệ
  
  [MODULE 2: XỬ LÝ SỔ SÁCH & BÚT TOÁN KẾ TOÁN]
  └─ Lập trình Ghi Sổ Nhật ký Chung, Sổ Cái (General Ledger) & Kiểm soát Cân đối Nợ-Có
  
  [MODULE 3: ĐÓNG GÓI ENGINE BÁO CÁO TÀI CHÍNH]
  ├─ Bài 3.1: Thuật toán Kết chuyển Cuối kỳ (Period-End Closing Engine)
  ├─ Bài 3.2: Trích xuất Bảng Cân đối Kế toán (Balance Sheet)
  └─ Bài 3.3: Trích xuất Báo cáo Lưu chuyển Tiền tệ (Direct Cash Flow Statement)
  
  [MODULE 4: TRỰC QUAN HÓA & PHÁT HÀNH BÁO CÁO]
  ├─ Bài 4.1: Web App Dashboard Tài chính tương tác (Streamlit & Plotly)
  ├─ Bài 4.2: Tự động xuất Báo cáo Excel chuẩn định dạng Kế toán (openpyxl)
  └─ Bài 4.3: Đóng gói Ứng dụng CLI / GUI Desktop (Tkinter)

2. Các Kỹ năng & Công nghệ Key đã Làm chủ

Thành phần Kỹ năng & Chuẩn mực Kế toán Kỹ thuật Lập trình / Công nghệ
Cơ sở Dữ liệu Mô hình hóa Tài khoản (COA), Bút toán Kép (Double-Entry), Tài khoản Lưỡng tính. SQL, SQLite, Relational Schema design, ACID Transactions.
Xử lý Báo cáo Kết chuyển Doanh thu - Chi phí (TK 911), Số dư Dồn tích (Cumulative), Thuật toán Đối ứng Dòng tiền. Python (pandas), Complex SQL Queries (Self-Joins, Conditional Aggregation).
Xuất File & Web Định dạng số Kế toán (#,##0;(#,##0);"-"), Chuẩn hóa Gridlines/Borders. openpyxl, Dynamic Formatting, Formula injection.
Trực quan hóa Thẻ chỉ số KPI (Revenue, Net Profit, Net Margin), Phân tích Xu hướng. streamlit, plotly.express, plotly.graph_objects.

 

3. BÀI TẬP TỔNG HỢP CUỐI KHÓA (FINAL CAPSTONE PROJECT)

📋 Đề bài: Xây dựng Hệ thống Kế toán Tự động hóa Doanh nghiệp Mini

Bạn được giao nhiệm vụ triển khai hệ thống kế toán nội bộ cho một công ty thương mại dịch vụ trong Qúy 3/2026 với các yêu cầu kỹ thuật chi tiết sau:

Yêu cầu 1: Khởi tạo CSDL & Khai báo Số dư Đầu kỳ (SQL/Python)

  • Khởi tạo file CSDL SQLite company_accounting.db.

  • Thiết lập Bảng Hệ thống Tài khoản (COA) và ghi nhận số dư đầu kỳ ngày 01/07/2026:

    • TK 1121 (Tiền gửi Ngân hàng): $200,000,000\text{ VNĐ}$ (dư Nợ)

    • TK 156 (Hàng tồn kho): $100,000,000\text{ VNĐ}$ (dư Nợ)

    • TK 4111 (Vốn góp chủ sở hữu): $300,000,000\text{ VNĐ}$ (dư Có)

Yêu cầu 2: Lập trình Ghi nhận Chuỗi Nghiệp vụ Phát sinh trong Kỳ

Viết hàm Python thực thi chuỗi giao dịch trong tháng 07 & 08/2026:

  1. 05/07/2026: Mua hàng hóa nhập kho trị giá $50,000,000\text{ VNĐ}$ chưa thanh toán cho Người bán (TK 331).

  2. 15/07/2026: Chuyển khoản ngân hàng thanh toán tiền điện, nước quản lý (TK 642) trị giá $5,000,000\text{ VNĐ}$.

  3. 20/08/2026: Bán ra lô hàng xuất kho (giá vốn $60,000,000\text{ VNĐ}$) với giá bán $120,000,000\text{ VNĐ}$, Khách hàng (TK 131) thanh toán ngay qua Ngân hàng.

Yêu cầu 3: Thực thi Thuật toán Kết chuyển & Lập Báo cáo Tài chính

Viết script tự động thực hiện các bước:

  1. Chạy hàm Kết chuyển Xác định Kết quả Kinh doanh tại ngày 31/08/2026 (Tự động kết chuyển TK 511, 632, 642 về TK 911 và xác định Lợi nhuận sau thuế sang TK 4212).

  2. Trích xuất Báo cáo Kết quả Hoạt động Kinh doanh (P&L) và Bảng Cân đối Kế toán (Balance Sheet) tại ngày 31/08/2026.

  3. Kiểm tra tính cân đối: Đảm bảo $\text{Tổng Tài sản} = \text{Tổng Nguồn vốn}$.

Yêu cầu 4: Đóng gói Xuất File Excel & Hiển thị Web App Dashboard

  1. Xuất toàn bộ bộ Báo cáo Tài chính thu được ra file Excel Bao_Cao_Tai_Chinh_Q3_2026.xlsx có định dạng màu sắc header, border và number format kế toán.

  2. Xây dựng một trang Streamlit Dashboard đơn giản hiển thị các thẻ KPI: Tổng Doanh Thu, Tổng Chi Phí, Lợi Nhuận Thuần và Biểu đồ Doanh thu vs Chi phí.

💡 Khung Đáp án Tham khảo (Mã nguồn Mẫu)

import sqlite3
import pandas as pd

def run_capstone_project():
    conn = sqlite3.connect("company_accounting.db")
    cursor = conn.cursor()

    # 1. BẢNG DỮ LIỆU
    cursor.executescript("""
        DROP TABLE IF EXISTS journal_entries;
        DROP TABLE IF EXISTS transactions;
        
        CREATE TABLE transactions (
            transaction_id INTEGER PRIMARY KEY AUTOINCREMENT,
            entry_date TEXT NOT NULL,
            voucher_no TEXT NOT NULL,
            description TEXT
        );

        CREATE TABLE journal_entries (
            entry_id INTEGER PRIMARY KEY AUTOINCREMENT,
            transaction_id INTEGER,
            account_code TEXT NOT NULL,
            debit_amount REAL DEFAULT 0.0,
            credit_amount REAL DEFAULT 0.0,
            FOREIGN KEY (transaction_id) REFERENCES transactions (transaction_id)
        );
    """)

    # Helper function ghi nhận transaction
    def add_tx(date, voucher, desc, entries):
        cursor.execute("INSERT INTO transactions (entry_date, voucher_no, description) VALUES (?, ?, ?)", (date, voucher, desc))
        tx_id = cursor.lastrowid
        for code, debit, credit in entries:
            cursor.execute("INSERT INTO journal_entries (transaction_id, account_code, debit_amount, credit_amount) VALUES (?, ?, ?, ?)",
                           (tx_id, code, debit, credit))

    # 2. SỐ DƯ ĐẦU KỲ (01/07/2026)
    add_tx("2026-07-01", "PKT000", "Số dư đầu kỳ", [
        ("1121", 200000000, 0),
        ("156",  100000000, 0),
        ("4111", 0, 300000000)
    ])

    # 3. CÁC PATTERN GIAO DỊCH TRONG KỲ
    # Giao dịch 1: Mua hàng chưa trả tiền
    add_tx("2026-07-05", "PNK001", "Mua hàng hóa nhập kho chưa thanh toán", [
        ("156", 50000000, 0),
        ("331", 0, 50000000)
    ])
    # Giao dịch 2: Chi phí quản lý thanh toán bằng tiền gửi
    add_tx("2026-07-15", "PC001", "Thanh toán tiền điện nước quản lý", [
        ("642", 5000000, 0),
        ("1121", 0, 5000000)
    ])
    # Giao dịch 3a: Doanh thu bán hàng thu ngay bằng TGNH
    add_tx("2026-08-20", "PT001", "Bán hàng thu tiền qua ngân hàng", [
        ("1121", 120000000, 0),
        ("511", 0, 120000000)
    ])
    # Giao dịch 3b: Giá vốn hàng bán
    add_tx("2026-08-20", "PXK001", "Xuất kho giá vốn hàng bán", [
        ("632", 60000000, 0),
        ("156", 0, 60000000)
    ])

    # 4. THỰC THI BÚT TOÁN KẾT CHUYỂN CUỐI KỲ (31/08/2026)
    # Revenue Closing: Nợ 511 / Có 911 (120,000,000)
    add_tx("2026-08-31", "PKT001", "Kết chuyển Doanh thu", [("511", 120000000, 0), ("911", 0, 120000000)])
    # Expense Closing: Nợ 911 / Có 632, 642 (65,000,000)
    add_tx("2026-08-31", "PKT002", "Kết chuyển Chi phí", [("911", 65000000, 0), ("632", 0, 60000000), ("642", 0, 5000000)])
    # Profit Closing: Nợ 911 / Có 4212 (55,000,000)
    add_tx("2026-08-31", "PKT003", "Kết chuyển Lợi nhuận sau thuế", [("911", 55000000, 0), ("4212", 0, 55000000)])

    conn.commit()

    # 5. XÁC NHẬN CÂN ĐỐI TÀI SẢN - NGUỒN VỐN
    df_bal = pd.read_sql_query("""
        SELECT 
            account_code, 
            SUM(debit_amount) - SUM(credit_amount) as net_balance 
        FROM journal_entries 
        GROUP BY account_code
    """, conn)
    
    conn.close()

    print("==========================================================")
    print("      BÁO CÁO KIỂM TRA SỐ DƯ TÀI KHOẢN TỔNG HỢP (T-ACCOUNT)  ")
    print("==========================================================")
    print(df_bal.to_string(index=False))
    print("==========================================================")

if __name__ == "__main__":
    run_capstone_project()

4. Định hướng Mở rộng & Ứng dụng Thực tế

Sau khóa học này, bạn có thể tiếp tục phát triển mở rộng ứng dụng kế toán của mình sang các bài toán phức tạp hơn trong thực tế:

  1. Kết nối API Ngân hàng / Hóa đơn điện tử: Tự động lấy file XML hóa đơn đầu vào/đầu ra để tự động định khoản bút toán.

  2. Kế toán Chi phí sản xuất & Giá thành (Job-Order / Process Costing): Lập trình tính toán phân bổ chi phí chung và đánh giá sản phẩm dở dang cuối kỳ.

  3. Phân tích Tài chính Nâng cao (Financial Ratio Analysis): Lập trình tự động tính toán các chỉ số Liquidity (CR, QR), Solvency (D/E), Profitability (ROA, ROE) và đưa ra cảnh báo tự động trên Dashboard.

Chúc bạn ứng dụng thành công các kiến thức Lập trình Python & SQL vào công việc Quản trị Tài chính - Kế toán thực tế!