1. Module Quản lý kho hàng
1.1 – Nhập kho
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Tạo phiếu nhập
Nhập mới hàng hóa từ nhà cung cấp vào kho
- Giao diện nhập: mã sản phẩm, tên, số lượng, NSX, HSD, đơn vị tính, mã nhà cung cấp
Ghi nhận chất lượng
Kiểm tra chất lượng sản phẩm đầu vào trước khi nhập chính thức vào kho
- Đánh giá: đạt / không đạt
- Upload hình ảnh chứng minh
- Có trường ghi chú kiểm tra
Phê duyệt nhập kho
Trưởng kho duyệt phiếu nhập trước khi cập nhật tồn kho
- Trạng thái phiếu: Chờ duyệt → Đã duyệt / Từ chối
- Chỉ hàng “đạt” mới được nhập
Cập nhật tồn kho
Sau khi được duyệt, hệ thống cộng tồn kho tương ứng
- Tự động tính toán tồn kho theo mã sản phẩm – lô – ngày nhập
- Cập nhật theo real-time
In phiếu nhập
In phiếu nhập kho có mã QR và thông tin chi tiết
- Xuất PDF
- Hỗ trợ in A4 hoặc máy in nhiệt nhỏ (80mm)
Lưu lịch sử nhập
Lưu vết đầy đủ các phiếu nhập, người thao tác, thời gian
- Lưu vào log hệ thống, hỗ trợ tra cứu theo ngày, SP, NCC, trạng thái

1.2 – Xuất kho
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Tạo phiếu xuất
Tạo phiếu xuất hàng hóa ra khỏi kho
- Nhập mã đơn hàng, sản phẩm cần xuất, số lượng, người nhận
Liên kết đơn hàng
Lấy dữ liệu từ module Bán hàng để tạo phiếu xuất kho tương ứng
- Giao tiếp API nội bộ với Module Sales
- Hiển thị thông tin đơn hàng đã xác nhận
Áp dụng FIFO/FEFO
Lựa chọn chính sách xuất hàng: FIFO (cũ trước) hoặc FEFO (sắp hết hạn trước)
- Tự động đề xuất lô xuất phù hợp
- Cảnh báo nếu người dùng chọn sai chính sách
Kiểm tra tồn kho
Trước khi xuất, hệ thống kiểm tra tồn kho hiện tại
- Nếu thiếu hàng → báo lỗi
- Cho biết lý do lỗi (hết tồn, không có lô phù hợp…)
In phiếu xuất
In phiếu xuất kho, gồm mã đơn hàng, thông tin người nhận, lô, hạn dùng
- Hỗ trợ in PDF / máy in nhiệt
- Mã QR check xuất
Cập nhật tồn kho
Sau khi xuất, hệ thống trừ tồn kho theo lô hàng đã chọn
- Tự động
- Ghi lịch sử xuất theo mã lô
Lưu lịch sử xuất
Ghi log đầy đủ thông tin phiếu xuất, người thực hiện, thời gian
- Hệ thống tracking đầy đủ hoạt động xuất kho

1.3 – Kiểm kho
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Tạo đợt kiểm kê
Thiết lập thời gian và danh sách hàng kiểm kê
- Lập kế hoạch kiểm kê theo ngày / tuần / tháng
- Chọn nhóm hàng hoặc toàn kho
Nhập số liệu thực tế
Thủ kho nhập số lượng hàng hóa thực tế đếm được
- Giao diện nhập trực quan: mã SP, lô, số lượng thực tế, ghi chú sai lệch
So sánh tồn thực tế
Hệ thống tự động so sánh tồn hệ thống và tồn thực tế
- Hiển thị chênh lệch và % lệch
- Gợi ý nguyên nhân sai lệch
Báo cáo kiểm kê
Tổng hợp sai lệch, đề xuất điều chỉnh tồn kho
- Xuất báo cáo Excel / PDF
- Có chữ ký số nếu cần xác nhận
Điều chỉnh tồn kho
Thực hiện cộng/trừ tồn kho theo kiểm kê nếu được duyệt
- Chỉ Admin hoặc Thủ kho mới được điều chỉnh
- Log đầy đủ các thay đổi
Cảnh báo tồn kho bất thường
Cảnh báo nếu tồn kho âm, tồn lệch lớn
- Push notification
- Gửi email cảnh báo nếu sai lệch lớn
Lưu lịch sử kiểm kê
Ghi lại tất cả đợt kiểm kho, người thực hiện, trạng thái, kết quả
- Lưu trữ vĩnh viễn
- Có thể lọc, tìm kiếm theo thời gian, kho, sản phẩm


2. Module Đối tác
2.1. Đăng ký đối tác
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Tạo tài khoản đối tác
Đối tác tạo tài khoản để đăng ký vào hệ thống
- Form đăng ký: họ tên, email, SĐT, địa chỉ, mật khẩu
- Email xác nhận OTP
- Xác thực số điện thoại qua SMS
Phân loại đối tác
Lựa chọn loại đối tác khi đăng ký
- Dropdown chọn: Nông dân / Đại lý / Nhà chế biến / Nhà cung cấp
- Lưu phân loại vào hồ sơ đối tác
Upload giấy tờ
Gửi giấy tờ hợp lệ để xác minh danh tính hoặc pháp lý
- Cho phép upload: CMND/CCCD, Giấy phép KD, Hợp tác xã...
- Hỗ trợ định dạng JPG, PNG, PDF
Quản lý hồ sơ
Lưu trữ và hiển thị hồ sơ đối tác trong hệ thống
- Cho phép admin xem, chỉnh sửa, duyệt hoặc từ chối
- Hiển thị trạng thái hồ sơ: Chưa duyệt / Đã duyệt / Bị từ chối
Duyệt hồ sơ
Admin duyệt hoặc từ chối hồ sơ sau khi kiểm tra
- Chức năng duyệt: admin được cấp quyền
- Gửi email thông báo kết quả xét duyệt
Quản lý danh sách đối tác
Admin tra cứu danh sách các đối tác đã đăng ký
- Lọc theo: loại đối tác, trạng thái, tên, địa phương
- Chức năng khóa tài khoản nếu vi phạm

2.2. Hợp đồng & Thanh toán
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Tạo hợp đồng
Tạo hợp đồng hợp tác giữa công ty và đối tác
- Form tạo: thông tin 2 bên, loại hàng, giá mua, số lượng định kỳ, điều khoản thanh toán, thời hạn hợp đồng
Hợp đồng điện tử
Hợp đồng có thể ký số online
- Tích hợp ký số (e-signature) qua OTP/email
- Gửi bản PDF hợp đồng vào email đối tác sau khi ký
Lưu trữ hợp đồng
Lưu lại lịch sử các hợp đồng đã ký
- Giao diện hiển thị danh sách hợp đồng
- Tra cứu theo đối tác, thời gian, trạng thái (hiệu lực/hết hạn)
Quản lý thanh toán
Quản lý công nợ, thanh toán với từng đối tác
- Lưu các lần thanh toán: số tiền, ngày thanh toán, hình thức (chuyển khoản, tiền mặt)
- Tính toán tổng nợ còn lại
Nhắc thanh toán
Gửi nhắc nhở khi sắp đến hạn thanh toán hoặc quá hạn
- Push notification, gửi email tự động trước hạn 3 ngày và sau hạn 1 ngày
Lịch sử giao dịch
Xem toàn bộ lịch sử giao dịch tài chính với từng đối tác
- Liệt kê chi tiết: mã giao dịch, hợp đồng liên quan, số tiền, ngày giờ, người thực hiện
- Cho phép export PDF/Excel
Báo cáo tổng hợp
Thống kê theo thời gian, loại đối tác, doanh số
- Biểu đồ tổng quan theo tháng, quý
- Lọc theo địa phương, nhóm hàng, nhóm đối tác

3. Module Bán hàng
3.1. Tạo đơn hàng
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Kiểm tra tồn kho
Xác thực số lượng hàng còn trước khi đặt đơn
- Kết nối real-time với Module Quản lý kho
- Cảnh báo nếu vượt số lượng tồn
- Tự động gợi ý số còn lại
Thêm sản phẩm vào giỏ
Người mua chọn sản phẩm và thêm vào giỏ
- Giao diện chọn sản phẩm, số lượng
- Tính tạm tổng tiền
- Hỗ trợ xóa/sửa số lượng trong giỏ hàng
Tạo đơn hàng mới
Tạo đơn sau khi chọn sản phẩm và nhập thông tin giao hàng
- Form: họ tên người nhận, địa chỉ, SĐT, ghi chú
- Tự sinh mã đơn hàng (order code)
- Ghi nhận thời gian đặt
Tính phí ship tạm thời
Tính toán phí vận chuyển trước khi đặt đơn chính thức
- Gọi API phí ship từ các đơn vị vận chuyển
- Tính tổng đơn hàng: hàng + ship + phụ phí
Xác nhận đặt hàng
Gửi yêu cầu đặt hàng sau khi kiểm tra thông tin đầy đủ
- Hiển thị lại toàn bộ thông tin đơn hàng
- Xác nhận "Đặt hàng" mới lưu vào hệ thống
- Gửi email xác nhận đơn

3.2. Tính phí vận chuyển
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Nhập địa chỉ giao hàng
Xác định địa điểm giao để tính phí
- Form địa chỉ hỗ trợ autocomplete theo quận/huyện
- Tích hợp Google Maps API hoặc các API định vị
Gọi API vận chuyển
Lấy phí ship từ các đơn vị vận chuyển
- Tích hợp API GHN, GHTK, ViettelPost, v.v
- Truyền địa chỉ + khối lượng sản phẩm
Tính phí
Áp dụng công thức tính phí linh hoạt
- Phí = Base + (km × rate) + phụ phí
- Có thể cài đặt biểu phí riêng theo từng khu vực/hãng
So sánh phí
Hiển thị nhiều tùy chọn vận chuyển để người dùng lựa chọn
- Liệt kê: tên hãng, thời gian giao dự kiến, chi phí
- Cho phép người mua chọn đơn vị ship
Gắn phí vào đơn hàng
Lưu phí đã chọn vào đơn hàng
- Trường shipping_fee trong đơn hàng
- Gắn thêm mã vận đơn tạm nếu có (from API)

3.3. Đơn hàng
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Danh sách đơn hàng
Hiển thị tất cả đơn hàng đã đặt của user hoặc admin
- Lọc theo: mã đơn, trạng thái, thời gian, người nhận
- Giao diện bảng dữ liệu, phân trang, tìm kiếm
Xem chi tiết đơn hàng
Xem chi tiết đơn: sản phẩm, số lượng, địa chỉ, tổng tiền, phí ship...
- Hiển thị rõ ràng từng mục chi tiết
- Cho phép in hoặc xuất PDF
Cập nhật trạng thái đơn
Chuyển đơn qua các trạng thái xử lý: Mới → Đang xử lý → Đang giao → Hoàn tất
- Tự động cập nhật khi hệ thống xuất kho / giao hàng
- Giao diện admin có nút chỉnh trạng thái nếu cần thủ công
Hủy đơn hàng
Cho phép người dùng hủy đơn nếu chưa xử lý/xuất kho
- Có yêu cầu nhập lý do hủy
- Chỉ cho phép hủy khi đơn ở trạng thái "Mới"
- Cập nhật trạng thái "Đã hủy" và log lại
Giao vận
Liên kết đơn vị giao hàng và theo dõi vận đơn
- API kết nối GHN, GHTK, ViettelPost...
- Tự động lấy mã vận đơn
- Truy cập link tracking theo mã vận đơn
Xác nhận giao hàng
Người nhận xác nhận đã nhận hàng thành công
- Qua mã OTP, nút "Đã nhận" hoặc ký điện tử (e-signature)
- Cập nhật trạng thái "Hoàn tất"
Yêu cầu đổi/trả hàng
Người dùng gửi yêu cầu đổi/trả hàng sau khi nhận nếu hàng lỗi/sai
- Form lý do đổi trả + ảnh minh chứng
- Tạo trạng thái mới: "Đang xử lý khiếu nại"
- Admin duyệt/từ chối yêu cầu
Lịch sử trạng thái đơn
Theo dõi toàn bộ tiến trình xử lý đơn hàng
- Lưu log trạng thái, thời gian, người thực hiện (user/admin/API)
- Hiển thị dưới dạng timeline
In hóa đơn / biên nhận
Cho phép in đơn hàng, hóa đơn bán hàng hoặc phiếu giao nhận
- Tùy chọn xuất PDF hoặc in nhiệt
- Giao diện có nút “In đơn” / “Xuất hóa đơn”
Tìm kiếm đơn hàng
Tìm nhanh đơn hàng theo mã, SĐT, người nhận hoặc trạng thái
- Hệ thống search hỗ trợ auto-complete
- Tìm trong toàn bộ hoặc theo khoảng thời gian

4. Module Quản trị
4.1. Phân quyền
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Quản lý vai trò người dùng
Tạo và quản lý các loại vai trò trong hệ thống
- Các vai trò mặc định: Admin, Thủ kho, Kế toán, Nhân viên bán hàng, Đối tác, khách hàng
- Có thể thêm/sửa vai trò
Gán quyền cho vai trò
Gán các quyền hành cụ thể cho từng vai trò
- Giao diện checkbox theo module và hành động: Thêm, Sửa, Xem, Xóa
- Lưu bảng phân quyền vào DB
Gán vai trò cho người dùng
Gán vai trò cho từng tài khoản người dùng
- Khi tạo tài khoản mới hoặc sửa tài khoản
- Người dùng chỉ thấy được module theo vai trò của mình
Kiểm soát truy cập
Hệ thống kiểm soát quyền thực thi theo vai trò người dùng
- Tự động kiểm tra quyền trước khi truy cập vào chức năng
- Redirect về trang lỗi nếu không có quyền
Theo dõi lịch sử hoạt động
Lưu lại log các thao tác của từng người dùng trong hệ thống
- Bao gồm: ai đã đăng nhập, thao tác gì, lúc nào
- Hiển thị theo dạng bảng hoặc timeline trong admin

4.2. Dashboard
Task/Function
Mô tả chức năng
Yêu cầu chi tiết
Doanh thu
Hiển thị biểu đồ doanh thu theo thời gian
- Biểu đồ dạng cột hoặc đường
- Chọn theo tháng, quý, năm
- Lọc theo sản phẩm, khu vực, kênh bán
Tồn kho
Tổng quan số lượng tồn kho theo danh mục sản phẩm
- Hiển thị số lượng từng loại sản phẩm còn lại
- Màu sắc cảnh báo khi tồn kho thấp hoặc sắp hết
Hàng sắp hết hạn
Danh sách các lô hàng gần đến hạn sử dụng
- Ghi rõ ngày sản xuất, hạn sử dụng
- Sắp xếp theo thời gian hết hạn tăng dần
Cảnh báo tồn ứ
Cảnh báo những mặt hàng tồn lâu, bán chậm
- Thống kê hàng tồn quá N ngày không bán được
- Gợi ý thanh lý / giảm giá / khuyến mãi
Mặt hàng bán chạy
Top sản phẩm có số lượng bán ra cao nhất
- Hiển thị theo tuần/tháng/quý
- Gợi ý tăng nhập kho hoặc tạo combo khuyến mãi
Đơn hàng gần đây
Danh sách đơn hàng mới nhất trong hệ thống
- Hiển thị trạng thái, người mua, tổng tiền, thời gian đặt
- Cho phép nhấp để vào chi tiết đơn
Trạng thái đơn hàng
Thống kê số lượng đơn hàng theo từng trạng thái
- Biểu đồ tròn/tổng số đơn ở trạng thái: Mới, Đang xử lý, Giao hàng, Hoàn tất, Đã hủy
Truy cập hệ thống
Thống kê số lượng người dùng truy cập hệ thống hàng ngày/tuần
- Biểu đồ line chart
- Hiển thị IP, username, số phiên truy cập theo thời gian (nếu cần phân tích)
Tùy chỉnh giao diện
Cho phép tùy chỉnh bố cục Dashboard theo người dùng (nếu cần - advanced)
- Kéo/thả các widget
- Ghi nhớ bố cục theo user
- Lưu cấu hình trong DB hoặc localStorage (nếu web app) tạo sql database