Đối với khách hàng, người quản trị Xử lý, chuẩn hóa dữ liệu nhập vào bởi những người truy cập ứng dụng và ban quản trị khi cập nhật thông tin.. Kế hoạch thực hiện: Mô tả kế hoạch làm việ
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
GIẢNG VIÊN HƯỚNG DẪN
TS NGUYỄN QUANG ANH ThS NGUYỄN CÔNG HOAN
TP HỒ CHÍ MINH, 2021
Trang 3THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
1 ……… – Chủ tịch
2 ……… – Thư ký
3 ……… – Ủy viên
4 ……… – Ủy viên
Trang 4ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
CÔNG NGHỆ THÔNG TIN
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ HƯỚNG DẪN)
Tên khóa luận:
XÂY DỰNG HỆ THỐNG PHỤC VỤ DỊCH VỤ KẾ TOÁN
TRUNG GIAN
Trương Viết Huy Phong 17520897 ThS Nguyễn Công Hoan
Đánh giá Khóa luận:
1 Về cuốn báo cáo:
Một số nhận xét về hình thức cuốn báo cáo:
Trang 5
2 Về nội dung nghiên cứu:
3 Về chương trình ứng dụng:
4 Về thái độ làm việc của sinh viên:
Trang 6
Đánh giá chung:
Điểm từng sinh viên: Trương Viết Huy Phong: ………/10
Võ Phi Nhật Duy: ………/10
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
Trang 7ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
CÔNG NGHỆ THÔNG TIN
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ PHẢN BIỆN)
Tên khóa luận:
XÂY DỰNG HỆ THỐNG PHỤC VỤ DỊCH VỤ KẾ TOÁN
TRUNG GIAN
Trương Viết Huy Phong 17520897 ThS Nguyễn Công Hoan
Đánh giá Khóa luận:
1 Về cuốn báo cáo:
Một số nhận xét về hình thức cuốn báo cáo:
Trang 8
2 Về nội dung nghiên cứu:
3 Về chương trình ứng dụng:
4 Về thái độ làm việc của sinh viên:
Trang 9
Đánh giá chung:
Điểm từng sinh viên: Trương Viết Huy Phong: ………/10
Võ Phi Nhật Duy: ………/10
Người nhận xét
(Ký và ghi rõ họ tên)
Trang 10LỜI CẢM ƠN
Trong quá trình học tâp, nghiên cứu và phát triển đề tài “Xây dựng hệ thống phục vụ dịch vụ kế toán trung gian”, chúng em đã nhận được sự giúp đỡ, chỉ bảo nhiệt tình của thầy để hoàn thành đồ án này
Chúng em xin bày tỏ sự biết ơn đặc biệt đến Thầy Nguyễn Công Hoan người đã trực tiếp hướng dẫn, giúp đỡ về kiến thức, tài liệu và phương pháp để chúng em hoàn thành đề tài này Bên cạnh đó thầy đã dành thời gian quý báu của mình để kiểm tra, đưa
ra các ý kiến nhận xét và đóng góp rất hữu ích vào những tính năng, định hướng phát triển mới hơn cho đề tài
Hi vọng với sự hướng dẫn và góp ý tận tình từ thầy, nhóm đề tài có thể tiếp túc phát triển để ứng dụng ngày càng được mở rộng và phục vụ được tốt hơn cho người dùng
Mặc dù đã có nhiều cố gắng trong suốt quá trình thực hiện đề tài, song có thể còn
có những mặt hạn chế, thiếu sót Chúng em rất mong nhận được ý kiến đóng góp và sự chỉ dẫn của thầy và các bạn để đề tài của chúng em được hoàn thiện hơn
Chúng em xin trân trọng cảm ơn!
TP Hồ Chí Minh, ngày 30 tháng 06 năm 2021
Trang 11ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
CÔNG NGHỆ THÔNG TIN
ĐỀ CƯƠNG CHI TIẾT TÊN ĐỀ TÀI: Xây dựng hệ thống phục vụ dịch vụ kế toán trung gian
TÊN ĐỀ TÀI (tiếng Anh): Building a system for intermediate accounting
services
Cán bộ hướng dẫn: TS Nguyễn Quan Anh
ThS Nguyễn Công Hoan
Thời gian thực hiện: Từ ngày 01/03/2021 đến ngày 30/06/2021
Sinh viên thực hiện:
Trương Viết Huy Phong 17520897
Võ Phi Nhật Duy 17520407
Nội dung đề tài: (Mô tả chi tiết mục tiêu, phạm vi, đối tượng, phương pháp thực hiện, kết quả mong đợi của đề tài)
1 Mục tiêu của đề tài
Hiện nay với sự phát triển của công nghệ và internet hầu hết các ngành nghề đều đã
có sự góp mặt của phần mềm, công cụ hỗ trợ giúp các công việc diễn ra đơn giản và tránh được nhiều sai sót
Trang 12Tuy nhiên, sau khi tìm hiểu nhóm đề tài thấy rằng trong lĩnh vực kế toán, đặc biệt là
kế toán trung gian cho các công ty đang thiếu hụt các phần mềm, công cụ hỗ trợ cho kế toán viên Các sản phẩm hiện có trên thị trường tập trung phục vụ nhóm đối tượng là các công ty kế toán trung gian lớn Các phần mềm hiện có sử dụng các công nghệ cũ, khó sử dụng, và tập trung phục vụ làm việc tập trung tại văn phòng Đối với tình hình dịch bệnh như hiện nay lại càng khiến các công cụ, phần mềm ấy khó đáp ứng được với mong muốn của người dùng
Vì vậy nhóm đề tài mong muốn xây dựng một ứng dụng kế toán trung gian online trên nền tảng web phục vụ các khách hàng là kế toán viên tự do làm kế toán trung gian cho các công ty nhỏ trong lãnh thổ Việt Nam
- Đối tượng trong phạm vi đề tài hướng đến:
+ Nhân viên kế toán làm việc tự do
Trang 13+ Công ty nhỏ chưa có bộ phần kế toán
4 Phương pháp nghiên cứu
Nhóm thực hiện đề tài đã sử dụng các phương pháp nghiên cứu:
- Phương pháp đọc tài liệu
- Phương pháp khảo sát hiện trạng, quy trình, nghiệp vụ kế toán
- Phương pháp phân tích các ứng dụng kế toán hiện có như: Misa Accounting, Fast Accouting,…
5.1 Đối với khách hàng, người quản trị
Xử lý, chuẩn hóa dữ liệu nhập vào bởi những người truy cập ứng dụng và ban quản trị khi cập nhật thông tin
Hệ thống có khả năng xây dựng và phát triển nhanh chóng
Phần mềm PD-Accounting thân thiện với người dùng và cung cấp trải nghiệm tối ưu để kế toán viên thuận tiện trong việc nhập liệu
Trang 14- Đối với ban quản trị có thể thêm, cập nhật và xoá các thông tin liên quan đến số tài khoản của các thông tư, thuế suất của các loại thuế
6 Kế hoạch thực hiện: (Mô tả kế hoạch làm việc và phân chi công việc các thành viên tham giá)
Với thời gian thực hiện từ 02/03/2021 tới 30/06/2021, nhóm chia thành 6 sprint với
2 giai đoạn cụ thể:
- Giai đoạn 1: Xây dựng phần mềm PDAccounting với các chức năng dành cho người dùng (đăng ký, đăng nhập, quản lý công, quản lý đối tượng, quản lý hàng hoá, quản lý hoá đơn tiền mặt, quản lý hoá đơn dịch vụ, nhập số dư đầu kỳ) và các chức năng dành cho người quản trị (quản lý loại công ty, quản lý thông tư, quản lý thuế)
+ Sprint 1: Tìm hiểu về MongoDB, NodeJS, ReactJS, khảo sát nghiệp vụ, quy trình kế toán, tham khảo các phần mềm kế toán hiện có
+ Sprint 2: Thiết kế chức năng các phần mềm PDAccouting và cơ sở dữ liệu Xây dựng API, kiến trúc phần mềm Thiết kế giao diện cho phần mềm
+ Sprint 3: Xây dựng giao diện, bổ sung API, chức năng: quản lý danh sách công ty, quản lý đối tượng, quản lý hàng hoá Đối với trang quản trị xây dựng các chức năng: quản lý loại công ty, quản lý thông tư
+ Sprint 4: Chỉnh sửa các API Xây dựng chức năng của PDAccounting và các thành phần giao diện còn lại của trang và trang quản trị
Trang 15Sprint Nội dụng Thành viên
- Xây dựng API, kiến trúc phần mềm
- Thiết kế giao diện
Trương Viết Huy Phong
- Đối với trang quản trị xây dựng các chức năng: quản lý loại công ty, quản lý thông tư
Trương Viết Huy Phong
Trương Viết Huy Phong
Võ Phi Nhật Duy
Trang 16- Giao đoạn 2: Hoàn thiện phần mềm PDAccounting với các chức năng còn lại (quản lý hoá đơn hàng hoá, quản lý tài sản cố định, quản nguyên vật liệu và thành phẩm, quản lý kết chuyển thuế, lập bảng cân đối tài khoản)
+ Sprint 5: Xây dựng giao diện và chức năng các chức năng còn lại của PDAccouting
+ Sprint 6: Cập nhật giao diện PDAccounting với các icon minh hoạ Tiến hành triển khai trên máy chủ và kiểm thử, bảo trì
Trang 17Xác nhận của CBHD
CBHD1 (Ký tên và ghi rõ họ tên)
TS Nguyễn Quan Anh
CBHD2 (Ký tên và ghi rõ họ tên)
ThS Nguyễn Công Hoan
TP.HCM, ngày 30 tháng 06 năm 2021
Sinh viên 1 (Ký tên và ghi rõ họ tên)
Trương Viết huy Phong
Sinh viên 2 (Ký tên và ghi rõ họ tên)
Võ Phi Nhật Duy
Trang 18MỤC LỤC
DANH MỤC TỪ VIẾT TẮT
DANH MỤC HÌNH
DANH MỤC BẢNG
Chương 1 MỞ ĐẦU 1
1.1 Lí do và mục đích của đề tài 1
1.2 Đối tượng và phạm vi nghiên cứu: 1
1.2.1 Đối tượng của đề tài: 1
1.2.2 Phạm vi nghiên cứu: 2
Chương 2 TỔNG QUAN 2
2.1 Quy trình nghiệp vụ của kế toán viên 2
2.2 Công nghệ sử dụng 3
2.2.1 TypeScript 3
2.2.2 NodeJS - Framework ExpressJS 4
2.2.3 MongoDB 5
2.2.4 ReactJS 6
2.2.5 ReduxJS 8
2.2.6 Redux-saga 10
Chương 3 PHÂN TÍCH VÀ THIẾT KẾ 13
3.1 Phân tích 13
3.1.1 Sơ đồ usecase 13
3.1.2 Đặc tả usecase 22
Trang 193.1.3 Sơ đồ tuần tự 74
3.1.4 Phân tích dữ liệu 91
3.2 Thiết kế 112
3.2.1 Thiết kế giao diện 112
3.2.2 Kiến trúc hệ thống 166
Chương 4 KẾT LUẬN 168
4.1 Kết quả đạt được 168
Chương 5 HƯỚNG PHÁT TRIỂN 168
5.1 Hướng phát triển của ứng dụng 168
TÀI LIỆU THAM KHẢO 169
Trang 20DANH MỤC TỪ VIẾT TẮT
API Application Programing Interface Giao diện lập trình ứng dung, là
phương tiện giúp các dịch vụ, các máy tính có thể giao tiếp
URL Uniform Resource Locator Địa chỉ riêng biệt của mỗi trang
web HTML Hypertext Markup Language Ngôn ngữ đánh dấu siêu văn bản
được thiết kế để tạo nên các trang web trên World Wide Web
ECMAScript European Computer Manufacturers
Association Script
Chuẩn hóa của các ngôn ngữ Javascript, actionscript SQL Structured Query Language Ngôn ngữ truy vấn có cấu trúc RDBMS Relational Database Management
System
Hệ quản trị cơ sở dữ liệu quan hệ
JSX Javascript Extensible Markup
Language
Cú pháp mở rộng của Javascript giúp người dùng có thể lập trình bằng cú pháp XML thay vì sử dụng Javascript
Trang 21DANH MỤC HÌNH
Hình 2.1 Sơ đồ hoạt động của Redux 9
Hình 2.2 Sơ đồ hoạt động của Redux-saga 12
Hình 3.1 Sơ đồ usecase tổng quan của quản trị viên 13
Hình 3.2 Sơ đồ usecase tổng quan của người dùng 14
Hình 3.3 Sơ đồ usecase chi tiết quản lý tài khoản kế toán 15
Hình 3.4 Sơ đồ usecase chi tiết quản lý thuế 15
Hình 3.5 Sơ đồ usecase chi tiết quản lý loại hình công ty 16
Hình 3.6 Sơ đồ usecase chi tiết quản lý công ty 16
Hình 3.7 Sơ đồ usecase chi tiết quản lý đối tượng thu chi 17
Hình 3.8 Sơ đồ usecase chi tiết quản lý hàng hóa 17
Hình 3.9 Sơ đồ usecase chi tiết nhập số dư đầu kỳ 18
Hình 3.10 Sơ đồ usecase chi tiết hóa đơn tiền mặt 18
Hình 3.11 Sơ đồ usecase chi tiết hóa đơn dịch vụ 19
Hình 3.12 Sơ đồ usecase chi tiết quản lý hóa đơn hàng hóa 19
Hình 3.13 Sơ đồ usecase chi tiết quản lý tài sản cố định 20
Hình 3.14 Sơ đồ usecase chi tiết nguyên vật liệu và thành phẩm 20
Hình 3.15 Sơ đồ usecase chi tiết kết chuyển thuế 21
Hình 3.16 Sơ đồ usecase chi tiết quản lý tài khoản 21
Hình 3.34 Phân tích cơ sở dữ liệu Users 91
Hình 3.35 Phân tích cơ sở dữ liệu Verify 92
Hình 3.36 Phân tích cơ sở dữ liệu UserUsedHistory 93
Trang 22Hình 3.37 Phân tích cơ sở dữ liệu Admins 93 Hình 3.38 Phân tích cơ sở dữ liệu AccountNumber 94 Hình 3.39 Phân tích cơ sở dữ liệu accountNumber - Array Object 95 Hình 3.40 Phân tích cơ sở dữ liệu CompanyTypes 96 Hình 3.41 Phân tích cơ sở dữ liệu SettingTax 96 Hình 3.42 Phân tích cơ sở dữ liệu Companies 97 Hình 3.43 Phân tích cơ sở dữ liệu Person 99 Hình 3.44 Phân tích cơ sở dữ liệu Stock 100 Hình 3.45 Phân tích cơ sở dữ liệu Tax - ArrayObject 102 Hình 3.46 Phân tích cơ sở dữ liệu MoneyBill 103 Hình 3.47 Phân tích cơ sở dữ liệu Bill 105 Hình 3.48 Phân tích cơ sở dữ liệu BillDetail 107 Hình 3.49 Phân tích cơ sở dữ liệu BillTax 109 Hình 3.50 Phân tích cơ sở dữ liệu ForwardTax 110 Hình 3.51 Thiết kế màn hình đăng nhập 116 Hình 3.52 Thiết kế màn hình đăng ký 117 Hình 3.53 Thiết kế màn hình danh sách tài khoản kế toán 118 Hình 3.54 Thiết kế màn hình tạo và chỉnh sửa tài khoản kế toán 119 Hình 3.55 Thiết kế màn hình quản lý loại hình công ty 121 Hình 3.56 Thiết kế màn hình quản lý thông tin thuế 122 Hình 3.57 Thiết kế màn hình workplace 124 Hình 3.58 Thiết kế màn hình nhập số dư đầu kỳ 125
Trang 23Hình 3.59 Thiết kế màn hình danh sách hàng hóa 127 Hình 3.60 Thiết kế màn hình tạo và chỉnh sửa hàng hóa 128 Hình 3.61 Thiết kế màn hình danh sách đối tượng thu chi 130 Hình 3.62 Thiết kế màn hình tạo và chỉnh sửa đối tượng thu chi 132 Hình 3.63 Thiết kế màn hình danh sách công ty 133 Hình 3.64 Thiết kế màn hình tạo và chỉnh sửa công ty 135 Hình 3.65 Thiết kế màn hình danh sách hóa đơn tiền mặt 136 Hình 3.66 Thiết kế màn hình tạo và chỉnh sửa hoá đơn tiền mặt 138 Hình 3.67 Thiết kế màn hình danh sách hóa đơn dịch vụ 140 Hình 3.68 Thiết kế màn hình nhập thông tin chung của hóa đơn dịch vụ 142 Hình 3.69 Thiết kế màn hình nhập chi tiết hóa đơn dịch vụ 144 Hình 3.70 Thiết kế màn hình sách hóa đơn hàng hóa 145 Hình 3.71 Thiết kế màn hình nhập thông tin chung của hóa đơn hàng hóa 147 Hình 3.72 Thiết kế màn hình nhập chi tiết hóa đơn hàng hóa 149 Hình 3.73 Thiết kế màn hình danh sách tài sản cố định 151 Hình 3.74 Thiết kế màn hình nhập thông tin chung của tài sản cố định 153 Hình 3.75 Thiết kế màn hình nhập chi tiết tài sản cố định 154 Hình 3.76 Thiết kế màn hình danh sách nguyên vật liệu và thành phẩm 156 Hình 3.77 Thiết kế màn hình nhập thông tin của nguyên vật liệu và thành phẩm 158 Hình 3.78 Thiết kế màn hình chi tiết nguyên vật liệu và thành phẩm 160 Hình 3.79 Thiết kế màn hình kết chuyển thuế 161 Hình 3.80 Thiết kế màn hình bảng cân đối tài khoản 163
Trang 24Hình 3.81 Thiết kế màn hình xuất dữ liệu bảng cân đối tài khoản 165 Hình 3.82 Kiến thúc hệ thống 166
Trang 25DANH MỤC BẢNG Bảng 3.1 Đặc tả usecase kiểm tra tài khoản tồn tại 23 Bảng 3.2 Đặc tả usecase đăng kí 23 Bảng 3.3 Đặc tả usecase xác thực tài khoản 24 Bảng 3.4 Đặc tả usecase đăng nhập 25 Bảng 3.5 Đặc tả usecase tạo danh sách tài khoản kế toán 26 Bảng 3.6 Đặc tả usecase lấy danh sách số tài khoản kế toán 27 Bảng 3.7 Đặc tả usecase cập nhật danh sách số tài khoản kế toán 28 Bảng 3.8 Đặc tả usecase xóa danh sách số tài khoản kế toán 29 Bảng 3.9 Đặc tả usecase tạo loại hình công ty 30 Bảng 3.10 Đặc tả usecase lấy danh sách loại hình công ty 31 Bảng 3.11 Đặc tả usecase cập nhật loại hình công ty 32 Bảng 3.12 Đặc tả usecase xóa loại hình công ty 33 Bảng 313 Đặc tả usecase tạo thuế 34 Bảng 3.14 Đặc tả usecase lấy thuế 35 Bảng 3.15 Đặc tả usecase cập nhật thuế 36 Bảng 3.16 Đặc tả usecase xóa thuế 37 Bảng 3.17 Đặc tả usecase tạo công ty 37 Bảng 3.18 Đặc tả usecase cập nhật công ty 38 Bảng 3.19 Đặc tả usecase xóa công ty 39 Bảng 3.20 Đặc tả usecase lấy danh sách công ty 40
Trang 26Bảng 3.21 Đặc tả usecase tạo đối tượng thu chi 40 Bảng 3.22 Đặc tả usecase cập nhật đối tượng thu chi 41 Bảng 3.23 Đặc tả usecase xóa đối tượng thu chi 42 Bảng 3.24 Đặc tả usecase lấy danh sách đối tượng thu chi 43 Bảng 3.25 Đặc tả usecase tạo hàng hóa 43 Bảng 3.26 Đặc tả usecase cập nhật hàng hóa 44 Bảng 3.27 Đặc tả usecase xóa hàng hóa 45 Bảng 3.28 Đặc tả usecase lấy danh sách hàng hóa 46 Bảng 3.29 Đặc tả usecase nhập số dư đầu kỳ 46 Bảng 3.30 Đặc tả usecase lấy danh sách số dư đầu kỳ 47 Bảng 3.31 Đặc tả usecase cập nhật số dư đầu kỳ 48 Bảng 3.32 Đặc tả usecase tạo hóa đơn tiền mặt 49 Bảng 3.33 Đặc tả usecase cập nhật hóa đơn tiền mặt 50 Bảng 3.34 Đặc tả usecase xóa hóa đơn tiền mặt 51 Bảng 3.35 Đặc tả usecase lấy danh sách hóa đơn tiền mặt 51 Bảng 3.36 Đặc tả usecase tạo hóa đơn dịch vụ 53 Bảng 3.37 Đặc tả usecase cập nhật hóa đơn dịch vụ 54 Bảng 3.38 Đặc tả usecase xóa hóa đơn dịch vụ 55 Bảng 3.39 Đặc tả usecase lấy danh sách hóa đơn dịch vụ 56 Bảng 3.40 Đặc tả usecase tạo hóa đơn hàng hóa 57 Bảng 3.41 Đặc tả usecase cập nhật hóa đơn hàng hóa 59 Bảng 3.42 Đặc tả usecase xóa hóa đơn hàng hóa 59
Trang 27Bảng 3.43 Đặc tả usecase lấy danh sách hóa đơn hàng hóa 60 Bảng 3.44 Đặc tả usecase tạo tài sản cố định 61 Bảng 3.45 Đặc tả usecase cập nhật tài sản cố định 63 Bảng 3.46 Đặc tả usecase xóa tài sản cố định 64 Bảng 3.47 Đặc tả usecase lấy danh sách tài sản cố định 65 Bảng 3.48 Đặc tả usecase tạo nguyên vật liệu và thành phẩm 66 Bảng 3.49 Đặc tả usecase cập nhật nguyên vật liệu và thành phẩm 68 Bảng 3.50 Đặc tả usecase xóa nguyên vật liệu và thành phẩm 69 Bảng 3.51 Đặc tả usecase lấy danh sách nguyên vật liệu và thành phẩm 70 Bảng 3.52 Đặc tả usecase tạo kết chuyển thuế 70 Bảng 3.53 Đặc tả usecase cập nhật kết chuyển thuế 71 Bảng 3.54 Đặc tả usecase xóa kết chuyển thuế 72 Bảng 3.55 Đặc tả usecase lấy danh sách kết chuyển thuế 73 Bảng 3.56 Đặc tả usecase lập bảng cân đối tài khoản kế toán 74 Bảng 3.57 Phân tích cơ sở dữ liệu Users 91 Bảng 3.58 Phân tích cơ sở dữ liệu Verify 92 Bảng 3.59 Phân tích cơ sở dữ liệu UserUsedHistory 93 Bảng 3.60 Phân tích cơ sở dữ liệu Admins 94 Bảng 3.61 Phân tích cơ sở dữ liệu AccountNumber 95 Bảng 3.62 Phân tích cơ sở dữ liệu accountNumber - Array Object 95 Bảng 3.63 Phân tích cơ sở dữ liệu CompanyTypes 96 Bảng 3.64 Phân tích cơ sở dữ liệu SettingTax 97
Trang 28Bảng 3.65 Phân tích cơ sở dữ liệu Companies 98 Bảng 3.66 Phân tích cơ sở dữ liệu Person 100 Bảng 3.67 Phân tích cơ sở dữ liệu Stock 101 Bảng 3.68 Phân tích cơ sở dữ liệu Tax - ArrayObject 102 Bảng 3.69 Phân tích cơ sở dữ liệu MoneyBill 104 Bảng 3.70 Phân tích cơ sở dữ liệu Bill 106 Bảng 3.71 Phân tích cơ sở dữ liệu BillDetail 108 Bảng 3.72 Phân tích cơ sở dữ liệu BillTax 110 Bảng 3.73 Phân tích cơ sở dữ liệu ForwardTax 111 Bảng 3.75 Mô tả màn hình đăng nhập 116 Bảng 3.76 Mô tả màn hình đăng ký 118 Bảng 3.77 Mô tả màn hình danh sách tài khoản kế toán 119 Bảng 3.78 Mô tả màn hình tạo và chỉnh sửa tài khoản kế toán 120 Bảng 3.79 Mô tả màn hình quản lý loại hình công ty 122 Bảng 3.80 Mô tả màn hình quản lý thông tin thuế 123 Bảng 3.81 Mô tả màn hình workplace 125 Bảng 3.82 Mô tả màn hình nhập số dư đầu kỳ 126 Bảng 3.83 Mô tả màn hình danh sách hàng hóa 128 Bảng 3.84 Mô tả màn hình tạo và chỉnh sửa hàng hóa 130 Bảng 3.85 Mô tả màn hình danh sách đối tượng thu chi 131 Bảng 3.86 Mô tả màn hình tạo và chỉnh sửa đối tượng thu chi 133 Bảng 3.87 Mô tả màn hình danh sách công ty 134
Trang 29Bảng 3.88 Mô tả màn hình tạo và chỉnh sửa công ty 135 Bảng 3.89 Mô tả màn hình danh sách hóa đơn tiền mặt 137 Bảng 3.90 Mô tả màn hình tạo và chỉnh sửa hoá đơn tiền mặt 140 Bảng 3.91 Mô tả màn hình danh sách hóa đơn dịch vụ 142 Bảng 3.92 Mô tả màn hình nhập thông tin chung của hóa đơn dịch vụ 143 Bảng 3.93 Mô tả màn hình nhập chi tiết hóa đơn dịch vụ 145 Bảng 3.94 Mô tả màn hình danh sách hóa đơn hàng hóa 147 Bảng 3.95 Mô tả màn hình nhập thông tin chung của hóa đơn hàng 149 Bảng 3.96 Mô tả màn hình nhập chi tiết hóa đơn hàng hóa 150 Bảng 3.97 Mô tả màn hình danh sách tài sản cố định 152 Bảng 3.98 Mô tả màn hình nhập thông tin chung của tài sản cố định 154 Bảng 3.99 Mô tả màn hình nhập chi tiết tài sản cố định 156 Bảng 3.100 Mô tả màn hình danh sách nguyên vật liệu và thành phẩm 158 Bảng 3.101 Mô tả màn hình danh sách nguyên vật liệu và thành phẩm 159 Bảng 3.102 Mô tả màn hình chi tiết nguyên vật liệu và thành phẩm 161 Bảng 3.103 Mô tả màn hình kết chuyển thuế 163 Bảng 3.104 Mô tả màn hình bảng cân đối tài khoản 164 Bảng 3.105 Mô tả màn hình xuất dữ liệu bảng cân đối tài khoản 165
Trang 30Chương 1 MỞ ĐẦU
1.1 Lí do và mục đích của đề tài
Hiện nay với sự phát triển của công nghệ và internet hầu hết các ngành nghề đều
đã có sự góp mặt của các phần mềm, công cụ hỗ trợ giúp công việc diễn ra đơn giản và tránh được nhiều sai sót
Tuy nhiên sau khi nhóm thực hiện đề tài tìm hiểu về các ứng dụng hỗ trợ dành cho doanh nghiệp, nhóm thấy rằng trong lĩnh vực kế toán, đặc biệt là kế toán trung gian cho doanh nghiệp, đang thiếu hụt các phần mềm, công cụ hỗ trợ cho
kế toán viên tự do
Các sản phẩm hiện tại trên thị trường chủ yếu tập trung phục vụ nhóm đối tượng
là các công ty kế toán trung gian lớn Các sản phẩm nổi tiếng trên thị trường hiện nay khá khó sử dụng, giao diện cũ, không thân thiện với người dùng và tập trung vào làm việc tập trung tại văn phòng
Với việc thay đổi và phát triển của thời đại mới, nhu cầu làm việc tại nhà, làm việc mọi lúc, mọi nơi ngày càng tăng cao Cùng với tình hình dịch bệnh chưa thể kiểm soát như hiện nay lại càng khiến các công cụ, phần mềm nêu trên khó đáp ứng được nhu cầu của người dùng
Vì vậy nhóm thực hiện đề tài mong muốn xây dựng một ứng dụng kế toán trung gian online trên nền tảng web phục vụ nhóm người dùng là kế toán viên tự do làm việc cho các công ty quy mô nhỏ, công ty khởi nghiệp trong lãnh thổ Việt Nam
1.2 Đối tượng và phạm vi nghiên cứu:
1.2.1 Đối tượng của đề tài:
Nhóm thực hiện đề tài tập trung vào đối tượng là các kế toán viên làm việc tự do với các đặc điểm cơ bản:
Trang 31○ Tuổi từ 28 đến 35 đã có kinh nghiệm làm việc trong công việc kế toán trung gian
○ Thường nhận thêm các công việc kế toán trung gian cho các công ty quy
mô nhỏ, công ty khởi nghiệp, ngoài thời gian làm việc tập trung tại công
ty
○ Có nhu cầu sử dụng các phần mềm đơn giản, đáp ứng được các nghiệp
vụ kế toán cơ bản
1.2.2 Phạm vi nghiên cứu:
Tập trung bám sát vào các quy trình, nghiệp vụ của kế toán viên
Tham khảo các hệ thống phục vụ các nghiệp vụ kế toán hiện có trên thị trường
và thông qua đó có thể thiết kế các chức năng đáp ứng được quy trình nghiệp vụ tương ứng
Tìm hiểu các công nghệ phù hợp với sản phẩm và phù hợp với các thành viên của nhóm thực hiện đề tài
Chương 2 TỔNG QUAN
2.1 Quy trình nghiệp vụ của kế toán viên
Quy trình nghiệp vụ của kế toán viên khi thực hiện thao tác trên phần mềm của nhóm thực hiện đồ án:
○ Tạo tài khoản trên website thông qua email
○ Ký kết hợp đồng với công ty khách hàng
○ Tạo thông tin công ty trên website Khi công ty được tạo sẽ có một workplace của công ty tương ứng được tạo
○ Tổng hợp các thông tin hóa đơn, chứng từ của công ty khách hàng
○ Nhập liệu số dư đầu kỳ của công ty khách hàng trên hệ thống
Trang 32○ Nhập liệu các thông tin hóa đơn, chứng từ tương ứng, với các số tài khoản kế toán trên hệ thống
○ Thực hiện kết chuyển thuế với các thông tin hóa đơn chứng từ cần thiết
○ Lập bảng cân đối tài khoản kế toán trên hệ thống
○ Sử dụng bảng cân đối tài khoản kế toán để thực hiện tiếp các thông tin cần thiết khác như: Bảng báo cáo tài chính, bảng thuyết minh tài chính 2.2 Công nghệ sử dụng
2.2.1 TypeScript
2.2.1.1 Giới thiệu:
TypeScript là một dự án mã nguồn mở được phát triển bởi Microsoft, nó
có thể được coi là một phiên bản nâng cao của Javascript bởi việc bổ sung tùy chọn kiểu tĩnh và lớp hướng đối tượng mà điều này không có ở Javascript TypeScript có thể sử dụng để phát triển các ứng dụng chạy ở client-side (ReactJS) và server-side (NodeJS) [1]
TypeScript sử dụng tất cả các tính năng của ECMAScript 2021 (ES6) như classes, modules Bên cạnh đó TypeScript sẽ được nâng cấp lên phiên bản mới tương ứng với phiên bản ECMAScript [1]
2.2.1.2 Lý do sử dụng:
Đáng tin cậy trong việc phát triển dự án lớn: Với rủi ro về các lỗi tìm ẩn
có thể xảy ra trong codebase của JavaScript Thì TypeScript cung cấp cho chúng ta một công cụ feedback nhanh để có chỉnh sửa tất cả lỗi nhỏ
về kiểu về viết code mới hoặc tái cấu trúc về code
Rõ ràng và mạch lạc: Việc khai báo kiểu dữ liệu sẽ giúp chúng ta hiểu rõ thành phần dữ liệu của hệ thống và việc các thành phần tương tác với nhau như thế nào Việc này khá là quan trọng trong các hệ thống lớn
Trang 33 Dễ dàng tích hợp đối với các dự án JavaScript có sẵn: Điều này có nghĩa
là chúng ta có thể áp dụng dần dần vào codebase JavaScript hiện có từ việc khai báo kiểu cho các module độc lập, và mở rộng sau đó
2.2.2 NodeJS - Framework ExpressJS
2.2.2.1 Giới thiệu:
NodeJS là một JavaScript runtime được xây dựng dựa trên Chrome’s V8 JavaScript engine V8 Engine là một JavaScript engine mã nguồn mở chạy trên các trình duyệt Chrome, Opera và Vivaldi Nó được thiết kế để tập trung vào hiệu năng và chịu trách nhiệm cho việc dịch mã JavaScript sang mã máy để máy tính có thể hiểu và chạy được [2]
Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ [2]
Phần tổng thể, quan trọng nhất bên dưới của NodeJS hầu hết được viết bằng C++ nên tốc độ xử lý và hiệu quả khá cao [2]
NodeJS có thể được sử dụng để phát triển các ứng dụng cần tốc độ xử lý nhanh theo thời gian thực, các sản phẩm cần mở rộng nhanh, đổi mới công nghệ, … [2]
ExpressJS là một framework được xây dựng trên nền tảng của NodeJS
Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile ExpressJS hỗ trợ các method HTTP và middleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng.Một số chức năng chính của ExpressJS: [3]
○ Thiết lập các lớp trung gian để trả về các HTTP request
○ Define router cho phép sử dụng với các hành động khác nhau dựa trên phương thức HTTP và URL
Trang 34○ Define router cho phép sử dụng với các hành động khác nhau dựa trên phương thức HTTP và URL
○ Cho phép trả về các trang HTML dựa vào các tham số
2.2.2.2 Lý do sử dụng:
● NodeJS là một nền tảng phổ biến với các lập trình viên sử dụng
JavaScript, nó có cộng đồng vô cùng lớn, cùng với rất nhiều các thư viện, các module mã nguồn mở giúp xử lý các bài toán một cách đơn giản và dễ dàng hơn
● ExpressJS là một framework phổ biến của NodeJS để thực hiện
các xử lý với server ExpressJS cho phép xây dựng các API dựa trên phương thức HTTP một cách nhanh chóng và đơn giản
2.2.3 MongoDB
2.2.3.1 Giới thiệu:
MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là cơ
sở dữ liệu thuộc NoSql và được hàng triệu người sử dụng [4]
NoSQL là 1 dạng cơ sở dữ liẹu mã nguồn mở và được viết tắt
bởi: None Relational SQL hay có nơi thường gọi là Not-Only SQL
MongoDB là một database hướng tài liệu (document), các dữ
liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như cơ sở dữ liệu quan hệ nên truy vấn sẽ rất nhanh
Trang 35 So với RDBMS thì trong MongoDB collection ứng với table,
còn document sẽ ứng với row, MongoDB sẽ dùng các document thay cho row trong RDBMS
Các collection trong MongoDB được cấu trúc rất linh hoạt, cho
phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định
Thông tin liên quan được lưu trữ cùng nhau để truy cập truy
vấn nhanh thông qua ngôn ngữ truy vấn MongoDB
2.2.3.2 Lý do sử dụng:
MongoDB cho phép việc đọc, ghi dữ liệu một cách nhanh
chóng vì là một hệ quản trị cơ sở dữ liệu thuộc NoSQL, vì vậy MongoDB sẽ phù hợp với các ứng dụng Chat realtime như hướng đi của đồ án
NodeJS có các thư viện hỗ trợ rất tốt cho việc giao tiếp, truy
vấn với MongoDB
Ngoài ra, các dữ liệu của MongoDB được lưu trữ theo dạng
JSON hay BSON rất quen thuộc và phổ biến với các lập trình viên web
2.2.4 ReactJS
2.2.4.1 Giới thiệu:
ReactJS là một thư viện Javascript hỗ trợ các lập trình viên xây dựng giao diện cho một ứng dụng web (SPA) được phát triển bởi Facebook [5]
Trang 36 Mục tiêu cốt lõi của thư viện này là nhằm cung cấp hiệu suất làm việc cao nhất, thông qua việc tập trung các component riêng lẻ lại với nhau
ReactJS tiện lợi trong việc chia nhỏ và tái sử dụng các component một cách hiệu quả giúp chúng ta không bị lặp lại code quá nhiều giúp việc code thuận tiện hơn [5]
Dễ tiếp cận đối với người đã kiến thức lập trình căn bản về Javascript
Do react cung cấp một cấu trúc dựa trên component, tức là các
component là những mảnh logo được ghép lại thành một trang web Mỗi component sẽ tự quyết định nó render như thế nào và logic riêng bên trong đó
Có thể tái sử dụng lại các component này tại bất kì nơi nào
Bộ công cụ phát triển cho lập trình là một yếu tố quan trọng khi chọn nền phát triển Vì thế đối với React có 2 bộ công cụ tuyệt vời mà nhóm thực hiện đề tài đang sử dụng: React Developer Tools và Redux Developer Tools Cả hai có thể được cài đặt dưới dạng tiện ích mở rộng của Chrome
Trang 37 React Developer Tools: dùng để kiểm tra các thành phần phản ứng trong
hệ thống phân cấp của các element và quan sát sự thay đổi của state và props
Redux Developer Tools: dùng để quan sát các hành động (actions) gửi đi
và state trong store cũng như theo dõi sự thay đổi được phản ánh trên view ngay lập tức
2.2.5 ReduxJS
2.2.5.1 Giới thiệu:
Khi mà các ứng dụng ngày càng trở nên phức tạp thì chúng ta
phải quản lý nhiều state hơn với so trước đó Những state này bao gồm dữ liệu trả về từ server và dữ liệu được cache cũng như dữ liệu nội bộ cũng không đảm bảo được sự toàn vẹn so với server Để quản lý state mà luôn luôn có thể thay đổi là điều rất khó Ví dụ một model có thể được cập nhật được model khác, rồi một view có thể được update được model nói trên, đồng nghĩa nó cũng update luôn cái model còn lại… Và cứ thể dẫn đến việc chúng ta không biết state nào thay đổi bởi cái gì
và ở đâu Thế nên chúng ta phải sử dụng một thư viện để giải quyết các việc đó là ReduxJS [6]
ReduxJS là một thư viện Javascript giúp tạo ra một lớp quản lý
trạng thái của ứng dụng, được xây dựng trên nền tảng tư tưởng của ngôn ngữ và kiến trúc Flux do Facebook giới thiệu
Do vậy Redux thường là bộ đôi kết hợp hoàn hảo với React
Tuy nhiên hoàn toàn có thể sử dụng với các framework khác như Angular, Angular2, Backbone, Falcor, Deku
Trang 38 Nguyên lý hoạt động của Redux được xây dựng dựa trên 3 nguyên lý:
○ Nguồn dữ liệu tin cậy nhất: State của toàn bộ ứng dụng được chứa trong một object tree nằm trong một Store duy nhất (chỉ có duy nhất một store trong một ứng dụng web)
○ Trạng thái chỉ được phép đọc: cách duy nhất để thay đổi State của ứng dụng là phát một Action (là một object
mô tả những gì xảy ra)
○ Thay đổi chỉ bằng hàm thuần tuý: Để chỉ ra cách mà State được biến đổi bởi Action chúng ta dùng các pure-function gọi là Reducer
● Về cơ bản Redux có 4 thành phần sau:
Hình 2.1 Sơ đồ hoạt động của Redux
Trang 39○ Action: là nơi mang thông tin dùng để gửi từ ứng dụng đến store Các thông tin này là key của nó và object mô
tả những gì đã xảy ra
○ Reducer: là nơi xác định State thay đổi như thế nào
○ Store: là nơi quản lý State, cho phép truy cập qua getState(), cập nhật State qua dispatch(action)
2.2.5.2 Lý do sử dụng:
● Do React được xây dựng theo hướng chi nhỏ thành component dẫn đến việc quản lý nội bộ các state của chúng mà không cần bất kỳ một thư viện hoặc công cụ nào Nó sẽ hoạt động tốt với các ứng dụng có ít component nhưng khi ứng dụng phát triển
và ngày càng phức tạp thì việc quản lý state được chia sẻ giữa các component sẽ khá khó khăn
● Ví dụ: trong React để chia sẻ State thông qua các component con, một state phải live trong component cha Một method để update chính state này cũng phải được cung cấp để component cha và truyền như Props đên các component con
● Điều này cũng kiến cho việc quản lý các State trở nên phức tạp
và bừa bộn Đó là lý do thực hiện đề tài sử dụng thư viện này
2.2.6 Redux-saga
2.2.6.1 Giới thiệu:
● Redux-Saga là một thư viện redux middleware, giúp quản
lý những side effect trong ứng dụng redux trở nên đơn giản
Trang 40hơn Bằng việc sử dụng tối da tính năng Generators (function*) của ES6, nó cho phép ta viết hàm bất đồng bộ (async) nhìn giống như hàm đồng bộ (synchronos) [7]
● Side effect: tất cả những xử lý ở Reducer đều sử dụng các
hàm đồng bộ hoặc các hàm thuần Nhưng đối với ứng dụng thực tế thì cần nhiều hơn vậy như xử lý bất động với server
Như thực hiện lấy dữ liệu từ server thì ta cần phải đợi kết quả chứ kết quả không trả về ngay được Như vậy trong lập trình hàm đó gọi là side effect
● Generator Function: khác vời hàm bình thường là thực thi
và trả kết quả về thì Generator Function có thể thể thực thi, tạm dừng trả về kết quả… Từ khó để làm được việc đấy là yield
● Nguyên lý hoạt động:
Flow khi không có Redux Saga:
Action(s) → Reducer(s)
Action(s) → Redux Saga →Reducer(s)
● Đối với logic của saga, ta cung cấp một hàm cho saga, chính hàm này đứng ra xem xét các Action trước khi vào store, nếu
là Action tương ứng với hàm được thực thi thì saga sẽ thực thi hàm đó
● Trong Generator Function này có yield và mỗi khi yield ta sẽ trả về một plain object được gọi Effect object Object này đơn