Quay lại blog
power platform8 phút đọc

Xây dựng ứng dụng quản lý kho hàng với Power Apps

Hướng dẫn thực tế xây dựng app quản lý tồn kho với Microsoft Power Apps — kết nối Dataverse, barcode scanning và tích hợp Power Automate.

V
Bởi Ventra Rocket
·Đăng ngày 1 tháng 3, 2026
#Power Apps#Dataverse#Inventory#Low-Code#Microsoft 365

Power Apps cho phép doanh nghiệp xây dựng ứng dụng nghiệp vụ mà không cần đội ngũ lập trình lớn. Bài viết này hướng dẫn xây dựng app quản lý kho hàng đầy đủ tính năng: nhập/xuất kho, quét barcode, cảnh báo tồn kho thấp và báo cáo real-time.

1. Thiết kế Data Model với Dataverse

Dataverse là backend database của Power Platform, tối ưu cho ứng dụng doanh nghiệp.

Các bảng cần tạo:

Products (Bảng sản phẩm)

  • product_id — Auto Number
  • product_name — Text (required)
  • sku — Text (unique)
  • category — Choice (Electronics, Clothing, Food, Other)
  • unit_price — Currency
  • reorder_point — Whole Number
  • current_stock — Whole Number (calculated)

Stock Movements (Lịch sử nhập/xuất)

  • movement_id — Auto Number
  • product — Lookup → Products
  • movement_type — Choice (Inbound, Outbound, Adjustment)
  • quantity — Whole Number
  • reference — Text (số PO hoặc SO)
  • created_by — Lookup → Users
  • created_at — Date Time (auto)

Warehouses (Kho hàng)

  • warehouse_id — Auto Number
  • name — Text
  • location — Text
  • manager — Lookup → Users

2. Xây dựng màn hình chính

Home Screen — Dashboard tổng quan

Sử dụng Gallery control để hiển thị danh sách sản phẩm sắp hết hàng:

// Formula cho Gallery "Low Stock Alert"
Filter(
    Products,
    current_stock <= reorder_point,
    status = "Active"
)

Thêm Chart control để hiển thị stock by category:

// Data source cho Pie Chart
GroupBy(
    Products,
    "category",
    "Products"
)

Stock In Screen — Nhập kho

Barcode Scanner control (chỉ có trên Canvas App mobile):

// OnScan property của BarcodeReader
Set(
    varScannedProduct,
    LookUp(Products, sku = BarcodeReader1.Value)
);
If(
    IsBlank(varScannedProduct),
    Notify("Không tìm thấy sản phẩm: " & BarcodeReader1.Value, NotificationType.Error),
    Navigate(StockInDetail, ScreenTransition.Slide)
)

3. Công thức xử lý Nhập kho

// OnSelect của nút "Xác nhận nhập kho"
If(
    IsBlank(txtQuantity.Text) || Value(txtQuantity.Text) <= 0,
    Notify("Vui lòng nhập số lượng hợp lệ", NotificationType.Warning),

    // Tạo stock movement record
    Patch(
        'Stock Movements',
        Defaults('Stock Movements'),
        {
            product: varScannedProduct,
            movement_type: "Inbound",
            quantity: Value(txtQuantity.Text),
            reference: txtReference.Text,
            notes: txtNotes.Text
        }
    );

    // Cập nhật tồn kho sản phẩm
    Patch(
        Products,
        varScannedProduct,
        {
            current_stock: varScannedProduct.current_stock + Value(txtQuantity.Text)
        }
    );

    Notify(
        "Nhập kho thành công: " & txtQuantity.Text & " " & varScannedProduct.product_name,
        NotificationType.Success
    );
    Navigate(HomeScreen, ScreenTransition.Fade)
)

4. Tích hợp Power Automate cho cảnh báo

Tạo Flow tự động gửi cảnh báo khi tồn kho xuống dưới reorder point.

Trigger: When a row is modified (Dataverse) — bảng Products

Condition: current_stock <= reorder_point

Action: Gửi email + Teams message cho warehouse manager.

Gọi flow từ Power Apps:

// Gọi flow khi stock thay đổi
If(
    updatedProduct.current_stock <= updatedProduct.reorder_point,
    LowStockAlertFlow.Run(
        updatedProduct.product_name,
        Text(updatedProduct.current_stock),
        Text(updatedProduct.reorder_point),
        updatedProduct.manager.'Primary Email'
    )
)

5. Báo cáo với Power BI Embedded

Nhúng Power BI report trực tiếp vào Power Apps:

  1. Thêm Power BI Tile control
  2. Workspace: chọn workspace của bạn
  3. Dashboard: Inventory Overview
  4. Tile: Stock Level Chart

Người dùng có thể xem báo cáo real-time mà không cần rời khỏi app.

6. Phân quyền với Azure AD Groups

// Kiểm tra quyền trong App.OnStart
Set(
    varUserRole,
    Switch(
        User().Email,
        "admin@company.com", "Admin",
        If(
            !IsBlank(LookUp(WarehouseManagers, email = User().Email)),
            "Manager",
            "Staff"
        )
    )
);

// Ẩn/hiện tính năng theo role
Visible(btnAdjustStock) = varUserRole in ["Admin", "Manager"]

Kết luận

Power Apps cho phép xây dựng app quản lý kho hoàn chỉnh trong vòng 1-2 tuần, với chi phí thấp hơn nhiều so với phần mềm ERP truyền thống. Kết hợp với Dataverse, Power Automate và Power BI, doanh nghiệp có một hệ thống quản lý kho đầy đủ, tích hợp sâu với Microsoft 365.

Bài viết liên quan

Xây dựng ứng dụng quản lý kho hàng với Power Apps | Ventra Rocket