[FIX] 銷售紀錄未付款單顯示:已棄單改未支付、未出貨顯示 --
1. 付款狀態「已棄單(abandoned)」顯示文字改為「未支付」;新增 Unpaid 語系、移除孤兒 Abandoned key,三語系(zh_TW/en/ja)對齊排序。 2. 出貨狀態:非付款成功(未完成 pending/支付失敗 failed/未支付 abandoned)的單從未出貨,一律顯示「--」,避免 delivery_status 欄位 DB 預設值 1 誤顯示為「出貨成功」。 3. 判斷邏輯收斂至 Order::hasDeliveryOutcome(),桌機表格、手機卡片、明細面板與匯出 delivery_status_label accessor 共用同一基準。 4. 補齊匯出訂單狀態對照表原本缺漏的 failed/abandoned 標籤。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ddac862cee
commit
b7e8401a99
@ -935,6 +935,8 @@ class SalesController extends Controller
|
|||||||
'pending' => __('Pending'),
|
'pending' => __('Pending'),
|
||||||
'paid' => __('Paid'),
|
'paid' => __('Paid'),
|
||||||
'completed' => __('Completed'),
|
'completed' => __('Completed'),
|
||||||
|
'failed' => __('Failed'),
|
||||||
|
'abandoned' => __('Unpaid'),
|
||||||
'cancelled' => __('Cancelled'),
|
'cancelled' => __('Cancelled'),
|
||||||
'refunded' => __('Refunded'),
|
'refunded' => __('Refunded'),
|
||||||
];
|
];
|
||||||
|
|||||||
@ -229,11 +229,25 @@ class Order extends Model
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出貨狀態是否有意義:唯有付款成功(completed/paid)、機台真的動作過的單才有出貨結果。
|
||||||
|
* pending(未完成)、failed(支付失敗)、abandoned(未支付)從未出貨,出貨狀態應顯示 '--'。
|
||||||
|
* ⚠ delivery_status 欄位 DB 預設為 1(出貨成功),這些單若直接讀值會誤顯示成「出貨成功」。
|
||||||
|
*/
|
||||||
|
public function hasDeliveryOutcome(): bool
|
||||||
|
{
|
||||||
|
return in_array($this->status, [self::STATUS_COMPLETED, 'paid'], true);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取得目前出貨狀態標籤 (Accessor)
|
* 取得目前出貨狀態標籤 (Accessor)
|
||||||
*/
|
*/
|
||||||
public function getDeliveryStatusLabelAttribute(): string
|
public function getDeliveryStatusLabelAttribute(): string
|
||||||
{
|
{
|
||||||
|
if (! $this->hasDeliveryOutcome()) {
|
||||||
|
return '--';
|
||||||
|
}
|
||||||
|
|
||||||
return self::getDeliveryStatusLabels()[$this->delivery_status] ?? __('Unknown');
|
return self::getDeliveryStatusLabels()[$this->delivery_status] ?? __('Unknown');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
"APP Version": "APP Version",
|
"APP Version": "APP Version",
|
||||||
"APP_ID": "APP_ID",
|
"APP_ID": "APP_ID",
|
||||||
"APP_KEY": "APP_KEY",
|
"APP_KEY": "APP_KEY",
|
||||||
"Abandoned": "Abandoned",
|
|
||||||
"Abnormal": "Abnormal",
|
"Abnormal": "Abnormal",
|
||||||
"Account": "Account",
|
"Account": "Account",
|
||||||
"Account :name status has been changed to :status.": "Account :name status has been changed to :status.",
|
"Account :name status has been changed to :status.": "Account :name status has been changed to :status.",
|
||||||
@ -2244,6 +2243,7 @@
|
|||||||
"Unlock": "Unlock",
|
"Unlock": "Unlock",
|
||||||
"Unlock Now": "Unlock Now",
|
"Unlock Now": "Unlock Now",
|
||||||
"Unlock Page": "Unlock Page",
|
"Unlock Page": "Unlock Page",
|
||||||
|
"Unpaid": "Unpaid",
|
||||||
"Unpublish": "Unpublish",
|
"Unpublish": "Unpublish",
|
||||||
"Update": "Update",
|
"Update": "Update",
|
||||||
"Update App": "Update App",
|
"Update App": "Update App",
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
"APP Version": "アプリバージョン",
|
"APP Version": "アプリバージョン",
|
||||||
"APP_ID": "APP_ID",
|
"APP_ID": "APP_ID",
|
||||||
"APP_KEY": "APP_KEY",
|
"APP_KEY": "APP_KEY",
|
||||||
"Abandoned": "放棄済み",
|
|
||||||
"Abnormal": "異常",
|
"Abnormal": "異常",
|
||||||
"Account": "アカウント",
|
"Account": "アカウント",
|
||||||
"Account :name status has been changed to :status.": "アカウント :name のステータスが :status に変更されました。",
|
"Account :name status has been changed to :status.": "アカウント :name のステータスが :status に変更されました。",
|
||||||
@ -2244,6 +2243,7 @@
|
|||||||
"Unlock": "ロック解除",
|
"Unlock": "ロック解除",
|
||||||
"Unlock Now": "今すぐロック解除",
|
"Unlock Now": "今すぐロック解除",
|
||||||
"Unlock Page": "ページロック解除",
|
"Unlock Page": "ページロック解除",
|
||||||
|
"Unpaid": "未払い",
|
||||||
"Unpublish": "非公開",
|
"Unpublish": "非公開",
|
||||||
"Update": "更新",
|
"Update": "更新",
|
||||||
"Update App": "アプリ更新",
|
"Update App": "アプリ更新",
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
"APP Version": "APP版本號",
|
"APP Version": "APP版本號",
|
||||||
"APP_ID": "APP_ID",
|
"APP_ID": "APP_ID",
|
||||||
"APP_KEY": "APP_KEY",
|
"APP_KEY": "APP_KEY",
|
||||||
"Abandoned": "已棄單",
|
|
||||||
"Abnormal": "異常",
|
"Abnormal": "異常",
|
||||||
"Account": "帳號",
|
"Account": "帳號",
|
||||||
"Account :name status has been changed to :status.": "帳號 :name 的狀態已變更為 :status。",
|
"Account :name status has been changed to :status.": "帳號 :name 的狀態已變更為 :status。",
|
||||||
@ -2244,6 +2243,7 @@
|
|||||||
"Unlock": "解鎖",
|
"Unlock": "解鎖",
|
||||||
"Unlock Now": "立即解鎖",
|
"Unlock Now": "立即解鎖",
|
||||||
"Unlock Page": "頁面解鎖",
|
"Unlock Page": "頁面解鎖",
|
||||||
|
"Unpaid": "未支付",
|
||||||
"Unpublish": "下架",
|
"Unpublish": "下架",
|
||||||
"Update": "編輯",
|
"Update": "編輯",
|
||||||
"Update App": "更新 App",
|
"Update App": "更新 App",
|
||||||
|
|||||||
@ -44,7 +44,7 @@
|
|||||||
'paid' => __('Paid'),
|
'paid' => __('Paid'),
|
||||||
'completed' => __('Completed'),
|
'completed' => __('Completed'),
|
||||||
'failed' => __('Failed'),
|
'failed' => __('Failed'),
|
||||||
'abandoned' => __('Abandoned'),
|
'abandoned' => __('Unpaid'),
|
||||||
'cancelled' => __('Cancelled'),
|
'cancelled' => __('Cancelled'),
|
||||||
'refunded' => __('Refunded'),
|
'refunded' => __('Refunded'),
|
||||||
];
|
];
|
||||||
@ -63,6 +63,10 @@
|
|||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<p class="text-[10px] font-black text-slate-400 dark:text-slate-500 uppercase tracking-widest">{{ __('Dispense Status') }}</p>
|
<p class="text-[10px] font-black text-slate-400 dark:text-slate-500 uppercase tracking-widest">{{ __('Dispense Status') }}</p>
|
||||||
<div>
|
<div>
|
||||||
|
{{-- 非付款成功(未完成/支付失敗/未支付)的單從未出貨,出貨狀態無意義 → 顯示 '--' --}}
|
||||||
|
@if(! $order->hasDeliveryOutcome())
|
||||||
|
<span class="text-sm font-extrabold text-slate-300 dark:text-slate-700 tracking-widest">--</span>
|
||||||
|
@else
|
||||||
@php
|
@php
|
||||||
$deliveryStatusMap = [
|
$deliveryStatusMap = [
|
||||||
0 => ['label' => __('Dispense Failed'), 'color' => 'rose'],
|
0 => ['label' => __('Dispense Failed'), 'color' => 'rose'],
|
||||||
@ -72,6 +76,7 @@
|
|||||||
$ds = $deliveryStatusMap[$order->delivery_status] ?? ['label' => __('Unknown'), 'color' => 'slate'];
|
$ds = $deliveryStatusMap[$order->delivery_status] ?? ['label' => __('Unknown'), 'color' => 'slate'];
|
||||||
@endphp
|
@endphp
|
||||||
<x-status-badge :color="$ds['color']" :label="$ds['label']" size="sm" />
|
<x-status-badge :color="$ds['color']" :label="$ds['label']" size="sm" />
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -268,7 +268,7 @@
|
|||||||
'paid' => ['label' => __('Paid'), 'color' => 'emerald'],
|
'paid' => ['label' => __('Paid'), 'color' => 'emerald'],
|
||||||
'completed' => ['label' => __('Completed'), 'color' => 'emerald'],
|
'completed' => ['label' => __('Completed'), 'color' => 'emerald'],
|
||||||
'failed' => ['label' => __('Failed'), 'color' => 'rose'],
|
'failed' => ['label' => __('Failed'), 'color' => 'rose'],
|
||||||
'abandoned' => ['label' => __('Abandoned'), 'color' => 'slate'],
|
'abandoned' => ['label' => __('Unpaid'), 'color' => 'slate'],
|
||||||
'cancelled' => ['label' => __('Cancelled'), 'color' => 'slate'],
|
'cancelled' => ['label' => __('Cancelled'), 'color' => 'slate'],
|
||||||
'refunded' => ['label' => __('Refunded'), 'color' => 'rose'],
|
'refunded' => ['label' => __('Refunded'), 'color' => 'rose'],
|
||||||
];
|
];
|
||||||
@ -277,6 +277,10 @@
|
|||||||
<x-status-badge :color="$s['color']" :label="$s['label']" size="xs" />
|
<x-status-badge :color="$s['color']" :label="$s['label']" size="xs" />
|
||||||
</td>
|
</td>
|
||||||
<td class="px-6 py-6 whitespace-nowrap">
|
<td class="px-6 py-6 whitespace-nowrap">
|
||||||
|
{{-- 非付款成功(未完成/支付失敗/未支付)的單從未出貨,出貨狀態無意義 → 顯示 '--' --}}
|
||||||
|
@if(! $order->hasDeliveryOutcome())
|
||||||
|
<span class="text-xs font-bold text-slate-300 dark:text-slate-700 tracking-widest">--</span>
|
||||||
|
@else
|
||||||
@php
|
@php
|
||||||
$deliveryStatusMap = [
|
$deliveryStatusMap = [
|
||||||
0 => ['label' => __('Dispense Failed'), 'color' => 'rose'],
|
0 => ['label' => __('Dispense Failed'), 'color' => 'rose'],
|
||||||
@ -286,6 +290,7 @@
|
|||||||
$ds = $deliveryStatusMap[$order->delivery_status] ?? ['label' => __('Unknown'), 'color' => 'slate'];
|
$ds = $deliveryStatusMap[$order->delivery_status] ?? ['label' => __('Unknown'), 'color' => 'slate'];
|
||||||
@endphp
|
@endphp
|
||||||
<x-status-badge :color="$ds['color']" :label="$ds['label']" size="xs" />
|
<x-status-badge :color="$ds['color']" :label="$ds['label']" size="xs" />
|
||||||
|
@endif
|
||||||
</td>
|
</td>
|
||||||
<td class="px-6 py-6 whitespace-nowrap">
|
<td class="px-6 py-6 whitespace-nowrap">
|
||||||
@php
|
@php
|
||||||
@ -351,7 +356,7 @@
|
|||||||
'paid' => ['label' => __('Paid'), 'color' => 'emerald'],
|
'paid' => ['label' => __('Paid'), 'color' => 'emerald'],
|
||||||
'completed' => ['label' => __('Completed'), 'color' => 'emerald'],
|
'completed' => ['label' => __('Completed'), 'color' => 'emerald'],
|
||||||
'failed' => ['label' => __('Failed'), 'color' => 'rose'],
|
'failed' => ['label' => __('Failed'), 'color' => 'rose'],
|
||||||
'abandoned' => ['label' => __('Abandoned'), 'color' => 'slate'],
|
'abandoned' => ['label' => __('Unpaid'), 'color' => 'slate'],
|
||||||
'cancelled' => ['label' => __('Cancelled'), 'color' => 'slate'],
|
'cancelled' => ['label' => __('Cancelled'), 'color' => 'slate'],
|
||||||
'refunded' => ['label' => __('Refunded'), 'color' => 'rose'],
|
'refunded' => ['label' => __('Refunded'), 'color' => 'rose'],
|
||||||
];
|
];
|
||||||
@ -451,6 +456,10 @@
|
|||||||
<div>
|
<div>
|
||||||
<p class="text-[10px] font-black text-slate-400 dark:text-slate-500 uppercase tracking-widest mb-1">{{
|
<p class="text-[10px] font-black text-slate-400 dark:text-slate-500 uppercase tracking-widest mb-1">{{
|
||||||
__('Dispense Status') }}</p>
|
__('Dispense Status') }}</p>
|
||||||
|
{{-- 非付款成功(未完成/支付失敗/未支付)的單從未出貨,出貨狀態無意義 → 顯示 '--' --}}
|
||||||
|
@if(! $order->hasDeliveryOutcome())
|
||||||
|
<span class="text-xs font-bold text-slate-300 dark:text-slate-700 tracking-widest">--</span>
|
||||||
|
@else
|
||||||
@php
|
@php
|
||||||
$deliveryStatusMap = [
|
$deliveryStatusMap = [
|
||||||
0 => ['label' => __('Dispense Failed'), 'color' => 'rose'],
|
0 => ['label' => __('Dispense Failed'), 'color' => 'rose'],
|
||||||
@ -460,6 +469,7 @@
|
|||||||
$ds = $deliveryStatusMap[$order->delivery_status] ?? ['label' => __('Unknown'), 'color' => 'slate'];
|
$ds = $deliveryStatusMap[$order->delivery_status] ?? ['label' => __('Unknown'), 'color' => 'slate'];
|
||||||
@endphp
|
@endphp
|
||||||
<x-status-badge :color="$ds['color']" :label="$ds['label']" size="xs" />
|
<x-status-badge :color="$ds['color']" :label="$ds['label']" size="xs" />
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user