feat: 倉庫業務屬性、庫存成本追蹤與採購單功能更新
1. 倉庫管理:新增業務類型 (Owned/External/Customer) 與車牌資訊與司機欄位。 2. 庫存管理:實作成本追蹤 (unit_cost, total_value),更新列表與撥補單顯示。 3. 採購單:新增採購日期 (order_date),調整欄位名稱與順序。 4. 前端優化:更新相關 TS Type 定義與 UI 顯示。
This commit is contained in:
@@ -147,14 +147,21 @@ export default function InventoryTable({
|
||||
<div className="flex items-center gap-4">
|
||||
<div className="text-sm">
|
||||
<span className="text-gray-600">
|
||||
總庫存:<span className={`font-medium ${isLowStock ? "text-red-600" : "text-gray-900"}`}>{totalQuantity} 個</span>
|
||||
總庫存:<span className={`font-medium ${isLowStock ? "text-red-600" : "text-gray-900"}`}>{totalQuantity} {group.baseUnit}</span>
|
||||
</span>
|
||||
</div>
|
||||
<Can permission="inventory.view_cost">
|
||||
<div className="text-sm">
|
||||
<span className="text-gray-600">
|
||||
總價值:<span className="font-medium text-gray-900">${group.totalValue?.toLocaleString()}</span>
|
||||
</span>
|
||||
</div>
|
||||
</Can>
|
||||
{group.safetyStock !== null ? (
|
||||
<>
|
||||
<div className="text-sm">
|
||||
<span className="text-gray-600">
|
||||
安全庫存:<span className="font-medium text-gray-900">{group.safetyStock} 個</span>
|
||||
安全庫存:<span className="font-medium text-gray-900">{group.safetyStock} {group.baseUnit}</span>
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
@@ -193,11 +200,14 @@ export default function InventoryTable({
|
||||
<TableRow>
|
||||
<TableHead className="w-[5%]">#</TableHead>
|
||||
<TableHead className="w-[12%]">批號</TableHead>
|
||||
<TableHead className="w-[12%]">庫存數量</TableHead>
|
||||
<TableHead className="w-[15%]">進貨編號</TableHead>
|
||||
<TableHead className="w-[14%]">保存期限</TableHead>
|
||||
<TableHead className="w-[14%]">最新入庫</TableHead>
|
||||
<TableHead className="w-[14%]">最新出庫</TableHead>
|
||||
<TableHead className="w-[10%]">庫存數量</TableHead>
|
||||
<Can permission="inventory.view_cost">
|
||||
<TableHead className="w-[10%]">單位成本</TableHead>
|
||||
<TableHead className="w-[10%]">總價值</TableHead>
|
||||
</Can>
|
||||
<TableHead className="w-[12%]">保存期限</TableHead>
|
||||
<TableHead className="w-[12%]">最新入庫</TableHead>
|
||||
<TableHead className="w-[12%]">最新出庫</TableHead>
|
||||
<TableHead className="w-[8%] text-right">操作</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
@@ -208,9 +218,12 @@ export default function InventoryTable({
|
||||
<TableCell className="text-grey-2">{index + 1}</TableCell>
|
||||
<TableCell>{batch.batchNumber || "-"}</TableCell>
|
||||
<TableCell>
|
||||
<span>{batch.quantity}</span>
|
||||
<span>{batch.quantity} {batch.unit}</span>
|
||||
</TableCell>
|
||||
<TableCell>{batch.batchNumber || "-"}</TableCell>
|
||||
<Can permission="inventory.view_cost">
|
||||
<TableCell>${batch.unit_cost?.toLocaleString()}</TableCell>
|
||||
<TableCell>${batch.total_value?.toLocaleString()}</TableCell>
|
||||
</Can>
|
||||
<TableCell>
|
||||
{batch.expiryDate ? formatDate(batch.expiryDate) : "-"}
|
||||
</TableCell>
|
||||
|
||||
Reference in New Issue
Block a user