diff --git a/app/Http/Controllers/Admin/SalesController.php b/app/Http/Controllers/Admin/SalesController.php index 5f41984..e328e4c 100644 --- a/app/Http/Controllers/Admin/SalesController.php +++ b/app/Http/Controllers/Admin/SalesController.php @@ -1030,7 +1030,7 @@ class SalesController extends Controller $row = [ $inv->invoice_no ?: '---', $inv->invoice_date ?: '---', - $inv->flow_id ?: '---', + $inv->display_flow_id ?: '---', $inv->machine->name ?? ($inv->order->machine->name ?? 'Unknown'), $inv->machine->serial_no ?? ($inv->order->machine->serial_no ?? '---'), $inv->order->order_no ?? '---', diff --git a/app/Models/Transaction/Invoice.php b/app/Models/Transaction/Invoice.php index 2fb7991..f802f44 100644 --- a/app/Models/Transaction/Invoice.php +++ b/app/Models/Transaction/Invoice.php @@ -6,13 +6,14 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use App\Traits\TenantScoped; +use App\Traits\HasDisplayFlowId; class Invoice extends Model { // TenantScoped:自動以登入者 company_id 過濾(含 route-model binding 與列表查詢), // 防止跨公司讀取/操作他人發票。console(佇列 Job / reconcile 命令)會自動跳過 scope, // 系統身分仍可跨公司開立/對帳。 - use HasFactory, SoftDeletes, TenantScoped; + use HasFactory, SoftDeletes, TenantScoped, HasDisplayFlowId; protected $fillable = [ 'company_id', diff --git a/app/Models/Transaction/Order.php b/app/Models/Transaction/Order.php index 5f6ccbb..d8840ce 100644 --- a/app/Models/Transaction/Order.php +++ b/app/Models/Transaction/Order.php @@ -6,12 +6,13 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use App\Traits\TenantScoped; +use App\Traits\HasDisplayFlowId; use App\Models\Machine\Machine; use App\Models\Member\Member; class Order extends Model { - use HasFactory, SoftDeletes, TenantScoped; + use HasFactory, SoftDeletes, TenantScoped, HasDisplayFlowId; // 支付狀態 public const PAYMENT_STATUS_FAILED = 0; diff --git a/app/Traits/HasDisplayFlowId.php b/app/Traits/HasDisplayFlowId.php new file mode 100644 index 0000000..4088b1f --- /dev/null +++ b/app/Traits/HasDisplayFlowId.php @@ -0,0 +1,28 @@ +flow_id ?? ''); + $serial = $this->machine?->serial_no; + + // 僅在確實以該機台序號開頭時才剝除前綴;舊的未前綴資料原樣顯示(防禦)。 + if ($serial !== null && $serial !== '' && str_starts_with($flowId, $serial)) { + return substr($flowId, strlen($serial)); + } + + return $flowId; + } +} diff --git a/resources/views/admin/sales/partials/order-detail-panel.blade.php b/resources/views/admin/sales/partials/order-detail-panel.blade.php index cc457f6..d93a9ca 100644 --- a/resources/views/admin/sales/partials/order-detail-panel.blade.php +++ b/resources/views/admin/sales/partials/order-detail-panel.blade.php @@ -102,7 +102,8 @@
{{ __('Machine Flow ID') }}
-{{ $order->flow_id }}
+ {{-- 顯示去前綴序號的乾淨流水號(DB 仍存完整 serial+flow_id 唯一值供後台判斷) --}} +{{ $order->display_flow_id }}