/**
* 安全庫存列表組件
*/
import { Trash2, Pencil } from "lucide-react";
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@/Components/ui/table";
import { Button } from "@/Components/ui/button";
import { SafetyStockSetting, WarehouseInventory, SafetyStockStatus } from "@/types/warehouse";
import { StatusBadge } from "@/Components/shared/StatusBadge";
interface SafetyStockListProps {
settings: SafetyStockSetting[];
inventories: WarehouseInventory[];
onEdit: (setting: SafetyStockSetting) => void;
onDelete: (id: string) => void;
}
// 計算安全庫存狀態
function getSafetyStockStatus(
currentStock: number,
safetyStock: number
): SafetyStockStatus {
const ratio = currentStock / safetyStock;
if (ratio >= 1.2) return "正常";
if (ratio >= 1.0) return "接近";
return "低於";
}
// 獲取狀態徽章
function getStatusBadge(status: SafetyStockStatus) {
if (status === '正常') {
return (
正常
);
}
if (status === '接近') {
return (
接近
);
}
if (status === '低於') {
return (
低於
);
}
return null; // Should not happen if SafetyStockStatus is exhaustive
}
export default function SafetyStockList({
settings,
inventories,
onEdit,
onDelete,
}: SafetyStockListProps) {
if (settings.length === 0) {
return (
尚未設定任何安全庫存
點擊「新增安全庫存」開始設定
);
}
// 計算每個商品的目前總庫存
const getCurrentStock = (productId: string): number => {
return inventories
.filter((inv) => inv.productId === productId)
.reduce((sum, inv) => sum + inv.quantity, 0);
};
return (
#
商品名稱
商品類型
目前庫存
安全庫存
狀態
操作
{settings.map((setting, index) => {
const currentStock = getCurrentStock(setting.productId);
const status = getSafetyStockStatus(currentStock, setting.safetyStock);
const isLowStock = status === "低於";
return (
{index + 1}
{setting.productName}
{setting.productType}
{currentStock}
{setting.safetyStock}
{getStatusBadge(status)}
);
})}
);
}