Bối cảnh và vấn đề nghiên cứu
Trong hơn một thập kỷ qua, thương mại điện tử đã trở thành một cấu phần quan trọng của nền kinh tế toàn cầu và ngành kinh doanh nội thất cũng không nằm ngoài xu thế chuyển dịch này. Việc mua sắm sản phẩm nội thất qua các nền tảng trực tuyến đem lại nhiều tiện ích cho người tiêu dùng và đang dần trở thành phương thức tiêu dùng phổ biến. Tuy nhiên, đối với các doanh nghiệp sản xuất và kinh doanh nội thất truyền thống, quá trình chuyển đổi số và xây dựng hệ sinh thái bán hàng trực tuyến đặt ra nhiều thách thức về cả mặt công nghệ lẫn quy trình quản trị vận hành.
Đề tài được xây dựng dựa trên khảo sát thực tế tại Công ty Cổ phần Xây dựng và Thương mại Quang Long (Quang Long Construction and Trading Joint Stock Company):
- Giấy phép kinh doanh: Cấp ngày 18 tháng 01 năm 2010 bởi Sở Kế hoạch và Đầu tư Thành phố Hà Nội.
- Mã số thuế: 0104388813.
- Địa chỉ trụ sở: Số 17, phố Thanh Niên, xã Liên Hà, huyện Đan Phượng, Thành phố Hà Nội.
- Số điện thoại liên hệ: 02432025511.
- Lĩnh vực hoạt động: Cung cấp đồ gỗ nội thất gia đình (các loại giường gỗ: panel bed, loft bed, four-poster bed, bunk bed; tủ quần áo gỗ 1 cánh, 2 cánh, 3 cánh; tủ gỗ nhà bếp, nhà tắm), nội thất văn phòng, nội thất nhà hàng - khách sạn, cùng dịch vụ thiết kế và thi công nội thất theo yêu cầu.
Khảo sát thực tiễn tại doanh nghiệp cho thấy quy trình quản lý đơn hàng của Công ty Quang Long vẫn phụ thuộc hoàn toàn vào phương thức thủ công và lưu trữ văn bản giấy tờ truyền thống. Cách thức quản lý này bộc lộ nhiều hạn chế: tốn kém thời gian và nhân lực, dễ phát sinh sai sót trong quá trình theo dõi, xử lý và lưu trữ dữ liệu đơn hàng. Đồng thời, doanh nghiệp hoàn toàn thiếu vắng kênh bán hàng trực tuyến để giới thiệu sản phẩm và tương tác với khách hàng, làm mất đi nhiều cơ hội tiếp cận khách hàng tiềm năng và giảm sút năng lực cạnh tranh trên thị trường.
Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:
- Phân tích thực trạng kinh doanh và quy trình xử lý đơn hàng tại Công ty Quang Long nhằm xác định rõ các yêu cầu hệ thống.
- Thiết kế và phát triển phần mềm quản lý đơn hàng hiện đại, tự động hóa quy trình tiếp nhận, xử lý và theo dõi trạng thái đơn hàng.
- Xây dựng website thương mại điện tử chuyên ngành nội thất với giao diện thân thiện, hỗ trợ tìm kiếm sản phẩm, quản lý giỏ hàng, áp dụng mã giảm giá và tích hợp thanh toán trực tuyến.
- Triển khai kiến trúc kết nối giữa giao diện người dùng (Frontend) và hệ thống quản trị hoạch định doanh nghiệp (Backend ERP) để đồng bộ hóa danh mục sản phẩm, bảng giá và dữ liệu giao dịch.
Cơ sở lý thuyết và công nghệ áp dụng
Đồ án ứng dụng mô hình kiến trúc đa tầng (Multitier Architecture / N-tier Architecture) kết hợp với các nền tảng công nghệ mã nguồn mở trong công nghệ phần mềm:
1. Kiến trúc hệ thống đa tầng
Hệ thống được tổ chức theo mô hình kiến trúc 3 tầng phân tách độc lập nhằm nâng cao khả năng mở rộng, bảo trì và tăng tính an toàn dữ liệu:
- Tầng trình diễn (Presentation Tier): Chịu trách nhiệm hiển thị giao diện, điều hướng người dùng, hiển thị danh mục sản phẩm, quản lý trạng thái giỏ hàng và thu thập thông tin đơn hàng từ phía khách hàng.
- Tầng xử lý logic nghiệp vụ (Application / Business Logic Tier): Tiếp nhận yêu cầu từ client, xử lý toàn bộ các quy tắc nghiệp vụ về đơn hàng, tính toán chiết khấu, kiểm tra điều kiện áp dụng mã khuyến mãi và điều phối luồng dữ liệu.
- Tầng dữ liệu (Data Tier): Quản lý tính toàn vẹn và bền vững của dữ liệu, thực hiện các thao tác truy vấn, cập nhật cơ sở dữ liệu thông qua tầng truy xuất dữ liệu độc lập.
2. Khung công nghệ và công cụ phát triển
| Nhóm công cụ |
Tên công nghệ / Nền tảng |
Vai trò và chức năng trong hệ thống |
| Ngôn ngữ lập trình |
Python, JavaScript |
Xử lý logic backend trên Odoo và phát triển giao diện ReactJS |
| Framework Backend |
Odoo Framework |
Cung cấp nền tảng quản trị doanh nghiệp, phân hệ bán hàng (Sale module) và ORM |
| Framework Frontend |
ReactJS |
Xây dựng giao diện Single Page Application (SPA), sử dụng Virtual DOM tối ưu tốc độ render |
| Giao thức kết nối |
Odoo REST API, Axios |
Cung cấp các endpoint trao đổi dữ liệu JSON giữa Frontend và Backend |
| Hệ quản trị CSDL |
PostgreSQL |
Lưu trữ cơ sở dữ liệu quan hệ cho toàn bộ hệ thống Odoo |
| Môi trường phát triển (IDE) |
PyCharm, Visual Studio Code |
Lập trình module Odoo (Python) và giao diện ReactJS |
| Công cụ thiết kế & UML |
Visio, Astah, Draw.io, Figma |
Thiết kế sơ đồ kiến trúc, Use Case, Sequence Diagram và giao diện UI/UX |
| Quản lý mã nguồn |
GitLab |
Quản lý phiên bản và lưu trữ kho mã nguồn của dự án |
Phân tích yêu cầu và đặc tả hệ thống
1. Kế hoạch phân chia công việc và ước tính nỗ lực (WBS & Estimation)
Dự án được ước tính triển khai trong tổng thời gian 54 công-người (man-days), phân bổ theo các hạng mục cụ thể:
- Requirements Analysis (Phân tích yêu cầu - 5 man-days): Xác định các thực thể liên quan (1 man-day); Xác định các hành động/nghiệp vụ cần thiết (4 man-days).
- Design Front End (Thiết kế giao diện người dùng - 21 man-days): Trang chủ (2 man-days); Trang cửa hàng (5 man-days); Trang giỏ hàng (5 man-days); Trang thanh toán (5 man-days); Trang giới thiệu (2 man-days); Trang liên hệ (2 man-days).
- Design Back End (Thiết kế phía máy chủ - 15 man-days): Thiết kế API sản phẩm (5 man-days); Thiết kế API giỏ hàng (5 man-days); Thiết kế API mã giảm giá/voucher (5 man-days).
- Software Test (Kiểm thử phần mềm - 2 man-days): Kiểm thử các API (2 man-days).
2. Quy tắc nghiệp vụ (Business Rules)
Hệ thống thiết lập hệ thống quy tắc nghiệp vụ chặt chẽ để kiểm soát các luồng thao tác:
[Danh mục & Sản phẩm]
[Quản lý Đơn hàng]
[Giá bán & Khuyến mãi]
[Giỏ hàng & Thanh toán]
3. Tác nhân và Danh mục Use Case
Hệ thống phân quyền cho hai tác nhân chính (Actors):
- Customer (Khách hàng): Tương tác với giao diện người dùng để xem thông tin, duyệt danh mục sản phẩm, quản lý giỏ hàng, chọn mã giảm giá, thực hiện thanh toán và theo dõi đơn hàng.
- Administrator (Quản trị viên): Quản lý hệ thống backend Odoo, thực hiện tạo mới/sửa/xóa sản phẩm, cấu hình bảng giá (Pricelist), quản lý chương trình khách hàng thân thiết/mã giảm giá (Loyalty & Discount), theo dõi và cập nhật trạng thái đơn hàng.
| Mã UC |
Tên Use Case |
Tác nhân chính |
Tần suất sử dụng ước tính |
| UC-01 |
Add to cart (Thêm vào giỏ hàng) |
Customer |
~50 người dùng/ngày |
| UC-02 |
Cart (Quản lý giỏ hàng) |
Customer |
~50 người dùng/ngày |
| UC-03 |
Select discount (Chọn mã giảm giá) |
Customer |
~50 người dùng/ngày |
| UC-04 |
Payment (Thanh toán đơn hàng) |
Customer |
~50 người dùng/ngày |
| UC-05 |
Product Management (Quản lý sản phẩm) |
Administrator |
Theo nhu cầu quản trị |
| UC-06 |
Order Management (Quản lý đơn hàng) |
Administrator |
Theo nhu cầu quản trị |
| UC-07 |
Loyalty Management (Quản lý khuyến mãi) |
Administrator |
Theo nhu cầu quản trị |
| UC-08 |
Pricelist Management (Quản lý bảng giá) |
Administrator |
Theo nhu cầu quản trị |
Thiết kế và triển khai hệ thống
1. Phân rã gói hệ thống (Package Diagram)
Hệ thống được phân chia thành 3 khối gói chức năng chính kết nối qua mô hình Client-Server:
- Frontend Package (ReactJS):
- Components: Header, Footer, Shop, Product Detail, Checkout, About Us, Contact, Cart (bao gồm CartItem, CartSummary, CartControls).
- Pages: Home page, Shop page, Product detail page, Cart page, Checkout page, Payment page, About us page, Contact page.
- Services & Router: CartService, API Service sử dụng thư viện Axios; điều hướng trang thông qua React Router.
- API Package:
- Đóng vai trò cầu nối trung gian cung cấp các REST API Endpoints để tiếp nhận request từ Axios phía Frontend và chuyển tiếp dữ liệu đến các Controller của Odoo.
- Backend Package (Odoo):
- Controllers: ProductController, OrderController, SurveyController.
- Models:
product, product_category, pricelist, order, order_line, partner, loyalty, loyalty_rules, loyalty_rewards, survey.
2. Thiết kế Cơ sở dữ liệu (PostgreSQL)
Cơ sở dữ liệu được tổ chức đồng bộ với các Model trong Odoo, bao gồm các bảng dữ liệu cốt lõi:
product và product_category: Lưu trữ thông tin chi tiết về sản phẩm (tên, mã định danh, mô tả, đơn giá, hình ảnh, biến thể) và cấu trúc phân cấp danh mục nội thất.
pricelist: Quản lý danh sách giá bán, các quy tắc áp dụng giá theo khoảng thời gian hoặc số lượng mua tối thiểu.
sale_order và sale_order_line: Lưu trữ mã đơn hàng, ngày đặt hàng, trạng thái thanh toán, địa chỉ giao hàng và danh sách các mặt hàng chi tiết trong đơn.
res_partner: Quản lý thông tin đối tác, khách hàng (họ tên, số điện thoại, địa chỉ email, địa chỉ giao hàng).
loyalty_program, loyalty_rule, loyalty_reward: Cấu hình chương trình khách hàng thân thiết, định nghĩa điều kiện áp dụng mã giảm giá và giá trị phần thưởng chiết khấu.
3. Tích hợp quy trình thanh toán và xử lý đơn hàng
Hệ thống hỗ trợ 2 phương thức thanh toán linh hoạt cho khách hàng:
- Chuyển khoản ngân hàng (Bank Transfer): Hệ thống hiển thị thông tin số tài khoản và ngân hàng thụ hưởng. Sau khi nhận được tiền, quản trị viên sẽ kiểm tra và chuyển trạng thái đơn hàng sang "Đã thanh toán" (Paid).
- Cổng thanh toán điện tử VNPAY: Hệ thống chuyển hướng người dùng sang cổng thanh toán VNPAY. Sau khi giao dịch hoàn tất thành công, trạng thái đơn hàng trên hệ thống Odoo được cập nhật tự động sang "Đã thanh toán".
- Chính sách đặt cọc: Cho phép khách hàng lựa chọn đặt cọc 50% hoặc thanh toán toàn bộ 100% giá trị đơn hàng khi tiến hành checkout.
- Hệ thống thông báo: Tích hợp module gửi email tự động xác nhận đơn hàng thành công và thông báo biến động trạng thái đơn hàng đến hòm thư của khách hàng.
Nội dung chính theo từng chương
Báo cáo tốt nghiệp được cấu trúc thành các chương phản ánh toàn bộ vòng đời phát triển phần mềm:
Tổng quan và Tầm nhìn sản phẩm (Product Overview & Vision)
Trình bày tổng quan về thị trường thương mại điện tử ngành nội thất, hồ sơ năng lực Công ty Cổ phần Xây dựng và Thương mại Quang Long cùng lý do phát triển dự án. Xác định tầm nhìn sản phẩm: đơn giản hóa trải nghiệm mua sắm nội thất trực tuyến, đảm bảo chất lượng - độ tin cậy, hỗ trợ tư vấn thiết kế không gian sống, đa dạng hóa thanh toán - giao hàng và hướng đến phát triển bền vững.
Phân hệ Giỏ hàng và Khuyến mãi (Shopping Cart & Voucher System)
Đặc tả chi tiết các yêu cầu chức năng đối với hệ thống giỏ hàng và voucher: thiết kế giao diện giỏ hàng thân thiện, hiển thị chi tiết số lượng, đơn giá, tính tổng tiền kèm thuế/phí; cơ chế lưu giỏ hàng cho các phiên truy cập sau; quy trình tạo và kiểm tra tính hợp lệ của mã giảm giá (mua X tặng Y, giảm giá theo tỷ lệ/số tiền).
Công cụ và Hạ tầng kỹ thuật (Tools & Infrastructures)
Giới thiệu các nền tảng kỹ thuật được lựa chọn. Phân tích chi tiết ưu điểm của Odoo Framework (tính toàn diện, khả năng mở rộng, chi phí hợp lý, cộng đồng hỗ trợ lớn) và phân hệ Sales của Odoo (quản lý báo giá, đơn hàng, bảng giá, chiết khấu). Đồng thời phân tích thư viện ReactJS với ưu thế về Virtual DOM và khả năng tái sử dụng component giao diện.
Phân tích yêu cầu phần mềm (Software Requirement Specification - SRS)
Đưa ra bảng phân chia cấu trúc công việc WBS (54 man-days). Chi tiết hóa 22 tính năng chính của dự án, danh mục 24 quy tắc nghiệp vụ (Business Rules), mô hình Use Case tổng thể, danh sách các tác nhân và bảng đặc tả chi tiết cho 8 Use Case trọng tâm (UC-01 đến UC-08).
Lựa chọn kiến trúc và Thiết kế chi tiết (Software Architecture & Detailed Design)
Lựa chọn kiến trúc Client-Server đa tầng (3-tier). Xây dựng sơ đồ phân rã gói (Package Diagram) cho toàn bộ dự án và gói giỏ hàng/thanh toán. Trình bày các biểu đồ tuần tự (Sequence Diagram) cho các nghiệp vụ: quản lý sản phẩm, quản lý đơn hàng, quản lý chương trình khuyến mãi. Thiết kế sơ đồ cơ sở dữ liệu và xây dựng danh mục API kết nối.
Xây dựng và Cài đặt ứng dụng (Build An App)
Hiện thực hóa hệ thống thông qua việc triển khai giao diện màn hình người dùng (Trang chủ, Trang cửa hàng, Trang chi tiết sản phẩm, Trang giỏ hàng, Trang chọn khuyến mãi, Trang thanh toán ngân hàng, Trang cổng VNPAY, Trang liên hệ, Trang giới thiệu) và giao diện quản trị Odoo (Danh sách đơn hàng, Chi tiết đơn hàng, Danh mục sản phẩm, Danh mục chương trình khuyến mãi, Cấu hình quy tắc điều kiện). Hoàn thiện tính năng gửi email thông báo đơn hàng thành công.
Kết quả và đóng góp
1. Kết quả đạt được
- Xây dựng thành công hệ thống website bán hàng nội thất hoàn chỉnh sử dụng ReactJS kết hợp hệ thống quản trị backend trên nền tảng Odoo.
- Hiện thực hóa đầy đủ 22 tính năng chính của dự án: từ duyệt sản phẩm, quản lý giỏ hàng, áp dụng mã giảm giá, tích hợp thanh toán (VNPAY, chuyển khoản) cho đến các module quản trị sản phẩm, bảng giá, đơn hàng và chương trình khuyến mãi trên Odoo.
- Hoàn thành kế hoạch phát triển phần mềm theo đúng ước tính WBS (54 man-days) và kiểm thử thành công các API trao đổi dữ liệu.
- Thiết lập hệ thống cơ sở dữ liệu quan hệ trên PostgreSQL liên kết chặt chẽ giữa thông tin đối tác, đơn hàng, sản phẩm và các chính sách khuyến mãi.
2. Đóng góp thực tiễn
- Số hóa quy trình vận hành: Chuyển đổi toàn bộ quy trình ghi nhận và quản lý đơn hàng từ phương thức ghi chép giấy tờ thủ công sang hệ thống phần mềm tự động, giảm thiểu sai sót và tối ưu hóa thời gian xử lý của nhân viên tại Công ty Quang Long.
- Mở rộng kênh thương mại: Cung cấp cho Công ty Quang Long một kênh bán hàng trực tuyến hiện đại, giúp quảng bá các dòng sản phẩm gỗ nội thất (giường, tủ, bàn ghế) đến đông đảo khách hàng tiềm năng trên không gian số.
- Mô hình tích hợp ứng dụng: Đưa ra giải pháp kỹ thuật kết hợp hiệu quả giữa frontend ReactJS linh hoạt và hệ thống ERP Odoo mạnh mẽ thông qua REST API, phục vụ bài toán thương mại điện tử chuyên ngành.
Hạn chế và hướng nghiên cứu tiếp
- Độ phụ thuộc hạ tầng mạng: Hệ thống Odoo và các chức năng kết nối API yêu cầu kết nối Internet ổn định để đảm bảo dữ liệu đơn hàng và trạng thái thanh toán được đồng bộ mượt mà.
- Độ phức tạp trong cấu hình Odoo: Mặc dù Odoo cung cấp giao diện quản trị trực quan, người dùng mới hoặc nhân viên quản trị cần được đào tạo để làm quen với các cấu hình ban đầu về bảng giá và quy tắc khuyến mãi phức tạp.
- Phạm vi kiểm thử phần mềm: Đồ án dành 2 man-days cho hạng mục kiểm thử API; việc mở rộng kiểm thử hiệu năng chịu tải cao và kiểm thử bảo mật nâng cao trong các kịch bản thực tế cần được tiếp tục đầu tư.
- Hướng mở rộng: Nghiên cứu tích hợp sâu hơn các công cụ tư vấn thiết kế nội thất 3D trực tuyến và mở rộng các giải pháp quản lý chuỗi cung ứng/kho hàng tự động trong các phân hệ mở rộng của Odoo.
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho:
- Sinh viên ngành Kỹ thuật phần mềm, Tin học và Kỹ thuật máy tính, Công nghệ thông tin: Tham khảo quy trình phân tích yêu cầu (SRS), thiết lập Business Rules, xây dựng Use Case, thiết kế biểu đồ tuần tự (Sequence Diagram) và ước tính nỗ lực dự án theo chuẩn WBS.
- Lập trình viên và kỹ sư phát triển web: Tham khảo kiến trúc tích hợp giữa thư viện ReactJS (Single Page Application) với nền tảng ERP Odoo thông qua hệ thống REST API và Axios.
- Doanh nghiệp vừa và nhỏ ngành nội thất/sản xuất: Tham khảo mô hình chuyển đổi số từ quản lý đơn hàng thủ công sang hệ thống thương mại điện tử có tích hợp cổng thanh toán trực tuyến (VNPAY) và quản trị khuyến mãi tập trung.
Câu hỏi thường gặp
1. Đơn vị thực tế được khảo sát và ứng dụng giải pháp trong đồ án là đơn vị nào?
Hệ thống được thiết kế và xây dựng dựa trên khảo sát thực tế tại Công ty Cổ phần Xây dựng và Thương mại Quang Long, có trụ sở tại số 17, phố Thanh Niên, xã Liên Hà, huyện Đan Phượng, Hà Nội. Doanh nghiệp chuyên cung cấp các sản phẩm đồ gỗ nội thất gia đình, văn phòng và nhà hàng - khách sạn.
2. Hệ thống hỗ trợ những hình thức thanh toán nào cho khách hàng?
Hệ thống hỗ trợ 2 phương thức thanh toán chính: chuyển khoản ngân hàng trực tiếp (quản trị viên xác nhận thủ công) và thanh toán trực tuyến qua cổng thanh toán VNPAY (hệ thống tự động cập nhật trạng thái đơn hàng sang "Đã thanh toán" ngay khi giao dịch thành công). Ngoài ra, khách hàng có thể lựa chọn đặt cọc 50% hoặc thanh toán 100% giá trị đơn hàng.
3. Tổng thời gian ước tính (effort) và phân bổ công việc theo WBS của dự án là bao nhiêu?
Tổng thời gian ước tính là 54 công-người (man-days), được phân chia thành 4 giai đoạn chính: Phân tích yêu cầu (5 man-days), Thiết kế Front End với 6 màn hình (21 man-days), Thiết kế Back End API (15 man-days), và Kiểm thử API phần mềm (2 man-days).
4. Kiến trúc kỹ thuật của hệ thống được tổ chức như thế nào?
Hệ thống được xây dựng theo mô hình Client-Server với kiến trúc đa tầng (Multitier Architecture - 3 tiers): Tầng trình diễn sử dụng ReactJS (Axios, React Router); Tầng xử lý logic nghiệp vụ sử dụng Odoo Framework (Python) với các Controller xử lý REST API; Tầng dữ liệu sử dụng hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL.
5. Các quy tắc nghiệp vụ nổi bật về quản lý đơn hàng và mã giảm giá được thiết lập ra sao?
Các quy tắc tiêu biểu bao gồm: mỗi đơn hàng có mã định danh duy nhất (BR-11), tự động gửi email thông báo khi đơn hàng được tạo hoặc chuyển trạng thái (BR-12, BR-44), cho phép đặt hàng không cần tài khoản nhưng phải nhập đủ thông tin liên hệ (BR-33), hỗ trợ nhiều loại hình khuyến mãi như mã giảm giá hay mua X tặng Y với cấu hình điều kiện và phần thưởng riêng biệt (BR-23, BR-24).
Kết luận
Đồ án tốt nghiệp "Xây Dựng Website Bán Nội Thất Sử Dụng Odoo Framework" của sinh viên Nguyễn Hữu Long đã giải quyết thành công bài toán chuyển đổi số quy trình quản lý đơn hàng và xây dựng kênh bán hàng trực tuyến cho Công ty Cổ phần Xây dựng và Thương mại Quang Long. Bằng việc kết hợp kiến trúc đa tầng giữa giao diện ReactJS hiện đại và hệ thống backend Odoo ERP trên nền cơ sở dữ liệu PostgreSQL, đồ án đã hoàn thiện 22 tính năng từ duyệt sản phẩm, quản lý giỏ hàng, tích hợp cổng thanh toán VNPAY đến quản trị khuyến mãi và đơn hàng. Công trình cung cấp một tài liệu tham khảo hoàn chỉnh về mặt kỹ thuật và phương pháp luận phát triển phần mềm ứng dụng trong doanh nghiệp thương mại điện tử.