Professional Documents
Culture Documents
ĐỒ ÁN TỐT NGHIỆP
Xây dựng hệ thống quản lý kho GreaterWMS
Chữ kí GVHD
HÀ NỘI, 06/2022
LỜI CẢM ƠN
Lời đầu tiên, em xin gửi lời cảm ơn tới giảng viên ThS. Lê Tấn Hùng đã hướng
dẫn em trong quá trình hoàn thiện đồ án này. Em xin cảm ơn thầy đã gợi ý về ý
tưởng thực hiện, đưa ra các bài toán thực tế và giải pháp phù hợp để em có thể hoàn
thành đồ án với kết quả tốt nhất.
Em xin bày tỏ lòng cảm ơn sâu sắc đến gia đình, người thân, bạn bè những người
luôn ở bên cạnh em lúc khó khăn, là nguồn động lực lớn lao giúp em tự tin, cố gắng
giúp em vượt qua những khó khăn để có thành công như hôm nay. Em cũng cảm
ơn bản thân đã nỗ lực suốt thời gian qua
Do thời gian thực hiện ĐATN có hạn và kinh nghiệm bản thân còn hạn chế nên
không thể tránh khỏi những thiếu sót. Thế nên em mong nhận được sự đóng góp ý
kiến từ thầy cô, cũng như các bạn sinh viên để đồ án này trở nên hoàn thiện hơn.
Em xin chân thành cảm ơn!
i
TÓM TẮT NỘI DUNG ĐỒ ÁN
Hiện nay có khoảng hơn 600 nghìn doanh nghiệp sản xuất kinh doanh, hầu hết
doanh nghiệp sản xuất đều có kho hàng để lưu trữ nguyên liệu thô, hàng hóa sản
xuất, vật tư. Quản lý kho còn là một công việc vất vả cho chủ shop và thủ kho, khi
doanh nghiệp ngày càng phát triển lượng hàng hóa ngày càng nhiều. Vậy quản lý
kho hàng như thế nào để hàng hóa bán ra - nhập vào không bị nhầm lẫn, thất thoát.
Trong bối cảnh đó, việc theo dõi, quản lý, nhập xuất hàng hóa và quản lý hàng tồn
kho là thách thức với nhiều doanh nghiệp. Hiện nay có nhiều sản phẩm để hộ trợ
doanh nghiệp quản lý kho hiệu quả, phải kể đến các công ty nhu Kiotviet, Sapo đã
có sản phẩm cho doanh nghiệp bán hàng. Tuy nhiên, các sản phẩm chưa có chuẩn
hóa cho quy trình nhập - xuất kho.
Sản phẩm của đồ án là một ứng dụng hỗ trợ quản lý kho theo quy trình một cách
hiệu quả. Ứng dụng bao gồm 2 thành phần: phần Backend bao gồm các chức năng
xử lý chung của hệ thống được cung cấp thông qua các API, phần Frontend bao
gồm các giao diện để thực hiện các chức năng mà phía Backend cung cấp. Đóng
góp chính của đồ án là thiết kế và xây dựng các tính năng theo dõi thông tin của
hàng hóa trong kho, hỗ trợ theo dõi thông tin của đơn nhập xuất kho, theo dõi lịch
sử nhập xuất và báo cáo, đồng thời xây dựng ứng dụng giúp thể hiện giao diện các
chức năng. Kết quả đạt được là xây dựng và cài đặt thành công ứng dụng quản lý
kho với tính năng chính quản lý thông tin nhập xuất, quản lý hàng hóa, quản lý
khách hàng và quản lý nhà cung cấp.
ii
MỤC LỤC
2.2.1 Biểu đồ use case phân rã quản lý nhập kho (ASN) ........................ 8
2.2.3 Biểu đồ use case phân rã quản lý thông tin hàng hóa .................... 10
2.2.4 Biểu đồ use case phân rã quản lý thông tin hàng tồn kho................ 11
2.2.5 Biểu đồ use case phân rã quản lý thông tin nhân viên ................... 11
2.2.6 Biểu đồ use case phân rã quản lý thông tin ngăn lưu trữ ................ 12
2.4.4 Đáp ứng yêu cầu mỹ thuật, kỹ thuật của giao diện chương trình...... 32
2.4.5 Đáp ứng về xử lý logic với việc nhập liệu qua các ô nhập liệu ........ 32
3.1 Django................................................................................................. 34
ii
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ ....................................... 40
5.1 Bài toán quản lý nhập kho và các trạng thái hàng hóa khi nhập kho .......... 68
5.2 Bài toán quản lý xuất kho và các trạng thái hàng hóa khi xuất kho............. 70
iii
5.2.2 Kết quả ..................................................................................... 71
Hình 5.1 Giao diện các chức năng của nhập kho . . . . . . . . . . . . . 70
Hình 5.2 Giao diện các chức năng của nhập kho . . . . . . . . . . . . . 72
v
DANH MỤC BẢNG BIỂU
vi
Bảng 4.19 Bảng kiểm thử hộp đen cho chức năng tạo mới xuất kho . . . 64
Bảng 4.20 Bảng kiểm thử hộp đen cho chức năng tạo mới hàng hóa . . . 65
vii
DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT
viii
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI
1
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI
nhiều ưu điểm hơn so với nhóm giải pháp thứ nhất vì được tích hợp với hầu hết
được tích hợp với phần mềm bán hàng, dễ dàng quản lý với người quản lý. Nhưng
thiếu một số quy trình trong quản lý kho nhưng trạng thái đơn xuất nhập kho, quy
trình đếm chu kỳ hàng tồn kho
Cả hai giải pháp trên đều có nhiều ưu điểm lớn trong việc quản lý hàng tồn kho
cho doanh nghiệp theo những cách hiệu quả khác nhau. Tuy nhiên, cả hai giải pháp
đều thiếu đi một số quy trình quản lý kho. Do đó, định hướng của đồ án này là xây
dựng phần mềm quản lý dữ liệu kho, hỗ trợ theo dõi đơn nhập xuất kho, quản lý
hàng tồn kho và các quản lý chung, đó là việc phần mềm quản lý kho GreaterWMS
hỗ trợ, cũng như duy trì tính chính xác của hàng tồn kho bằng cách ghi lại tất cả
các giao dịch trong kho.
1.3 Định hướng giải pháp
Từ yêu cầu nêu ra trong mục 1.2 là cần xây dựng một phần mềm quản lý thông
tin vào ra kho, thông tin hàng tồn kho một cách chính xác nhất, những đề xuất
hướng giải quyết để giải quyết vấn đề đó được nêu rõ trong bảng dưới 1.1:
2
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI
Quản lý hàng Theo dõi lượng Xây dựng tính năng đếm dữ liệu tồn
tồn kho hàng tồn kho khi nhập xuất hàng hóa, tính năng
đếm chu kỳ tính số lượng hàng tồn kho
thực tế và hàng tồn kho có sẵn
Quản lý các Các thông tin Xây dựng chức năng quản lý cơ sở
thông tin chung cần thiết khi quản lý thông tin mặt hàng, kích thước,
nhập xuất kho nguồn gốc, loại mặt hàng. Xây dựng
tính năng quản lý thông tin khách
hàng, nhà phân phối, nhân viên, giao
hàng cước và vốn.
Như vậy trong đồ án này, em muốn xây dựng một phần phềm hỗ trợ quản lý kho
với các công việc chính: quản lý thông tin nhập kho, xuất kho, quản lý hàng tồn
kho, phần quyền, quản lý dữ liệu chung gồm: hàng hóa, khách hàng, nhà cung cấp,
cước, vốn và giao hàng
Phần mềm được xây dựng trên nền tảng web với gồm 2 phần chính: Frontend
và Backend. Phần Backend được xây dựng trên nền tảng web service sử dụng công
nghệ Django, cung cấp các tính năng quản lý nhập kho, quản lý xuất kho, quản lý
hàng tồn kho và các chức năng quản lý thông tin chung: quản lý hàng hóa, quản lý
người dùng, quản lý khách hàng, quản lý nhà cung ứng, quản lý vốn và cước, quản
lý giao hàng.
Phần Frontend được xây dựng trên nền tảng web và hệ cơ sở dữ liệu mã nguồn
mở Mysql, cung cấp giao diện thực hiện các chức năng mà Backend cung cấp, như
tính năng quản lý nhập kho, quản lý xuất kho, quản lý hàng tồn kho và các chức
năng quản lý thông tin chung
1.4 Bố cục đồ án
Phần còn lại của báo cáo đồ án tốt nghiệp này được tổ chức như sau.
Chương 2 trình bày về hiện trạng mà em đã khảo sát nhu cầu tại các doanh
nghiệp, từ đó đưa ra các phân tích yêu cầu đề giải quyết những yêu cầu thực tế về
quản lý kho. Trong đó em sẽ nêu rõ những usecase sử dụng dành cho từng người
dùng trong hệ thống, miêu tả rõ quy trình nghiệp vụ, mô tả những chức năng quan
trọng và những yêu cầu phi chức năng của hệ thống
Từ những phân tích thiết kế trong Chương 2 thì trong Chương 3, em sẽ giới thiệu
về những công nghệ sử dụng trong việc xây dựng sản phẩm. Đầu tiên là áp dụng
3
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI
Django để xây dựng Web Service để cung cấp các Restful API kết nối cơ sở dữ liệu
mã nguồn mở MySQL, xử lý dữ liệu, và đưa ra một số API để các hệ thống khác
có thể kết nối đến để cùng xử lý dữ liệu kho. Thứ 2 là sử dụng framework Vue để
xây dựng website trực quan tương tác với Restful API mà Backend cung cấp.
Ở Chương 4 của báo cáo đồ án này, nội dung trình bày là về quá trình phát triển,
kiểm thử, triển khai ứng dụng. Trong phần phát triển ứng dụng, em sẽ nêu rõ kiến
trúc sử dụng để dựng hệ thống, các thiết kế lớp, thiết kế gói, thiết kế cơ sở dữ liệu,
thiết kế giao diện và các công cụ sử dụng trong việc phát triển phần mềm. Trong
phần kiểm thử, em sẽ trình bày về các kỹ thuật như kiểm thử đơn vị, kiểm thử
tích hợp. Cuối cùng là kế hoạch triển khai hệ thống lên môi trường phát triển, môi
trường kiểm thử, môi trường ổn định và môi trường thực tế.
Ở Chương 3 đã trình bày về công nghệ mà em đã sử dụng trong hệ thống,
Chương 4 đã trình bày đề quá trình phát triển ứng dụng thì tiếp theo, trong Chương
5 của báo cáo này, em xin trình bày về đóng góp và giải pháp nổi bật của mình khi
thực hiện phát triển xong ứng dụng: đóng về việc xây dựng quy trình nhập kho, quy
trình xuất kho, quản lý hàng tồn kho.
Cuối cùng, Chương 6 là kết luận về sản phẩm của em. Ở chương này nội dung
là trình bày về những thiếu sót của em trong khi xây dựng phần mềm, những kinh
nghiệm đã học hỏi được trong quá trình xây dựng hệ thống và hướng phát triển sau
này để hoàn thiện, phát triển sản phẩm.
4
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Tổng quan: từ những vấn đề đặt ra được nêu trong Chương 1, trong Chương này
phân tích rõ hơn những yêu cầu thực tế sau khi đã khảo sát hiện trạng và đưa ra
những phân tích thiết kế hệ thống phù hợp với yêu cầu đặt ra.
2.1 Khảo sát hiện trạng
Quản lý kho là người chịu trách nhiệm cho toàn bộ hoạt động liên quan trực
tiếp đến hàng hóa trong kho như sắp xếp, xuất nhập kho, vận chuyển,..góp phần
giảm chi phí lưu thông và sử dụng hiệu quả cơ sở vật chất của kho. Quản lý kho
phải giám sát các loại nguyên liệu thô và thành phẩm của doanh nghiệp. Những
mặt hàng này có thể được sử dụng cho doanh nghiệp, bán lại hoặc cho đơn vị khác
thuê. Công việc chính của quản lý kho là giám sát công nhân kho sắp xếp, kiểm kê
và báo cáo với cấp trên về tình trạng hàng hóa trong kho. Với những kho hàng lớn
nếu làm thủ công sẽ mất rất nhiều thời gian, công sức và gặp nhiều khó khăn.
Hiện nay, các phần mềm quản lý kho được sử dụng rất nhiều trên thị trường. Tuy
nhiên, các giải pháp chưa đi sâu để giải quyết các bài toán xử lý dữ liệu thời gian
thực của quản lý kho hàng. Ngoài ra, các công việc hiện tại như báo cáo đều được
thực hiện bằng giấy tờ nên một phần nó đó làm chậm các quy trình khác của doanh
nghiệp.
Với những vấn đề trên, hiện nay đã có một số sản phẩm làm tốt trên thị trường
tối ưu hóa quá trình, giúp nắm bắt số lượng thiếu hụt, dư thừa hàng hóa trong kho.
Còn về giải pháp theo dõi, quản lý đơn nhập xuất vẫn còn nhiều hạn chế nhưng
cũng có một số hệ thống được thiết kế với chức năng tương tự. Một số phần mềm
nổi bật em tìm hiểu được là: Phần mềm quản lý kho KiotViet, Phần mềm quản lý
kho hữu ích Sapo, Phần mềm quản lý kho SOF. Để nhìn nhận các sản phẩm khác
một các tổng quát nhất, em sẽ trình bày chi tiết các sản phẩm ở bảng 2.1.
5
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Dựa vào khả sát trên cho phần mềm quản lý bán hàng có thể đáp ứng được một
số nhu cầu của quản lý kho, excel có thể đáp ứng được với số lượng hàng hóa ở
mức nhỏ vẫn còn một số hạn chế. Phần mềm chuyên dụng cho quản lý kho thì dùng
6
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
công nghệ cũ, giao diện chưa thân thiện với người dùng.
Từ đó, mục tiêu của em là xây dựng hệ thống quản lý khó GreaterWMS, hỗ trợ
nhân viên quản lý kho cập nhật thông tin kho nhanh chóng và thuận tiện nhất, giảm
thời gian, công sức có thể quản lý tổng thể được kho vận của doanh nghiệp. Giảm
tải lượng công việc của nhân viên kiểm kho. Đồng thời, hỗ trợ lưu trữ tải các dữ
liệu báo cáo trên hệ thống và chức năng quản lý người cho quản trị hệ thống.
2.2 Tổng quan chức năng
Khi chưa đăng nhập người dùng sẽ không có quyền sử dụng những tính năng
của hệ thống. Khi đó người quản trị hệ thống tạo tài khoản, thông tin cá nhân của
nhân viên đó và0 hệ thống và cung cấp thông tin đăng nhập cho người dùng đó.
Với những nhiệm vụ mà người dùng được cung cấp sẽ tương ứng với quyền truy
cập đã được định nghĩa sẵn trong cơ sở dữ liệu.
Sau khi đăng nhập người dùng với vai trò là quản lý sẽ được đưa đến giao diện
với toàn bộ chức năng bao gồm xem bảng điều khiển, nhập kho, xuất kho, quản lý
hàng tồn kho, quản lý thông tin chung và xuất báo cáo.
Nếu người dùng có vai trò là nhân viên quản lý kho sẽ được đưa đến giao diện
để thực hiện các chức năng được cấp quyền như quản lý nhập xuất kho, quản lý
thông tin cơ sở, quản lý hàng tồn kho.
Vai trò quản trị viên hệ thống có thể thực hiện tất cả các chức năng của hệ thống
cung cấp.
Ngoài các thông tin vai trò như trên, các chức năng có thể được phân loại theo
yêu cầu của môi trường triển khai thực tế trong hệ thống và chi tiết đến từng chức
năng hay từng API của hệ thống quản lý chung. Các trường hợp sử dụng phần mềm
được thể hiện cụ thể ở trong Hình 2.1.
7
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Hinhve/useCaseTongQuan.png
Phần tiếp theo em sẽ tập trung phân rã một số use case chính thể hiện các chức
năng liên quan đến nghiệp vụ quản lý kho: Quản lý nhập kho, quản lý xuất kho,
quản lý hàng tồn kho, quản lý thông tin hàng hóa. Các use case liên quan đến các
nghiệp vụ trong quản lý kho.
2.2.1 Biểu đồ use case phân rã quản lý nhập kho (ASN)
Hinhve/quanlynhapkho.png
8
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Hình 2.2 đưa ra các use case nhỏ hơn trong use case quản lý nhập kho. Trong ca
sử dụng này, những nhân viên có quyền tạo mới một đơn nhập kho có thể tạo một
đơn nhập kho, ví dụ quản lý kho tạo một đơn nhập hàng mới, nhập nhà cung cấp,
nhập mã hàng hóa và số lượng hàng hóa. Sau khi nhấn chuyển vào thùng thì kho
sẽ tự động tăng số lượng tồn kho lên đúng bằng số lượng trong đơn nhập kho.
2.2.2 Biểu đồ use case phân rã quản lý xuất kho
Hinhve/quanlyxuatkho.png
Hình 2.3 đưa ra các use case nhỏ hơn trong use case quản lý xuất kho. Trong ca
sử dụng này, nhân viên có quyền tạo mới một đơn xuất kho có thể tạo một đơn nhập
kho, ví dụ quản lý tạo một đơn xuất kho sau khi nhập thông tin khách hàng nhận,
loại hàng hóa, số lượng hàng hóa thì hệ thống sẽ ghi nhận lại số lượng hàng được
xuất, khi nào trạng thái đơn là đã xuất thì sẽ cập nhật trạng thái đơn trong kho.
9
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
2.2.3 Biểu đồ use case phân rã quản lý thông tin hàng hóa
Hinhve/quanlyhanghoa.png
Hình 2.4: Biểu đồ phân rã use case quản lý thông tin hàng hóa
Hình 2.4 biểu thị các use case nhỏ trong use case quản lý thông tin hàng hóa
như: xem, sửa, xóa, xuất thông tin, .... Việc quản lý các mặt hàng hiện đang có
trong kho là hết sức cần thiết, để nắm rõ được các loại mặt hàng hiện đang có trong
kho. Ca sử dụng này, nhân viên có thể tạo mới dữ liệu thủ công bằng tay, hoặc thêm
mới hàng loạt bằng tính năng tải file, cung cấp thông tin hàng hóa trong kho một
cách nhanh chóng, bên cạnh đó cung cấp tính năng tìm kiếm giúp tìm kiếm thông
tin hàng hóa nhanh chóng.
10
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
2.2.4 Biểu đồ use case phân rã quản lý thông tin hàng tồn kho
Hinhve/quanlyhangtonkho.png
Hình 2.5: Biểu đồ phân rã use case quản lý thông tin hàng hóa
Hình 2.4 thể hiện biểu đồ phân rã use case quản lý thông tin hàng tồn kho, mỗi
khi cần kiểm duyệt kho, nhân viên được phân quyền có chức năng đếm chu kỳ sẽ
ghi lại thông tin hàng hóa lưu kho được kiểm kê, trong đó: [2] Đếm chu kỳ là một
phương pháp kiểm tra tồn kho dự kiến và tồn kho vật lý mà qua đó các công ty xác
nhận số lượng hàng tồn kho thực tế khớp với hồ sơ hàng tồn kho của họ.
2.2.5 Biểu đồ use case phân rã quản lý thông tin nhân viên
Hinhve/quanlythongtinnhanvien.png
Hình 2.6: Biểu đồ phân rã use case quản lý thông tin nhân viên
Hình 2.6 trình bày phân rã use case cho chức năng quản lý nhân viên dành cho
người quản lý hệ thống. Với ca sử dụng này, người quản lý có thể tạo và thêm mới
11
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
nhân viên cũng như tài khoản cho người dùng mới để có thể truy cập vào hệ thống
để sử dụng các chức năng trong hệ thống mà người đó được phân quyền truy cập
và sử dụng.
2.2.6 Biểu đồ use case phân rã quản lý thông tin ngăn lưu trữ
Hinhve/quanlythongtinbin.png
Hình 2.7: Biểu đồ phân rã use case quản lý thông tin ngăn lưu trữ
Hình 2.7 trình bày phân rã use case cho chức năng quản lý ngăn lưu trữ hàng
hóa. Ca sử dụng này, người dùng có thể thêm mới một ngăn lưu trữ hàng hóa tương
ứng với ngăn hoặc kệ vật lý trong kho thực tế. Các ngăn kệ giúp phân loại các hàng
hóa đang ở trạng thái nào: sẵn sàng, kiểm định hay bị hỏng hóc.
2.2.7 Quy trình nghiệp vụ
Các quy trình nghiệp của của hệ thống sau khi hoàn thành bao gồm: quản lý
nhập kho, quản lý xuất kho, quản lý người dùng, chuyển hàng hóa vào kho, đếm
chu kỳ trong kho, quản lý hàng tồn kho, quản lý thông tin hàng hóa, quản lý thông
tin khách hàng, quản lý thông tin nhà cung cấp. Ở đồ án em xin phép giới thiệu quy
trình nghiệp vụ quan trọng của quản lý kho: quản lý nhập kho, quản lý xuất kho.
12
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Hinhve/hoat_dong_nhap_kho.png
Hình 2.8: Quy trình nghiệp vụ tạo và xử lý đợt kiểm tra lưới điện
7
Hình 2.8 mô tả tổng quan quá trình nhập kho trong module quản lý nhập kho
bao gồm các chức năng về tạo lập các đơn nhập kho mới, xác nhận các đơn nhập
kho. Ngoài ra hệ thống còn có tính năng phản hồi cho người dùng giúp người dùng
biết mình đang thao tác đúng hay sai.
Yêu cầu hệ thống: (i) Nhận dữ liệu và khởi tạo thành công đơn nhập kho. (ii)
Thông báo chính xác lỗi cho người dùng. (iii) Tự động cập nhật thông tin hàng tồn
kho
Yêu cầu người dùng: Nhân viên cần tạo đúng theo quy trình nhập kho, nhập
đúng thông tin đầu vào của đơn nhập kho.
13
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Hinhve/hoat_dong_xuat_kho.png
Hình 2.8 mô tả tổng quan quá trình xuất kho trong module quản lý xuất kho bao
gồm các công việc cần làm tạo mới đơn nhập kho, xác thực đơn xuất kho, xác thực
đơn mới, xác nhận lấy hàng, xác nhận gửi và vận chuyển.
Yêu cầu hệ thống: (i) Nhận dữ liệu và khởi tạo thành công đơn xuất kho. (ii)
Thông báo chính xác lỗi cho người dùng. (iii) Tự động cập nhật thông tin hàng tồn
kho
Yêu cầu người dùng: Nhân viên cần tạo đúng theo quy trình xuất kho, nhập đúng
thông tin đầu vào của đơn xuất kho.
14
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
ã Usecase UC00
Tên Usecase CRUD đơn nhập kho
Tác nhân Quản lý kho, Quản trị viên
Tiền điều kiện Người sử dụng đã đăng nhập thành công thành tác nhân
Điều kiện kích Tác nhân chọn chức năng liên quan nhập kho
hoạt
15
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.3: Dữ liệu đầu vào cho chức năng quản lý đơn nhập kho
16
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.4: Đặc tả use case CRUD đơn xuất kho kho
ã Usecase UC00
Tên Usecase CRUD đơn xuất kho
Tác nhân Quản lý kho, Quản trị viên
Tiền điều kiện Người sử dụng đã đăng nhập thành công thành tác nhân
Điều kiện kích Tác nhân chọn chức năng liên quan xuất kho
hoạt
17
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.5: Dữ liệu đầu vào cho chức năng quản lý đơn xuất kho
18
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
ã Usecase UC00
Tên Usecase Quản lý hàng hóa
Tác nhân Quản lý kho, Quản trị viên
Tiền điều kiện Người sử dụng đã đăng nhập thành công thành tác nhân
Điều kiện kích Tác nhân chọn chức năng liên quan đến hàng hóa
hoạt
19
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
20
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.7: Dữ liệu đầu vào cho chức năng quản lý hàng hóa
21
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
ã Usecase UC00
Tên Usecase Quản lý ngăn lưu hàng
Tác nhân Quản lý kho, Quản trị viên
Tiền điều kiện Người sử dụng đã đăng nhập thành công thành tác nhân
Điều kiện kích Tác nhân chọn chức năng liên quan đến ngăn lưu hàng
hoạt
22
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
23
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.9: Dữ liệu đầu vào cho chức năng quản lý ngăn lưu hàng
Bảng 2.10: Đặc tả use case quản lý ngăn quản lý nhân viên
ã Usecase UC00
Tên Usecase Quản lý nhân viên
Tác nhân Quản lý kho, Quản trị viên
Tiền điều kiện Người sử dụng đã đăng nhập thành công thành tác nhân
Điều kiện kích Tác nhân chọn chức năng liên quan đến quản lý nhân
hoạt viên
24
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.11: Dữ liệu đầu vào cho chức năng quản lý nhân viên
25
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
ã Usecase UC00
Tên Usecase Quản lý nhà cung cấp
Tác nhân Quản lý kho, Quản trị viên
Tiền điều kiện Người sử dụng đã đăng nhập thành công thành tác nhân
Điều kiện kích Tác nhân chọn chức năng liên quan đến nhà cung cấp
hoạt
26
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
27
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.13: Dữ liệu đầu vào cho chức năng quản lý nhà cung cấp
28
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
ã Usecase UC00
Tên Usecase Quản lý khách hàng
Tác nhân Quản lý kho, Quản trị viên
Tiền điều kiện Người sử dụng đã đăng nhập thành công thành tác nhân
Điều kiện kích Tác nhân chọn chức năng liên quan đến khách hàng
hoạt
29
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
30
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.15: Dữ liệu đầu vào cho chức năng quản lý khách hàng
31
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
1%.
2.4.2 Yêu cầu đáp ứng với Cơ sở dữ liệu
Phần mềm sử dụng hệ quản trị dữ liệu đáp ứng yêu cầu như sau: (i) Bảo mật: hỗ
trợ kiểm soát người dùng truy cập (đối với từng người dùng sẽ dùng từng role khác
nhau để truy cập). (ii) Hiệu năng: Đáp ứng được số lượng người dùng lớn cùng truy
cập cùng lúc (có cơ chế locking, transaction để xử lý dữ liệu). (iii) Linh hoạt: Có
thể hoạt động được trên nhiều hệ điều hành: Linux, MacOs, Windowns
2.4.3 Đáp ứng yêu cầu về bảo mật
Đảo bảo dữ liệu đặt ra trong môi trường internet, phải đảm bảo về mặt truyền,
nhập dữ liệu, bảo vệ mật khẩu người dùng, không để lộ, mất mát thông tin. Sử dụng
giao thức mạng an toàn như HTTPS, bảo mật website khỏi tấn công DDOS, ngăn
chặn SQL injection và tạo các bản sao thường kỳ giúp đảm bảo website được an
toàn.
2.4.4 Đáp ứng yêu cầu mỹ thuật, kỹ thuật của giao diện chương trình
Phần mềm được thiết kế đảm bảo thân thiện, dễ sử dụng, bố cục giao diện giúp
cho thao tác nhanh và thuận tiện.
Phần mềm phải hỗ trợ người dùng các bước thao tác sai, các cảnh báo trong
phần mềm cần hiển thị rõ ràng, nổi bật. Ngoài ra các cảnh báo về lưu trữ, thay đổi
không thể hoàn tác hay xóa dữ liệu liên quan đến cơ sở dữ liệu thì cần có cảnh báo
yêu cầu người dùng để xác nhận thêm một lần nữa.
Phần mềm được thiết kế sử dụng tiếng Việt, hỗ trợ chuẩn hóa ngôn ngữ Unicode
(TCVN 6909:2001). Người dùng có thể sử dụng các bộ gõ tiếng Việt như Unikey,
Vietkey để soạn thảo mà không gặp trở ngại về ngôn ngữ.
Khuôn dạng hiển thị ngày tháng: YYYY-MM-DD.
2.4.5 Đáp ứng về xử lý logic với việc nhập liệu qua các ô nhập liệu
Các ô nhập liệu trên giao diện cần đảm bảo các nguyên tắc như sau:(i) Dữ liệu
được kiểm tra ngay thời điểm người dùng nhập liệu. (ii) Hiển thị thông báo ngay
khi người dùng nhập dữ liệu không hợp lệ. (iii) Các ô dữ liệu bắt buộc có ký hiệu
thông báo cho người dùng. (iv) Các ô nhập có định dạng chuyên biệt cần có giao
diện chọn. VD: chọn ngày tháng. (v) Đối với các dữ liệu dạng cố định như danh
mục, danh sách cụ thể cần hỗ trợ hiển thị danh sách chọn thay vì nhập liệu từ bàn
phím.
Kết chương: Vậy trong chương này, từ những khảo sát và thống kê từ các hệ
thống tương tự đã trình bày tổng quan các chức năng, nghiệp vụ và chức năng
32
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
quan trọng của hệ thống và các yêu cầu phi chức năng cần đáp ứng của phần mềm.
Chương kế tiếp sẽ trình bày về công nghệ sử dụng trong sản phẩm phần mềm.
33
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
3.1 Django
3.1.1 Tổng quan
[3] Django là loại framework cấp cao được viết bằng Python, được thiết kế để
đáp ứng nhu cầu phát triển các website an toàn và dễ bảo trì. Bởi vì Framework
này được xây dựng bởi các nhà phát triển có kinh nghiệm nên nó có khả năng xử lý
hầu hết những phần phức tạp của việc phát triển web.Do đó, bạn có thể tập trung
vào việc viết app mà không cần phải dừng lại để kiểm tra. Django miễn phí và là
open-source. Framework này có một cộng đồng người dùng đông đảo và có nhiều
tài liệu hỗ trợ.
Hinhve/django.png
34
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
developer có thể muốn để phát triển web theo hướng mình muốn. Tất cả các phần
trong framework hoạt động liền mạch với nhau, tuân theo một nguyên tắc thiết kế
nhất quán và có tài liệu để bạn tham khảo. Nhờ đó, bạn có thể vừa phát triển web
theo phong cách riêng, vừa tiết kiệm được thời gian. (ii) Tính linh hoạt: Django có
thể sử dụng để xây dựng hầu hết mọi loại trang web- từ hệ thống quản lý nội dung
(như wiki), cho đến các trang mạng xã hội, tin tức. Nó có thể hoạt động cùng với
các framework bên ngoài và cũng có thể cung cấp nội dung ở hầu hết mọi định dạng
(bao gồm HTML, RSS feeds, JSON, XML,..v..v..). Framework này còn cung cấp
các tùy chọn khác nhau cho hầu hết các chức năng (như công cụ tạo template, cơ sở
dữ liệu phổ biến,..). (iii) Khả năng mở rộng: Django sử dụng kiến trúc thành phần
riêng nên bạn có thể mở rộng quy mô bằng cách thêm phần cứng vào các cấp độ
(máy chủ bộ nhớ đệm, máy chủ cơ sở dữ liệu hoặc máy chủ ứng dụng). Instagram là
ví dụ rõ ràng nhất cho khả năng mở rộng này. (iv) Bảo mật: Django giúp developer
tránh được nhiều lỗi bảo mật phổ biến bằng cách cung cấp framework có khả năng
tự bảo vệ trang. Ví dụ: Django cung cấp một giải pháp an toàn để quản lý tài khoản
người dùng và mật khẩu (password), tránh những lỗi phổ biến như đưa thông tin
phiên vào ở nơi dễ bị tấn công như cookie (thay vào đó cookie chỉ chứa key còn
dữ liệu thực tế được lưu trữ trong database) hoặc trực tiếp lưu trữ password chứ
không phải lưu trữ password hash. Django còn bảo vệ website khỏi những lỗ hổng
khỏi những loại tấn công mạng như: tấn công SQL injection, Cross-site Scripting,
cross-site request forgery và clickjacking.
3.1.3 Kiến trúc
Hình ảnh 3.2 đưa ra rằng mỗi lớp kiến trúc chỉ được giao tiếp với lớp trên hoặc
dưới nó, giúp cho việc quản lý các module một cách dễ dàng hơn. Nó có nghĩa là
mỗi layer chỉ phụ thuộc vào các layer liền kề với nó, khi có sự thay đổi của API mỗi
module thì chỉ cần thay đổi các layer cạnh nó, việc cập nhật không thay đổi nhiều
các module vẫn hoạt động độc lập.
Các layer chính sẽ được mô tả ngắn gọn như sau: (i) Django Template: module
cung cấp các mẫu HTML cho người dùng sử dụng, hoặc có thể là Restful API cho
frontend sử dụng; (ii) View Logic: module có hàm hoặc lớp Python nhận yêu cầu
web và trả về phản hồi web. Phản hồi có thể là phản hồi HTTP đơn giản, phản
hồi mẫu HTML hoặc phản hồi chuyển hướng HTTP chuyển hướng người dùng đến
một trang khác; (iii) App logic: Là một layer thêm để xử lý logic cho tầng Layer
View kết nối cơ sở dữ liệu và trả dữ liệu cho Template layer; (iv) Model: là module
kết nối với cơ sở dữ liệu tránh được các lỗ hổng bảo mật như SQL Injection.
35
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
Hinhve/Django-architecture.png
3.1.4 Ưu điểm
Tại sao lại sử dụng framework này, sau đây là một số ưu điểm của Django: (i)
Django đơn giản và nhanh chóng: Một trong những mục tiêu chính của Django là
đơn giản hóa công việc cho developer. Để làm tốt điều đó, Django framework sử
dụng nguyên tắc phát triển nhanh chóng, tức là các nhà phát triển có thể thực hiện
nhiều tác vụ phải lặp lại một lúc thay vì phải bắt đầu lại từ đầu. Nguyên lý DRY
(Don’t Repeat Yourself – không lặp lại) nghĩa là các nhà phát triển có thể tái sử
dụng các đoạn code hiện có và tập trung vào nó. (ii) Bảo mật: Bảo mật cũng là
ưu tiên hàng đầu của Django. Nó là một trong những framework có hệ thống bảo
mật tốt nhất hiện nay. Nhờ hệ thống đó, các nhà phát triển có thể tránh các vấn
đề về bảo mật phổ biến như: Cross-site scripting; Cross-site request forgery; SQL
injection. (iii) Cộng đồng người dùng và thiết lập hoàn thiện: Django set up khá
tốt. Điều này đã được chứng nhận bởi thời gian và một số người sử dụng framework
này. (iv) Django có chi tiết tài liệu thư viện và được cập nhật liên tục, nhờ đó bạn
hoàn toàn có thể thích ứng nhanh chóng với các thay đổi của framework này.
36
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
37
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
38
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
39
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/2010s-layered-architecture.png
Với mô hình này gồm 3 phần chính: (i) user interface: Lớp giao diện người
dùng, lớp này có nhiệm vụ chính là giao tiếp với người dùng. GUI bao gồm các
thành phần giao diện (ví dụ: Giao diện Web) và thực hiện các công việc như nhập
liệu, hiển thị dữ liệu, kiểm tra tính đúng đắn trước khi gọi lớp tiếp theo. Ví dụ
kiểm tra các trường nhận của đơn nhập kho, đơn xuất kho (ii) Business Logic - lớp
nghiệp vụ: lớp này bao gồm các layer nhỏ: Presentation: là các form dữ liệu, các
lớp views để đưa ra cho layer 1, Application: Lớp xử lý logic nơi đáp ứng các yêu
cầu và xử lý trước khi truyền xuống tầng database, Domain Model: là lớp ORM
mapping đổi tượng với cơ sở dữ liệu, Persistence: lớp này giúp chuyển các câu hàm
ORM thành câu truy vấn để truy vấn trực tiếp cơ sở dữ liệu. Và tầng cuối cùng (iii)
Data - dữ liệu: Nơi lưu trữ dữ liệu của cả hệ thống.
Ứng dụng mô hình phát triển phần mềm này có những ưu điểm sau: (i)Việc chia
thành từng lớp giúp cho mã nguồn (code) được tường minh hơn. Do được phân chia
thành các lớp thì khi thực hiện bảo trì sẽ dễ dàng hơn. Giúp cho dễ phát triển, tái
sử dụng vì tất cả mã nguồn đều được sắp xếp khoa học.
40
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/tongquan.png
Hình 4.2 trình bày về biểu đồ phụ thuộc gói trong kiến trúc thiết kế phần mềm,
chi tiết hơn về các gói được mô tả như sau:
Đối với frontend:
Gói App: là file App.js là file chính của chương trình mọi request đều sẽ đi qua
gói App này
Gói router: là gói chứa các đường dẫn của đến các trang của website. Có thể cấu
hình các menu, các tuyến đường dẫn đến từng trang trong trang web của mình.
Gói layout: nơi bố trí, dàn trang, phân bố các tài liệu cho trang web, bao gồm
đầu trang, lề trái, lề phải, chân trang, và nội dung bên trong trang web.
41
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Gói Page: Nơi chưa toàn bộ các trang của phần mềm. Với mỗi thư mục trong gói
Page sẽ là một module riêng biệt, Ví dụ quản lý kho sẽ là một module, ở đây sẽ lấy
dữ liệu từ gói API và hiển thị cho người dùng cuối.
Gói API: gói kết nối trực tiếp với backend bằng các giao thức, bao gồm các
Interface định nghĩa các lời gọi API cung cấp cho ứng dụng có thể giao tiếp với
Backend ở tầng dưới.
Đối với backend:
Gói Presentation: URL chứa các file cấu hình các API để thực hiện các yêu cầu
từ bên ngoài gọi vào, và định nghĩa các phản hồi trả ra của API. Với mỗi file tương
ứng với các model và các chức năng nghiệp vụ của model đó thực hiện. Trong file
được cấu hình đường dẫn API để client có thể yêu cầu chức năng đó
Gói Application: (i) views: Nơi nhận các yêu cầu từ client, ánh xạ từ URL vào
từng lớp trong gói views để xử lý yêu cầu từ client; (ii) app: chứa các xử lý logic
nghiệp vụ. Sau khi nhận được yêu cầu từ client hợp lệ thì chuyển sang lớp này để
tiếp tục xử lý logic các thông tin cho chức năng của nghiệp vụ đó. (iii) config: là
nơi chứa các cấu hình về database, các app bên ngoài được cài đặt vào hệ thống,
các middleware và các cấu hình khác
Gói model: Đây là gói chứa các ORM giúp ánh xạ các record dữ liệu trong hệ
quản trị cơ sở dữ liệu sang dạng đối tượng đang định nghĩa trong các class. Nhờ
gói này sẽ tránh được những lỗi như SQL Injection, thao tác nhanh hơn với cơ sở
dữ liệu nhờ có nhiều interface.
Lớp dữ liệu: Cơ sở dữ liệu: lưu trữ các dữ liệu của ứng dụng.
4.1.3 Thiết kế chi tiết gói
a, Thiết kế chi tiết gói cho chức năng nhập kho
Thiết kế chi tiết gói cho chức năng nhập kho
Hình 4.3 biểu đạt sự phụ thuộc giữa các lớp của các gói trong chức năng nhập
kho. Lưu ý về thiết kế: Lớp ModelViewSet là lớp thuộc framework, cần kết thừa
và tiêm phụ thuộc vào lớp urlpartern. Các gói đã được đặc tả về nhiệm vụ, hành vi
ở mục 4.1.2.
42
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/class_nhap_kho.png
Hình 4.3: Thiết kế chi tiết gói cho chức năng quản lý nhập kho
Hinhve/class_xuatkho.png
Hình 4.4: Thiết kế chi tiết gói cho chức năng xuất kho
43
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/bocuc.png
Hình 4.5 thể hiện sơ đồ phân cấp các chức năng của phần mềm.
b, Thiết kế hỗ trợ tương tác
Thiết kế thông báo
Thông báo: sử dụng khi người dùng hoàn thành một thao tác với hệ thống, đưa ra
thông báo giúp người dùng nhận biết mình thực hiện đúng hay thao tác hay không.
Hinhve/thong_bao.png
Hình 4.6 thể hiện một số thông báo khi mà ứng dụng hay người dùng thao tạo
có thể dẫn đến một sự kiện nào đó quan trọng thì ứng dụng sẽ hiển thị thông báo
nhanh để báo cho người dùng.
44
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/canhbao.png
Hình 4.7 thể hiện một số cảnh báo khi người dùng nhập liệu mà để trống một
hay nhiều trường quan trọng thì ứng dụng sẽ hiển thị thông báo để người dùng tiếp
tục nhập liệu vào các ô tương ứng.
Hộp thoại xác nhận
Hộp thoại xuất hiện khi yêu cầu người dùng xác nhận thực hiện một thao tác.
Hinhve/xacnhan.png
45
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hình 4.8 thể hiện các thông báo xác nhận cho người dùng khi người dùng sử
dụng các chức năng như chỉnh sửa các dữ liệu hay xóa các dữ liệu trong hệ thống
thì ứng dụng sẽ yêu cầu người dùng xác nhận trước khi thực hiện các thao tác.
4.2.2 Thiết kế lớp
Hình 4.9 biểu đạt một số lớp chủ đạo cho chức năng quản lý xuất kho, chi tiết
tất cả các phương thức và thuộc tính sẽ được mô tả như sau:
Hinhve/class_thiet_ke_xuat_kho.png
Hình 4.9: Thiết kế chi tiết cho một lớp quản lý xuất kho
Bảng 4.1 biểu đạt danh sách một số thuộc tính trong lớp DN, là lớp kết nối trực
tiếp đến cơ sở dữ liệu
46
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bảng 4.2 biểu đạt danh sách một số phương thức trong lớp DN, là lớp kết nối
trực tiếp đến cơ sở dữ liệu, thực hiện truy vấn tạo mới sử dụng giao dịch.
Bảng 4.3 biểu đạt danh sách một số phương thức trong lớp DnListViewSet, là
lớp xử lý logic và kết nối xuống tầng model để lưu trữ dữ liệu
47
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bảng 4.3 biểu đạt danh sách một số phương thức trong lớp DnUpdateViewSet,
đây là lớp trừu tượng để các lớp con kế thừa như: DnNewOrderViewSet, DnOrder-
ReleaseViewSet tức là phải có một phương thức các lớp con cũng sẽ sử dụng như:
update_by_status, update_stock_list với mỗi loại trạng thái khác nhau sẽ sinh ra
một class con khác nhau, đây là ứng dụng Strategy Pattern.
48
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
49
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/erd_tongquan.png
Từ biểu đồ thực thể liên kết trong Hình 4.10, cơ sở dữ liệu chi tiết được thiết kế
và trình bày trong Hình 4.11.
50
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/erd_detail.png
Hình 4.11 thể hiện tổng quan thiết kế cơ sở dữ liệu của toàn hệ thống. Chi tiết
của một số bảng quan trọng sẽ được thể hiện ở ngay sau đây.
51
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bảng 4.5 là bảng danh sách các đơn nhập kho, lưu trữ các trường liên quan đến
tổng hàng hóa trong đơn nhập kho, giá, dung tích, nhà cung cấp.
Bảng 4.5: Chi tiết của dữ liệu danh sách nhập kho
Bảng 4.6 là bảng chi tiết đơn nhập kho, mỗi một bản ghi sẽ là một mặt hàng
tương ứng trong đơn nhập kho, lưu trữ các thông số chi tiết số lượng hàng, bị hỏng,
bị thiếu, ...
Bảng 4.6: Bảng dữ liệu chi tiết đơn nhập nhập kho
52
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bảng 4.7 biểu đạt danh sách đơn xuất kho của hệ thống, mỗi bản ghi sẽ bao
gồm: tên khách hàng đặt hàng, tổng số lượng, dung tích, số tiền đặt.
Bảng 4.7: Chi tiết của dữ liệu danh sách xuất kho
Bảng 4.8 biểu đạt cho chi tiết mỗi đơn xuất kho, gồm có hàng hóa xuất kho là
gì, số lượng hỏng, thiếu, có phải đơn lưu trữ không.
53
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bảng 4.9 biểu đạt cho danh sách hàng hóa có trong doanh nghiệp, là bảng sẽ
được khai báo trước khi sử dụng hệ thống. Mỗi bản ghi sẽ có thông số của hàng
hóa như loại, đơn vị đo, ...
54
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bảng 4.10 biểu đạt bảng dữ liệu hàng tồn kho là danh sách hàng tồn kho còn
chưa trong kho của doanh nghiệp, các thông số được ghi đầy đủ: còn bao nhiều
hàng, bao nhiều hàng có thể đặt được, bao nhiêu hàng đang chờ đặt, ...
55
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bảng 4.11 biểu đạt cho dữ liệu mô phỏng của ngăn lưu trữ, mỗi ngăn lưu trữ sẽ
có kích thước cố định, được đánh mã số để tránh việc nhầm lần, có thể sử dụng mã
để truy xuất hàng hóa và thuộc tính ngăn.
56
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bảng 4.12 biểu đạt bảng lưu trữ danh sách hàng lấy từ đơn xuất hàng: gồm có
id đơn xuất kho chi tiết, số lượng hàng sẽ lấy và số lượng hàng đã lấy và lấy thuộc
ngăn lưu trữ, giúp dễ dàng kiểm tra dữ liệu, hàng hóa lấy thuộc ngăn lưu trữ.
Bảng 4.13 biểu đạt số lượng hàng còn trong mỗi ngăn lưu trữ, bao gồm: lượng
hàng còn, hàng đã lên đơn, và số lượng hàng đã đươc chọn.
57
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
58
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/chuc_nang_nhapkho.png
Hình 5.1 là hình ảnh giao diện web của chức năng quản lý xuất kho: danh sách
các đơn xuất kho, các hành động cho người dùng thực hiện chức năng, và bọ lọc
trạng thái.
59
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/chuc_nang_xuat_kho.png
Hình 4.14 minh họa về chức năng xem danh sách hàng tồn kho, có danh sách
hàng tồn kho, và các thông số về hàng hóa như: Hàng còn, hàng hiện có, hàng đang
được đặt, ... được hiển thị rõ ràng, chi tiết.
Hinhve/chuc_nang_hang_ton_kho.png
Hình 4.14: Giao diện về chức năng quản lý hàng tồn kho
Hình 4.15 minh họa về danh sách hàng hóa, có các hành động thêm mới, làm
mới, sửa, xem, xóa một hàng hóa, đặc biệt xem hàng có có QR để quét và hiển thị
ra barcode của hàng hóa.
60
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hinhve/chuc_nang_danh_sach_hanghoa.png
Hình 4.15: Giao diện về chức năng quản lý danh sách hàng hóa
Hình 4.16 minh hoạ chức năng xuất dữ liệu: dữ liệu nhập kho, xuất kho, dữ liệu
hàng hóa đề được xuất ở màn hình web này.
Hinhve/chuc_nang_export_dulieu.png
61
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bảng 4.16 trình bày kết quả kiểm thử tương thích của phần mềm trên các nền
tảng phần mềm, phần cứng khác nhau. Tất cả trường hợp đều tương thích.
4.4.2 Kiểm thử tải của hệ thống
Kiểm thử tải (load testing) dùng để kiểm tra phản ứng của ứng dụng trong các
điều kiện tải khác nhau. Trong phần kiểm thử tải, em sử dụng công cụ locust (Một
phần mềm mã nguồn mở viết bằng python) để kiểm tra khả năng đáp ứng của máy
chủ với những lượng truy cập khác nhau.
62
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Lấy danh sách đơn Số lượng corou- Thời gian trả lời Đạt
nhập kho tines: 1000 trung bình: <2.5s
Thời gian phản hồi
chậm nhất: <5s Số
yêu câu xử lý trong
1 phút: > 2000 re-
quest Số request
không xử lý được:
<2%
Tạo mới đơn xuất Số lượng corou- Thời gian trả lời Đạt
kho tines: 1000 trung bình: <2.5s
Thời gian phản hồi
chậm nhất: <5s Số
yêu câu xử lý trong
1 phút: > 2000 re-
quest Số request
không xử lý được:
<2%
Lấy danh sách đơn Số lượng corou- Thời gian trả lời Đạt
xuất kho tines: 1000 trung bình: <2.5s
Thời gian phản hồi
chậm nhất: <5s Số
yêu câu xử lý trong
1 phút: > 2000 re-
quest Số request
không xử lý được:
<2%
Chỉnh sửa thông Số lượng corou- Thời gian trả lời Đạt
tin đơn nhập kho tines: 1000 trung bình: <2.5s
Thời gian phản hồi
chậm nhất: <5s Số
yêu câu xử lý trong
1 phút: > 2000 re-
quest Số request
không xử lý được:
<2%
63
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Chỉnh sửa thông Số lượng corou- Thời gian trả lời Đạt
tin đơn xuất kho tines: 1000 trung bình: <2.5s
Thời gian phản hồi
chậm nhất: <5s Số
yêu câu xử lý trong
1 phút: > 2000 re-
quest Số request
không xử lý được:
<2%
Bảng 4.18: Bảng kiểm thử hộp đen cho chức năng tạo mới nhập kho
Giá trị đầu vào Kết quả mong muốn Kết quả kiểm
thử
Bỏ trống tên nhà cung cấp Hiển thị cảnh báo: "Bạn Đạt
cần nhập thông tin nhà
cung cấp"
Bỏ trống tên hàng hóa Hiển thị cảnh báo: "Bạn Đạt
cần nhập thông tin hàng
hóa"
Bỏ trống số lượng hàng hóa Hiển thị cảnh báo: "Bạn Đạt
cần nhập số lượng hàng
hóa"
Lưu đơn nhập kho Hiển thị thông báo thành Đạt
công
Bảng 4.19: Bảng kiểm thử hộp đen cho chức năng tạo mới xuất kho
Giá trị đầu vào Kết quả mong muốn Kết quả kiểm
thử
64
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bỏ trống tên nhà cung cấp Hiển thị cảnh báo: "Bạn Đạt
cần nhập thông tin nhà
khách hàng"
Bỏ trống tên hàng hóa Hiển thị cảnh báo: "Bạn Đạt
cần nhập thông tin hàng
hóa"
Bỏ trống số lượng hàng hóa Hiển thị cảnh báo: "Bạn Đạt
cần nhập số lượng hàng
hóa"
Lưu đơn xuất kho Hiển thị thông báo thành Đạt
công
Bảng 4.20: Bảng kiểm thử hộp đen cho chức năng tạo mới hàng hóa
Giá trị đầu vào Kết quả mong muốn Kết quả kiểm
thử
Bỏ trống mã hàng hóa Hiển thị cảnh báo: "Bạn Đạt
cần nhập mã hàng hóa"
Bỏ trống mô tả hàng hóa Hiển thị cảnh báo: "Bạn Đạt
cần nhập thông tin hàng
hóa"
Bỏ trống trọng lượng hàng Hiển thị cảnh báo: "Bạn Đạt
hóa cần nhập trọng lượng hàng
hóa"
Bỏ trống chiều rộng hàng Hiển thị cảnh báo: "Bạn Đạt
hóa cần nhập chiều rộng hàng
hóa"
Bỏ trống chiều dài hàng Hiển thị cảnh báo: "Bạn Đạt
hóa cần nhập chiều dài hàng
hóa"
Bỏ trống chiều cao hàng Hiển thị cảnh báo: "Bạn Đạt
hóa cần nhập chiều cao hàng
hóa"
Bỏ trống đơn vị hàng hóa Hiển thị cảnh báo: "Bạn Đạt
cần nhập đơn vị hàng hóa"
Bỏ trống loại hàng hóa Hiển thị cảnh báo: "Bạn Đạt
cần nhập loại hàng hóa"
65
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Bỏ trống màu hàng hóa Hiển thị cảnh báo: "Bạn Đạt
cần nhập màu hàng hóa"
Bỏ trống nguồn gốc hàng Hiển thị cảnh báo: "Bạn Đạt
hóa cần nhập nguồn gốc hàng
hóa"
Bỏ trống giá vốn Hiển thị cảnh báo: "Bạn Đạt
cần nhập giá vốn hàng hóa"
Bỏ trống giá bán Hiển thị cảnh báo: "Bạn Đạt
cần nhập giá bán hàng hóa"
Lưu hàng hóa thông báo thành công Đạt
66
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
nổi bật nhất sau khi phát triển thành công sản phẩm.
67
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
Tổng quan: trong chương này, em xin phép được trình bày những đóng góp của
mình trong việc: thiết kế và xây dựng các chức năng để hỗ trợ quản lý kho một cách
hiệu quả, quy trình nhập xuất kho hàng, đồng thời xây dựng ứng dụng thể hiện giao
diện các chức năng tương tác giữa người quản lý và dữ liệu.
5.1 Bài toán quản lý nhập kho và các trạng thái hàng hóa khi nhập kho
5.1.1 Bài toán
Quản lý kho hàng là vấn đề nan giải trong chuỗi công việc kinh doanh hằng
ngày. Với cách truyền thông ghi chép nhập xuất thủ công mỗi lần có lô hàng mới
hay mỗi lần bán được hàng, việc ghi chép vậy vốn rất quan trọng vì nó liên quan
đến quản lý doanh thu và kiểm soát tồn kho. Tuy vậy, cách này rất hay xảy ra rủi ro
vì ghi chép thủ công nên không tránh khỏi việc mất mát, thất thoát dữ liệu. Từ đó
đặt ra bài toán xử lý bằng tay, thủ công mất rất nhiều thời gian, và đôi khi có sự sai
sót
Do đó, trong ứng dụng của em sẽ cung cấp cho người dùng các tính năng nhằm
hỗ trợ cho người dùng giảm thiểu công sức làm việc, giảm lượng thông tin xử lý,
và độ chính xác cao hơn, qua đó tăng hiệu quả công việc của nhân viên quản lý.
5.1.2 Giải pháp
Để giải quyết vấn đề đã nêu ở trên em xây dựng các chức năng về việc hỗ trợ
cho người dùng có thể quản lý nhập kho ngay trên các nền tảng web. Qua đó người
dùng không cần phải lo lắng việc mình có nhập đúng dữ liệu hay không, hơn nữa
hệ thống hỗ trợ xác định đơn nhập kho của người dùng tạo đang ở trạng thái nào
để người dùng dễ dàng xử lý.
Dữ liệu được thu nhập bằng cách người dùng sẽ nhập form, hoặc các hệ thống
khác sẽ gọi bằng API thông qua backend
Sử dụng dữ liệu đầu vào thu nhập được từ các nguồn trên, đưa ra cho người dùng
trạng thái đơn hàng nhập kho, từ đó quản lý sẽ chuyển trạng thái của đơn, và trạng
thái của hàng hóa trong lô hàng.
a, Luồng xử lý
Các bước thực hiện
• Bước 1: Nhân viên tạo mới đơn nhập kho sau nhập đầy đủ lô hàng bao gồm
hàng hóa, số lượng và nhà cung cấp. Chuyển bước 2
• Bước 2: Hệ thống ghi nhận lại lô hàng mới kèm theo tạo một bản ghi trong cơ
68
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
sở dữ liệu với trạng thái "trước giao hàng". Chuyển sang bước 3
• Bước 3: Nhân viên chuyển trạng thái từ "Trước giao hàng" sang trạng thái
"Giao hàng".
• Bước 4: Hệ thống ghi nhận và chuyển trạng thái từ của đơn nhập kho.
• Bước 5: Nhân viên sau khi nhận hàng chuyển trạng thái "Giao hàng" sang
trạng thái "Kiểm định" và xác nhận đã nhận lô hàng.
• Bước 6: Hệ thống xác định đã nhận được lô hàng, chuyển trạng thái đơn nhập
kho sang trạng thái "Kiểm định".
• Bước 7: Sau khi đã kiểm định, nhân viên chuyển trạng thái "Kiểm định" sang
"Đã kiểm định" điền số lượng hàng thực tế đến.
• Bước 8: Hệ thống xác nhận đã kiểm định, chuyển trạng thái đơn sang "Đã
kiểm định" so sánh số lượng thực tế và số lượng trên đơn và cập nhật thêm: số
lượng hàng hóa thiếu hụt, và số lượng hàng hóa dư thừa của lô hàng.
• Bước 9: Nhân viên sau khi đã kiểm định sẽ đưa hàng vào kho theo từng ngăn.
• Bước 10: Hệ thống chuyển trạng thái sang "Đã nhận" hoàn thành quy trình
nhập kho.
Để thực hiện các bước trên em đã xây dựng các chức năng như: chuyển trạng
thái đơn hàng, tự động kiểm lượng hàng thừa hay thiếu, tự động chuyển hàng vào
trong kho đồng thời mỗi bước đều sẽ có thông báo thành công hay thất bại cho
người dùng không bị nhầm lẫn khi thực hiện.
Với các bước này nhân viên quản lý giảm bớt được khối lượng công việc, khối
lượng dữ liệu cần phải nhớ, từ đó tăng hiệu quả công viêc, tăng năng suất cho người
quản lý.
b, Đầu ra
Ghi lại trạng thái của từng đơn nhập kho.
5.1.3 Kết quả
Xây dựng thành công các chức năng hỗ trợ người quản lý kho hàng với nghiệp
vụ quản lý nhập kho. Giúp giảm thiểu công sức cho việc quản lý, ghi chép và thống
kê hàng hóa, giúp việc ghi chép chính xác hơn, và kiểm tra trạng thái của đơn nhập
kho nhanh chóng hơn. Hình 5.1 là một minh họa về chức năng như trình bày ở trên.
69
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
Hinhve/vidu_nhapkho.png
Hình 5.1: Giao diện các chức năng của nhập kho
5.2 Bài toán quản lý xuất kho và các trạng thái hàng hóa khi xuất kho
Xuất kho cũng là một phần trong quản lý kho. Sau khi có một yêu cầu xuất kho
nhân viên cũng cần ghi lại thông tin xuất bao nhiêu hàng hóa, khách hàng là ai. Từ
đó đặt ra bài toán tiếp theo xử lý bằng tay, thủ công mất rất nhiều thời gian, và đôi
khi có sự sai sót, cần chuyển đổi sang hệ thống lưu trữ xử lý.
Do đó, trong ứng dụng của em sẽ cung cấp cho người dùng các tính năng nhằm
hỗ trợ cho người dùng trong quản lý xuất kho giảm thiểu công sức làm việc, giảm
lượng thông tin xử lý, và độ chính xác cao hơn, qua đó tăng hiệu quả công việc của
nhân viên quản lý.
5.2.1 Giải pháp
Để giải quyết vấn đề đã nêu ở trên em xây dựng các chức năng về việc hỗ trợ
cho người dùng có thể quản lý nhập kho ngay trên các nền tảng web. Qua đó người
dùng không cần phải lo lắng việc mình có nhập đúng dữ liệu hay không, hơn nữa
hệ thống hỗ trợ xác định đơn nhập kho của người dùng tạo đang ở trạng thái nào
để người dùng dễ dàng xử lý.
Dữ liệu được thu nhập bằng cách người dùng sẽ nhập form, hoặc các hệ thống
khác sẽ gọi bằng API thông qua backend
Sử dụng dữ liệu đầu vào thu nhập được từ các nguồn trên, đưa ra cho người dùng
trạng thái đơn hàng xuất kho, từ đó quản lý sẽ chuyển trạng thái của đơn, và trạng
thái của hàng tồn kho.
a, Luồng xử lý
Các bước thực hiện:
• Bước 1: Nhân viên tạo mới đơn xuất kho sau nhập đầy đủ lô hàng bao gồm
70
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
hàng hóa, số lượng và khách hàng (Hoặc hệ thống bán hàng gọi sang backend
của WMS). Chuyển bước 2
• Hệ thống ghi nhận lại lô hàng mới kèm theo tạo một bản ghi trong cơ sở dữ
liệu với trạng thái "đơn đặt hàng". Chuyển sang bước 3
• Bước 3: Nhân viên xác nhận đơn hàng chuyển trạng thái từ "đơn đặt hàng"
sang trạng thái "Đơn hàng mới".
• Bước 4: Hệ thống ghi nhận và chuyển trạng thái từ của đơn xuất kho.
• Bước 5: Nhân viên sau khi xác nhận đơn hàng mới chuyển trạng thái "Đơn
hàng mới" sang trạng thái "Lấy hàng" và xác nhận đã bắt đầu đóng gói hàng
trong kho.
• Bước 6: Hệ thống xác định đã nhận đơn hàng mới, chuyển trạng thái đơn xuất
kho sang trạng thái "Lấy hàng".
• Bước 7: Sau khi đã hoàn thành trạng thái lấy hàng, nhân viên chuyển trạng
thái sang "Đặt hàng"
• Bước 8: Hệ thống xác nhận đơn hàng chuyển sang "Đặt hàng" tự động trừ số
lượng tương ứng trong kho và chuyển trạng thái đơn hàng.
• Bước 9: Nhân viên sau khi có hàng bắt đầu vận chuyển sẽ chuyển trạng thái
từ "Đặt hàng" sang "Vận chuyển" chọn nhân viên vận chuyển trong hệ thống.
• Bước 10: Hệ thống chuyển trạng thái đơn xuất sang "Vận chuyển" và tạo bản
ghi nhân viên vận chuyển ứng với đơn hàng.
• Bước 11: Sau khi đã nhận được hàng, kiểm kê hàng hóa, nhân viên xác nhận
đã nhận hàng và chuyển trạng thái "Đã nhận"
• Bước 12: Chuyển đơn xuất kho sang trạng thái "Đã nhận" hoàn thành quy
trình xuất kho.
5.2.2 Kết quả
Xây dựng thành công các chức năng hỗ trợ người quản lý kho hàng với nghiệp
vụ quản lý xuất kho. Giúp giảm thiểu công sức cho việc quản lý, ghi chép và thống
kê hàng hóa, giúp việc ghi chép chính xác hơn, và kiểm tra trạng thái của đơn xuất
kho nhanh chóng hơn. Hình 5.2 là một minh họa về chức năng như trình bày ở trên.
71
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
Hinhve/vidu_xuatkho.png
Hình 5.2: Giao diện các chức năng của nhập kho
72
CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Tổng quan: Chương 5 đã trình bày về những đóng góp nổi bật của em trong việc
xây dựng phần mềm. Trong chương cuối này, em xin tóm lược lại về những gì mình
làm được, chưa làm được, đóng góp nổi bật, kinh nghiệm rút ra trong quá trình thực
hiện ĐATN và hướng phát triển cho phần mềm.
6.1 Kết luận
Sau quá trình thực hiện ĐATN, em đã xây dựng thành công phần mềm quản lý
kho với các chứng năng chính như sau: theo dõi, quản lý nhập kho, xuất kho, theo
dõi lượng hàng tồn kho, quản lý hàng hóa, ngoài ra một số chức năng về quản lý
thông tin chung.
Với sản phẩm đồ án của mình, em tin rằng phần mềm sẽ giúp ích cho người quản
lý kho theo dõi hàng hóa. Phần mềm đưa ra quy trình rõ ràng, giúp giảm thiểu tối
đa thời gian và nhân lực cho các nghiệp vụ theo dõi nhập xuất kho và hàng tồn kho
và cũng giúp nắm bắt thông tin một cách nhanh chóng và chính xác.
Trong quá trình thực hiện ĐATN, em đã đúc rút được một số kinh nghiệm quý
báu cho bản thân về xây dựng và phát triển một phần mềm doanh nghiệp, các kỹ
năng tiêu biểu nhất: quản lý thời gian hiệu quả, kỹ năng phân tích yêu cầu và xây
dựng phần mềm, các kỹ năng lập trình với framework, làm báo cáo chuyên nghiệp
bằng latex, kỹ năng trình bày.
6.2 Hướng phát triển
Những chức năng được thực hiện trong phạm vi ĐATN với yêu cầu của nghiệp
vụ quản lý kho cần bổ sung thêm nhiều tính năng nữa: tính năng thời gian thực khi
có xe đến và xe đi, quét mã vạch thực tế, mô hình hóa cho các kho và ngăn lưu trữ,
tự động thông báo sản phẩm sắp hết hàng cần nhập mới, hàng hóa sắp hết hạn sử
dụng, ...
Để tiếp tục hoàn thiện sản phẩm hơn nữa, em cần phải phân tích và tìm hiểu
thêm các phần mềm đặc thù đã có hiện nay dùng cho quản lý kho thông minh, tiếp
xúc trực tiếp với các môi trường hiện đang sử dụng, và vận hành thực tế để khảo
sát chi tiết hơn, các yêu cầu đặc trưng của từng môi trường. Từ đó thấu cảm hiểu
người dùng hơn, đưa ra vấn đề thực tế cần giải quyết và phát triển các tính năng
giải quyết vấn đề thực tế đã đưa ra.
Với các chức năng đã xây dựng, nếu phát triển đúng hướng, sản phẩm có thể sử
dụng cho các doanh nghiệp vừa và nhỏ sử dụng với số lượng nguồn hàng không
lớn, và kho chưa nhiều ngăn lưu trữ, giúp giảm thiểu công sức trong việc theo dõi
73
CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
74
TÀI LIỆU THAM KHẢO
[1] Tổng cục thống kê, Thông cáo báo chí kết quả sơ bộ tổng điều tra kinh tế năm
2021. [Online]. Available: https://www.gso.gov.vn/du-lieu-va-
so-lieu-thong-ke/2022/01/thong-cao-bao-chi-ket-qua-
so-bo-tong-dieu-tra-kinh-te-nam-2021/.
[2] Lisa Schwarz, Inventory cycle counting 101: Best practices benefits. [Online].
Available: https : / / www. netsuite . com / portal / resource /
articles / inventory - management / using - inventory -
control - software - for- cycle - counting . shtml (visited on
07/10/2022).
[3] A. R. Samuel Dauzon Aidas Bendoraitis, Django: Web Development with
Python. 2017.
[4] Big Nige, Mastering django: Structure. [Online]. Available: https : / /
djangobook. com / django - tutorials / mastering - django -
structure/ (visited on 07/14/2022).
[5] Evan You, Introduction vue. [Online]. Available: https://vi.vuejs.
org/v2/guide/ (visited on 07/14/2022).
[6] Hai G., Mysql là gì: Giải thích tường tận mysql cho người mới bắt đầu.
[Online]. Available: https : / / www. hostinger. vn / huong - dan /
mysql-la-gi/ (visited on 08/01/2022).
[7] hgraca, Layered architecture. [Online]. Available: https : / /
herbertograca.com/2017/08/03/layered- architecture/
(visited on 07/15/2022).
75
PHỤ LỤC
76