-- ================================================
-- 🧩 PERMISSIONS SEED DATA (UTF-8 READY)
-- ================================================
-- ⚙️ Yêu cầu: Bảng permissions phải có:
-- permission_id VARCHAR(36) PRIMARY KEY
-- permission_code VARCHAR(100)
-- permission_name VARCHAR(100)
-- group_code VARCHAR(50)
-- group_name VARCHAR(100)
-- description TEXT
-- created_at TIMESTAMP
-- updated_at TIMESTAMP

SET NAMES utf8mb4;

SET CHARACTER SET utf8mb4;

DELETE FROM permissions;

INSERT INTO
    permissions (
        permission_id,
        permission_code,
        permission_name,
        group_code,
        group_name,
        description,
        created_at,
        updated_at
    )
VALUES
    -- ================== ORDER ==================
    (
        UUID(),
        'order.create',
        'Tạo đơn hàng',
        'order',
        'Đơn hàng',
        'Quyền tạo đơn hàng',
        NOW(),
        NOW()
    ),
    (
        UUID(),
        'order.read',
        'Xem đơn hàng',
        'order',
        'Đơn hàng',
        'Quyền xem danh sách đơn hàng',
        NOW(),
        NOW()
    ),
    (
        UUID(),
        'order.readById',
        'Xem chi tiết đơn hàng',
        'order',
        'Đơn hàng',
        'Quyền xem chi tiết đơn hàng',
        NOW(),
        NOW()
    ),
    (
        UUID(),
        'order.update',
        'Cập nhật đơn hàng',
        'order',
        'Đơn hàng',
        'Quyền cập nhật đơn hàng',
        NOW(),
        NOW()
    ),
    (
        UUID(),
        'order.delete',
        'Xóa đơn hàng',
        'order',
        'Đơn hàng',
        'Quyền xóa đơn hàng',
        NOW(),
        NOW()
    ),
    (
        UUID(),
        'order.return',
        'Trả đơn hàng',
        'order',
        'Đơn hàng',
        'Quyền trả đơn hàng',
        NOW(),
        NOW()
    ),
    (
        UUID(),
        'order.readReturn',
        'Xem đơn trả hàng',
        'order',
        'Đơn hàng',
        'Quyền xem danh sách đơn trả hàng',
        NOW(),
        NOW()
    ),
    (
        UUID(),
        'order.readReturnById',
        'Xem chi tiết đơn trả hàng',
        'order',
        'Đơn hàng',
        'Quyền xem chi tiết đơn trả hàng',
        NOW(),
        NOW()
    ),
    (
        UUID(),
        'order.getOrderTransactionLedger',
        'Xem lịch sử thanh toán',
        'order',
        'Đơn hàng',
        'Quyền xem lịch sử thanh toán đơn hàng',
        NOW(),
        NOW()
    ),
    (
        UUID(),
        'order.getReturns',
        'Xem lịch sử trả hàng',
        'order',
        'Đơn hàng',
        'Quyền xem lịch sử trả hàng',
        NOW(),
        NOW()
    ),

-- ================== CUSTOMER ==================
(
    UUID(),
    'customer.importFromText',
    'Import dữ liệu KH',
    'customer',
    'Khách hàng',
    'Quyền import dữ liệu khách hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'customer.create',
    'Tạo khách hàng',
    'customer',
    'Khách hàng',
    'Quyền tạo khách hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'customer.read',
    'Xem danh sách khách hàng',
    'customer',
    'Khách hàng',
    'Quyền xem danh sách khách hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'customer.readById',
    'Xem chi tiết khách hàng',
    'customer',
    'Khách hàng',
    'Quyền xem chi tiết khách hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'customer.update',
    'Cập nhật khách hàng',
    'customer',
    'Khách hàng',
    'Quyền cập nhật thông tin khách hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'customer.delete',
    'Xóa khách hàng',
    'customer',
    'Khách hàng',
    'Quyền xóa khách hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'customer.getCustomerOrderHistory',
    'Lịch sử bán trả',
    'customer',
    'Khách hàng',
    'Quyền xem lịch sử bán trả',
    NOW(),
    NOW()
),
(
    UUID(),
    'customer.getCustomerTransactionLedger',
    'Công nợ khách hàng',
    'customer',
    'Khách hàng',
    'Quyền xem công nợ khách hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'customer.recordBulkPayment',
    'Thanh toán công nợ khách hàng',
    'customer',
    'Khách hàng',
    'Quyền thanh toán công nợ khách hàng',
    NOW(),
    NOW()
),

-- ================== PRODUCT ==================
(
    UUID(),
    'product.create',
    'Tạo sản phẩm',
    'product',
    'Sản phẩm',
    'Quyền tạo sản phẩm',
    NOW(),
    NOW()
),
(
    UUID(),
    'product.read',
    'Xem sản phẩm',
    'product',
    'Sản phẩm',
    'Quyền xem sản phẩm',
    NOW(),
    NOW()
),
(
    UUID(),
    'product.update',
    'Cập nhật sản phẩm',
    'product',
    'Sản phẩm',
    'Quyền cập nhật sản phẩm',
    NOW(),
    NOW()
),
(
    UUID(),
    'product.delete',
    'Xóa sản phẩm',
    'product',
    'Sản phẩm',
    'Quyền xóa sản phẩm',
    NOW(),
    NOW()
),

-- ================== CATEGORY ==================
(
    UUID(),
    'category.create',
    'Tạo danh mục sản phẩm',
    'category',
    'Danh mục sản phẩm',
    'Quyền tạo danh mục sản phẩm',
    NOW(),
    NOW()
),
(
    UUID(),
    'category.read',
    'Xem danh mục sản phẩm',
    'category',
    'Danh mục sản phẩm',
    'Quyền xem danh mục sản phẩm',
    NOW(),
    NOW()
),
(
    UUID(),
    'category.update',
    'Cập nhật danh mục sản phẩm',
    'category',
    'Danh mục sản phẩm',
    'Quyền cập nhật danh mục sản phẩm',
    NOW(),
    NOW()
),
(
    UUID(),
    'category.delete',
    'Xóa danh mục sản phẩm',
    'category',
    'Danh mục sản phẩm',
    'Quyền xóa danh mục sản phẩm',
    NOW(),
    NOW()
),

-- ================== PURCHASE ORDER ==================
(
    UUID(),
    'purchase.create',
    'Tạo đơn nhập hàng',
    'purchase_order',
    'Đơn nhập hàng',
    'Quyền tạo đơn nhập hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'purchase.read',
    'Xem đơn nhập hàng',
    'purchase_order',
    'Đơn nhập hàng',
    'Quyền xem đơn nhập hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'purchase.readById',
    'Xem chi tiết đơn nhập hàng',
    'purchase_order',
    'Đơn nhập hàng',
    'Quyền xem chi tiết đơn nhập hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'purchase.update',
    'Cập nhật đơn nhập hàng',
    'purchase_order',
    'Đơn nhập hàng',
    'Quyền cập nhật đơn nhập hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'purchase.delete',
    'Xóa đơn nhập hàng',
    'purchase_order',
    'Đơn nhập hàng',
    'Quyền xóa đơn nhập hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'purchase.return',
    'Trả đơn nhập hàng',
    'purchase_order',
    'Đơn nhập hàng',
    'Quyền trả đơn nhập hàng',
    NOW(),
    NOW()
),
(
    UUID(),
    'purchase.readReturn',
    'Xem đơn trả hàng nhập',
    'purchase_order',
    'Đơn nhập hàng',
    'Quyền xem đơn trả hàng nhập',
    NOW(),
    NOW()
),
(
    UUID(),
    'purchase.readReturnById',
    'Xem chi tiết đơn trả hàng nhập',
    'purchase_order',
    'Đơn nhập hàng',
    'Quyền xem chi tiết đơn trả hàng nhập',
    NOW(),
    NOW()
),

-- ================== SUPPLIER ==================
(
    UUID(),
    'supplier.importFromText',
    'Import dữ liệu NCC',
    'supplier',
    'Nhà cung cấp',
    'Quyền import dữ liệu nhà cung cấp',
    NOW(),
    NOW()
),
(
    UUID(),
    'supplier.create',
    'Tạo nhà cung cấp',
    'supplier',
    'Nhà cung cấp',
    'Quyền tạo nhà cung cấp',
    NOW(),
    NOW()
),
(
    UUID(),
    'supplier.read',
    'Xem nhà cung cấp',
    'supplier',
    'Nhà cung cấp',
    'Quyền xem nhà cung cấp',
    NOW(),
    NOW()
),
(
    UUID(),
    'supplier.readById',
    'Xem chi tiết nhà cung cấp',
    'supplier',
    'Nhà cung cấp',
    'Quyền xem chi tiết nhà cung cấp',
    NOW(),
    NOW()
),
(
    UUID(),
    'supplier.update',
    'Cập nhật nhà cung cấp',
    'supplier',
    'Nhà cung cấp',
    'Quyền cập nhật nhà cung cấp',
    NOW(),
    NOW()
),
(
    UUID(),
    'supplier.delete',
    'Xóa nhà cung cấp',
    'supplier',
    'Nhà cung cấp',
    'Quyền xóa nhà cung cấp',
    NOW(),
    NOW()
),
(
    UUID(),
    'supplier.getSupplierPOHistory',
    'Lịch sử nhập trả',
    'supplier',
    'Nhà cung cấp',
    'Quyền xem lịch sử nhập trả',
    NOW(),
    NOW()
),
(
    UUID(),
    'supplier.getSupplierTransactionLedger',
    'Công nợ nhà cung cấp',
    'supplier',
    'Nhà cung cấp',
    'Quyền xem công nợ nhà cung cấp',
    NOW(),
    NOW()
),
(
    UUID(),
    'supplier.recordBulkPayment',
    'Thanh toán công nợ nhà cung cấp',
    'supplier',
    'Nhà cung cấp',
    'Quyền thanh toán công nợ nhà cung cấp',
    NOW(),
    NOW()
),

-- ================== WAREHOUSE ==================
(
    UUID(),
    'warehouse.create',
    'Tạo kho',
    'warehouse',
    'Kho hàng',
    'Quyền tạo kho',
    NOW(),
    NOW()
),
(
    UUID(),
    'warehouse.read',
    'Xem kho',
    'warehouse',
    'Kho hàng',
    'Quyền xem kho',
    NOW(),
    NOW()
),
(
    UUID(),
    'warehouse.update',
    'Cập nhật kho',
    'warehouse',
    'Kho hàng',
    'Quyền cập nhật kho',
    NOW(),
    NOW()
),
(
    UUID(),
    'warehouse.delete',
    'Xóa kho',
    'warehouse',
    'Kho hàng',
    'Quyền xóa kho',
    NOW(),
    NOW()
),

-- ================== INVENTORY ==================
(
    UUID(),
    'inventory.read',
    'Xem tồn kho',
    'inventory',
    'Tồn kho',
    'Quyền xem tồn kho',
    NOW(),
    NOW()
),
(
    UUID(),
    'inventory.readById',
    'Xem chi tiết tồn kho',
    'inventory',
    'Tồn kho',
    'Quyền xem chi tiết tồn kho',
    NOW(),
    NOW()
),
(
    UUID(),
    'inventory.getStockLedger',
    'Thẻ kho',
    'inventory',
    'Tồn kho',
    'Quyền xem thẻ kho',
    NOW(),
    NOW()
),
(
    UUID(),
    'inventory.stockIncrease',
    'Tăng tồn kho',
    'inventory',
    'Tồn kho',
    'Quyền tăng tồn kho',
    NOW(),
    NOW()
),
(
    UUID(),
    'inventory.stockDecrease',
    'Giảm tồn kho',
    'inventory',
    'Tồn kho',
    'Quyền giảm tồn kho',
    NOW(),
    NOW()
),

-- ================== CASHBOOK ==================
(
    UUID(),
    'cashbook.createPayment',
    'Tạo phiếu chi',
    'cashbook',
    'Sổ quỹ',
    'Quyền tạo phiếu chi',
    NOW(),
    NOW()
),
(
    UUID(),
    'cashbook.createReceipt',
    'Tạo phiếu thu',
    'cashbook',
    'Sổ quỹ',
    'Quyền tạo phiếu thu',
    NOW(),
    NOW()
),
(
    UUID(),
    'cashbook.read',
    'Xem giao dịch',
    'cashbook',
    'Sổ quỹ',
    'Quyền xem giao dịch',
    NOW(),
    NOW()
),
(
    UUID(),
    'cashbook.readById',
    'Xem chi tiết giao dịch',
    'cashbook',
    'Sổ quỹ',
    'Quyền xem chi tiết giao dịch',
    NOW(),
    NOW()
),
(
    UUID(),
    'cashbook.update',
    'Cập nhật giao dịch',
    'cashbook',
    'Sổ quỹ',
    'Quyền cập nhật giao dịch',
    NOW(),
    NOW()
),
(
    UUID(),
    'cashbook.delete',
    'Xóa giao dịch',
    'cashbook',
    'Sổ quỹ',
    'Quyền xóa giao dịch',
    NOW(),
    NOW()
);