diff --git a/app/Enums/WarehouseType.php b/app/Enums/WarehouseType.php index dbfee57..c099684 100644 --- a/app/Enums/WarehouseType.php +++ b/app/Enums/WarehouseType.php @@ -10,7 +10,6 @@ enum WarehouseType: string case VENDING = 'vending'; // 販賣機倉/IoT case TRANSIT = 'transit'; // 在途倉/移動倉 case QUARANTINE = 'quarantine'; // 瑕疵倉/報廢倉 - case SYSTEM_SALES = 'system_sales'; // 系統自動建立的銷售倉 public function label(): string { @@ -21,7 +20,6 @@ enum WarehouseType: string self::VENDING => '販賣機 (IoT設備)', self::TRANSIT => '在途倉 (物流車)', self::QUARANTINE => '瑕疵倉 (報廢/檢驗)', - self::SYSTEM_SALES => '系統銷售倉', }; } } diff --git a/app/Modules/Inventory/Services/InventoryService.php b/app/Modules/Inventory/Services/InventoryService.php index f0b081f..430c51a 100644 --- a/app/Modules/Inventory/Services/InventoryService.php +++ b/app/Modules/Inventory/Services/InventoryService.php @@ -599,11 +599,21 @@ class InventoryService implements InventoryServiceInterface */ public function findOrCreateWarehouseByName(string $warehouseName) { + // 1. 優先查找名稱完全匹配且啟用的倉庫(不限類型) + $warehouse = Warehouse::where('name', $warehouseName) + ->where('is_active', true) + ->first(); + + if ($warehouse) { + return $warehouse; + } + + // 2. 若找不到對應倉庫,則統一進入「整合銷售倉」(類型:retail) return Warehouse::firstOrCreate( - ['name' => $warehouseName], + ['name' => '整合銷售倉'], [ - 'code' => 'SALES-' . strtoupper(bin2hex(random_bytes(4))), - 'type' => 'system_sales', + 'code' => 'INT-RETAIL-001', + 'type' => 'retail', 'is_active' => true, ] );