Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số doanh nghiệp, hệ thống thông tin kế toán (Accounting Information System - AIS) đóng vai trò huyết mạch trong việc kiểm soát tài chính và hỗ trợ ra quyết định chiến lược. Theo khảo sát từ Hiệp hội Doanh nghiệp Phần mềm và Dịch vụ CNTT Việt Nam (VINASA), hơn 85% doanh nghiệp công nghệ đang tối ưu hóa chu trình hạch toán tự động nhằm giảm thiểu rủi ro vận hành. Tuy nhiên, tại Công ty TNHH CMC Software (thành viên Tập đoàn Công nghệ CMC), công tác kế toán doanh thu bán hàng và cung ứng dịch vụ phần mềm trước đây vẫn phụ thuộc lớn vào việc lập biểu mẫu rời rạc trên Microsoft Excel. Thực trạng này dẫn đến độ trễ thông tin từ 3 đến 5 ngày, nguy cơ sai sót dữ liệu đối soát công nợ lên đến 8.2% và hạn chế khả năng tổng hợp báo cáo tài chính tức thời.

Problem statement cụ thể: Doanh nghiệp thiếu một hệ thống phần mềm chuyên biệt có khả năng tự động hóa chu trình khép kín từ lập hóa đơn, ghi nhận chứng từ thanh toán, định khoản doanh thu - giá vốn đến kết xuất sổ cái và báo cáo tài chính theo đúng quy chuẩn kế toán Việt Nam.

Mục tiêu của dự án:

  1. Phân tích toàn diện quy trình luân chuyển chứng từ và nghiệp vụ kế toán doanh thu tại Công ty TNHH CMC Software.
  2. Thiết kế mô hình dữ liệu quan hệ đạt chuẩn 3NF và kiến trúc hệ thống thông tin kế toán chuyên dụng.
  3. Xây dựng và triển khai phần mềm kế toán doanh thu bán hàng trên nền tảng C# .NET và hệ quản trị cơ sở dữ liệu Microsoft SQL Server.
  4. Đảm bảo tính toàn vẹn, bảo mật dữ liệu và tự động hóa 100% quy trình tạo bút toán hạch toán kế toán.

Phương pháp tiếp cận: Áp dụng phương pháp phân tích thiết kế hệ thống có cấu trúc (Structured Systems Analysis and Design Method - SSADM) kết hợp mô hình hóa quy trình xử lý qua sơ đồ luồng dữ liệu (Data Flow Diagram - DFD) và mô hình thực thể quan hệ (Entity-Relationship Diagram - ERD).

Kết quả kỳ vọng đo lường được:

  • Giảm 75% thời gian xử lý và nhập liệu hóa đơn bán hàng.
  • Rút ngắn thời gian kết xuất báo cáo doanh thu từ 3 ngày xuống dưới 2 giây.
  • Đạt độ chính xác 100% trong cân đối số liệu Nợ - Có trên hệ thống sổ cái.

Phạm vi và giới hạn: Dự án tập trung vào phân hệ kế toán doanh thu bán sản phẩm, dịch vụ phần mềm và doanh thu thuần tại Công ty TNHH CMC Software. Hệ thống không đi sâu vào nghiệp vụ hạch toán mua sắm tài sản cố định, doanh thu nội bộ tập đoàn hoặc kế toán chi tiết tiền lương.


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

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

Tại thời điểm khảo sát, CMC Software quản lý doanh thu chủ yếu qua bảng tính bảng tính thủ công. Bảng so sánh dưới đây làm rõ ưu và nhược điểm của các giải pháp hiện hành:

Tiêu chí so sánh Bảng tính Excel thủ công Phần mềm đóng gói (MISA SME.NET / Fast) Phần mềm thiết kế riêng (Custom C# AIS)
Tính linh hoạt theo quy trình CMC Thấp (Dễ đứt gãy liên kết) Trung bình (Khó tùy biến module dịch vụ IT) Rất cao (Thiết kế bám sát luân chuyển CMC)
Tính toàn vẹn & Ràng buộc toàn vẹn Kém (Dễ ghi đè công thức) Cao Rất cao (Ràng buộc khóa ngoại SQL Server)
Tốc độ kết xuất sổ cái & Báo cáo Rất chậm (Tổng hợp tay) Nhanh (< 3 giây) Tức thời (< 1.5 giây với Stored Procedures)
Chi phí triển khai & Bản quyền Thấp Cao (Phí duy trì license hàng năm) Tối ưu (Tận dụng hạ tầng nội bộ)

Phân loại yêu cầu người dùng theo mô hình MoSCoW:

  • Must have: Nhập liệu hóa đơn GTGT (mẫu 01-GTKT-3LL), phiếu thu tiền mặt, giấy báo Có; tự động định khoản TK 5113, TK 3331, TK 131, TK 111, TK 112; kết xuất Sổ chi tiết bán hàng, Sổ cái TK 511.
  • Should have: Quản lý hạn mức nợ khách hàng, cảnh báo công nợ quá hạn, module tính chiết khấu thương mại (TK 5211) và giảm giá hàng bán (TK 5213).
  • Could have: Xuất dữ liệu đa định dạng (Excel, PDF), phân quyền đa cấp bậc (Kế toán viên, Kế toán trưởng, Quản trị viên).
  • Won't have: Kết nối trực tiếp cổng thanh toán Banking API real-time và hệ thống kê khai thuế điện tử qua mạng Tổng cục Thuế (dành cho phiên bản nâng cấp sau).

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng theo mô hình 3 tầng (3-Tier Architecture) nhằm phân tách rõ ràng giữa giao diện, logic nghiệp vụ và truy xuất dữ liệu:

Tech Stack chi tiết:

  • Ngôn ngữ lập trình: C# (.NET Framework 4.5.2)
  • Hệ quản trị CSDL: Microsoft SQL Server 2014 Standard Edition
  • Giao diện & Báo cáo: WinForms, DevExpress v15.2, SAP Crystal Reports Runtime 13.0
  • Công cụ phát triển: Microsoft Visual Studio 2015 Professional, Enterprise Architect 12.0

Thiết kế cơ sở dữ liệu quan hệ (đã chuẩn hóa đạt chuẩn 3NF):

  1. tbl_KhachHang (MaKH [PK], TenKH, DiaChi, MaSoThue, SoDienThoai, SoTaiKhoanNH)
  2. tbl_NhanVien (MaNV [PK], TenNV, BoPhan, ChucVu, TaiKhoan, MatKhau, QuyenHan)
  3. tbl_SanPhamDichVu (MaSP [PK], TenSP, LoaiDichVu, DonViTinh, DonGiaChuan)
  4. tbl_HoaDonBanHang (SoHD [PK], NgayLap, MaKH [FK], MaNV [FK], HinhThucTT, ThueSuatGTGT, TongTienChuaThue, TienThueGTGT, TongTienThanhToan, TrangThaiTT)
  5. tbl_ChiTietHoaDon (MaCTHD [PK], SoHD [FK], MaSP [FK], SoLuong, DonGiaBan, ThanhTien, TyLeChietKhau, TienChietKhau)
  6. tbl_ChungTuThu (SoCT [PK], SoHD [FK], NgayThu, LoaiChungTu, SoTienThu, TaiKhoanNo, TaiKhoanCo, NoiDungThu)
  7. tbl_SoCai (MaSoCai [PK], NgayGhiSo, SoChungTu, DienGiai, TaiKhoanDoiUng, SoTienNo, SoTienCo, MaKH [FK])

Bảo mật và hiệu năng:

  • Áp dụng mã hóa mật khẩu người dùng chuẩn SHA-256.
  • Thực hiện cơ chế phân quyền RBAC (Role-Based Access Control) trên từng chức năng Form.
  • Ràng buộc toàn vẹn Transaction ở tầng CSDL để tránh tình trạng phân mảnh hoặc mất đồng bộ số liệu tài chính khi xảy ra sự cố phần cứng.
  • Tốc độ xử lý truy vấn đọc/ghi đạt mức dưới 100ms trên tệp dữ liệu 100,000 bản ghi nhờ Index tối ưu hóa trên các trường SoHD, MaKH, NgayLap.

Methodology

Dự án áp dụng mô hình phát triển thác nước cải tiến (Modified Waterfall Lifecycle) với kiểm soát chất lượng qua từng cột mốc:

Quản trị rủi ro dự án:

  • Rủi ro sai lệch số học: Giải quyết bằng việc viết Unit Test kiểm thử các trường hợp biên của thuật toán tính thuế và chiết khấu.
  • Rủi ro người dùng kháng cự thay đổi: Tổ chức 3 buổi training thực hành và cung cấp tài liệu hướng dẫn vận hành chi tiết dài 45 trang.

Implementation và kết quả

Development process

Quá trình phát triển tập trung vào việc hiện thực hóa các quy tắc kế toán theo Thông tư 200/2014/TT-BTC của Bộ Tài chính vào mã nguồn C#. Dưới đây là đoạn mã hiện thực hóa nghiệp vụ tự động ghi nhận bút toán doanh thu dịch vụ phần mềm và kết chuyển sổ cái trong Transaction:

using System;
using System.Data;
using System.Data.SqlClient;

namespace CMCSoftware.AIS.BLL
{
    public class RevenuePostingManager
    {
        private readonly string _connectionString;

        public RevenuePostingManager(string connectionString)
        {
            _connectionString = connectionString;
        }

        /// <summary>
        /// Ghi nhận hóa đơn doanh thu và tự động sinh bút toán Sổ cái theo TT 200/2014/TT-BTC
        /// Nợ TK 131 / TK 112 / TK 111: Tổng thanh toán
        /// Có TK 5113: Doanh thu cung cấp dịch vụ phần mềm
        /// Có TK 3331: Thuế GTGT đầu ra phải nộp
        /// </summary>
        public bool PostSalesInvoice(string invoiceNo, DateTime invoiceDate, string customerId, 
                                     decimal netAmount, decimal vatRate, string paymentMethod)
        {
            decimal vatAmount = netAmount * (vatRate / 100m);
            decimal totalPayment = netAmount + vatAmount;
            string debitAccount = paymentMethod == "TM" ? "1111" : (paymentMethod == "CK" ? "1121" : "131");

            using (SqlConnection conn = new SqlConnection(_connectionString))
            {
                conn.Open();
                SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);

                try
                {
                    // 1. Cập nhật trạng thái Hóa đơn
                    string updateInvoiceSql = @"UPDATE tbl_HoaDonBanHang 
                                                SET TongTienChuaThue = @Net, TienThueGTGT = @Vat, 
                                                    TongTienThanhToan = @Total, TrangThaiTT = 1 
                                                WHERE SoHD = @SoHD";
                    using (SqlCommand cmdInvoice = new SqlCommand(updateInvoiceSql, conn, transaction))
                    {
                        cmdInvoice.Parameters.AddWithValue("@Net", netAmount);
                        cmdInvoice.Parameters.AddWithValue("@Vat", vatAmount);
                        cmdInvoice.Parameters.AddWithValue("@Total", totalPayment);
                        cmdInvoice.Parameters.AddWithValue("@SoHD", invoiceNo);
                        cmdInvoice.ExecuteNonQuery();
                    }

                    // 2. Ghi sổ cái: Bút toán Doanh thu thuần (Có TK 5113)
                    InsertGeneralLedger(conn, transaction, invoiceDate, invoiceNo, 
                                        $"Doanh thu dịch vụ phần mềm theo HĐ {invoiceNo}", 
                                        debitAccount, "5113", totalPayment, netAmount, customerId);

                    // 3. Ghi sổ cái: Bút toán Thuế GTGT (Có TK 3331) nếu có thuế
                    if (vatAmount > 0)
                    {
                        InsertGeneralLedger(conn, transaction, invoiceDate, invoiceNo, 
                                            $"Thuế GTGT đầu ra theo HĐ {invoiceNo}", 
                                            debitAccount, "33311", totalPayment, vatAmount, customerId);
                    }

                    transaction.Commit();
                    return true;
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw new ApplicationException($"Lỗi hạch toán hóa đơn {invoiceNo}: {ex.Message}", ex);
                }
            }
        }

        private void InsertGeneralLedger(SqlConnection conn, SqlTransaction tx, DateTime date, 
                                         string refNo, string desc, string tkNo, string tkCo, 
                                         decimal totalDebit, decimal creditedAmount, string custId)
        {
            string sql = @"INSERT INTO tbl_SoCai (NgayGhiSo, SoChungTu, DienGiai, TaiKhoanNo, 
                                                  TaiKhoanCo, SoTienNo, SoTienCo, MaKH) 
                           VALUES (@Date, @RefNo, @Desc, @TkNo, @TkCo, @TienNo, @TienCo, @CustId)";
            using (SqlCommand cmd = new SqlCommand(sql, conn, tx))
            {
                cmd.Parameters.AddWithValue("@Date", date);
                cmd.Parameters.AddWithValue("@RefNo", refNo);
                cmd.Parameters.AddWithValue("@Desc", desc);
                cmd.Parameters.AddWithValue("@TkNo", tkNo);
                cmd.Parameters.AddWithValue("@TkCo", tkCo);
                cmd.Parameters.AddWithValue("@TienNo", creditedAmount);
                cmd.Parameters.AddWithValue("@TienCo", creditedAmount);
                cmd.Parameters.AddWithValue("@CustId", custId);
                cmd.ExecuteNonQuery();
            }
        }
    }
}

Độ phức tạp thuật toán: Quá trình hạch toán và tổng hợp báo cáo trên bảng cân đối phát sinh đạt độ phức tạp thời gian $O(N)$ với $N$ là số lượng chứng từ phát sinh trong kỳ, đảm bảo khả năng xử lý mượt mà khi dữ liệu phình to.


Testing và validation

Chiến lược kiểm thử được thực hiện qua hai phương pháp: chạy dữ liệu lịch sử thực tế quý IV/2015 của CMC Software và giả lập 250 ca kiểm thử biên (Edge-case testing).

Kết quả kiểm thử:

  • Test coverage: Đạt 94.2% code coverage trên tầng Business Logic Layer.
  • Tốc độ xử lý:
    • Ghi nhận 1 hóa đơn bán hàng gồm 10 sản phẩm/dịch vụ: $42\text{ ms}$.
    • Tổng hợp Báo cáo Doanh thu & Sổ cái 12 tháng (50,000 bản ghi): $1.15\text{ giây}$.
  • User Acceptance Testing (UAT): Thực hiện với 05 cán bộ phòng kế toán CMC Software, đạt tỷ lệ hài lòng 96.5%.
  • Thống kê lỗi: Phát hiện 18 lỗi trong giai đoạn Beta (chuỗi ký tự Unicode tiếng Việt, làm tròn số thập phân tiền tệ); 100% lỗi đã được khắc phục hoàn toàn trước khi nghiệm thu.

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

Mục tiêu ban đầu Kết quả thực tế đạt được Đánh giá hoàn thành
Tự động hóa lập chứng từ bán hàng 100% hóa đơn và phiếu thu được tạo qua form chuẩn Hoàn thành xuất sắc
Tự động hóa định khoản Sổ cái Định khoản tự động chính xác 100% theo TT 200 Hoàn thành xuất sắc
Giảm thời gian tổng hợp báo cáo Giảm từ 3 ngày xuống $1.15\text{ giây}$ Vượt chỉ tiêu
Phân quyền và an toàn dữ liệu Triển khai RBAC 3 cấp độ, sao lưu tự động hàng ngày Hoàn thành xuất sắc

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

  1. Đổi mới kỹ thuật:

    • Ứng dụng mô hình xử lý giao dịch phân tán cấp độ Transaction ở tầng DAL, đảm bảo nguyên tắc ACID (Atomicity, Consistency, Isolation, Durability) trong kế toán doanh nghiệp dịch vụ phần mềm.
    • Tích hợp bộ công cụ tự động phát hiện lệch Nợ - Có và cảnh báo chéo giữa Sổ chi tiết bán hàng và Sổ cái tài khoản 511.
  2. Cải tiến hiệu suất:

    • Giảm thiểu 80% công sức tính toán và đối soát thủ công giữa kế toán viên và bộ phận kinh doanh dự án.
    • Tối ưu hóa chu kỳ đóng sổ kế toán cuối kỳ (Closing cycle) của công ty từ 7 ngày làm việc xuống còn 1.5 ngày.
  3. Đóng góp học thuật và thực tiễn:

    • Cung cấp mô hình phân tích thiết kế hệ thống chuẩn mực cho phân hệ kế toán doanh thu trong ngành sản xuất và gia công phần mềm.
    • Làm tài liệu tham khảo thực nghiệm giá trị cho sinh viên chuyên ngành Hệ thống Thông tin Kinh tế và Kế toán Doanh nghiệp.

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

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

  • Kịch bản 1 - Kế toán viên xuất bán gói dịch vụ phần mềm: Nhân viên chọn khách hàng, chọn dịch vụ "Bảo trì hệ thống ERP", hệ thống tự động áp đơn giá, tính thuế GTGT 10%, in Hóa đơn và tự động hạch toán Nợ TK 131 / Có TK 5113, Có TK 33311.
  • Kịch bản 2 - Thu tiền chuyển khoản khách hàng: Khi nhận được Giấy báo Có từ ngân hàng, kế toán nhập số hóa đơn cần thanh toán, hệ thống tự động đối trừ công nợ và ghi Nợ TK 1121 / Có TK 131.

Yêu cầu cấu hình triển khai hệ thống

[Phần cứng tối thiểu - Client]
- CPU: Intel Core i3 2.0 GHz hoặc tương đương
- RAM: 2 GB (Khuyến nghị 4 GB)
- HDD/SSD: 500 MB dung lượng trống
- Màn hình: Độ phân giải 1366x768 trở lên

[Phần cứng máy chủ CSDL - Server]
- CPU: Intel Xeon Quad-Core hoặc Intel Core i5/i7
- RAM: 8 GB trở lên
- Ổ cứng: SSD 120 GB chuyên dụng cho CSDL

[Phần mềm môi trường]
- Hệ điều hành: Windows 7 SP1 / Windows 10 / Windows Server 2012 R2
- Nền tảng: Microsoft .NET Framework 4.5.2 Runtime
- CSDL: Microsoft SQL Server 2012 SP2 trở lên

Phân tích Hiệu quả Đầu tư (ROI)

  • Chi phí đầu tư dự án (Nhân lực, phần mềm nền tảng, thiết bị): ~ 35,000,000 VNĐ.
  • Giá trị tiết kiệm nhân sự & thời gian hàng năm: ~ 85,000,000 VNĐ.
  • Thời gian hoàn vốn đầu tư (Payback Period): ~ 5.2 tháng.

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

Hạn chế kỹ thuật:

  • Hệ thống hoạt động theo mô hình Client-Server nội bộ mạng LAN, chưa hỗ trợ giao diện Responsive Web hoặc Mobile App để quản lý có thể xem báo cáo từ xa qua Internet.
  • Chưa tích hợp chữ ký số điện tử theo chuẩn HSM hoặc Token USB khi xuất hóa đơn điện tử.

Hướng phát triển trong tương lai:

  1. Nâng cấp kiến trúc lên Web API RESTful sử dụng ASP.NET Core và cơ sở dữ liệu đám mây (Cloud Database).
  2. Tích hợp cổng thanh toán trực tuyến và hóa đơn điện tử trực tiếp với Tổng cục Thuế theo Thông tư 78/2021/TT-BTC.
  3. Ứng dụng Machine Learning vào phân tích xu hướng doanh thu và dự báo nguy cơ phát sinh nợ khó đòi của khách hàng.

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

  • Sinh viên & Học viên: Có được bộ tài liệu mẫu hoàn chỉnh từ phân tích DFD, ERD đến hiện thực hóa mã nguồn C# và hạch toán kế toán thực tế.
  • Lập trình viên (Developers): Nắm vững kiến thức chuyên ngành (Domain Knowledge) về kế toán doanh nghiệp và kỹ thuật viết Transaction an toàn trong C#.
  • Doanh nghiệp vừa và nhỏ (SMEs): Nhận được giải pháp phần mềm kế toán tinh gọn, chính xác, tiết kiệm chi phí bản quyền với quy trình triển khai nhanh chóng.
  • Nhà nghiên cứu: Mô hình tham chiếu hữu ích trong việc tin học hóa quy trình quản lý tài chính doanh nghiệp.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai phần mềm là gì?
Máy trạm chỉ cần cài đặt Windows 7 SP1 trở lên có cài sẵn Microsoft .NET Framework 4.5.2, kết nối qua mạng LAN nội bộ tới máy chủ cài đặt Microsoft SQL Server 2012/2014.

2. Giới hạn xử lý dữ liệu và khả năng mở rộng của hệ thống?
Hệ thống xử lý mượt mà lên tới 1,000,000 dòng chứng từ trên SQL Server. Khi doanh nghiệp mở rộng quy mô, có thể phân tán cơ sở dữ liệu hoặc chuyển đổi sang SQL Server Enterprise mà không cần viết lại tầng giao diện.

3. Phần mềm có thể liên kết với các hệ thống ERP khác không?
Phần mềm hỗ trợ xuất nhập dữ liệu linh hoạt thông qua các tệp định dạng chuẩn Excel (.xlsx), CSV và XML, dễ dàng làm đầu vào cho các hệ sinh thái ERP lớn hơn như SAP hoặc Oracle EBS.

4. Quy trình bảo trì và cập nhật chế độ kế toán mới như thế nào?
Do mã nguồn phân tách rõ ràng theo mô hình 3-Tier, khi có thay đổi về thông tư kế toán (như đổi tên tài khoản hay công thức tính thuế), kỹ sư chỉ cần chỉnh sửa và build lại tầng Business Logic Layer (CMCSoftware.AIS.BLL.dll) mà không ảnh hưởng tới dữ liệu lịch sử.

5. Thời gian hoàn vốn (ROI) của dự án là bao lâu?
Với mức đầu tư ban đầu thấp, hệ thống giúp tiết kiệm hàng trăm giờ lao động thủ công mỗi quý, mang lại điểm hòa vốn và sinh lời trong vòng 5 đến 6 tháng sau khi đưa vào vận hành chính thức.


Kết luận

Đồ án tốt nghiệp "Xây dựng phần mềm kế toán doanh thu bán hàng tại Công ty TNHH CMC Software" của sinh viên Phạm Thị Phương (Khoa Hệ thống Thông tin Kinh tế - Học viện Tài chính) đã giải quyết triệt để bài toán tự động hóa quy trình kế toán tại doanh nghiệp thực tế. Dự án không chỉ thể hiện năng lực phân tích thiết kế hệ thống thông tin kế toán sâu sắc mà còn chứng minh tính khả thi cao qua việc triển khai thành công ứng dụng trên nền tảng C# và SQL Server, đạt chuẩn mực Thông tư 200/2014/TT-BTC. Đây là minh chứng điển hình cho việc ứng dụng công nghệ thông tin nhằm nâng cao năng lực cạnh tranh và hiệu quả quản trị doanh nghiệp trong thời đại số.