feat(Inventory): 實作批號溯源完整功能與 UI 呈現,包含文字敘述卡片與更完整的關聯屬性
This commit is contained in:
@@ -175,15 +175,33 @@ export default function Show({ requisition, warehouses }: Props) {
|
||||
};
|
||||
|
||||
const handleApprove = () => {
|
||||
// 確認每個核准數量
|
||||
// 確認每個核准數量與庫存上限
|
||||
for (const item of approvedItems) {
|
||||
const originalItem = requisition.items.find(i => i.id === item.id);
|
||||
if (!originalItem) continue;
|
||||
|
||||
for (const batch of item.batches) {
|
||||
if (batch.qty !== "") {
|
||||
const qty = parseFloat(batch.qty);
|
||||
if (isNaN(qty) || qty < 0) {
|
||||
toast.error("核准數量不能為負數");
|
||||
toast.error("核准數量不能為負數或無效數字");
|
||||
return;
|
||||
}
|
||||
|
||||
// 檢查是否超過批號最大可用庫存
|
||||
if (batch.inventory_id && originalItem.supply_batches) {
|
||||
const originalBatch = originalItem.supply_batches.find(b => b.inventory_id === batch.inventory_id);
|
||||
if (originalBatch && qty > originalBatch.available_qty) {
|
||||
toast.error(`「${originalItem.product_name}」批號 ${originalBatch.batch_number || '無批號'} 數量不可大於庫存上限 (${originalBatch.available_qty})`);
|
||||
return;
|
||||
}
|
||||
} else if (batch.inventory_id === null) {
|
||||
// 無批號情境:檢查總可用庫存
|
||||
if (originalItem.supply_stock !== null && qty > originalItem.supply_stock) {
|
||||
toast.error(`「${originalItem.product_name}」數量不可大於供貨倉庫存上限 (${originalItem.supply_stock})`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user