更新採購單跟商品資料一些bug
This commit is contained in:
@@ -62,7 +62,10 @@ class PurchaseOrderController extends Controller
|
||||
return [
|
||||
'productId' => (string) $product->id,
|
||||
'productName' => $product->name,
|
||||
'unit' => $product->base_unit,
|
||||
'unit' => $product->purchase_unit ?: ($product->large_unit ?: $product->base_unit), // 優先使用採購單位 > 大單位 > 基本單位
|
||||
'base_unit' => $product->base_unit,
|
||||
'purchase_unit' => $product->purchase_unit ?: $product->large_unit, // 若無採購單位,預設為大單位
|
||||
'conversion_rate' => (float) $product->conversion_rate,
|
||||
'lastPrice' => (float) ($product->pivot->last_price ?? 0),
|
||||
];
|
||||
})
|
||||
@@ -173,6 +176,23 @@ class PurchaseOrderController extends Controller
|
||||
{
|
||||
$order = PurchaseOrder::with(['vendor', 'warehouse', 'user', 'items.product'])->findOrFail($id);
|
||||
|
||||
// Transform items to include product details needed for frontend calculation
|
||||
$order->items->transform(function ($item) {
|
||||
$product = $item->product;
|
||||
if ($product) {
|
||||
// 手動附加 productName 和 unit (因為已從 $appends 移除)
|
||||
$item->productName = $product->name;
|
||||
$item->productId = $product->id;
|
||||
$item->base_unit = $product->base_unit;
|
||||
$item->purchase_unit = $product->purchase_unit ?: $product->large_unit; // Fallback logic same as Create
|
||||
$item->conversion_rate = (float) $product->conversion_rate;
|
||||
// 優先使用採購單位 > 大單位 > 基本單位
|
||||
$item->unit = $product->purchase_unit ?: ($product->large_unit ?: $product->base_unit);
|
||||
$item->unitPrice = (float) $item->unit_price;
|
||||
}
|
||||
return $item;
|
||||
});
|
||||
|
||||
return Inertia::render('PurchaseOrder/Show', [
|
||||
'order' => $order
|
||||
]);
|
||||
@@ -190,7 +210,10 @@ class PurchaseOrderController extends Controller
|
||||
return [
|
||||
'productId' => (string) $product->id,
|
||||
'productName' => $product->name,
|
||||
'unit' => $product->base_unit,
|
||||
'unit' => $product->purchase_unit ?: ($product->large_unit ?: $product->base_unit),
|
||||
'base_unit' => $product->base_unit,
|
||||
'purchase_unit' => $product->purchase_unit ?: $product->large_unit,
|
||||
'conversion_rate' => (float) $product->conversion_rate,
|
||||
'lastPrice' => (float) ($product->pivot->last_price ?? 0),
|
||||
];
|
||||
})
|
||||
@@ -204,6 +227,23 @@ class PurchaseOrderController extends Controller
|
||||
];
|
||||
});
|
||||
|
||||
// Transform items for frontend form
|
||||
$order->items->transform(function ($item) {
|
||||
$product = $item->product;
|
||||
if ($product) {
|
||||
// 手動附加所有必要的屬性 (因為已從 $appends 移除)
|
||||
$item->productId = (string) $product->id; // Ensure consistent ID type
|
||||
$item->productName = $product->name;
|
||||
$item->base_unit = $product->base_unit;
|
||||
$item->purchase_unit = $product->purchase_unit ?: $product->large_unit;
|
||||
$item->conversion_rate = (float) $product->conversion_rate;
|
||||
// 優先使用採購單位 > 大單位 > 基本單位
|
||||
$item->unit = $product->purchase_unit ?: ($product->large_unit ?: $product->base_unit);
|
||||
$item->unitPrice = (float) $item->unit_price;
|
||||
}
|
||||
return $item;
|
||||
});
|
||||
|
||||
return Inertia::render('PurchaseOrder/Create', [
|
||||
'order' => $order,
|
||||
'suppliers' => $vendors,
|
||||
|
||||
@@ -26,31 +26,25 @@ class PurchaseOrderItem extends Model
|
||||
'received_quantity' => 'decimal:2',
|
||||
];
|
||||
|
||||
protected $appends = [
|
||||
'productName',
|
||||
'unit',
|
||||
'productId',
|
||||
'unitPrice',
|
||||
];
|
||||
|
||||
public function getProductIdAttribute(): string
|
||||
{
|
||||
return (string) $this->attributes['product_id'];
|
||||
}
|
||||
|
||||
public function getUnitPriceAttribute(): float
|
||||
{
|
||||
return (float) $this->attributes['unit_price'];
|
||||
}
|
||||
// 移除 $appends 以避免自動附加導致的錯誤
|
||||
// 這些屬性將在 Controller 中需要時手動附加
|
||||
// protected $appends = ['productName', 'unit'];
|
||||
|
||||
public function getProductNameAttribute(): string
|
||||
{
|
||||
return $this->product ? $this->product->name : '';
|
||||
return $this->product?->name ?? '';
|
||||
}
|
||||
|
||||
public function getUnitAttribute(): string
|
||||
{
|
||||
return $this->product ? $this->product->base_unit : '';
|
||||
// 優先使用採購單位 > 大單位 > 基本單位
|
||||
// 與 PurchaseOrderController 的邏輯保持一致
|
||||
if (!$this->product) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $this->product->purchase_unit
|
||||
?: ($this->product->large_unit ?: $this->product->base_unit);
|
||||
}
|
||||
|
||||
public function purchaseOrder(): BelongsTo
|
||||
|
||||
Reference in New Issue
Block a user