import { useState, useEffect } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, } from "@/Components/ui/dialog"; import { Button } from "@/Components/ui/button"; import { Input } from "@/Components/ui/input"; import { Label } from "@/Components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/Components/ui/select"; import { AlertCircle } from "lucide-react"; interface BatchAdjustmentModalProps { isOpen: boolean; onClose: () => void; onConfirm: (data: { operation: "add" | "subtract" | "set"; quantity: number; reason: string; }) => void; batch?: { id: string; batchNumber: string; currentQuantity: number; productName: string; }; processing?: boolean; } export default function BatchAdjustmentModal({ isOpen, onClose, onConfirm, batch, processing = false, }: BatchAdjustmentModalProps) { const [operation, setOperation] = useState<"add" | "subtract" | "set">("add"); const [quantity, setQuantity] = useState(""); const [reason, setReason] = useState("手動調整庫存"); // 當開啟時重置 useEffect(() => { if (isOpen) { setOperation("add"); setQuantity(""); setReason("手動調整庫存"); } }, [isOpen]); const handleConfirm = () => { const numQty = parseFloat(quantity); if (isNaN(numQty) || numQty <= 0 && operation !== "set") { return; } onConfirm({ operation, quantity: numQty, reason, }); }; const previewQuantity = () => { if (!batch) return 0; const numQty = parseFloat(quantity) || 0; if (operation === "add") return batch.currentQuantity + numQty; if (operation === "subtract") return Math.max(0, batch.currentQuantity - numQty); if (operation === "set") return numQty; return batch.currentQuantity; }; if (!batch) return null; return ( !open && onClose()}> 庫存調整 - {batch.productName}
批號: {batch.batchNumber || "-"}
當前數量: {batch.currentQuantity}
setQuantity(e.target.value)} placeholder="請輸入數量" />
setReason(e.target.value)} placeholder="例:手動盤點修正" />
調整後預計數量: {previewQuantity()}
); }