管理採購單的商品金額修正
This commit is contained in:
@@ -50,8 +50,7 @@ export function PurchaseOrderItemsTable({
|
||||
<TableHead className="w-[10%] text-left">數量</TableHead>
|
||||
<TableHead className="w-[12%] text-left">單位</TableHead>
|
||||
<TableHead className="w-[12%] text-left">換算基本單位</TableHead>
|
||||
<TableHead className="w-[12%] text-left">金額</TableHead>
|
||||
<TableHead className="w-[12%] text-left">小計</TableHead>
|
||||
<TableHead className="w-[15%] text-left">總金額</TableHead>
|
||||
<TableHead className="w-[15%] text-left">單價 / 基本單位</TableHead>
|
||||
{!isReadOnly && <TableHead className="w-[5%]"></TableHead>}
|
||||
</TableRow>
|
||||
@@ -60,7 +59,7 @@ export function PurchaseOrderItemsTable({
|
||||
{items.length === 0 ? (
|
||||
<TableRow>
|
||||
<TableCell
|
||||
colSpan={isReadOnly ? 7 : 8}
|
||||
colSpan={isReadOnly ? 6 : 7}
|
||||
className="text-center text-gray-400 py-12 italic"
|
||||
>
|
||||
{isDisabled ? "請先選擇供應商後才能新增商品" : "尚未新增任何商品項"}
|
||||
@@ -69,9 +68,12 @@ export function PurchaseOrderItemsTable({
|
||||
) : (
|
||||
items.map((item, index) => {
|
||||
// 計算換算後的單價 (基本單位單價)
|
||||
// unitPrice is derived from subtotal / quantity
|
||||
const currentUnitPrice = item.unitPrice;
|
||||
|
||||
const convertedUnitPrice = item.selectedUnit === 'large' && item.conversion_rate
|
||||
? item.unitPrice / item.conversion_rate
|
||||
: item.unitPrice;
|
||||
? currentUnitPrice / item.conversion_rate
|
||||
: currentUnitPrice;
|
||||
|
||||
return (
|
||||
<TableRow key={index}>
|
||||
@@ -162,44 +164,39 @@ export function PurchaseOrderItemsTable({
|
||||
</div>
|
||||
</TableCell>
|
||||
|
||||
{/* 單價 */}
|
||||
{/* 總金額 (主要輸入欄位) */}
|
||||
<TableCell className="text-left">
|
||||
{isReadOnly ? (
|
||||
<span className="font-medium text-gray-900">{formatCurrency(item.unitPrice)}</span>
|
||||
<span className="font-bold text-primary">{formatCurrency(item.subtotal)}</span>
|
||||
) : (
|
||||
<div className="space-y-1">
|
||||
<Input
|
||||
type="number"
|
||||
min="0"
|
||||
step="0.1"
|
||||
value={item.unitPrice || ""}
|
||||
step="1"
|
||||
value={item.subtotal || ""}
|
||||
onChange={(e) =>
|
||||
onItemChange?.(index, "unitPrice", Number(e.target.value))
|
||||
onItemChange?.(index, "subtotal", Number(e.target.value))
|
||||
}
|
||||
disabled={isDisabled}
|
||||
className={`h-10 text-left w-32 ${
|
||||
// 如果有數量但沒有單價,顯示錯誤樣式
|
||||
item.quantity > 0 && (!item.unitPrice || item.unitPrice <= 0)
|
||||
// 如果有數量但沒有金額,顯示錯誤樣式
|
||||
item.quantity > 0 && (!item.subtotal || item.subtotal <= 0)
|
||||
? "border-red-400 bg-red-50 focus-visible:ring-red-500"
|
||||
: "border-gray-200"
|
||||
}`}
|
||||
/>
|
||||
{/* 錯誤提示 (保留必填提示) */}
|
||||
{item.quantity > 0 && (!item.unitPrice || item.unitPrice <= 0) && (
|
||||
{/* 錯誤提示 */}
|
||||
{item.quantity > 0 && (!item.subtotal || item.subtotal <= 0) && (
|
||||
<p className="text-[10px] text-red-600 font-medium">
|
||||
❌ 請填寫金額
|
||||
❌ 請填寫總金額
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</TableCell>
|
||||
|
||||
{/* 小計 */}
|
||||
<TableCell className="text-left">
|
||||
<span className="font-bold text-primary">{formatCurrency(item.subtotal)}</span>
|
||||
</TableCell>
|
||||
|
||||
{/* 換算採購單價 / 基本單位 */}
|
||||
{/* 換算採購單價 / 基本單位 (顯示換算結果) */}
|
||||
<TableCell className="text-left">
|
||||
<div className="flex flex-col">
|
||||
<div className="text-gray-500 font-medium text-sm">
|
||||
|
||||
Reference in New Issue
Block a user