
🛒 BÀI GIẢNG: APP MUA HÀNG HOÀN CHỈNH
(APPROVAL + EMAIL + DASHBOARD)
🎯 MỤC TIÊU BUỔI HỌC
Sau bài này, học viên sẽ làm được:
✔ Tạo app đề nghị mua hàng hoàn chỉnh
✔ Duyệt 1 cấp (Manager Approval)
✔ Tự động gửi email khi duyệt / từ chối
✔ Xây Dashboard theo dõi chi phí & trạng thái
✔ Hiểu cách xây hệ thống nội bộ thực tế
🧱 TỔNG QUAN KIẾN TRÚC
👉 Flow hệ thống:
Power Apps → SharePoint → Power Automate → Email + Dashboard
📂 PHẦN 1: CHUẨN HÓA DỮ LIỆU (SHAREPOINT)
1.1 List: PurchaseRequests
(giữ giống bài trước, thêm 2 cột mới)
| Cột mới | Kiểu | Ý nghĩa |
|---|---|---|
| ApprovedDate | Date | Ngày duyệt |
| ApprovedBy | Single line | Người duyệt |
💡 Vì sao cần 2 cột này?
- Làm báo cáo theo thời gian
- Biết ai đã duyệt
- Làm dashboard chuẩn doanh nghiệp
🛠️ PHẦN 2: NÂNG CẤP APP (POWER APPS)
2.1 Update nút DUYỆT
👉 Thay code cũ bằng:
Patch(
PurchaseRequests,
ThisItem,
{
Status: "Approved",
ApprovedDate: Today(),
ApprovedBy: User().Email
}
);
Notify("Đã duyệt!", NotificationType.Success)
2.2 Update nút TỪ CHỐI
Patch(
PurchaseRequests,
ThisItem,
{
Status: "Rejected",
ApprovedDate: Today(),
ApprovedBy: User().Email
}
);
Notify("Đã từ chối!", NotificationType.Warning)
💡 Giải thích
User().Email= người đang đăng nhậpToday()= lưu thời điểm duyệt
👉 Đây là dữ liệu cực kỳ quan trọng cho báo cáo
📧 PHẦN 3: POWER AUTOMATE (EMAIL TỰ ĐỘNG)
3.1 Tạo Flow
Trigger:
👉 When an item is modified (SharePoint)
3.2 Thêm Condition
Status = Approved OR Rejected
3.3 Gửi Email
📌 Trường hợp Approved
To: RequesterEmail
Subject: Đơn mua hàng đã được duyệt
Body:
Chào @{RequesterName},
Đề nghị mua hàng của bạn đã được duyệt.
Sản phẩm: @{ItemName}
Số lượng: @{Quantity}
Chi phí: @{EstimatedCost}
Trân trọng.
📌 Trường hợp Rejected
Đề nghị mua hàng của bạn đã bị từ chối.
💡 Lưu ý quan trọng
- Dùng đúng: dynamic content
- Status Value (không phải Status text)
📊 PHẦN 4: DASHBOARD (POWER APPS)
4.1 Tạo màn hình mới
👉 Name: scrDashboard
4.2 Thống kê tổng
Tổng chi phí đã duyệt:
Sum(
Filter(PurchaseRequests, Status = "Approved"),
EstimatedCost
)
Tổng đơn Pending:
CountRows(
Filter(PurchaseRequests, Status = "Pending")
)
Tổng đơn bị từ chối:
CountRows(
Filter(PurchaseRequests, Status = "Rejected")
)
4.3 Biểu đồ (Chart)
👉 Insert → Column Chart
Items:
AddColumns(
GroupBy(PurchaseRequests, "Department", "GroupData"),
"TotalCost",
Sum(GroupData, EstimatedCost)
)
💡 Ý nghĩa Dashboard
- Sếp nhìn được tổng chi phí
- So sánh phòng ban
- Kiểm soát ngân sách
🧪 PHẦN 5: KIỂM THỬ TOÀN HỆ THỐNG
Test 1 – Tạo đề nghị
👉 Status = Pending
Test 2 – Duyệt
👉 Kiểm tra:
- Status → Approved
- Có ApprovedDate
- Có ApprovedBy
Test 3 – Email
👉 Phải nhận mail
Test 4 – Dashboard
👉 Số liệu phải thay đổi ngay
🏁 KẾT QUẢ CUỐI
Bạn đã có:
✅ App mua hàng hoàn chỉnh
✅ Approval workflow chuẩn
✅ Email automation
✅ Dashboard quản lý chi phí
✅ Có thể deploy cho doanh nghiệp thật
🚀 GỢI Ý NÂNG CAO (LEVEL PRO)
- Duyệt 2 cấp (Manager → Director)
- Phân quyền user
- Upload file báo giá
- Tích hợp Power BI
- Tự động tạo PO
💬 THÔNG ĐIỆP CHO HỌC VIÊN
Đây không còn là bài học nữa.
Đây là một hệ thống thật bạn có thể triển khai ngay tại công ty.