Hướng dẫn cấu hình danh sách Sản phẩm / Dịch vụ
Tổng quan
Hệ thống quản lý sản phẩm/dịch vụ cho phép cấu hình đầy đủ thông tin về các mặt hàng kinh doanh, bao gồm:
- Sản phẩm (PRODUCT): Hàng hóa bán ra
- Hàng hóa (GOODS): Hàng hóa kinh doanh
- Nguyên vật liệu (MATERIALS): Nguyên liệu đầu vào
- Dịch vụ (SERVICE): Các dịch vụ cung cấp
Tính năng chính:
✅ Quản lý đa loại sản phẩm
✅ Phân loại theo danh mục cha-con
✅ Hỗ trợ ảnh sản phẩm
✅ Cấu hình thuế và phí dịch vụ
✅ Tùy chọn sản phẩm (options)
✅ Bán trực tiếp qua menu nhà hàng
Các bước cấu hình
BƯỚC 1: Tạo Đơn vị tính
1.1. Truy cập menu
- Đăng nhập hệ thống Admin
- Vào menu: Cấu hình > Đơn vị tính
1.2. Thêm đơn vị mới
Mã đơn vị: CAI
Tên đơn vị: Cái
Ví dụ một số đơn vị thông dụng:
| Mã | Tên | Ghi chú |
|---|---|---|
| CAI | Cái | Đơn vị đếm |
| CHAI | Chai | Đồ uống đóng chai |
| LY | Ly | Đồ uống phục vụ |
| TO | Tô | Món ăn |
| PHAN | Phần | Suất ăn |
| KG | Kilogram | Khối lượng |
| GRAM | Gram | Khối lượng nhỏ |
| LIT | Lít | Thể tích |
1.3. Lưu ý
- Mã đơn vị: CHỮ HOA, KHÔNG DẤU, KHÔNG KHOẢNG TRẮNG
- Format:
[A-Z0-9-_]+ - Mã phải duy nhất trong hệ thống
BƯỚC 2: Tạo Danh mục sản phẩm
2.1. Tạo danh mục CHA
Ví dụ:
Mã danh mục: DO-UONG
Tên danh mục: Đồ uống
Là danh mục cha: ✅ Tick
2.2. Tạo danh mục CON
Ví dụ 1:
Mã danh mục: CAFE
Tên danh mục: Cà phê
Danh mục cha: Đồ uống
Là danh mục cha: ❌ Không tick
Ví dụ 2:
Mã danh mục: TRA-SUA
Tên danh mục: Trà sữa
Danh mục cha: Đồ uống
Là danh mục cha: ❌ Không tick
2.3. Cấu trúc phân cấp mẫu
📁 Đồ uống (DO-UONG) - DANH MỤC CHA
├── ☕ Cà phê (CAFE)
├── 🧋 Trà sữa (TRA-SUA)
├── 🍹 Nước ép (NUOC-EP)
└── 🥤 Sinh tố (SINH-TO)
📁 Món ăn (MON-AN) - DANH MỤC CHA
├── 🍜 Phở (PHO)
├── 🍲 Bún (BUN)
├── 🍝 Mì (MI)
└── 🍛 Cơm (COM)
📁 Món phụ (MON-PHU) - DANH MỤC CHA
├── 🥟 Nem rán (NEM-RAN)
├── 🌯 Gỏi cuốn (GOI-CUON)
└── 🥗 Salad (SALAD)
BƯỚC 3: Cấu hình Product Options (Tùy chọn)
3.1. Tùy chọn Độ cay (Spice)
-- Mã: KHONG-CAY
-- Tên: Không cay
-- Loại: spice
-- Mô tả: Không thêm gia vị cay
-- Thứ tự: 1
-- Mã: CAY-VUA
-- Tên: Cay vừa
-- Loại: spice
-- Mô tả: Mức độ cay vừa phải
-- Thứ tự: 2
-- Tương tự cho: Cay nhiều, Siêu cay
3.2. Tùy chọn Đường (Sugar)
KHONG-DUONG → Không đường (0%)
IT-DUONG → Ít đường (30%)
DUONG-BINH-THUONG → Đường bình thường (100%)
THEM-DUONG → Thêm đường (150%)
3.3. Tùy chọn Đá (Ice)
KHONG-DA → Không đá
IT-DA → Ít đá
DA-BINH-THUONG → Đá bình thường
NHIEU-DA → Nhiều đá
3.4. Tùy chọn Size
SIZE-S → Size S (Nhỏ)
SIZE-M → Size M (Vừa)
SIZE-L → Size L (Lớn)
SIZE-XL → Size XL (Rất lớn)
3.5. Tùy chọn Topping (có phụ thu)
THEM-TRUNG → Thêm trứng (+10,000đ)
THEM-THIT → Thêm thịt (+15,000đ)
THEM-RAU → Thêm rau (+5,000đ)
THEM-PHO-MAI → Thêm phô mai (+12,000đ)
BƯỚC 4: Tạo Sản phẩm/Dịch vụ
4.1. Truy cập tạo sản phẩm
- Menu: Sản phẩm > Danh sách sản phẩm
- Click nút "THÊM MỚI"
4.2. Điền thông tin cơ bản
Form nhập liệu:
┌─── Ảnh sản phẩm ───────────────────────────┐
│ [Upload ảnh] │
│ Hỗ trợ: JPEG, PNG, JPG, GIF, WebP, SVG │
│ (tối đa 5MB) │
└────────────────────────────────────────────┘
┌─── Thông tin chính ────────────────────────┐
│ Tên hàng hóa*: Cà phê đen đá │
│ Mã hàng hóa*: CAFE-DEN-DA │
│ Đơn vị tính*: [Dropdown] Ly │
└────────────────────────────────────────────┘
┌─── Chi tiết ───────────────────────────────┐
│ Giá bán*: 25,000 đ │
│ Danh mục*: [Dropdown] Cà phê │
│ Loại hàng*: [Dropdown] Sản phẩm │
│ │
│ Phí dịch vụ (%): 10 │
│ Thuế (%): 5 │
│ Ghi chú: Cà phê rang xay truyền │
│ thống, hương vị đậm đà │
└────────────────────────────────────────────┘
┌─── Bán trực tiếp (Tùy chọn) ──────────────┐
│ ☑ Bán trực tiếp │
│ Nhà hàng: [Dropdown] Nhà hàng A │
│ Thực đơn: [Dropdown] Menu chính │
│ Giá tiền: 25,000 đ │
└────────────────────────────────────────────┘
4.3. Giải thích các trường
| Trường | Bắt buộc | Mô tả | Ví dụ |
|---|---|---|---|
| Tên hàng hóa | ✅ | Tên hiển thị sản phẩm | Cà phê đen đá |
| Mã hàng hóa | ✅ | Mã định danh (unique) | CAFE-DEN-DA |
| Đơn vị tính | ✅ | Đơn vị bán | Ly, Cái, Phần |
| Giá bán | ✅ | Giá mặc định (VNĐ) | 25000 |
| Danh mục | ✅ | Chọn danh mục CON | Cà phê (không phải Đồ uống) |
| Loại hàng | ✅ | PRODUCT/GOODS/MATERIALS/SERVICE | Sản phẩm |
| Phí dịch vụ | ❌ | % phí dịch vụ | 10% |
| Thuế | ❌ | % thuế VAT | 5% |
| Ghi chú | ❌ | Mô tả chi tiết | Nguyên liệu nhập khẩu |
| Ảnh | ❌ | Ảnh sản phẩm | Upload qua Cloudflare |
4.4. Quy tắc mã sản phẩm
✅ Đúng:
CAFE-DEN-DA
TRA-SUA-TRAN-CHAU
BANH-MI-THIT
PHO-BO-TAI
❌ Sai:
Cà phê đen đá → Có dấu, khoảng trắng
cafe-den-da → Chữ thường
Café-Đen-Đá → Có dấu
CAFE DEN DA → Có khoảng trắng
Format chuẩn: [A-Z0-9-_]+
BƯỚC 5: Cấu hình tùy chọn cho sản phẩm
5.1. Gán tùy chọn vào sản phẩm
Ví dụ: Cà phê đen đá
{
"product": "Cà phê đen đá",
"options": [
{
"type": "size",
"options": [
{
"name": "Size M",
"is_default": true,
"is_required": true,
"extra_price": 0
},
{
"name": "Size L",
"is_default": false,
"is_required": false,
"extra_price": 5000
}
]
},
{
"type": "ice",
"options": [
{
"name": "Đá bình thường",
"is_default": true,
"is_required": true,
"extra_price": 0
},
{
"name": "Ít đá",
"is_default": false,
"is_required": false,
"extra_price": 0
}
]
},
{
"type": "sugar",
"options": [
{
"name": "Đường bình thường",
"is_default": true,
"is_required": false,
"extra_price": 0
},
{
"name": "Ít đường",
"is_default": false,
"is_required": false,
"extra_price": 0
}
]
}
]
}
5.2. Giải thích cấu hình
- is_default: Tùy chọn mặc định khi khách không chọn
- is_required: Bắt buộc khách hàng phải chọn
- extra_price: Giá phụ thu khi chọn (VNĐ)
BƯỚC 6: Upload ảnh sản phẩm
6.1. Quy trình upload
- Click vào khung "Tải ảnh" trong form
- Chọn file ảnh từ máy tính
- Hệ thống tự động upload lên
- Ảnh được lưu với 2 phiên bản:
- URL gốc: Ảnh full size
- Thumbnail URL: Ảnh thu nhỏ (hiển thị nhanh)
6.2. Yêu cầu ảnh
- Định dạng: JPEG, PNG, JPG, GIF, WebP, SVG
- Kích thước: Tối đa 5MB
- Khuyến nghị: 800x800px, tỷ lệ 1:1
BƯỚC 7: Bán trực tiếp qua Menu nhà hàng
7.1. Kích hoạt bán trực tiếp
Tick vào checkbox "Bán trực tiếp" để hiện form:
┌─── Bán trực tiếp ──────────────────────────┐
│ ☑ Bán trực tiếp │
│ │
│ Nhà hàng*: [Dropdown] Nhà hàng A │
│ Thực đơn*: [Dropdown] Menu đồ uống │
│ Giá tiền*: 28,000 đ │
│ │
│ * Giá tiền có thể khác giá bán mặc định │
└────────────────────────────────────────────┘
7.2. Quy trình
- Chọn Nhà hàng → Hệ thống load danh sách menu
- Chọn Thực đơn cụ thể
- Nhập Giá tiền (có thể khác giá mặc định)
- Lưu → Sản phẩm tự động thêm vào menu
7.3. Lưu ý
- Giá trong menu có thể khác giá mặc định
- Một sản phẩm có thể có nhiều giá ở các menu khác nhau
- Khi cập nhật, giá menu không tự động thay đổi
Ví dụ thực tế
VÍ DỤ 1: Cà phê đen đá
Bước 1: Tạo đơn vị
Mã: LY
Tên: Ly
Bước 2: Tạo danh mục
Danh mục cha:
- Mã: DO-UONG
- Tên: Đồ uống
- Là danh mục cha: ✅
Danh mục con:
- Mã: CAFE
- Tên: Cà phê
- Danh mục cha: Đồ uống
- Là danh mục cha: ❌
Bước 3: Tạo sản phẩm
Tên: Cà phê đen đá
Mã: CAFE-DEN-DA
Đơn vị: Ly
Giá bán: 25,000đ
Danh mục: Cà phê
Loại hàng: Sản phẩm
Phí dịch vụ: 10%
Thuế: 5%
Ghi chú: Cà phê rang xay truyền thống
Bước 4: Cấu hình tùy chọn
Size:
- Size M (mặc định, bắt buộc, +0đ)
- Size L (+5,000đ)
Đá:
- Đá bình thường (mặc định)
- Ít đá
- Nhiều đá
Đường:
- Đường bình thường (mặc định)
- Ít đường
- Không đường
Bước 5: Upload ảnh
File: cafe-den-da.jpg (800x800px, 2MB)
Bước 6: Bán trực tiếp (nếu cần)
☑ Bán trực tiếp
Nhà hàng: Nhà hàng A
Thực đơn: Menu đồ uống
Giá tiền: 28,000đ
VÍ DỤ 2: Phở bò tái
Bước 1: Tạo đơn vị
Mã: TO
Tên: Tô
Bước 2: Tạo danh mục
Danh mục cha:
- Mã: MON-AN
- Tên: Món ăn
- Là danh mục cha: ✅
Danh mục con:
- Mã: PHO
- Tên: Phở
- Danh mục cha: Món ăn
- Là danh mục cha: ❌
Bước 3: Tạo sản phẩm
Tên: Phở bò tái
Mã: PHO-BO-TAI
Đơn vị: Tô
Giá bán: 45,000đ
Danh mục: Phở
Loại hàng: Sản phẩm
Phí dịch vụ: 0%
Thuế: 5%
Ghi chú: Phở bò tái chín, nước dùng đậm đà
Bước 4: Cấu hình tùy chọn
Size:
- Tô nhỏ (mặc định, +0đ)
- Tô lớn (+10,000đ)
Độ cay:
- Không cay (mặc định)
- Cay vừa
- Cay nhiều
Topping:
- Thêm thịt (+15,000đ)
- Thêm trứng (+10,000đ)
- Thêm rau (+5,000đ)
VÍ DỤ 3: Trà sữa trân châu
Thiết lập đầy đủ:
1. ĐƠN VỊ TÍNH:
Mã: LY | Tên: Ly
2. DANH MỤC:
Cha: DO-UONG (Đồ uống) ✅
Con: TRA-SUA (Trà sữa) ❌
3. SẢN PHẨM:
Tên: Trà sữa trân châu
Mã: TRA-SUA-TRAN-CHAU
Đơn vị: Ly
Giá: 30,000đ
Danh mục: Trà sữa
Loại: Sản phẩm
Phí DV: 10%
Thuế: 5%
4. TÙY CHỌN:
├── Size: M (0đ), L (+5,000đ)
├── Đường: Bình thường, Ít đường, Không đường
├── Đá: Bình thường, Ít đá, Không đá
└── Topping: Trân châu (+5,000đ), Thạch (+5,000đ)
5. ẢNH:
File: tra-sua-tran-chau.jpg (800x800px)
6. BÁN TRỰC TIẾP:
☑ Tick
Nhà hàng: Quán A
Menu: Đồ uống
Giá: 35,000đ
Lưu ý quan trọng
⚠️ Quy tắc bắt buộc
-
Mã sản phẩm:
- Phải UNIQUE (duy nhất)
- Format:
[A-Z0-9-_]+ - Không dấu, không khoảng trắng
- Viết HOA toàn bộ
-
Danh mục:
- Chỉ chọn danh mục CON (không phải danh mục cha)
- Phải tạo danh mục trước khi tạo sản phẩm
-
Đơn vị tính:
- Phải tồn tại trước khi tạo sản phẩm
- Mã đơn vị: CHỮ HOA, KHÔNG DẤU
-
Giá:
- Phải là số nguyên dương
- Không vượt quá 12 chữ số
-
Thuế & Phí dịch vụ:
- Giá trị từ 0-100 (%)
- Có thể để trống (mặc định = 0)
💡 Mẹo hay
-
Đặt tên mã:
✅ Tốt: CAFE-DEN-DA, PHO-BO-TAI, TRA-SUA-TRAN-CHAU
❌ Tránh: SP001, PRODUCT-1, ITEM-A -
Phân loại rõ ràng:
- Tạo danh mục cha cho nhóm lớn
- Tạo danh mục con chi tiết
- Không tạo quá sâu (tối đa 2 cấp)
-
Tùy chọn hợp lý:
- Đồ uống: Size, Đá, Đường
- Món ăn: Size, Độ cay, Topping
- Không tạo quá nhiều tùy chọn cho 1 sản phẩm
-
Upload ảnh:
- Dùng ảnh chất lượng cao
- Tỷ lệ 1:1 (vuông)
- Nền sáng, sản phẩm nổi bật
-
Giá bán:
- Giá mặc định: Giá bán lẻ
- Giá menu: Có thể điều chỉnh theo từng địa điểm
- Phụ thu option: Tính hợp lý với chi phí
🔍 Kiểm tra trước khi lưu
✓ Mã sản phẩm: CHỮ HOA, KHÔNG DẤU, KHÔNG KHOẢNG TRẮNG
✓ Danh mục: Đã chọn danh mục CON (không phải cha)
✓ Đơn vị tính: Đã tồn tại trong hệ thống
✓ Giá bán: Là số nguyên dương
✓ Thuế, phí DV: Từ 0-100%
✓ Ảnh: Đúng định dạng, dưới 5MB
✓ Tùy chọn: Đã cấu hình đầy đủ, hợp lý
📊 Action Log
Hệ thống tự động ghi log mọi thao tác:
- CREATE: Tạo sản phẩm mới
- UPDATE: Cập nhật thông tin
- DELETE: Vô hiệu hóa sản phẩm
Log bao gồm:
- Hành động thực hiện
- Dữ liệu trước/sau thay đổi
- Người thực hiện
- Thời gian thực hiện
🔄 Luồng xử lý
1. Validate dữ liệu đầu vào
↓
2. Check trùng mã sản phẩm
↓
3. Check danh mục hợp lệ (phải là danh mục con)
↓
4. Upload ảnh (nếu có)
↓
5. Lưu sản phẩm vào DB
↓
6. Ghi Action Log
↓
7. Nếu có "Bán trực tiếp":
├── Lưu vào menu nhà hàng
└── Ghi log thêm vào menu
↓
8. Trả kết quả
Troubleshooting
Lỗi thường gặp
1. "Mã sản phẩm đã tồn tại"
Nguyên nhân: Mã sản phẩm trùng với sản phẩm khác Giải pháp: Thay đổi mã, thêm số hoặc mô tả chi tiết hơn Ví dụ: CAFE-DEN → CAFE-DEN-DA hoặc CAFE-DEN-NONG
2. "Không thể chọn danh mục cha"
Nguyên nhân: Đã chọn danh mục có is_parent = true Giải pháp: Chọn danh mục con bên dưới danh mục cha Ví dụ: Chọn "Cà phê" thay vì "Đồ uống"
3. "Mã sản phẩm không hợp lệ"
Nguyên nhân: Mã có dấu, khoảng trắng hoặc chữ thường Giải pháp:
❌ cafe-den-da → ✅ CAFE-DEN-DA
❌ Cà phê đen đá → ✅ CAFE-DEN-DA
❌ CAFE DEN DA → ✅ CAFE-DEN-DA
❌ café-đen-đá → ✅ CAFE-DEN-DA
4. "Upload ảnh thất bại"
Nguyên nhân:
- File quá lớn (>5MB)
- Định dạng không hỗ trợ
- Lỗi kết nối Cloudflare
Giải pháp:
- Nén ảnh xuống dưới 5MB
- Chuyển sang định dạng JPEG/PNG
- Kiểm tra cấu hình Cloudflare
5. "Giá phải là số nguyên"
Nguyên nhân: Nhập giá có số thập phân Giải pháp: Làm tròn về số nguyên Ví dụ: 25,500.50 → 25500 hoặc 25501