feat(inventory): 販賣機視覺優化、修復匯入日期缺失與倉庫刪除權限錯誤

This commit is contained in:
2026-02-09 10:19:46 +08:00
parent f22df90e01
commit 5e542752ba
14 changed files with 255 additions and 71 deletions

View File

@@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('inventories', function (Blueprint $table) {
// 不刪除舊索引(以免外鍵報錯),直接建立新的、更精確的唯一索引
// 這樣「商品+批號+貨道」的組合就會被視為唯一,達成多貨道支援
$table->unique(['warehouse_id', 'product_id', 'batch_number', 'location'], 'warehouse_product_batch_location_unique');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('inventories', function (Blueprint $table) {
$table->dropUnique('warehouse_product_batch_location_unique');
});
}
};

View File

@@ -0,0 +1,39 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
// 最直接的做法:暫時關閉外鍵檢查,然後強制刪除報錯的索引
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
try {
// 直接下達 SQL 指令刪除索引
DB::statement('ALTER TABLE inventories DROP INDEX warehouse_product_batch_unique;');
} catch (\Exception $e) {
// 索引不存在則跳過
}
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
/**
* Reverse the migrations.
*/
public function down(): void
{
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
DB::statement('ALTER TABLE inventories ADD UNIQUE INDEX warehouse_product_batch_unique (warehouse_id, product_id, batch_number);');
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
};