Xem giá + GM%/đèn → Duyệt hoặc Từ chối. Chốt giá snapshot & khoá khi duyệt.
⏳ 0 đề xuất giá đang chờ duyệt
📥 Hàng đợi duyệt
🔄 Khi PM sửa giá đã 'Đã duyệt' → tự reset về 'Nháp' → bắt buộc duyệt lại (tránh đổi giá sau lưng CEO). Mọi thao tác ghi Version History.
🧾
Pricing Management
View gộp Offline + Online (đã duyệt). Finance / Sales Admin & CEO xem & xuất bán.
✅ Chỉ hiển thị các dòng giá đã được CEO duyệt (TrangThaiDuyet = 'Đã duyệt')
Model
Kênh
Đại lý
Giá (VND)
GM%
Đèn
Người duyệt
TT
🔗 GM% Online tính trên Min Price; GM% Offline tính trên Giá đại lý từng account. Cả hai dùng chung Cost_VND từ Cost_Master (Finance-only).
📦
PM — Đề xuất đặt hàng (PO)
Hệ thống kiểm tra EXW khớp master — lệch là CHẶN, không cho gửi duyệt.
🔍
Trạng thái:● Bị chặn
—
Variance EXW so với master
—
PM kiểm tra: hệ thống sai → gửi cập nhật giá. PM nhập sai → sửa lại EXW.
🚧 Quy tắc CHẶN: |Variance| > ngưỡng (mặc định 0% = phải khớp) → khoá nút 'Gửi CEO duyệt'. Giá vốn đặt hàng luôn đồng bộ master.
✅
CEO — Duyệt đặt hàng (PO)
Duyệt PR đã khớp EXW. Nội dung: Model, SL, EXW, Giá trị đơn.
⏳ 0 PR chờ duyệt
📥 Hàng đợi PO
🔔 Khi duyệt → tự thông báo Logistics (Teams + Email tóm tắt PO) & tạo PO PDF nháp từ template Word.
🚚
Logistics — Đặt hàng hãng
Chỉ thấy EXW + thông tin đơn để đặt hàng & xuất PO. KHÔNG thấy giá bán / cost / GM%.
🔔 0 PO mới đã CEO duyệt — cần đặt hàng
PR_ID
Model
SL
EXW (USD)
Giá trị đơn
Trạng thái đơn
Hành động
🔒 Logistics CHỈ thấy EXW + thông tin đơn; KHÔNG thấy giá bán / cost / GM%. Mọi thao tác có audit (Version History).
⚙️
Cài đặt & Phân quyền
Cấu hình hệ thống, chế độ hiển thị & ma trận quyền truy cập.
🎚️ Giả định (Finance-only)
🔒 ER / LOP / VAT chỉ Finance & service account chỉnh. Đổi giá trị → GM% các SP liên quan tự cập nhật.
👁️ Chế độ hiển thị GM%
Hiện GM% cho PMPM thấy số % cụ thể (có thể suy ra cost = Giá×(1−GM%))
Chế độ "chỉ đèn" (bảo mật cao nhất)PM chỉ thấy 🟢/🟡/🔴 — không suy ra được cost
EXW Variance = phải khớp (0%)Chặn PO nếu EXW lệch master
✅ Tất cả phép tính cost & Variance chạy server-side qua service account. PM không bao giờ đọc Cost_Master.
🔐 Phân quyền theo vai trò — chỉ Admin chỉnh · tự lưu
✅ Tích ô để cấp quyền. Cột Admin luôn bật. Thay đổi áp dụng & lưu ngay (localStorage).
🗄️ Lưu trữ dữ liệu — SharePoint List (Microsoft Graph)
Nguồn lưu trữDemo (localStorage) — dữ liệu lưu trên trình duyệt
🔑 Azure AD / Graph
⚪ Chưa kết nối Graph
🗂️ Site & danh sách List
Cột map theo thiết kế: Title=Model, Channel, Account, Price, GMPercent, Light, Status, Proposer · PR: PRID, Model, Qty, EXW, OrderValue, Status, OrderStatus. Chỉnh internal name ở mục map cột nếu khác.
📊 Tình trạng đồng bộ SharePoint
⚪ Chưa kiểm tra — bấm "Kiểm tra tình trạng".
Thời điểm
Thao tác
List
Kết quả
Chưa có nhật ký ghi SharePoint
👥 Tài khoản M365 & phân quyền vai trò
Đồng bộ danh sách user từ Microsoft 365, gán vai trò cho từng người. Khi user đăng nhập M365, app tự áp đúng vai trò đã gán. Mặc định son.vo@mekogroup.vn = Admin.
Tên
Email
Vai trò
Chưa đồng bộ — bấm "Đồng bộ tài khoản từ M365"
🟢 User đã phân quyền — trạng thái online
—
Tên
Email
Vai trò
Trạng thái
Chưa có dữ liệu
🟢 Online · 🟡 Vắng mặt · 🔴 Bận · ⚫ Offline. Cần quyền Presence.Read.All + đã đồng bộ tài khoản (để lấy ID). Trạng thái lấy thời điểm bấm cập nhật.
🛡️ Bảo mật cốt lõi
Ngắt kế thừa quyền Cost_Master & Assumptions. Không đặt cột calculated chứa Cost trên Product_Pricing (tránh lộ qua API/export).
📝 Audit
Version History của List ghi nhận đầy đủ người đề xuất / người duyệt / thời gian — truy vết ai đổi gì, khi nào.
🧩 Tích hợp
SharePointPower AutomateApprovalsTeamsWord→PDF
PPM — Pricing & Procurement Management · Microsoft 365 / SharePoint Online + Power Automate · 18/06/2026