diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopFinance.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopFinance.razor
index db56721c..21bebd54 100644
--- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopFinance.razor
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopFinance.razor
@@ -72,7 +72,7 @@
ViewOrderDetail(o.Id))">
| @o.Id.ToString()[..8] |
@ShopHelpers.FormatVND(o.TotalAmount) |
- @(o.Status ?? "—") |
+ @ShopHelpers.OrderStatusLabel(o.Status) |
@o.CreatedAt.ToString("dd/MM HH:mm") |
|
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopHelpers.cs b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopHelpers.cs
index a46e85e5..b13b136d 100644
--- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopHelpers.cs
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopHelpers.cs
@@ -27,4 +27,47 @@ public static class ShopHelpers
public static string FormatFileSize(long b) => b < 1024 ? $"{b} B" : b < 1048576 ? $"{b / 1024.0:F1} KB" : b < 1073741824 ? $"{b / 1048576.0:F1} MB" : $"{b / 1073741824.0:F2} GB";
public static string GetFileIcon(string? ct) => ct switch { string s when s.StartsWith("image/") => "image", string s when s.StartsWith("video/") => "video", string s when s.Contains("pdf") => "file-text", _ => "file" };
+
+ ///
+ /// EN: Translate order status to Vietnamese.
+ /// VI: Dịch trạng thái đơn hàng sang tiếng Việt.
+ ///
+ public static string OrderStatusLabel(string? status) => status?.ToLowerInvariant() switch
+ {
+ "draft" => "Nháp",
+ "validated" => "Chờ thanh toán",
+ "paid" => "Đã thanh toán",
+ "processing" => "Đang xử lý",
+ "completed" => "Hoàn thành",
+ "cancelled" => "Đã hủy",
+ "paymentpending" => "Chờ xác nhận TT",
+ _ => status ?? "—"
+ };
+
+ ///
+ /// EN: Get CSS badge class for order status.
+ /// VI: Lấy CSS badge class cho trạng thái đơn hàng.
+ ///
+ public static string OrderStatusBadge(string? status) => status?.ToLowerInvariant() switch
+ {
+ "completed" or "paid" => "online",
+ "validated" or "processing" or "paymentpending" => "setup",
+ "cancelled" => "paused",
+ _ => "setup"
+ };
+
+ ///
+ /// EN: Translate payment method to Vietnamese.
+ /// VI: Dịch hình thức thanh toán sang tiếng Việt.
+ ///
+ public static string PaymentMethodLabel(string? method) => method?.ToLowerInvariant() switch
+ {
+ "cash" => "Tiền mặt",
+ "card" => "Thẻ",
+ "qr" => "Mã QR",
+ "transfer" or "bank_transfer" => "Chuyển khoản",
+ "vnpay" => "VNPay",
+ "momo" => "MoMo",
+ _ => string.IsNullOrEmpty(method) ? "Chưa thanh toán" : method
+ };
}
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopOverview.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopOverview.razor
index 2dbf6968..32f7cbca 100644
--- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopOverview.razor
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopOverview.razor
@@ -220,7 +220,7 @@
@o.CreatedAt.ToString("dd/MM HH:mm")
- @(o.Status ?? "—")
+ @ShopHelpers.OrderStatusLabel(o.Status)
@FormatVND(o.TotalAmount)
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopReports.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopReports.razor
index 78fbc9ca..de19c840 100644
--- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopReports.razor
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopReports.razor
@@ -153,7 +153,7 @@
| @o.Id.ToString()[..8] |
@ShopHelpers.FormatVND(o.TotalAmount) |
- @(o.Status ?? "—") |
+ @ShopHelpers.OrderStatusLabel(o.Status) |
@o.CreatedAt.ToString("dd/MM/yyyy HH:mm") |
}
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Cafe/CafeDesktop.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Cafe/CafeDesktop.razor
index 15a2a0cc..87720d15 100644
--- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Cafe/CafeDesktop.razor
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Cafe/CafeDesktop.razor
@@ -1121,11 +1121,14 @@
private static string MapApiStatus(string? status) => status switch
{
+ "Draft" => "Nháp",
+ "Validated" => "Chờ thanh toán",
+ "Paid" => "Đã thanh toán",
"Completed" or "Delivered" => "Hoàn thành",
"Cancelled" => "Đã hủy",
"Refunded" => "Hoàn trả",
"Processing" => "Đang xử lý",
- "Pending" => "Chờ xác nhận",
+ "Pending" or "PaymentPending" => "Chờ xác nhận TT",
_ => status ?? "—"
};
@@ -1133,9 +1136,11 @@
{
"cash" => "Tiền mặt",
"card" => "Thẻ",
- "qr" => "QR Code",
- "bank_transfer" => "Chuyển khoản",
- _ => method ?? "Tiền mặt"
+ "qr" => "Mã QR",
+ "transfer" or "bank_transfer" => "Chuyển khoản",
+ "vnpay" => "VNPay",
+ "momo" => "MoMo",
+ _ => string.IsNullOrEmpty(method) ? "Chưa thanh toán" : method
};
private async Task ViewOrderDetail(Guid orderId)