You are on page 1of 87

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

ĐỒ ÁN TỐT NGHIỆP
Xây dựng hệ thống quản lý kho GreaterWMS

NGUYỄN ĐỨC ANH


anh.nd172956@sis.hust.edu.vn

Ngành Công nghệ thông tin và truyền thông


Chuyên ngành Khoa học máy tính

Giảng viên hướng dẫn: ThS. Lê Tấn Hùng

Chữ kí GVHD

Khoa: Khoa học máy tính

Trường: Công nghệ thông tin và Truyền thông

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

CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI ......................................................... 1

1.1 Đặt vấn đề............................................................................................ 1

1.2 Mục tiêu và phạm vi đề tài..................................................................... 1

1.3 Định hướng giải pháp............................................................................ 2

1.4 Bố cục đồ án ........................................................................................ 3

CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU............................. 5

2.1 Khảo sát hiện trạng ............................................................................... 5

2.2 Tổng quan chức năng ............................................................................ 7

2.2.1 Biểu đồ use case phân rã quản lý nhập kho (ASN) ........................ 8

2.2.2 Biểu đồ use case phân rã quản lý xuất kho.................................... 9

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.2.7 Quy trình nghiệp vụ ................................................................... 12

2.2.8 Quy trình nghiệp vụ quản lý nhập kho.......................................... 13

2.2.9 Quy trình nghiệp vụ quản lý xuất kho .......................................... 14

2.3 Đặc tả chức năng .................................................................................. 15

2.3.1 Đặc tả use case CRUD đơn nhập kho ........................................... 15

2.3.2 Đặc tả use case B ....................................................................... 16

2.3.3 Đặc tả use case quản lý hàng hóa ................................................. 18

2.3.4 Đặc tả use case quản lý ngăn lưu hàng.......................................... 22

2.3.5 Đặc tả use case quản lý nhân viên ............................................... 24

2.3.6 Đặc tả use case quản lý nhà cung cấp .......................................... 26


2.3.7 Đặc tả use case quản lý khách hàng.............................................. 28

2.4 Yêu cầu phi chức năng .......................................................................... 31

2.4.1 Yêu cầu đáp ứng với Server ......................................................... 31

2.4.2 Yêu cầu đáp ứng với Cơ sở dữ liệu ............................................... 32

2.4.3 Đáp ứng yêu cầu về bảo mật........................................................ 32

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

CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG.................................................... 34

3.1 Django................................................................................................. 34

3.1.1 Tổng quan ................................................................................. 34

3.1.2 Tính chất ................................................................................... 34

3.1.3 Kiến trúc ................................................................................... 35

3.1.4 Ưu điểm .................................................................................... 36

3.1.5 Nhược điểm............................................................................... 37

3.1.6 Kết luận .................................................................................... 37

3.2 Framework VueJs ................................................................................. 37

3.2.1 Tổng quan về Vuejs .................................................................... 37

3.2.2 Ưu điểm .................................................................................... 37

3.2.3 Nhược điểm............................................................................... 37

3.2.4 Kết luận .................................................................................... 38

3.3 Hệ quản trị cơ sở dữ liệu Mysql.............................................................. 38

3.3.1 Tổng quan ................................................................................. 38

3.3.2 Ưu điểm .................................................................................... 38

3.3.3 Nhược điểm............................................................................... 39

3.3.4 Kết luận .................................................................................... 39

ii
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ ....................................... 40

4.1 Thiết kế kiến trúc.................................................................................. 40

4.1.1 Lựa chọn kiến trúc phần mềm ..................................................... 40

4.1.2 Thiết kế tổng quan...................................................................... 41

4.1.3 Thiết kế chi tiết gói .................................................................... 42

4.2 Thiết kế chi tiết..................................................................................... 44

4.2.1 Thiết kế giao diện ...................................................................... 44

4.2.2 Thiết kế lớp ............................................................................... 46

4.2.3 Thiết kế cơ sở dữ liệu ................................................................. 49

4.3 Xây dựng ứng dụng............................................................................... 58

4.3.1 Thư viện và công cụ sử dụng....................................................... 58

4.3.2 Kết quả đạt được ........................................................................ 58

4.3.3 Minh họa các chức năng chính .................................................... 59

4.4 Kiểm thử.............................................................................................. 61

4.4.1 Kiểm tra tương thích................................................................... 61

4.4.2 Kiểm thử tải của hệ thống ........................................................... 62

4.4.3 Kiểm thử hộp đen....................................................................... 64

4.4.4 Tổng kết kiểm thử ...................................................................... 66

4.5 Triển khai ............................................................................................ 66

CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT...................... 68

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.1.1 Bài toán .................................................................................... 68

5.1.2 Giải pháp .................................................................................. 68

5.1.3 Kết quả ..................................................................................... 69

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

5.2.1 Giải pháp .................................................................................. 70

iii
5.2.2 Kết quả ..................................................................................... 71

CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................. 73

6.1 Kết luận ............................................................................................... 73

6.2 Hướng phát triển................................................................................... 73

TÀI LIỆU THAM KHẢO......................................................................... 75


DANH MỤC HÌNH VẼ

Hình 2.1 Biểu đồ use case tổng quan . . . . . . . . . . . . . . . . . . . . 8


Hình 2.2 Biểu đồ phân rã use case quản lý nhập kho . . . . . . . . . . . 8
Hình 2.3 Biểu đồ phân rã use case quản lý xuất kho . . . . . . . . . . . 9
Hình 2.4 Biểu đồ phân rã use case quản lý thông tin hàng hóa . . . . . . 10
Hình 2.5 Biểu đồ phân rã use case quản lý thông tin hàng hóa . . . . . . 11
Hình 2.6 Biểu đồ phân rã use case quản lý thông tin nhân viên . . . . . 11
Hình 2.7 Biểu đồ phân rã use case quản lý thông tin ngăn lưu trữ . . . . 12
Hình 2.8 Quy trình nghiệp vụ tạo và xử lý đợt kiểm tra lưới điện . . . . 13
Hình 2.9 Quy trình nghiệp vụ quản lý xuất kho . . . . . . . . . . . . . . 14

Hình 3.1 Django là gì . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34


Hình 3.2 [4] Kiến trúc Django . . . . . . . . . . . . . . . . . . . . . . . 36

Hình 4.1 Mô hình 3 lớp . . . . . . . . . . . . . . . . . . . . . . . . . . . 40


Hình 4.2 Biểu đồ phụ thuộc gói . . . . . . . . . . . . . . . . . . . . . . . 41
Hình 4.3 Thiết kế chi tiết gói cho chức năng quản lý nhập kho . . . . . . 43
Hình 4.4 Thiết kế chi tiết gói cho chức năng xuất kho . . . . . . . . . . 43
Hình 4.5 Sơ đồ phân cấp nhiệm vụ . . . . . . . . . . . . . . . . . . . . . 44
Hình 4.6 Thiết kế thông báo . . . . . . . . . . . . . . . . . . . . . . . . 44
Hình 4.7 Thiết kế cảnh báo . . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 4.8 Thiết kế cảnh báo . . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 4.9 Thiết kế chi tiết cho một lớp quản lý xuất kho . . . . . . . . . 46
Hình 4.10 Biểu đồ thực thể liên kết (ER) . . . . . . . . . . . . . . . . . . 50
Hình 4.11 Thiết kế cơ sở dữ liệu chi tiết . . . . . . . . . . . . . . . . . . . 51
Hình 4.12 Giao diện về chức năng quản lý nhập kho . . . . . . . . . . . . 59
Hình 4.13 Giao diện về chức năng quản lý xuất kho . . . . . . . . . . . . 60
Hình 4.14 Giao diện về chức năng quản lý hàng tồn kho . . . . . . . . . . 60
Hình 4.15 Giao diện về chức năng quản lý danh sách hàng hóa . . . . . . 61
Hình 4.16 Giao diện về chức năng quản lý xuất dữ liệu . . . . . . . . . . 61

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

Bảng 1.1 Vấn đề đặt ra và định hướng giải pháp . . . . . . . . . . . . . . 2

Bảng 2.1 Bảng so sánh các giải pháp . . . . . . . . . . . . . . . . . . . . 6


Bảng 2.2 Đặc tả use case CRUD đơn nhập kho . . . . . . . . . . . . . . 15
Bảng 2.3 Dữ liệu đầu vào cho chức năng quản lý đơn nhập kho . . . . . 16
Bảng 2.4 Đặc tả use case CRUD đơn xuất kho kho . . . . . . . . . . . . 17
Bảng 2.5 Dữ liệu đầu vào cho chức năng quản lý đơn xuất kho . . . . . 18
Bảng 2.6 Đặc tả use case quản lý hàng hóa . . . . . . . . . . . . . . . . 19
Bảng 2.7 Dữ liệu đầu vào cho chức năng quản lý hàng hóa . . . . . . . . 21
Bảng 2.8 Đặc tả use case quản lý ngăn lưu hàng . . . . . . . . . . . . . 22
Bảng 2.9 Dữ liệu đầu vào cho chức năng quản lý ngăn lưu hàng . . . . . 24
Bảng 2.10 Đặc tả use case quản lý ngăn quản lý nhân viên . . . . . . . . 24
Bảng 2.11 Dữ liệu đầu vào cho chức năng quản lý nhân viên . . . . . . . 25
Bảng 2.12 Đặc tả use case quản lý nhà cung cấp . . . . . . . . . . . . . . 26
Bảng 2.13 Dữ liệu đầu vào cho chức năng quản lý nhà cung cấp . . . . . 28
Bảng 2.14 Đặc tả use case quản lý nhà khách hàng . . . . . . . . . . . . 29
Bảng 2.15 Dữ liệu đầu vào cho chức năng quản lý khách hàng . . . . . . 31

Bảng 4.1 Danh sách thuộc tính trong lớp DN . . . . . . . . . . . . . . . 46


Bảng 4.2 Danh sách phương thức trong lớp DN . . . . . . . . . . . . . 47
Bảng 4.3 Danh sách phương thức trong lớp DnListViewSet . . . . . . . 47
Bảng 4.4 Danh sách phương thức trong lớp DnUpdateViewSet . . . . . 48
Bảng 4.5 Chi tiết của dữ liệu danh sách nhập kho . . . . . . . . . . . . . 52
Bảng 4.6 Bảng dữ liệu chi tiết đơn nhập nhập kho . . . . . . . . . . . . 52
Bảng 4.7 Chi tiết của dữ liệu danh sách xuất kho . . . . . . . . . . . . . 53
Bảng 4.8 Bảng dữ liệu chi tiết đơn xuất kho . . . . . . . . . . . . . . . . 53
Bảng 4.9 Bảng dữ liệu hàng hóa . . . . . . . . . . . . . . . . . . . . . . 54
Bảng 4.10 Bảng dữ liệu hàng tồn kho . . . . . . . . . . . . . . . . . . . . 55
Bảng 4.11 Bảng dữ liệu ngăn chứa hàng . . . . . . . . . . . . . . . . . . 56
Bảng 4.12 Bảng dữ liệu lấy hàng . . . . . . . . . . . . . . . . . . . . . . . 57
Bảng 4.13 Bảng dữ hàng hóa trong ngăn . . . . . . . . . . . . . . . . . . 57
Bảng 4.14 Danh sách thư viện và công cụ sử dụng . . . . . . . . . . . . . 58
Bảng 4.15 Thống kê thông tin phần mềm . . . . . . . . . . . . . . . . . . 58
Bảng 4.16 Bảng kiểm thử khả năng tương thích . . . . . . . . . . . . . . 61
Bảng 4.17 Bảng kiểm thử tải . . . . . . . . . . . . . . . . . . . . . . . . . 62
Bảng 4.18 Bảng kiểm thử hộp đen cho chức năng tạo mới nhập kho . . . 64

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

Thuật ngữ Ý nghĩa


API Giao diện lập trình ứng dụng
(Application Programming Interface)
ASN Thông báo trước vận chuyển (Advanced
Shipping Notice)
DN Thông báo giao hàng (Delivery Notice)
HTML Ngôn ngữ đánh dấu siêu văn bản
(HyperText Markup Language)
IaaS Dịch vụ hạ tầng
ORM Ánh xạ CSDL sang đối tượng
(Object–relational mapping)
WMS Hệ thống quản lý kho hàng (Warehouse
management system)

viii
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI

1.1 Đặt vấn đề


Hiện nay, nước ta hiện đang có khoảng 683.000 doanh nghiệp sản xuất kinh
doanh [1]. Nguyên liệu thô, sản phẩm thu được từ nhà cung cấp sẽ được lưu trữ,
đáp ứng nhu cầu sản xuất. Nhà kho là nơi lưu trữ hàng hóa đòi hỏi sự chính xác
của dữ liệu cho mọi giao dịch hàng hóa tồn tại. Cùng với tốc độ phát triển của công
nghệ thông tin, việc xử lý thông tin hiện có ngày càng dễ dàng, đặc biệt là đối với
các kho hàng sản xuất, đặc biệt là trong quản lý kho bãi. Trong quản lý kho bãi, dữ
liệu giao dịch hiện có là cần thiết để đảm bảo tính chính xác và tốc độ xử lý bằng
hệ thống. Hệ thống Quản lý Kho hiện nay là một điều cần thiết vì nó có thể nâng
cao hiệu quả và độ chính xác của kho, từ đó cung cấp giải pháp cho các vấn đề tồn
tại trong kho. Kho có nhiều hoạt động và các nghiệp vụ kho điển hình bao gồm:
tiếp nhận, chuyển hàng, bổ sung nội bộ, chọn đơn hàng, tích lũy và phân loại, đóng
gói và vận chuyển. Với các nghiệp vụ kho như trên, nhân viên nếu không có một
hệ thống thông tin hỗ trợ thì rất khó kiểm soát dữ liệu trong kho, sai sót khi hàng
hóa ra vào kho liên tục. Như vậy yêu cầu đặt ra phải có một hệ thống quản lý quản
lý dữ liệu kho bằng cách ghi lại chính xác các giao dịch kho, hệ thống cũng định
hướng và tối ưu hóa kho dựa trên thông tin thời gian thực.
1.2 Mục tiêu và phạm vi đề tài
Qua tìm hiểu và nghiên cứu các sản phẩm WMS trong nước và nước ngoài thì
hiện tại đang 2 nhóm giải pháp hỗ trợ quản lý kho: (1) quản lý bằng excel, (2) phần
mềm quản lý chỉ có nhập và xuất kho.
Về nhóm giải pháp thứ nhất đã được sử dụng khá nhiều tại Việt Nam, nhưng khi
số lượng hàng hóa lớn lên file excel không thể xử lý dữ liệu lớn hoặc xử lý rất chậm,
nổi bật với giải pháp này có một số mẫu excel như banhangexcel.com, ... và nhiều
mẫu khác trên thị trường. Với giải pháp quản lý bằng excel có rất ít tính năng để sử
dụng, chỉ có thể xem đã nhập bao nhiêu, đã xuất bao nhiêu hàng, không có trạng
thái của đơn hàng đang ở đâu, đã được đưa vào kho chưa. Tổng kết lại để áp dụng
công nghệ vào quản lý kho sẽ gồm việc chính: (i) Tạo đơn nhập kho và theo dõi,
(ii) tạo đơn xuất kho và theo dõi đến khi giao hàng, (iii) quản lý hàng tồn kho,(iv)
và đếm chu kỳ hàng tồn kho. Các sản phẩm quản lý bằng excel còn nhiều hạn chế
chỉ tập trung được 1 vấn đề và chưa đi chi tiết các thành phần nhỏ liên quan
Về nhóm giải pháp thứ 2, có thể kế rất nhiều các doanh nghiệp thực hiện xây
dựng các phần mềm quản lý kho, đặc biệt có thể kể đến như là: kiotviet với phần
mềm quản lý hàng tồn kho, Sapo với phần mềm haravan, ... Các phần mềm này có

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:

Bảng 1.1: Vấn đề đặt ra và định hướng giải pháp

Yêu cầu Vấn đề cần giải Định hướng giải pháp


quyết
Quản lý nhập Tạo đơn nhập Xây dựng chức năng tạo đơn nhập kho,
kho kho tiếp nhận các thông tin từ người dùng
bao gồm đại lý cung cấp, số lượng.
Quản lý thông Xây dựng các chức năng liên quan đến
tin đơn nhập tạo đơn nhập kho, chuyển trạng thái
kho đơn, xác nhận đơn, thêm vào kho
Quản lý xuất Tạo đơn xuất Xây dựng chức năng tạo đơn nhập kho,
kho kho tiếp nhận các thông tin từ người dùng
bao gồm khách hàng, số lượng hàng,
tên mặt hàng.
Quản lý thông Xây dựng các chức năng quản lý đơn
tin về đơn xuất xuất kho,: xác nhận đơn hàng, xác
kho nhận đã đóng đơn, vận chuyển, theo
dõi vận chuyển

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

Bảng 2.1: Bảng so sánh các giải pháp

Sản phẩm Mô tả Điểm mạnh, điểm yếu


Phần mềm quản Kiotviet là một giải pháp Ưu điểm của Kiotviet là
lý kho KiotViet ứng dụng công nghệ thông sản phẩm quản lý toàn diện
tin tổng thể, đáp ứng cho cho doanh nghiệp, cho kinh
các doanh nghiệp vừa doanh. Nhược điểm của
và nhỏ có nhu cầu kinh Kiotviet là hướng đến kênh
doanh, bán hàng có kho bán hàng nên chưa triển
bãi. Kiotviet giúp quản lý khai nhiều tính năng cho
bán hàng, quản lý khách quản lý kho như chuyển
hàng, Phần mềm KiotViet trạng thái nhập xuất đơn,
cho phép người dùng tạo đếm chu kỳ cho kho.
phiếu kiểm kho và tiến
hành kiểm kê hàng hóa
nhanh chóng, đơn giản. Chỉ
với một chiếc smartphone
hay máy tính bảng, nhân
viên chỉ mất vài giây để
quét mã vạch và kiểm tra
số lượng từng sản phẩm.
Phần mềm quản Phần mềm với các tính Ưu điểm: Phần mềm có thể
lý kho SOF năng quản lý danh mục chạy trên mọi hệ điều hành,
hàng hóa- Phần mềm quản thân thiện với word, excel.
lý danh mục hàng hóa, sản Nhược điểm: chỉ chạy trên
phẩm, quản lý nhà cung desktop, giao diện chưa
cấp, mua hàng, quản lý các được đẹp mắt.
kho hàng, quản lý nhập
kho, quản lý xuất kho, quản
lý kiểm kho. Khả năng triển
khai cho công ty có nhiều
chi nhánh, tích hợp với các
Module khác một cách dễ
dàng, nhanh chóng.

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

Hình 2.1: Biểu đồ use case tổng quan

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

Hình 2.2: Biểu đồ phân rã use case quản lý nhập kho

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: Biểu đồ phân rã use case quản lý xuất kho

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

2.2.8 Quy trình nghiệp vụ quản lý nhập kho

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

2.2.9 Quy trình nghiệp vụ quản lý xuất kho

Hinhve/hoat_dong_xuat_kho.png

Hình 2.9: Quy trình nghiệp vụ quản lý xuất kho

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

2.3 Đặc tả chức năng


2.3.1 Đặc tả use case CRUD đơn nhập kho
Dưới đây là đặc tả use case CRUD đơn nhập kho: bao gồm các hành động của
người dùng liên quan đến CRUD dữ liệu.

Bảng 2.2: Đặc tả use case CRUD đơn nhập kho

ã 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

STT Thực hiện Hành động


1 Tác nhân Chọn chức năng nhập kho
2 Hệ thống Lấy danh sách các đơn nhập kho
3 Tác nhân Chỉnh sửa đơn nhập kho
3.1 Hệ thống Hiển thị thông tin đơn nhập kho
3.2 Tác nhân Cập nhập thông tin đơn nhập kho
3.3 Hệ thống Lưu trữ lại thông tin đơn nhập kho
4 Tác nhân Thêm mới đơn nhập kho
4.1 Tác nhân Chọn thêm mới một đơn nhập kho
4.2 Hệ thống Hiển thị giao nhập đơn nhập kho
Luồng sự kiện 4.3 Tác nhân Nhập thông tin nhà cung ứng, số
chính (Thành lượng, hàng hóa
công) 4.4 Tác nhân Chọn thêm mới đơn nhập kho
4.5 Hệ thống Thêm mới đơn nhập kho
4.6 Hệ thống Thông báo thêm mới thành công
5 Tác nhân Xóa đơn nhập hàng
5.1 Hệ thống Hiển thị danh sách đơn nhập kho
5.2 Tác nhân Chọn xóa đơn nhập kho
5.3 Hệ thống Kiểm tra có được xóa đơn nhập kho
không
5.4 Hệ thống Xóa đơn nhập kho được chọn

15
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU

STT Thực hiện Hành động


3.2a Hệ thống Hiển thị thông báo lỗi dữ liệu
4.5a Hệ thống Hiển thị thông báo lỗi không tạo được
Luồng sự kiện
vì chưa nhập đủ hoặc sai
thay thế (Thất
5.4a Hệ thống Hiển thị thông báo không được xóa dữ
bại)
liệu

Hậu điều kiện Không có

Bảng 2.3: Dữ liệu đầu vào cho chức năng quản lý đơn nhập kho

STT Trường dữ liệu Mô tả Bắt Điều kiện Ví dụ


buộc hợp lệ
1. Tên nhà cung Tên của nhà Có Công ty cổ
cấp cung cấp có phần viễn
trong hệ thống thông FPT

2. Mã hàng hóa Tên của mã Có MT0001


thứ nhất hàng hóa đầu
tiên
3. Số lượng mã Số lượng của Có Số tự 100
hàng hóa thứ mã hàng hóa nhiên
nhất thứ nhất
4. Mã hàng hóa Tên của mã Không MT0002
thứ hai hàng hóa thứ
hai
5. Số lượng mã Số lượng của mã Không Số tự 100
hàng hóa thứ hàng hóa thứ hai nhiên
hai
6. Mã hàng hóa Tên của mã Không MT0003
thứ ba hàng hóa thứ ba
7. Số lượng mã Số lượng của mã Không Số tự 100
hàng hóa thứ ba hàng hóa thứ ba nhiên

2.3.2 Đặc tả use case B

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

STT Thực hiện Hành động


1 Tác nhân Chọn chức năng xuất kho
2 Hệ thống Lấy danh sách các đơn xuất kho
3 Tác nhân Chỉnh sửa đơn xuất kho
3.1 Hệ thống Hiển thị thông tin đơn xuất kho
3.2 Tác nhân Cập nhật thông tin đơn xuất kho
3.3 Hệ thống Lưu trữ lại thông tin đơn xuất kho
4 Tác nhân Thêm mới đơn xuất kho
4.1 Tác nhân Chọn thêm mới một đơn xuất kho
4.2 Hệ thống Hiển thị giao diện đơn xuất kho
Luồng sự kiện 4.3 Tác nhân Nhập thông tin khách hàng, số lượng
chính (Thành và hàng hóa
công) 4.4 Tác nhân Chọn thêm mới đơn xuất kho
4.5 Hệ thống Thêm mới đơn xuất kho
4.6 Hệ thống Thông báo thêm mới thành công
5 Tác nhân Xóa đơn xuất hàng
5.1 Hệ thống Hiển thị danh sách đơn xuất kho
5.2 Tác nhân Chọn xóa đơn xuất kho
5.3 Hệ thống Kiểm tra có được xóa đơn xuất kho
không
5.4 Hệ thống Xóa đơn xuất kho được chọn

17
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU

STT Thực hiện Hành động


3.2a Hệ thống Hiển thị thông báo lỗi dữ liệu
4.5a Hệ thống Hiển thị thông báo lỗi không tạo được
Luồng sự kiện
vì chưa nhập đủ hoặc sai
thay thế (Thất
5.4a Hệ thống Hiển thị thông báo không được xóa dữ
bại)
liệu

Hậu điều kiện Không có

Bảng 2.5: Dữ liệu đầu vào cho chức năng quản lý đơn xuất kho

STT Trường dữ liệu Mô tả Bắt Điều kiện Ví dụ


buộc hợp lệ
1. Tên khách hàng Tên của khách Có BCB trad-
hàng có trong hệ ing
thống
2. Mã hàng hóa Tên của mã Có MT0001
thứ nhất hàng hóa đầu
tiên
3. Số lượng mã Số lượng của Có Số tự 100
hàng hóa thứ mã hàng hóa nhiên
nhất thứ nhất
4. Mã hàng hóa Tên của mã Không MT0002
thứ hai hàng hóa thứ
hai
5. Số lượng mã Số lượng của mã Không Số tự 100
hàng hóa thứ hàng hóa thứ hai nhiên
hai
6. Mã hàng hóa Tên của mã Không MT0003
thứ ba hàng hóa thứ ba
7. Số lượng mã Số lượng của mã Không Số tự 100
hàng hóa thứ ba hàng hóa thứ ba nhiên

2.3.3 Đặc tả use case quản lý hàng hóa

18
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU

Bảng 2.6: Đặc tả use case quản lý hàng hóa

ã 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

STT Thực hiện Hành động


1 Tác nhân Chọn chức năng quản lý hàng hóa
1.1 Tác nhân Tìm kiếm thông tin hàng hóa
2 Hệ thống Lấy danh sách hàng hóa trong hệ thống
3 Tác nhân Chỉnh sửa hàng hóa
3.1 Hệ thống Hiển thị thông tin hàng hóa
3.2 Tác nhân Cập nhật thông tin hàng hóa
3.3 Hệ thống Lưu trữ lại thông tin hàng hóa
4 Tác nhân Thêm mới hàng hóa
4.1 Tác nhân Chọn thêm mới một hàng hóa
4.2 Hệ thống Hiển thị giao diện hàng hóa
4.3 Tác nhân Nhập thông tin mã hàng hóa, mô tả
hàng hóa, nhà cung cấp, trọng lượng,
kích thước, đơn vị, nhãn hiệu, màu,
hình dạng, thông số, giá vốn, giá bán
Luồng sự kiện 4.4 Tác nhân Chọn thêm mới hàng hóa
chính (Thành 4.5 Hệ thống Thêm mới hàng hóa
công) 4.6 Hệ thống Thông báo thêm mới thành công
5 Tác nhân Thêm mới hàng loạt hàng hóa
5.1 Hệ thống Tải file excel mẫu cho tác nhân sử
dụng
5.2 Tác nhân Điền đầy đủ thông tin hàng hóa theo
yêu cầu của file excel mẫu
5.3 Tác nhân Upload file excel mẫu lên hệ thống
5.4 Hệ thống Ghi nhận những dòng trong file excel
hợp lệ
6 Tác nhân Xóa hàng hóa
6.1 Hệ thống Hiển thị danh sách hàng hóa
6.2 Tác nhân Chọn xóa hàng hóa
6.3 Hệ thống Kiểm tra có được xóa hàng hóa không
6.4 Hệ thống Xóa hàng hóa được chọn

20
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU

STT Thực hiện Hành động


3.2a Hệ thống Hiển thị thông báo lỗi dữ liệu
4.5a Hệ thống Hiển thị thông báo lỗi không tạo được
vì chưa nhập đủ hoặc sai
Luồng sự kiện
5.4a Hệ thống Hiển thị thông báo lỗi không upload
thay thế (Thất
được
bại)
6.4a Hệ thống Hiển thị thông báo không được xóa dữ
liệu

Hậu điều kiện Không có

Bảng 2.7: Dữ liệu đầu vào cho chức năng quản lý hàng hóa

STT Trường dữ liệu Mô tả Bắt Điều kiện Ví dụ


buộc hợp lệ
1. Mã hàng hóa Mã của hàng Có MT0001
hóa
2. Mô tả hàng hóa Mô tả chi tiết về Có Máy tính
hàng hóa
3. Nhà cung cấp Tên nhà cung Có FPT shop
hàng hóa cấp
4. Trọng lượng Trọng lượng Có 3100
hàng hóa tính theo g
5. Chiều rộng hàng Đơn vị tính mm Có 1000
hóa
6. Chiều dài hàng Đơn vị tính mm Có 1000
hóa
7. Chiều cao hàng Đơn vị tính mm Có 1000
hóa
8. Đơn vị hàng hóa Đơn vị theo Có Chiếc
cấu hình của hệ
thống
9. Loại hàng hóa Loại hàng hóa Có máy tính
được cấu hình
trong hệ thống

21
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU

10. Nhãn hiệu hàng Nhãn hiệu của Có Mac


hóa hàng hóa
11. Hình dạng hàng Hình dạng của Có Chữ nhật
hóa hàng hóa
12. Nguồn gốc hàng Nguồn gốc Có Trung
hóa quốc
13. Giá vốn Giá vốn của mặt Có 3000
hàng
14. Giá bán Giá bán của mặt Có 4000
hàng

2.3.4 Đặc tả use case quản lý ngăn lưu hàng

Bảng 2.8: Đặc tả use case quản lý ngăn lưu hàng

ã 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

STT Thực hiện Hành động


1 Tác nhân Chọn chức năng quản lý ngăn lưu hàng
2 Hệ thống Lấy danh sách ngăn lưu hàng trong hệ
thống
3 Tác nhân Chỉnh sửa ngăn lưu hàng
3.1 Hệ thống Hiển thị thông tin ngăn lưu hàng
3.2 Tác nhân Cập nhật thông tin ngăn lưu hàng
3.3 Hệ thống Lưu trữ lại thông tin ngăn lưu hàng
4 Tác nhân Thêm mới ngăn lưu hàng
4.1 Tác nhân Chọn thêm mới một ngăn lưu hàng
4.2 Hệ thống Hiển thị giao diện ngăn lưu hàng
Luồng sự kiện
4.3 Tác nhân Nhập thông tin mã ngăn lưu hàng, kích
chính (Thành
thước ngăn, thuộc tính ngăn
công)
4.4 Tác nhân Chọn thêm mới ngăn lưu hàng
4.5 Hệ thống Thêm mới ngăn lưu hàng
4.6 Hệ thống Thông báo thêm mới thành công
5 Tác nhân Xóa ngăn lưu hàng
5.1 Hệ thống Hiển thị danh sách ngăn lưu hàng
5.2 Tác nhân Chọn xóa ngăn lưu hàng
5.3 Hệ thống Kiểm tra có được xóa ngăn lưu hàng
không
5.4 Hệ thống Xóa ngăn lưu hàng được chọn

STT Thực hiện Hành động


3.2a Hệ thống Hiển thị thông báo lỗi dữ liệu
4.5a Hệ thống Hiển thị thông báo lỗi không tạo được
Luồng sự kiện
vì chưa nhập đủ hoặc sai
thay thế (Thất
5.4a Hệ thống Hiển thị thông báo không được xóa dữ
bại)
liệu vì đang có hàng hóa

Hậu điều kiện Không có

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

STT Trường dữ liệu Mô tả Bắt Điều kiện Ví dụ


buộc hợp lệ
1. Tên ngăn Tên của ngăn Có Ngăn lưu
lưu trữ hàng hóa trữ số 1
2. Kích thước ngăn Mô tả chi tiết Có Ngăn lưu
về ngăn lưu trữ trữ số 1
hàng hóa
3. Thuộc tính ngăn Thuộc tính Có Bin lưu
của ngăn bao trữ, Giữ
gồm: Lưu trữ, hàng,
Giữ hàng: là Kiểm
hàng chưa được duyệt,
chuyển, kiểm Thiệt hại
duyệt: ngăn lưu
trữ cần kiểm
duyệt và thiệt
hại: là ngăn lưu
trữ hàng bị hỏng

2.3.5 Đặc tả use case quản lý nhân viên

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

STT Thực hiện Hành động


1 Tác nhân Chọn chức năng quản lý nhân viên
1.1 Hệ thống Lấy danh nhân viên trong hệ thống
2 Tác nhân Chỉnh sửa nhân viên
2.1 Hệ thống Hiển thị thông tin nhân viên
2.2 Tác nhân Cập nhật thông tin nhân viên
2.3 Hệ thống Lưu trữ lại thông tin nhân viên
3 Tác nhân Thêm mới nhân viên
3.1 Tác nhân Chọn thêm mới một nhân viên
3.2 Hệ thống Hiển thị giao diện nhân viên
Luồng sự kiện
3.3 Tác nhân Nhập thông tin mã nhân viên, kích
chính (Thành
thước ngăn, thuộc tính ngăn
công)
3.4 Tác nhân Chọn thêm mới nhân viên
3.5 Hệ thống Thêm mới nhân viên
3.6 Hệ thống Thông báo thêm mới thành công
4 Tác nhân Xóa nhân viên
4.1 Hệ thống Hiển thị danh sách nhân viên
4.2 Tác nhân Chọn xóa nhân viên
4.3 Hệ thống Kiểm tra có được xóa nhân viên không
4.4 Hệ thống Xóa nhân viên được chọn

STT Thực hiện Hành động


2.2a Hệ thống Hiển thị thông báo lỗi dữ liệu
3.5a Hệ thống Hiển thị thông báo lỗi không tạo được
Luồng sự kiện
vì chưa nhập đủ hoặc sai
thay thế (Thất
4.4a Hệ thống Hiển thị thông báo không được xóa dữ
bại)
liệu

Hậu điều kiện Không có

Bảng 2.11: Dữ liệu đầu vào cho chức năng quản lý nhân viên

STT Trường dữ liệu Mô tả Bắt Điều kiện Ví dụ


buộc hợp lệ

25
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU

1. username Tài khoản Có


2. Chức danh Chức danh của Có
nhân viên
3. Họ tên Có
4. Ngày sinh Có
5. Số điện thoại Có
6. Khác Có

2.3.6 Đặc tả use case quản lý nhà cung cấp

Bảng 2.12: Đặc tả use case quản lý nhà cung cấp

ã 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

STT Thực hiện Hành động


1 Tác nhân Chọn chức năng quản lý nhà cung cấp
1.1 Tác nhân Tìm kiếm thông tin nhà cung cấp
2 Hệ thống Lấy danh sách nhà cung cấp trong hệ
thống
3 Tác nhân Chỉnh sửa nhà cung cấp
3.1 Hệ thống Hiển thị thông tin nhà cung cấp
3.2 Tác nhân Cập nhật thông tin nhà cung cấp
3.3 Hệ thống Lưu trữ lại thông tin nhà cung cấp
4 Tác nhân Thêm mới nhà cung cấp
4.1 Tác nhân Chọn thêm mới một nhà cung cấp
4.2 Hệ thống Hiển thị giao diện nhà cung cấp
4.3 Tác nhân Nhập thông tin tên nhà cung cấp, địa
chỉ, thành phố, liên hệ và quản lý
4.4 Tác nhân Chọn thêm mới nhà cung cấp
Luồng sự kiện 4.5 Hệ thống Thêm mới nhà cung cấp
chính (Thành 4.6 Hệ thống Thông báo thêm mới thành công
công) 5 Tác nhân Thêm mới hàng loạt nhà cung cấp
5.1 Hệ thống Tải file excel mẫu cho tác nhân sử
dụng
5.2 Tác nhân Điền đầy đủ thông tin nhà cung cấp
theo yêu cầu của file excel mẫu
5.3 Tác nhân Upload file excel mẫu lên hệ thống
5.4 Hệ thống Ghi nhận những dòng trong file excel
hợp lệ
6 Tác nhân Xóa nhà cung cấp
6.1 Hệ thống Hiển thị danh sách nhà cung cấp
6.2 Tác nhân Chọn xóa nhà cung cấp
6.3 Hệ thống Kiểm tra có được xóa nhà cung cấp
không
6.4 Hệ thống Xóa nhà cung cấp được chọn

27
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU

STT Thực hiện Hành động


3.2a Hệ thống Hiển thị thông báo lỗi dữ liệu sai định
dạng
4.5a Hệ thống Hiển thị thông báo lỗi không tạo được
Luồng sự kiện vì chưa nhập đủ hoặc sai dữ liệu
thay thế (Thất 5.4a Hệ thống Hiển thị thông báo lỗi không upload
bại) được vì sai định dạng
6.4a Hệ thống Hiển thị thông báo không được xóa dữ
liệu

Hậu điều kiện Không có

Bảng 2.13: Dữ liệu đầu vào cho chức năng quản lý nhà cung cấp

STT Trường dữ liệu Mô tả Bắt Điều kiện Ví dụ


buộc hợp lệ
1. Tên nhà cung Tài khoản Có CÔNG
cấp TY TNHH
CNTT
VISION
VSP
2. Địa chỉ nhà Chức danh của Có Hà Đông,
cung cấp nhân viên Hà Nội
3. Thành phố của Thành phố của Có Hà nội
nhà cung cấp nhà cung cấp
4. Liên hệ Liên hệ nhà Có 0974485006
cung cấp
5. Quản lý Tên quản lý nhà Có
cung cấp
6. Cấp dộ Mức độ đánh Có 5
giá với nhà cung
cấp

2.3.7 Đặc tả use case quản lý khách hàng

28
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU

Bảng 2.14: Đặc tả use case quản lý nhà khách hàng

ã 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

STT Thực hiện Hành động


1 Tác nhân Chọn chức năng quản lý khách hàng
1.1 Tác nhân Tìm kiếm thông tin khách hàng
2 Hệ thống Lấy danh sách khách hàng trong hệ
thống
3 Tác nhân Chỉnh sửa khách hàng
3.1 Hệ thống Hiển thị thông tin khách hàng
3.2 Tác nhân Cập nhật thông tin khách hàng
3.3 Hệ thống Lưu trữ lại thông tin khách hàng
4 Tác nhân Thêm mới khách hàng
4.1 Tác nhân Chọn thêm mới một khách hàng
4.2 Hệ thống Hiển thị giao diện khách hàng
4.3 Tác nhân Nhập thông tin tên khách hàng, địa chỉ,
thành phố, liên hệ và quản lý
4.4 Tác nhân Chọn thêm mới khách hàng
Luồng sự kiện 4.5 Hệ thống Thêm mới khách hàng
chính (Thành 4.6 Hệ thống Thông báo thêm mới thành công
công) 5 Tác nhân Thêm mới hàng loạt khách hàng
5.1 Hệ thống Tải file excel mẫu cho tác nhân sử
dụng
5.2 Tác nhân Điền đầy đủ thông tin khách hàng theo
yêu cầu của file excel mẫu
5.3 Tác nhân Upload file excel mẫu lên hệ thống
5.4 Hệ thống Ghi nhận những dòng trong file excel
hợp lệ
6 Tác nhân Xóa khách hàng
6.1 Hệ thống Hiển thị danh sách khách hàng
6.2 Tác nhân Chọn xóa khách hàng
6.3 Hệ thống Kiểm tra có được xóa khách hàng
không
6.4 Hệ thống Xóa khách hàng được chọn

30
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU

STT Thực hiện Hành động


3.2a Hệ thống Hiển thị thông báo lỗi dữ liệu sai định
dạng
4.5a Hệ thống Hiển thị thông báo lỗi không tạo được
Luồng sự kiện vì chưa nhập đủ hoặc sai dữ liệu
thay thế (Thất 5.4a Hệ thống Hiển thị thông báo lỗi không upload
bại) được vì sai định dạng
6.4a Hệ thống Hiển thị thông báo không được xóa dữ
liệu

Hậu điều kiện Không có

Bảng 2.15: Dữ liệu đầu vào cho chức năng quản lý khách hàng

STT Trường dữ liệu Mô tả Bắt Điều kiện Ví dụ


buộc hợp lệ
1. Tên khách hàng Tài khoản Có CÔNG
TY TNHH
CNTT
VISION
VSP
2. Địa chỉ khách Chức danh của Có Hà Đông,
hàng nhân viên Hà Nội
3. Thành phố của Thành phố của Có Hà nội
khách hàng khách hàng
4. Liên hệ Liên hệ khách Có 0974485006
hàng
5. Quản lý Tên quản lý Có
khách hàng

2.4 Yêu cầu phi chức năng


2.4.1 Yêu cầu đáp ứng với Server
Hệ thống khi triển khai cần đáp ứng yêu cầu về thời gian phản hồi yêu cầu như
sau: (i) Thời gian phản hồi trung bình mỗi yêu cầu phải nhỏ hơn 3s. (ii) Thời gian
phản hồi tối đa phải nhỏ hơn 6s. (iii) Số lượng yêu cầu có thể xử lý được trong 1
phút phải lớn hơn 1000. (iv) Số lượng yêu cầu không thể xử lý được phải nhỏ hơn

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

Hình 3.1: Django là gì

3.1.2 Tính chất


Một số đặc tính nổi bật mà Django cung cấp cho lập trình viên bao gồm: (i)
Đầu tiên Django có độ hoàn thành cao, Django cung cấp hầu hết mọi thứ mà các

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

Hình 3.2: [4] Kiến trúc Django

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

3.1.5 Nhược điểm


Mặc dù Django là một framework tuyệt vời, nhưng Django cũng có một số điểm
cần lưu ý: (i) Không thể xử lý nhiều yêu cầu cùng một lúc; (ii) Các thành phần
được kết hợp quá chặt chẽ với nhau, làm cho việc tùy chỉnh khó khăn; (iii) Mọi thứ
đều dựa trên Django ORM, tức là dữ liệu phải được truy vấn qua ORM, khó tùy
chỉnh bằng câu truy vấn SQL.
3.1.6 Kết luận
Với nhiều ưu điểm đã trình bày trong phần 3.1.4: việc phát triển nhanh chóng,
giảm công sức để cấu hình. Là một framework dễ sử dụng, dễ học, dễ triển khai,
không phải code nhiều, triển khai ứng dụng một cách nhanh chóng và an toàn. Do
đó, em quyết định lựa chọn Django để phát triển ứng dụng của mình.
3.2 Framework VueJs
3.2.1 Tổng quan về Vuejs
Vue.js là một framework linh động dùng để xây dựng giao diện người dùng [5].
Khác với các framework nguyên khối (monolithic), Vue được thiết kế từ đầu theo
hướng cho phép và khuyến khích việc phát triển ứng dụng theo từng bước. Khi phát
triển lớp giao diện (view layer), người dùng chỉ cần dùng thư viện lõi (core library)
của Vue, vốn rất dễ học và tích hợp với các thư viện hoặc dự án có sẵn. Cùng lúc
đó, nếu kết hợp với những kĩ thuật hiện đại như SFC (single file components) và
các thư viện hỗ trợ, Vue cũng đáp ứng được dễ dàng nhu cầu xây dựng những ứng
dụng một trang (SPA - Single-Page Applications) với độ phức tạp cao hơn nhiều
[5].
3.2.2 Ưu điểm
Về bản chất, Vue.js sử dụng kiến trúc MVC (Model-View-Controller) và có thể
được sử dụng đồng bộ với các kiến trúc khác nhau như CBA (Component-Based
Architecture). Khả năng tương tác với nhiều Framework có sẵn khác nhau đã khiến
Vue trở nên rất phổ biến trong hệ sinh thái phát triển web. Dưới đây là một số ưu
điểm: Thư viện và công cụ hỗ trợ nhiều; Yêu cầu lưu trữ thấp; Đơn giản, dễ học;
Tài liệu đầy đủ; Component và khả năng tái sử dụng; Kiến trúc dựa trên thành phần
(CBA); Dễ đọc, dễ bảo trì; Tính thích ứng, thoải mái trong việc code.
3.2.3 Nhược điểm
Tuy đã khắc phục được nhiều nhược điểm từ đàn anh nhưng Vue.js vẫn gặp một
số hạn chế: Rào cản ngôn ngữ và cộng đồng bị hạn chế (chủ yếu là Trung Quốc);
Buông lỏng việc tích hợp dẫn đến cái gì cũng có thể sử dụng, gây ra lỗi; Thiếu hỗ
trợ tài chính cho các dự án quy mô lớn do vị thế chưa thể bằng Angular hay React;

37
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG

Nguồn tài nguyên giới hạn do còn mới.


3.2.4 Kết luận
Vue.js là một trong những Framework JavaScript có được niềm tin của nhà phát
triển trên toàn thế giới một cách nhanh chóng. Các nhà phát triển đánh giá cao cú
pháp dễ sử dụng, kiểu định dạng rõ ràng và tính tương thích của nó. Do vậy, em
quyết định sử dụng Vue với ngôn ngữ lập trình là Javascripts trong việc xây dựng
phần mềm để thể hiện các chức năng của mình.
3.3 Hệ quản trị cơ sở dữ liệu Mysql
3.3.1 Tổng quan
MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational Database
Management System, viết tắt là RDBMS) hoạt động theo mô hình client-server.
RDBMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữ liệu
(Database) theo hình thức quản lý các mối liên hệ giữa chúng.
MySQL là một trong số các phần mềm RDBMS. RDBMS và MySQL thường
được cho là một vì độ phổ biến quá lớn của MySQL. Các ứng dụng web lớn nhất
như Facebook, Twitter, YouTube, Google, và Yahoo! đều dùng MySQL cho mục
đích lưu trữ dữ liệu. Kể cả khi ban đầu nó chỉ được dùng rất hạn chế nhưng giờ nó
đã tương thích với nhiều hạ tầng máy tính quan trọng như Linux, macOS, Microsoft
Windows, và Ubuntu.[6]
3.3.2 Ưu điểm
Các ưu điểm của Mysql bao gồm: (i) Sử dụng dễ dàng: MySQL là cơ sở dữ liệu
tốc độ cao và ổn định, công cụ này dễ sử dụng và hoạt động trên nhiều hệ điều
hành cung cấp hệ thống lớn các hàm tiện ích; (ii) Tính bảo mật cao: MySQL phù
hợp với các ứng dụng có truy cập cơ sở dữ liệu trên internet vì nó sở hữu nhiều tính
năng bảo mật, thậm chí là bảo mật cấp cao; (iii) Đa tính năng: MySQL có thể hỗ
trợ hàng loạt các chức năng SQL từ hệ quản trị cơ sở dữ liệu quan hệ trực tiếp và
cả gián tiếp; (iv) Khả năng mở rộng và mạnh mẽ: Công cụ MySQL có khả năng
xử lý khối dữ liệu lớn và có thể mở rộng khi cần thiết; (v) Tương thích trên nhiều
hệ điều hành: MySQL tương thích để chạy trên nhiều hệ điều hành, như Novell
NetWare, Windows * Linux *, nhiều loại UNIX * (như Sun * Solaris *, AIX và
DEC * UNIX),... MySQL cũng cung cấp phương tiện mà các máy khách có thể
chạy trên cùng một máy tính với máy chủ hoặc trên một máy tính khác (giao tiếp
qua mạng cục bộ hoặc Internet); (vi) Cho phép khôi phục: MySQL cho phép các
giao dịch được khôi phục, cam kết và phục hồi sự cố.

38
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG

3.3.3 Nhược điểm


Các nhược điểm của Mysql như sau: (i) MySQL bị hạn chế dung lượng, cụ thể,
khi số bản ghi của người dùng lớn dần, sẽ gây khó khăn cho việc truy xuất dữ liệu,
khiến người dùng cần áp dụng nhiều biện pháp để tăng tốc độ chia sẻ dữ liệu như
chia tải database ra nhiều server, hoặc tạo cache MySQL. (ii) So với Microsoft SQL
Server hay Oracle, độ bảo mật của MySQL chưa cao bằng. Và quá trình Restore
cũng có phần chậm hơn. Tuy nhiên, những nhược điểm này không đáng kể với
những hệ quản trị nội dung cỡ trung, bởi chỉ những hệ thống lớn hoặc rất lớn mới
phát sinh các yêu cầu phức tạp hơn.
3.3.4 Kết luận
Với những nhược điểm không quá lớn, đồng thời Mysql có rất nhiều các ưu điểm
vừa kể trên. Do vậy, em quyết định sử dụng Mysql trong việc xây dựng ứng dụng
của mình.
Kết chương: Trong Chương 3 này đã trình bày những công nghệ áp dụng trong
việc phát triển phần mềm đáp ứng những yêu cầu, phân tích đã trình bày trong
Chương 2. Trong chương tiếp theo sẽ trình bày về quá trình phát triển, kiểm thử và
triển khai ứng dụng.

39
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

4.1 Thiết kế kiến trúc


4.1.1 Lựa chọn kiến trúc phần mềm
Đây là ứng dụng web service, em sử dụng mô hình 3 lớp (layer) [7]

Hinhve/2010s-layered-architecture.png

Hình 4.1: Mô hình 3 lớp

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Á

4.1.2 Thiết kế tổng quan

Hinhve/tongquan.png

Hình 4.2: Biểu đồ phụ thuộc gói

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

b, Thiết kế chi tiết gói cho chức năng xuất kho


Thiết kế chi tiết gói cho chức năng xuất 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 xuất
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 Lớp ModelSerializer là lớp thuộc framework
giúp cho việc chuyển đổi dữ liệu sang dạng lưu trữ, phải kế thừa để khai báo các
trường dữ liệu. Các gói đã được đặc tả về nhiệm vụ, hành vi ở mục 4.1.2.

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Á

4.2 Thiết kế chi tiết


4.2.1 Thiết kế giao diện
a, Thiết kế bố cục

Hinhve/bocuc.png

Hình 4.5: Sơ đồ phân cấp nhiệm vụ

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: Thiết kế thông báo

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Á

Thiết kế cảnh báo


Cảnh báo được hiển thị khi người dùng thực hiện sai yêu cầu của phần mềm.

Hinhve/canhbao.png

Hình 4.7: Thiết kế cảnh báo

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

Hình 4.8: Thiết kế cảnh báo

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

Bảng 4.1: Danh sách thuộc tính trong lớp DN

Thuộc tính Kiểu dữ liệu Ý nghĩa


id int Id của một đơn xuất kho
asn_code varchar Mã của đơn nhập kho
asn_status int trạng thái của đơn nhập kho

total_weight bigint tổng trọng lượng của đơn


nhập kho
total_volume bigint tổng dung tích của cả Đơn
total_cost double tổng giá vốn mua của Đơn

46
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

customer_id double (FK) ID của khách hàng


bar_code varchar Mã barcode của đơn xuất
back_order_label boolean Kiểm tra hàng có đang
được lưu trữ không

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.2: Danh sách phương thức trong lớp DN

Tên phương Đầu vào Đầu ra Ý nghĩa


thức
filter_by_id int Object(DN) Lấy đơn hàng
bằng id của đơn
filter_by_status status: int Object(DN) Lấy đơn hàng
bằng trạng thái
của đơn hàng
create Object(DN) id: int Tạo mới một ob-
ject trong csdl,
nếu lỗi sẽ roll-
back
delete int Object(DN) Xóa đơn xuất
kho trong cơ sở
dữ liệu
update Object(DN) id: int Update các
trường thông tin
của đơn xuất
kho trong cơ sở
dữ liệu

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

Bảng 4.3: Danh sách phương thức trong lớp DnListViewSet

Tên phương Đầu vào Đầu ra Ý nghĩa


thức

47
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

get_project Không Id của người Xác định người


dùng dùng là ai, định
danh project của
họ đang sử dụng

get_queryset filter List[Object(DN)] Lấy danh sách


theo filter
truyền vào,
query xuống
tầng model để
thực hiện
create Object(DN) id: int Logic xử lý tạo
mới một đơn
xuất kho
destroy int Object(DN) Logic xóa đơn
xuất kho

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.

Bảng 4.4: Danh sách phương thức trong lớp DnUpdateViewSet

Tên phương thức Đầu vào Đầu ra Ý nghĩa


update_by_status Object(DN) ID của đơn hàng phương thức
này đươc lớp
cha khai báo
là một phương
thức trừu tượng,
lớp con sẽ kế
thừa và ghi
đè lại tùy vào
logic.

48
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

check_can_pick Không boolean Kiểm tra hàng


hóa có thể lấy
được từ trong
kho hay không
check_back_order Không boolean Kiểm tra xem có
phải là đơn lưu
trữ không
update_stock_list int Object(DN) Phương thức
này là phương
thức trừu tượng,
tùy từng class
sẽ thực thi một
logic riêng, khi
cần sử dụng
phải ghi đè lại
create_back_order int Object(DN) Tạo mới đơn lưu
trữ

4.2.3 Thiết kế cơ sở dữ liệu


Trong phần thiết kế cơ sở dữ liệu, em xin giới thiệu hệ thống bao gồm các thực
thể:
• Thực thể dùng cho quản lý các thông tin chung: Supplier, customer, driver,
staff
• Thực thể dùng cho quản lý nhập kho: asn_list, asn_detail
• Thực thể dùng quản lý xuất kho: dn_list, dn_detail, picking_list, dispatch
• Thực thể dùng cho quản lý hàng tồn kho: good, stock_bin, stock_list, cy-
cle_countday
• Thực thể dùng lưu trữ quản lý ngăn chứa hàng: bin_size, warehouse, bin_set

49
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

Hinhve/erd_tongquan.png

Hình 4.10: Biểu đồ thực thể liên kết (ER)

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: Thiết kế cơ sở dữ liệu chi tiết

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

STT Thuộc tính Kiểu dữ liệu Giải thích


1 id int Id của một đơn nhập
kho
2 asn_code varchar Mã của đơn nhập kho

3 asn_status int trạng thái của đơn


nhập kho
4 total_weight double tổng trọng lượng của
đơn nhập kho
5 total_volume double tổng dung tích của cả
Đơn
6 total_cost double tổng giá vốn mua của
Đơn
7 supplier_id int (FK) id của nhà cung
cấp

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

STT Thuộc tính Kiểu dữ liệu Giải thích


1 id int Id của một chi tiết đơn

2 asn_id int (FK) Id của đơn nhập


kho
3 good_id int (FK) id của hàng hóa
4 goods_qty bigint tổng số lượng trên
đơn
5 goods_actual_qty bigint tổng thực nhập
6 goods_shortage_qty bigint Đếm số hàng bị thiếu
7 goods_more_qty bigint Đếm hàng gửi quá số
lượng

52
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

8 goods_damage_qty bigint Đếm hàng bị hỏng

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

STT Thuộc tính Kiểu dữ liệu Giải thích


1 id int Id của một đơn xuất
kho
2 asn_code varchar Mã của đơn nhập kho

3 asn_status int trạng thái của đơn


nhập kho
4 total_weight bigint tổng trọng lượng của
đơn nhập kho
5 total_volume bigint tổng dung tích của cả
Đơn
6 total_cost double tổng giá vốn mua của
Đơn
7 customer_id double (FK) ID của khách
hàng
8 bar_code varchar Mã barcode của đơn
xuất
9 back_order_label boolean Kiểm tra hàng có
đang được lưu trữ
không

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.

Bảng 4.8: Bảng dữ liệu chi tiết đơn xuất kho

STT Thuộc tính Kiểu dữ liệu Giải thích


1 id int Id của một chi tiết đơn
xuất
2 dn_id int (FK) Id của đơn xuất
kho
3 good_id int (FK) id của hàng hóa

53
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

4 pick_qty bigint Số lượng hàng cần lấy

5 picked_qty bigint số lượng hàng hóa đã


lấy
6 intransit_qty bigint Đếm hàng đã được
chuyển
7 delivery_shortage_qty bigint Số lượng hàng bị
thiếu
8 delivery_more_qty bigint Đếm hàng gửi đi bị
quá
8 delivery_damage_qty bigint Đếm hàng gửi đi bị
hỏng

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, ...

Bảng 4.9: Bảng dữ liệu hàng hóa

STT Thuộc tính Kiểu dữ liệu Giải thích


1 id int Id của hàng hóa
2 good_code varchar Mã hàng hóa
3 good_desc varchar Mô tả hàng hóa
4 good_weight double Cân nặng hàng hóa
5 good_w double Chiều rộng hàng hóa
6 good_d double Chiều dài hàng hóa
7 good_h double Chiều cao hàng hóa
8 unit_volume double Dung tích (thể tích)
hàng hóa
9 good_unit varchar Đơn vị đếm của hàng
hóa ví dụ: cái, chiếc
10 good_class varchar Loại hàng hóa
11 good_brand varchar Thương hiệu hàng
hóa
12 good_shape varchar hình dạng của hàng
13 good_specs varchar Đặc điểm hàng hóa

54
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

14 good_origin varchar Xuất xứ của hàng hóa

15 safety_stock bigint Dự trữ an toàn của


hàng hóa
16 goods_cost double Giá gốc của sản phẩm

17 goods_price double Giá bán của hàng hóa

18 bar_code varchar Mã hàng hóa

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, ...

Bảng 4.10: Bảng dữ liệu hàng tồn kho

STT Thuộc tính Kiểu dữ liệu Giải thích


1 id int Id của hàng tồn kho
2 good_id int (FK) Khóa ngoại đến
bảng hàng hóa
3 good_qty bigint Số lượng tổng hàng
hóa từ những hàng
chuẩn bị nhập kho
4 onhand_stock bigint Số lượng hàng có sẵn
5 can_order_stock bigint Số lượng hàng có thể
đặt
6 ordered_stock bigint Số lượng hàng hóa đã
đặt
7 inspect_stock bigint Số lượng hàng hóa
thuộc ngăn đang kiểm
tra
8 hold_stock bigint Hàng hóa thuộc ngăn
đang lưu giữ
9 damage_stock bigint Hàng hóa bị hỏng
(thuộc ngăn thiệt hại)
10 asn_stock bigint Hàng hóa đang ở
trạng thái nhập kho

55
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

11 dn_stock bigint Hàng đang ở trạng


thái xuất
12 pre_load_stock bigint Hàng chuẩn bị về,
thuộc nhập kho, trạng
thái nhập trước giao
hàng
13 pre_sort_stock bigint Hàng chuẩn bị về,
thuộc nhập kho, trạng
thái nhập kiểm định
14 sorted_stock bigint Hàng chuẩn bị về,
thuộc nhập kho, trạng
thái nhập đã kiểm
định
15 pick_stock bigint Hàng chuẩn bị đi,
xuất kho có trạng thái
đơn mới
16 picked_stock bigint Hàng chuẩn bị đi,
xuất kho có trạng thái
lấy hàng
17 back_order_stock bigint Số lượng hàng lưu trữ

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.

Bảng 4.11: Bảng dữ liệu ngăn chứa hàng

STT Thuộc tính Kiểu dữ liệu Giải thích


1 id int Id của một ngăn chứa
hàng
2 bin_code int Mã của ngăn
3 bin_size_id bigint (FK) kích thước ngăn
định nghĩa trước
4 warehouse_id int Mã của kho hàng

56
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

5 bin_property int (FK) thuộc tính của


ngăn: Có 4 thuộc tính:
Lưu trữ, kiểm duyệt,
Lưu trữ, Thiệt hại
6 bar_code varchar Mã barcode của ngăn

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.12: Bảng dữ liệu lấy hàng

STT Thuộc tính Kiểu dữ liệu Giải thích


1 id int Id của bảng lấy hàng
từ ngăn
2 dn_detail_id int (FK) Mã của một chi
tiết xuất kho (1 hàng
hóa)
3 bin_id int (FK) Id của ngăn lấy
hàng
4 pick_qty bigint Số lượng sẽ lấy hàng
5 picked_qty bigint Số lượng hàng đã lấy

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.

Bảng 4.13: Bảng dữ hàng hóa trong ngăn

STT Thuộc tính Kiểu dữ liệu Giải thích


1 id int Id của bảng lấy hàng
từ ngăn
2 good_id int (FK) id của hàng hóa
3 bin_id bigint (FK) Id của ngăn lấy
hàng
4 good_qty bigint Số lượng hàng hóa có
trong ngăn
5 pick_qty bigint Số lượng hàng lên
đơn
6 picked_qty bigint Số lượng đã chọn

57
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

4.3 Xây dựng ứng dụng


4.3.1 Thư viện và công cụ sử dụng
Bang 4.14 trình bày về danh sách thư viện và công cụ sử dụng trong việc phát
triển phần mềm

Bảng 4.14: Danh sách thư viện và công cụ sử dụng

Mục đích Công cụ Địa chỉ URL


IDE lập trình Pycharm education https://www.jetbrains.com
IDE lập trình Visual Studio https://code.visualstudio.com/
Code
Cơ sở dữ liệu MySQL https://hub.docker.com// mysql
Xem dữ liệu Datagrip https://www.jetbrains.com
Đóng gói và triển Docker https://www.docker.com/
khai
Vẽ biểu đồ UML Astah UML 8.2 http://astah.net
Vẽ biểu đồ thiết kế Visual paradigm https://online.visual-
paradigm.com/
Vẽ biểu đồ thực thể dbdiagram https://dbdiagram.io/
liên kết

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


Kết quả đạt được sau khi thực hiện xong chương trình:
Xây dựng thành công phần mềm quản lý kho GreaterWMS, hỗ trợ công việc
nhân viên quản lý kho, đưa ra các API hệ thống khác có thể sử dụng. Sản phẩm
bao gồm: (i) Phần mềm đóng gói dạng docker file, (i) Migration cơ sở dữ liệu, (iii)
Tài liệu hướng dẫn sử dụng và triển khai.
Thống kê chi tiết hơn về phần mềm được trình bày trong bảng 4.15

Bảng 4.15: Thống kê thông tin phần mềm

Thông tin Thống kê


Số lớp Backend 162 Lớp
Số gói Backend 20 gói
Số lớp Frontend 122 lớp
Số gói Frontend 15 gói

58
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

Dung lượng hệ thống tổng thể 18 Mb chưa bao gồm thư


viện
Dung lượng phần mềm đóng gói Backend 2Mb chưa bao gồm thư
viện
Dung lượng phần mềm đóng gói Frontend 16 Mb chưa bao gồm thư
viện
Các bảng trong CSDL 17 bảng chưa bao gồm
bảng từ framework tự động
sinh.

4.3.3 Minh họa các chức năng chính


Hình 5.1 là hình ảnh cho giao diện web của chức năng quản lý nhập kho, bao
gồm danh sách đơn nhập kho, các nút hành động: xem, xác nhận hàng, xác nhận
đã kiểm tra, đã vào kho. Ngoài ra có các bộ lọ phía bên trên giúp việc lọc các trạng
thái của đơn dễ dàng và thuận tiện.

Hinhve/chuc_nang_nhapkho.png

Hình 4.12: Giao diện về chức năng quản lý nhập kho

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.13: Giao diện về chức năng quản lý xuất kho

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

Hình 4.16: Giao diện về chức năng quản lý xuất dữ liệu

4.4 Kiểm thử


4.4.1 Kiểm tra tương thích
Kiểm thử tương thích với các trình duyệt khác nhau nhằm đảm bảo phần mềm
hoạt động được trên cách loại thiết bị khác nhau. Có 3 yếu tố để kiểm thử: hệ điều
hành, phần mềm và các phần cứng khác nhau: cấu hình, độ phân giải màn hình.

Bảng 4.16: Bảng kiểm thử khả năng tương thích

Thiết bị Trình duyệt Phần cứng Kết quả

61
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

MSI prestige 15 Trình duyệt RAM: 16GB; Đạt


Chrome version CPU: i7 thế hệ 11
103.0.5060.134,
Ubuntu 20.02
Asus vivobook Trình duyệt RAM: 8GB; CPU: Đạt
Chrome version i5 1240P
103.0.5060.134,
Windown 11

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.

Bảng 4.17: Bảng kiểm thử tải

Chức năng Đầu vào Đầu ra mong Kết quả


muốn
Tạo mới đơn nhập 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%

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%

4.4.3 Kiểm thử hộp đen


Kiểm thử hộp đen: là một phương pháp kiểm thử phần mềm được thực hiện mà
không biết được cấu tạo bên trong của phần mềm, là cách kiểm tra xem hệ thống
như một chiếc hộp đen, không có cách nào nhìn thấy bên trong của cái hộp. Sau
đây là kiểm thử hộp đen cho một số chức năng đặc trưng.

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

4.4.4 Tổng kết kiểm thử


Như vậy, trong các trường hợp kiểm thử các hệ điều hành máy tính riêng biệt
đều đạt. Chưa thử nghiệm trên các hệ điều hành cũ như windown 7, windown XP
nên xem xét bỏ qua kiểm thử và chỉ kiểm thử trên các hệ điều hành mới.
Kiểm thử hộp đen đạt với các chức năng: Tạo mới đơn nhập kho, tạo mới đơn
xuất kho, tạo mới hàng hóa.
4.5 Triển khai
Ứng dụng được cài đặt thử nghiệm trên Server Ubuntu 20.04 với bộ nhớ 512mb.
Thứ tự các thao tác thực hiện triển khai như sau:
• Chuẩn bị một server ubuntu hoặc windown có bộ hơn trên 512mb
• upload source code lên server
• Cài đặt các thư viện phụ thuộc của python và của javascripts
• Cài đặt mysql trên server
• Cài đặt các biến môi trường trong server
• chạy docker-composer.yaml bằng lệnh docker-composer up build -d
• Tạo dữ liệu mẫu để có thể đăng nhập được vào ứng dụng
• Chạy thử ứng dụng
Kết chương: Trong chương 4, tất cả quá trình phát triển ứng dụng được trình
bày chi tiết từ giai đoạn: lựa chọn kiến trúc phần mềm phù hợp, thiết kế tổng quan,
thiết kế lớp chi tiết, thiết kế lược đồ quan hệ và cơ sở dữ liệu đến thiết kế gói và
giao diện. Chương 4 cũng trình bày về kế hoạch kiểm thử và kế hoạch triển khai
của ứng dụng. Trong chương 5 sẽ trình bày về những giải pháp, những đóng góp

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

và quản lý hàng hóa trong kho của mình.

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

You might also like