[FEAT] 新增廣告狀態切換功能與優化商品操作紀錄介面

1. 新增廣告管理狀態切換 (Toggle Status) 功能,包含後端 API、路由與前端 UI 實作。
2. 優化商品操作紀錄 (Audit Logs) 的過濾介面,統一使用 x-searchable-select 並修正搜尋圖示樣式。
3. 擴充 SystemOperationLog 模型,支援自動解析操作目標名稱 (含 code 欄位備援)。
4. 優化商品操作紀錄查詢效能,預載入 (Eager Load) target 關聯資料。
5. 更新多語系檔案 (zh_TW, en, ja),新增廣告狀態切換相關文字。
This commit is contained in:
sky121113 2026-05-14 13:02:08 +08:00
parent aedc0e3921
commit 87c4c281a1
9 changed files with 468 additions and 322 deletions

View File

@ -6,6 +6,7 @@ use App\Models\Machine\Machine;
use App\Models\Machine\MachineAdvertisement;
use App\Models\System\Advertisement;
use App\Models\System\Company;
use App\Models\System\SystemOperationLog;
use App\Traits\ImageHandler;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
@ -344,4 +345,47 @@ class AdvertisementController extends AdminController
'message' => __('Failed to send sync command.')
], 500);
}
public function toggleStatus($id)
{
try {
$advertisement = Advertisement::findOrFail($id);
$oldValues = $advertisement->toArray();
$advertisement->is_active = !$advertisement->is_active;
$advertisement->save();
$newValues = $advertisement->fresh()->toArray();
SystemOperationLog::create([
'company_id' => $advertisement->company_id,
'user_id' => auth()->id(),
'module' => 'advertisement',
'action' => 'update',
'target_id' => $advertisement->id,
'target_type' => Advertisement::class,
'note' => 'advertisement_status_toggled',
'old_values' => $oldValues,
'new_values' => $newValues,
]);
$status = $advertisement->is_active ? __('Enabled') : __('Disabled');
if (request()->ajax()) {
return response()->json([
'success' => true,
'message' => __('Advertisement status updated to :status', ['status' => $status]),
'is_active' => $advertisement->is_active
]);
}
return redirect()->back()->with('success', __('Advertisement status updated to :status', ['status' => $status]));
} catch (\Exception $e) {
if (request()->ajax()) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 500);
}
return redirect()->back()->with('error', $e->getMessage());
}
}
}

View File

@ -102,7 +102,7 @@ class ProductController extends Controller
])->render()
]);
} elseif ($tab === 'logs') {
$logQuery = SystemOperationLog::with(['user', 'company'])
$logQuery = SystemOperationLog::with(['user', 'company', 'target'])
->whereIn('module', ['product', 'category']);
if ($user->isSystemAdmin()) {

View File

@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Traits\TenantScoped;
use App\Models\System\User;
use App\Models\System\Company;
class SystemOperationLog extends Model
{
@ -57,4 +58,40 @@ class SystemOperationLog extends Model
{
return $this->belongsTo(User::class);
}
public function company()
{
return $this->belongsTo(Company::class);
}
/**
* Polymorphic relationship to the target entity
*/
public function target()
{
return $this->morphTo()->withTrashed();
}
/**
* Get the name of the target entity from relation or values
*/
public function getTargetNameAttribute(): string
{
// 1. Try from loaded relationship
if ($this->target) {
if (method_exists($this->target, 'getLocalizedNameAttribute')) {
return $this->target->localized_name;
}
return $this->target->name ?? '';
}
// 2. Try from values
$name = $this->new_values['name'] ?? $this->old_values['name'] ??
$this->new_values['code'] ?? $this->old_values['code'] ?? null;
if ($name) {
return $name;
}
return '';
}
}

View File

@ -1,20 +1,17 @@
{
"10s": "10s",
"30s": "30s",
"60s": "60s",
"Auto Refresh": "Auto Refresh",
"Off": "Off",
"Refresh Now": "Refresh Now",
"Refreshing in :seconds s": "Refreshing in :seconds s",
"15 Seconds": "15 Seconds",
"30 Seconds": "30 Seconds",
"30s": "30s",
"60 Seconds": "60 Seconds",
"60s": "60s",
"A new verification link has been sent to your email address.": "A new verification link has been sent to your email address.",
"A sync command was recently sent. Please wait 1 minute.": "A sync command was recently sent. Please wait 1 minute.",
"AI Prediction": "AI Prediction",
"API Token": "API Token",
"API Token Copied": "API Token Copied",
"API Token regenerated successfully.": "API Token regenerated successfully.",
"API Token has been regenerated due to serial number change.": "API Token has been regenerated due to serial number change.",
"API Token regenerated successfully.": "API Token regenerated successfully.",
"APK Versions": "APK Versions",
"APP Features": "APP Features",
"APP Management": "APP Management",
@ -39,7 +36,6 @@
"Action / Target": "Action / Target",
"Actions": "Actions",
"Active": "Active",
"Are you sure you want to change the status of this item?": "Are you sure you want to change the status of this item?",
"Active Slots": "Active Slots",
"Active Status": "Active Status",
"Ad Settings": "Ad Settings",
@ -79,9 +75,9 @@
"Advertisement created successfully.": "Advertisement created successfully.",
"Advertisement deleted successfully": "Advertisement deleted successfully",
"Advertisement deleted successfully.": "Advertisement deleted successfully.",
"Advertisement status updated to :status": "Advertisement status updated to :status",
"Advertisement updated successfully": "Advertisement updated successfully",
"Advertisement updated successfully.": "Advertisement updated successfully.",
"Bill Acceptor": "Bill Acceptor",
"Affiliated Company": "Affiliated Company",
"Affiliated Unit": "Affiliated Unit",
"Affiliation": "Affiliation",
@ -89,6 +85,7 @@
"Alert Summary": "Alert Summary",
"Alerts": "Alerts",
"Alerts Pending": "Alerts Pending",
"Alerts Today": "Alerts Today",
"All": "All",
"All Affiliations": "All Affiliations",
"All Categories": "All Categories",
@ -96,6 +93,7 @@
"All Companies": "All Companies",
"All Levels": "All Levels",
"All Machines": "All Machines",
"All Normal": "All Normal",
"All Permissions": "All Permissions",
"All Slots": "All Slots",
"All Stable": "All Stable",
@ -122,6 +120,7 @@
"Are you sure you want to cancel this order? If the order has been prepared, stock will be returned to the warehouse.": "Are you sure you want to cancel this order? If the order has been prepared, stock will be returned to the warehouse.",
"Are you sure you want to cancel this pass code? This action cannot be undone.": "Are you sure you want to cancel this pass code? This action cannot be undone.",
"Are you sure you want to cancel this pickup code? This action cannot be undone.": "Are you sure you want to cancel this pickup code? This action cannot be undone.",
"Are you sure you want to change the status of this item?": "Are you sure you want to change the status of this item?",
"Are you sure you want to change the status of this item? This will affect its visibility on vending machines.": "Are you sure you want to change the status of this item? This will affect its visibility on vending machines.",
"Are you sure you want to change the status of this product? Disabled products will not be visible on the machine.": "Are you sure you want to change the status of this product? Disabled products will not be visible on the machine.",
"Are you sure you want to change the status? After disabling, this account will no longer be able to log in to the system.": "Are you sure you want to change the status? After disabling, this account will no longer be able to log in to the system.",
@ -139,19 +138,20 @@
"Are you sure you want to delete this configuration? This action cannot be undone.": "Are you sure you want to delete this configuration? This action cannot be undone.",
"Are you sure you want to delete this draft order? This action cannot be undone.": "Are you sure you want to delete this draft order? This action cannot be undone.",
"Are you sure you want to delete this item? This action cannot be undone.": "Are you sure you want to delete this item? This action cannot be undone.",
"Are you sure you want to delete this machine? This action cannot be undone.": "Are you sure you want to delete this machine? This action cannot be undone.",
"Are you sure you want to delete this pass code?": "Are you sure you want to delete this pass code?",
"Are you sure you want to delete this product or category? This action cannot be undone.": "Are you sure you want to delete this product or category? This action cannot be undone.",
"Are you sure you want to delete this product?": "Are you sure you want to delete this product?",
"Are you sure you want to delete this product? All related historical translation data will also be removed.": "Are you sure you want to delete this product? All related historical translation data will also be removed.",
"Are you sure you want to delete this role? This action cannot be undone.": "Are you sure you want to delete this role? This action cannot be undone.",
"Are you sure you want to delete your account?": "Are you sure you want to delete your account?",
"Are you sure you want to disable this advertisement?": "Are you sure you want to disable this advertisement?",
"Are you sure you want to disable this pass code? It will no longer be valid for machine access.": "Are you sure you want to disable this pass code? It will no longer be valid for machine access.",
"Are you sure you want to proceed? This action cannot be undone.": "Are you sure you want to proceed? This action cannot be undone.",
"Are you sure you want to remove this assignment?": "Are you sure you want to remove this assignment?",
"Are you sure you want to resolve all recent issues for this machine?": "Are you sure you want to resolve all recent issues for this machine?",
"Are you sure you want to send this command?": "Are you sure you want to send this command?",
"Are you sure you want to start delivery?": "Are you sure you want to start delivery?",
"Are you sure you want to delete this machine? This action cannot be undone.": "Are you sure you want to delete this machine? This action cannot be undone.",
"Are you sure?": "Are you sure?",
"Assign": "Assign",
"Assign Advertisement": "Assign Advertisement",
@ -174,6 +174,7 @@
"Authorized Machines": "Authorized Machines",
"Authorized Machines Management": "Authorized Machines Management",
"Authorized Status": "Authorized Status",
"Auto Refresh": "Auto Refresh",
"Auto Replenishment": "Auto Replenishment",
"Automatically calculate replenishment needs based on machine capacity": "Automatically calculate replenishment needs based on machine capacity",
"Availability": "Availability",
@ -185,16 +186,18 @@
"Badge Settings": "Badge Settings",
"Barcode": "Barcode",
"Barcode / Material": "Barcode / Material",
"Based on Hours": "Based on Hours",
"Basic Information": "Basic Information",
"Basic Settings": "Basic Settings",
"Basic Specifications": "Basic Specifications",
"Batch": "Batch",
"Batch No": "Batch No",
"Batch Number": "Batch Number",
"Batch sync command has been queued. Machines will be updated sequentially.": "Batch sync command has been queued. Machines will be updated sequentially.",
"Before Qty": "Before Qty",
"Based on Hours": "Based on Hours",
"Belongs To": "Belongs To",
"Belongs To Company": "Belongs To Company",
"Bill Acceptor": "Bill Acceptor",
"Branch": "Branch",
"Branch Warehouses": "Branch Warehouses",
"Business Type": "Business Type",
@ -218,7 +221,6 @@
"Cannot delete warehouse with existing stock": "Cannot delete warehouse with existing stock",
"Card Machine System": "Card Machine System",
"Card Reader": "Card Reader",
"Card UID": "Card UID",
"Card Reader No": "Card Reader No",
"Card Reader Reboot": "Card Reader Reboot",
"Card Reader Restart": "Card Reader Restart",
@ -226,6 +228,7 @@
"Card System": "Card System",
"Card Terminal": "Card Terminal",
"Card Terminal System": "Card Terminal System",
"Card UID": "Card UID",
"Cash Module": "Cash Module",
"Cash Module Feature": "Cash Module Feature",
"Cash Module Function": "Cash Module Function",
@ -256,9 +259,9 @@
"Close Panel": "Close Panel",
"Code": "Code",
"Code Copied": "Code Copied",
"Coin Acceptor": "Coin Acceptor",
"Coin/Banknote Machine": "Coin/Banknote Machine",
"Coin/Bill Acceptor": "Coin/Bill Acceptor",
"Coin Acceptor": "Coin Acceptor",
"Command Center": "Command Center",
"Command Confirmation": "Command Confirmation",
"Command Type": "Command Type",
@ -287,8 +290,8 @@
"Confirm Delete": "Confirm Delete",
"Confirm Deletion": "Confirm Deletion",
"Confirm Password": "Confirm Password",
"Confirm Status Change": "Confirm Status Change",
"Confirm Prepare": "Confirm Prepare",
"Confirm Status Change": "Confirm Status Change",
"Confirm Stock-In": "Confirm Stock-In",
"Confirm Stock-in Order": "Confirm Stock-in Order",
"Confirm Transfer": "Confirm Transfer",
@ -302,6 +305,7 @@
"Connection restored": "Connection restored",
"Connectivity Status": "Connectivity Status",
"Connectivity vs Sales Correlation": "Connectivity vs Sales Correlation",
"Consumed": "Consumed",
"Contact & Details": "Contact & Details",
"Contact Email": "Contact Email",
"Contact Info": "Contact Info",
@ -316,7 +320,6 @@
"Contract Start": "Contract Start",
"Contract Until (Optional)": "Contract Until (Optional)",
"Contract information updated": "Contract information updated",
"Consumed": "Consumed",
"Control": "Control",
"Copy": "Copy",
"Copy Code": "Copy Code",
@ -408,6 +411,7 @@
"Device Status Logs": "Device Status Logs",
"Devices": "Devices",
"Disable": "Disable",
"Disable Advertisement Confirmation": "Disable Advertisement Confirmation",
"Disable Code": "Disable Code",
"Disable Customer Confirmation": "Disable Customer Confirmation",
"Disable Pass Code": "Disable Pass Code",
@ -441,6 +445,7 @@
"Draft": "Draft",
"Duration": "Duration",
"Duration (Seconds)": "Duration (Seconds)",
"E-Ticket (EasyCard/iPass)": "E-Ticket (EasyCard/iPass)",
"E.SUN Bank Scan": "E.SUN Bank Scan",
"E.SUN Pay": "E.SUN Pay",
"E.SUN QR Pay": "E.SUN QR Pay",
@ -451,6 +456,7 @@
"ECPay Invoice Settings Description": "ECPay Invoice Settings Description",
"ESUN": "ESUN",
"ESUN Scan Pay": "ESUN Scan Pay",
"Easy Wallet": "Easy Wallet",
"Edit": "Edit",
"Edit Account": "Edit Account",
"Edit Advertisement": "Edit Advertisement",
@ -472,8 +478,6 @@
"Edit Staff Card": "Edit Staff Card",
"Edit Sub Account Role": "Edit Sub Account Role",
"Edit Warehouse": "Edit Warehouse",
"E-Ticket (EasyCard/iPass)": "E-Ticket (EasyCard/iPass)",
"Easy Wallet": "Easy Wallet",
"Electronic Invoice": "Electronic Invoice",
"Electronic Invoices": "Electronic Invoices",
"Elevator descending": "Elevator descending",
@ -517,6 +521,7 @@
"Error processing request": "Error processing request",
"Error report accepted": "Error report accepted",
"Error: :message (:code)": "Error: :message (:code)",
"Errors": "Errors",
"Estimated Expiry": "Estimated Expiry",
"Execute": "Execute",
"Execute Change": "Execute Change",
@ -545,6 +550,7 @@
"Failed to load tab content": "Failed to load tab content",
"Failed to resolve issues.": "Failed to resolve issues.",
"Failed to save permissions.": "Failed to save permissions.",
"Failed to send sync command.": "Failed to send sync command.",
"Failed to update machine images: ": "Failed to update machine images: ",
"Feature Settings": "Feature Settings",
"Feature Toggles": "Feature Toggles",
@ -681,6 +687,7 @@
"Hopper error (0424)": "Hopper error (0424)",
"Hopper heating timeout": "Hopper heating timeout",
"Hopper overheated": "Hopper overheated",
"Hourly Sales": "Hourly Sales",
"Hours": "Hours",
"Hrs": "Hrs",
"IC Card UID": "IC Card UID",
@ -692,6 +699,7 @@
"Image Downloaded": "Image Downloaded",
"Immediate": "Immediate",
"In Stock": "In Stock",
"Inactive": "Inactive",
"Includes Credit Card/Mobile Pay": "Includes Credit Card/Mobile Pay",
"Indefinite": "Indefinite",
"Info": "Info",
@ -720,15 +728,14 @@
"JKO Pay": "JKO Pay",
"JKO_MERCHANT_ID": "JKO_MERCHANT_ID",
"Japanese": "Japanese",
"Inactive": "Inactive",
"Joined": "Joined",
"Just now": "Just now",
"Key": "Key",
"Key No": "Key No",
"LEVEL TYPE": "LEVEL TYPE",
"LINE Pay": "LINE Pay",
"LINE Pay Direct": "LINE Pay Direct",
"LINE Pay Direct Settings Description": "LINE Pay Direct Settings Description",
"LINE Pay": "LINE Pay",
"LINE_PAY_CHANNEL_ID": "LINE_PAY_CHANNEL_ID",
"LIVE": "LIVE",
"Last Communication": "Last Communication",
@ -824,6 +831,7 @@
"Machine System Settings": "Machine System Settings",
"Machine Utilization": "Machine Utilization",
"Machine created successfully.": "Machine created successfully.",
"Machine deleted successfully.": "Machine deleted successfully.",
"Machine images updated successfully.": "Machine images updated successfully.",
"Machine is heartbeat normal": "Machine is heartbeat normal",
"Machine model created successfully.": "Machine model created successfully.",
@ -836,7 +844,6 @@
"Machine to Warehouse": "Machine to Warehouse",
"Machine to warehouse returns": "Machine to warehouse returns",
"Machine updated successfully.": "Machine updated successfully.",
"Machine deleted successfully.": "Machine deleted successfully.",
"Machines": "Machines",
"Machines Online": "Machines Online",
"Main": "Main",
@ -870,6 +877,8 @@
"Manage your warehouses, including main and branch warehouses": "Manage your warehouses, including main and branch warehouses",
"Management of operational parameters": "Management of operational parameters",
"Management of operational parameters and models": "Management of operational parameters and models",
"Manual Sync Ads": "Manual Sync Ads",
"Manual Sync Products": "Manual Sync Products",
"Manufacturer": "Manufacturer",
"Material Code": "Material Code",
"Material Name": "Material Name",
@ -886,9 +895,6 @@
"Max Stock": "Max Stock",
"Member": "Member",
"Member & External": "Member & External",
"Member List": "Member List",
"Member Management": "Member Management",
"Member Price": "Member Price",
"Member + 1": "Member + 1",
"Member + 2": "Member + 2",
"Member + 3": "Member + 3",
@ -898,14 +904,17 @@
"Member + 7": "Member + 7",
"Member + 8": "Member + 8",
"Member + 9": "Member + 9",
"Member + LINE Pay": "Member + LINE Pay",
"Member + JKO Pay": "Member + JKO Pay",
"Member + Easy Wallet": "Member + Easy Wallet",
"Member + JKO Pay": "Member + JKO Pay",
"Member + LINE Pay": "Member + LINE Pay",
"Member + Pi Pay": "Member + Pi Pay",
"Member + PlusPay": "Member + PlusPay",
"Member List": "Member List",
"Member Management": "Member Management",
"Member Price": "Member Price",
"Member Status": "Member Status",
"Member Verify Pickup": "Member Verify Pickup",
"Member System": "Member System",
"Member Verify Pickup": "Member Verify Pickup",
"Membership Tiers": "Membership Tiers",
"Menu Permissions": "Menu Permissions",
"Merchant IDs": "Merchant IDs",
@ -925,8 +934,8 @@
"Monitor and manage stock levels across your fleet": "Monitor and manage stock levels across your fleet",
"Monitor events and system activity across your vending fleet.": "Monitor events and system activity across your vending fleet.",
"Monitor warehouse stock summary": "Monitor warehouse stock summary",
"Monthly Transactions": "Monthly Transactions",
"Monthly Cumulative Revenue": "Monthly Cumulative Revenue",
"Monthly Transactions": "Monthly Transactions",
"Monthly cumulative revenue overview": "Monthly cumulative revenue overview",
"Motor not stopped": "Motor not stopped",
"Movement History": "Movement History",
@ -938,6 +947,7 @@
"Name in English": "Name in English",
"Name in Japanese": "Name in Japanese",
"Name in Traditional Chinese": "Name in Traditional Chinese",
"Needs Attention": "Needs Attention",
"Needs replenishment": "Needs replenishment",
"Never Connected": "Never Connected",
"Never Used": "Never Used",
@ -1028,7 +1038,18 @@
"OEE.Hours": "OEE.Hours",
"OEE.Orders": "OEE.Orders",
"OEE.Sales": "OEE.Sales",
"Off": "Off",
"Offline": "Offline",
"Offline + 1": "Offline + 1",
"Offline + 2": "Offline + 2",
"Offline + 3": "Offline + 3",
"Offline + 4": "Offline + 4",
"Offline + 9": "Offline + 9",
"Offline + Easy Wallet": "Offline + Easy Wallet",
"Offline + JKO Pay": "Offline + JKO Pay",
"Offline + LINE Pay": "Offline + LINE Pay",
"Offline + Pi Pay": "Offline + Pi Pay",
"Offline + PlusPay": "Offline + PlusPay",
"Offline Machines": "Offline Machines",
"Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.",
"Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.",
@ -1067,6 +1088,7 @@
"Order is now in delivery": "Order is now in delivery",
"Order prepared successfully, stock deducted": "Order prepared successfully, stock deducted",
"Orders": "Orders",
"Orders per hour for selected date": "Orders per hour for selected date",
"Original": "Original",
"Original Type": "Original Type",
"Original:": "Original:",
@ -1082,7 +1104,6 @@
"PI_MERCHANT_ID": "PI_MERCHANT_ID",
"PNG, JPG up to 2MB": "PNG, JPG up to 2MB",
"PNG, JPG, WEBP up to 10MB": "PNG, JPG, WEBP up to 10MB",
"Recommended: 320x320 (Auto-cropped)": "Recommended: 320x320 (Auto-cropped)",
"POS Reboot": "POS Reboot",
"PS_LEVEL": "PS_LEVEL",
"PS_MERCHANT_ID": "PS_MERCHANT_ID",
@ -1146,6 +1167,7 @@
"Personnel assigned successfully": "Personnel assigned successfully",
"Phone": "Phone",
"Photo Slot": "Photo Slot",
"Pi Pay": "Pi Pay",
"Picked up": "Picked up",
"Picked up Time": "Picked up Time",
"Pickup Code": "Pickup Code",
@ -1166,6 +1188,7 @@
"Please enter address first": "Please enter address first",
"Please enter configuration name": "Please enter configuration name",
"Please select a company": "Please select a company",
"Please select a company.": "Please select a company.",
"Please select a machine": "Please select a machine",
"Please select a machine first": "Please select a machine first",
"Please select a machine model": "Please select a machine model",
@ -1174,24 +1197,13 @@
"Please select a material": "Please select a material",
"Please select a slot": "Please select a slot",
"Please select warehouse and machine": "Please select warehouse and machine",
"Pi Pay": "Pi Pay",
"PlusPay": "PlusPay",
"Point Rules": "Point Rules",
"Point Settings": "Point Settings",
"Points": "Points",
"Offline + 1": "Offline + 1",
"Offline + 2": "Offline + 2",
"Offline + 3": "Offline + 3",
"Offline + 4": "Offline + 4",
"Offline + 9": "Offline + 9",
"Offline + LINE Pay": "Offline + LINE Pay",
"Offline + JKO Pay": "Offline + JKO Pay",
"Offline + Easy Wallet": "Offline + Easy Wallet",
"Offline + Pi Pay": "Offline + Pi Pay",
"Offline + PlusPay": "Offline + PlusPay",
"Points/Voucher": "Points/Voucher",
"Points Settings": "Points Settings",
"Points toggle": "Points toggle",
"Points/Voucher": "Points/Voucher",
"Position": "Position",
"Prepared": "Prepared",
"Preparing": "Preparing",
@ -1216,7 +1228,6 @@
"Product Status": "Product Status",
"Product created successfully": "Product created successfully",
"Product deleted successfully": "Product deleted successfully",
"Slot sensor blocked": "Slot sensor blocked",
"Product empty": "Product empty",
"Product status updated to :status": "Product status updated to :status",
"Product updated successfully": "Product updated successfully",
@ -1237,12 +1248,12 @@
"Purchasing": "Purchasing",
"QR": "QR",
"QR CODE": "QR CODE",
"QR Code Payment": "QR Code Payment",
"QR Scan Payment": "QR Scan Payment",
"Qty": "Qty",
"Qty Change": "Qty Change",
"Quality": "Quality",
"Quantity": "Quantity",
"QR Code Payment": "QR Code Payment",
"Questionnaire": "Questionnaire",
"Quick Expiry Check": "Quick Expiry Check",
"Quick Maintenance": "Quick Maintenance",
@ -1253,6 +1264,7 @@
"Real-time OEE analysis awaits": "Real-time OEE analysis awaits",
"Real-time Operation Logs (Last 50)": "Real-time Operation Logs (Last 50)",
"Real-time fleet efficiency and OEE metrics": "Real-time fleet efficiency and OEE metrics",
"Real-time fleet status and revenue monitoring": "Real-time fleet status and revenue monitoring",
"Real-time inventory status across all machines with expiry tracking": "Real-time inventory status across all machines with expiry tracking",
"Real-time monitoring across all machines": "Real-time monitoring across all machines",
"Real-time monitoring and adjustment of cargo lane inventory and expiration dates": "Real-time monitoring and adjustment of cargo lane inventory and expiration dates",
@ -1260,12 +1272,16 @@
"Real-time slot-level inventory across all machines": "Real-time slot-level inventory across all machines",
"Real-time status monitoring": "Real-time status monitoring",
"Reason for this command...": "Reason for this command...",
"Reason for this sync...": "Reason for this sync...",
"Recalculate": "Recalculate",
"Receipt Printing": "Receipt Printing",
"Recent Commands": "Recent Commands",
"Recent Login": "Recent Login",
"Recently reported errors or warnings in logs": "Recently reported errors or warnings in logs",
"Recommended: 320x320 (Auto-cropped)": "Recommended: 320x320 (Auto-cropped)",
"Records": "Records",
"Refresh Now": "Refresh Now",
"Refreshing in :seconds s": "Refreshing in :seconds s",
"Refunded": "Refunded",
"Regenerate": "Regenerate",
"Regenerating the token will disconnect the physical machine until it is updated. Continue?": "Regenerating the token will disconnect the physical machine until it is updated. Continue?",
@ -1313,6 +1329,7 @@
"Result reported": "Result reported",
"Retail Price": "Retail Price",
"Returns": "Returns",
"Revenue": "Revenue",
"Risk": "Risk",
"Role": "Role",
"Role Identification": "Role Identification",
@ -1339,6 +1356,7 @@
"Sales Permissions": "Sales Permissions",
"Sales Record": "Sales Record",
"Sales Records": "Sales Records",
"Sales Today": "Sales Today",
"Save": "Save",
"Save Changes": "Save Changes",
"Save Config": "Save Config",
@ -1358,6 +1376,7 @@
"Scan to pick up your product": "Scan to pick up your product",
"Schedule": "Schedule",
"Search Company Title...": "Search Company Title...",
"Search Company...": "Search Company...",
"Search Flow ID / Slot...": "Search Flow ID / Slot...",
"Search Invoice No / Flow ID...": "Search Invoice No / Flow ID...",
"Search Machine...": "Search Machine...",
@ -1411,6 +1430,7 @@
"Select Product": "Select Product",
"Select Slot": "Select Slot",
"Select Slot...": "Select Slot...",
"Select Target Company": "Select Target Company",
"Select Target Slot": "Select Target Slot",
"Select Warehouse": "Select Warehouse",
"Select a machine to deep dive": "Select a machine to deep dive",
@ -1461,6 +1481,7 @@
"Slot not closed": "Slot not closed",
"Slot not found": "Slot not found",
"Slot report synchronized success": "Slot report synchronized success",
"Slot sensor blocked": "Slot sensor blocked",
"Slot updated successfully.": "Slot updated successfully.",
"Slots": "Slots",
"Slots need replenishment": "Slots need replenishment",
@ -1489,10 +1510,10 @@
"Staff card created successfully": "Staff card created successfully",
"Staff card deleted successfully": "Staff card deleted successfully",
"Staff card updated successfully": "Staff card updated successfully",
"Standby": "Standby",
"Standby Ad": "Standby Ad",
"Start Date": "Start Date",
"Start Delivery": "Start Delivery",
"Standby": "Standby",
"Start Time": "Start Time",
"Statistics": "Statistics",
"Status": "Status",
@ -1543,7 +1564,6 @@
"Submit Record": "Submit Record",
"Subtotal": "Subtotal",
"Success": "Success",
"Timeout": "Timeout",
"Super Admin": "Super Admin",
"Super-admin role cannot be assigned to tenant accounts.": "Super-admin role cannot be assigned to tenant accounts.",
"Superseded": "Superseded",
@ -1551,6 +1571,11 @@
"Superseded by new command": "Superseded by new command",
"Superseded by new command (Timeout)": "Superseded by new command (Timeout)",
"Survey Analysis": "Survey Analysis",
"Sync Ads": "Sync Ads",
"Sync Products": "Sync Products",
"Sync command sent successfully.": "Sync command sent successfully.",
"Sync to All Machines": "Sync to All Machines",
"Sync to Machine": "Sync to Machine",
"Syncing": "Syncing",
"Syncing Permissions...": "Syncing Permissions...",
"System": "System",
@ -1590,15 +1615,16 @@
"The Super Admin role name cannot be modified.": "The Super Admin role name cannot be modified.",
"The image is too large. Please upload an image smaller than 1MB.": "The image is too large. Please upload an image smaller than 1MB.",
"This is a system administrator role. Its name is locked to ensure system stability.": "This is a system administrator role. Its name is locked to ensure system stability.",
"This machine has a pending command. Please wait.": "This machine has a pending command. Please wait.",
"This role belongs to another company and cannot be assigned.": "This role belongs to another company and cannot be assigned.",
"This slot has a pending command. Please wait.": "This slot has a pending command. Please wait.",
"This machine has a pending command. Please wait.": "This machine has a pending command. Please wait.",
"This slot has a pending update. Please wait for the previous command to complete.": "This slot has a pending update. Please wait for the previous command to complete.",
"This slot is syncing with the machine. Please wait.": "This slot is syncing with the machine. Please wait.",
"Ticket": "Ticket",
"Ticket Link": "Ticket Link",
"Time": "Time",
"Time Slots": "Time Slots",
"Timeout": "Timeout",
"Timer": "Timer",
"Timestamp": "Timestamp",
"To": "To",
@ -1613,6 +1639,7 @@
"Total Gross Value": "Total Gross Value",
"Total Logins": "Total Logins",
"Total Machines": "Total Machines",
"Total Orders": "Total Orders",
"Total Quantity": "Total Quantity",
"Total Selected": "Total Selected",
"Total Slots": "Total Slots",
@ -1687,12 +1714,13 @@
"Upload Image": "Upload Image",
"Upload New Images": "Upload New Images",
"Upload Video": "Upload Video",
"Upload failed, please try again": "Upload failed, please try again",
"Uploading new images will replace all existing images.": "Uploading new images will replace all existing images.",
"Uploading...": "Uploading...",
"Usage Completed": "Usage Completed",
"Usage Limit": "Usage Limit",
"Usage Logs": "Usage Logs",
"Usage Progress": "Usage Progress",
"Verified": "Verified",
"Usage Completed": "Usage Completed",
"Used": "Used",
"User": "User",
"User Info": "User Info",
@ -1713,6 +1741,8 @@
"Vending": "Vending",
"Vending Page": "Vending Page",
"Venue Management": "Venue Management",
"Verified": "Verified",
"Verified Only": "Verified Only",
"Video": "Video",
"View Details": "View Details",
"View Full History": "View Full History",
@ -1767,15 +1797,17 @@
"Welcome Gift Status": "Welcome Gift Status",
"Work Content": "Work Content",
"Yes, Cancel": "Yes, Cancel",
"Yes, regenerate": "Yes, regenerate",
"Yes, Deactivate": "Yes, Deactivate",
"Yes, Delete": "Yes, Delete",
"Yes, Disable": "Yes, Disable",
"Yes, regenerate": "Yes, regenerate",
"Yesterday": "Yesterday",
"You can assign or change the personnel handling this order": "You can assign or change the personnel handling this order",
"You cannot assign permissions you do not possess.": "You cannot assign permissions you do not possess.",
"You cannot delete your own account.": "You cannot delete your own account.",
"Your recent account activity": "Your recent account activity",
"[PickupCode] Verification failed: :code": "[PickupCode] Verification failed: :code",
"[StaffCard] Verification failed: :uid": "[StaffCard] Verification failed: :uid",
"accounts": "Account Management",
"admin": "Admin",
"analysis": "Data Analysis",
@ -1890,9 +1922,9 @@
"movement.note.initial_sync_report": "B009 Initial sync slot inventory (New slot: :slot_no, Initial stock: :new)",
"movement.note.manual_adjustment": "Backend manual adjustment of slot inventory (Old: :old -> New: :new)",
"movement.note.product_changed_and_adjusted": "B009 Slot product changed and inventory adjusted (Stock :old -> :new)",
"movement.note.remote_dispense_queued": "Remote dispense command (B055), Command ID: :id",
"movement.note.replenishment_correction": "B009 Inventory report correction (Old: :old -> New: :new)",
"movement.note.slot_decommissioned_by_b009": "B009 Full sync: Slot :slot_no is not in the report list, stock :old reset to zero and removed",
"movement.note.remote_dispense_queued": "Remote dispense command (B055), Command ID: :id",
"movement.type.adjustment": "Inventory Adjustment",
"movement.type.decommission": "B009 Full Sync Removal",
"movement.type.pickup": "Pickup Code Consumed",
@ -1901,6 +1933,7 @@
"movement.type.rollback": "Dispense Failed Rollback",
"of": "of",
"of items": "items",
"orders": "orders",
"pending": "Pending",
"permissions": "Permission Settings",
"permissions.accounts": "Account Management",
@ -1916,50 +1949,20 @@
"special-permission": "Special Permissions",
"standby": "Standby Ad",
"success": "success",
"super-admin": "Super Admin",
"superseded": "Superseded",
"timeout": "Timeout",
"super-admin": "Super Admin",
"times": "times",
"to": "to",
"update": "Update",
"used": "Used",
"user": "User",
"vending": "Vending Page",
"Verified Only": "Verified Only",
"verified": "Verified",
"verify_success": "Verify Success",
"video": "Video",
"visit_gift": "Visit Gift",
"vs Yesterday": "vs Yesterday",
"warehouses": "Warehouse Management",
"待填寫": "Pending",
"Sales Today": "Sales Today",
"Revenue": "Revenue",
"Errors": "Errors",
"times": "times",
"orders": "orders",
"Hourly Sales": "Hourly Sales",
"Orders per hour for selected date": "Orders per hour for selected date",
"Alerts Today": "Alerts Today",
"All Normal": "All Normal",
"Needs Attention": "Needs Attention",
"Total Orders": "Total Orders",
"Real-time fleet status and revenue monitoring": "Real-time fleet status and revenue monitoring",
"[StaffCard] Verification failed: :uid": "[StaffCard] Verification failed: :uid",
"[PickupCode] Verification failed: :code": "[PickupCode] Verification failed: :code",
"Sync to Machine": "Sync to Machine",
"Manual Sync Ads": "Manual Sync Ads",
"Sync command sent successfully.": "Sync command sent successfully.",
"Failed to send sync command.": "Failed to send sync command.",
"Sync Ads": "Sync Ads",
"Uploading...": "Uploading...",
"Upload failed, please try again": "Upload failed, please try again",
"Sync to All Machines": "Sync to All Machines",
"Sync Products": "Sync Products",
"Reason for this sync...": "Reason for this sync...",
"Select Target Company": "Select Target Company",
"Search Company...": "Search Company...",
"Manual Sync Products": "Manual Sync Products",
"Please select a company.": "Please select a company.",
"Batch sync command has been queued. Machines will be updated sequentially.": "Batch sync command has been queued. Machines will be updated sequentially.",
"A sync command was recently sent. Please wait 1 minute.": "A sync command was recently sent. Please wait 1 minute."
"待填寫": "Pending"
}

View File

@ -1,20 +1,17 @@
{
"10s": "10秒",
"30s": "30秒",
"60s": "60秒",
"Auto Refresh": "自動更新",
"Off": "オフ",
"Refresh Now": "今すぐ更新",
"Refreshing in :seconds s": ":seconds 秒後に更新",
"15 Seconds": "15秒",
"30 Seconds": "30秒",
"30s": "30秒",
"60 Seconds": "60秒",
"60s": "60秒",
"A new verification link has been sent to your email address.": "新しい確認リンクがメールアドレスに送信されました。",
"A sync command was recently sent. Please wait 1 minute.": "先ほど同期コマンドが送信されました。1分間お待ちください。",
"AI Prediction": "AI予測",
"API Token": "APIトークン",
"API Token Copied": "APIトークンをコピーしました",
"API Token regenerated successfully.": "APIトークンの再生成が成功しました。",
"API Token has been regenerated due to serial number change.": "シリアル番号の変更により、APIトークンが再生成されました。",
"API Token regenerated successfully.": "APIトークンの再生成が成功しました。",
"APK Versions": "APKバージョン",
"APP Features": "アプリ機能",
"APP Management": "アプリ管理",
@ -39,7 +36,6 @@
"Action / Target": "操作 / 対象",
"Actions": "操作",
"Active": "有効",
"Are you sure you want to change the status of this item?": "この項目のステータスを変更してもよろしいですか?",
"Active Slots": "使用中のスロット",
"Active Status": "有効ステータス",
"Ad Settings": "広告設定",
@ -79,9 +75,9 @@
"Advertisement created successfully.": "広告が作成されました。",
"Advertisement deleted successfully": "広告が削除されました",
"Advertisement deleted successfully.": "広告が削除されました。",
"Advertisement status updated to :status": "広告のステータスが :status に更新されました",
"Advertisement updated successfully": "広告が更新されました",
"Advertisement updated successfully.": "広告が更新されました。",
"Bill Acceptor": "紙幣識別機",
"Affiliated Company": "所属会社",
"Affiliated Unit": "所属ユニット",
"Affiliation": "所属",
@ -89,6 +85,7 @@
"Alert Summary": "アラート概要",
"Alerts": "アラート",
"Alerts Pending": "保留中のアラート",
"Alerts Today": "本日のアラート",
"All": "すべて",
"All Affiliations": "すべての所属",
"All Categories": "すべてのカテゴリ",
@ -96,6 +93,7 @@
"All Companies": "すべての会社",
"All Levels": "すべてのレベル",
"All Machines": "すべての機器",
"All Normal": "すべて正常",
"All Permissions": "すべての権限",
"All Slots": "すべてのスロット",
"All Stable": "すべて安定",
@ -122,6 +120,7 @@
"Are you sure you want to cancel this order? If the order has been prepared, stock will be returned to the warehouse.": "この注文をキャンセルしてもよろしいですか?準備済みの場合は、在庫が倉庫に戻ります。",
"Are you sure you want to cancel this pass code? This action cannot be undone.": "このパスコードをキャンセルしてもよろしいですか?この操作は取り消せません。",
"Are you sure you want to cancel this pickup code? This action cannot be undone.": "受取コードをキャンセルしてもよろしいですか?この操作は取り消せません。",
"Are you sure you want to change the status of this item?": "この項目のステータスを変更してもよろしいですか?",
"Are you sure you want to change the status of this item? This will affect its visibility on vending machines.": "この項目のステータスを変更してもよろしいですか?これは自販機での表示に影響します。",
"Are you sure you want to change the status of this product? Disabled products will not be visible on the machine.": "この商品のステータスを変更してもよろしいですか?無効にすると自販機に表示されません。",
"Are you sure you want to change the status? After disabling, this account will no longer be able to log in to the system.": "ステータスを変更してもよろしいですか?無効にすると、このアカウントはシステムにログインできなくなります。",
@ -139,19 +138,20 @@
"Are you sure you want to delete this configuration? This action cannot be undone.": "この設定を削除してもよろしいですか?取り消しはできません。",
"Are you sure you want to delete this draft order? This action cannot be undone.": "この移動伝票の下書きを削除してもよろしいですか?取り消しはできません。",
"Are you sure you want to delete this item? This action cannot be undone.": "この項目を削除してもよろしいですか?取り消しはできません。",
"Are you sure you want to delete this machine? This action cannot be undone.": "この機器を削除してもよろしいですか?この操作は取り消せません。",
"Are you sure you want to delete this pass code?": "このパスコードを削除してもよろしいですか?",
"Are you sure you want to delete this product or category? This action cannot be undone.": "この商品またはカテゴリを削除してもよろしいですか?取り消しはできません。",
"Are you sure you want to delete this product?": "この商品を削除してもよろしいですか?",
"Are you sure you want to delete this product? All related historical translation data will also be removed.": "この商品を削除してもよろしいですか?関連するすべての翻訳履歴データも削除されます。",
"Are you sure you want to delete this role? This action cannot be undone.": "このロールを削除してもよろしいですか?取り消しはできません。",
"Are you sure you want to delete your account?": "アカウントを削除してもよろしいですか?",
"Are you sure you want to disable this advertisement?": "この広告を無効にしてもよろしいですか?",
"Are you sure you want to disable this pass code? It will no longer be valid for machine access.": "このパスコードを無効にしてもよろしいですか?機器へのアクセスに使用できなくなります。",
"Are you sure you want to proceed? This action cannot be undone.": "続行してもよろしいですか?この操作は取り消せません。",
"Are you sure you want to remove this assignment?": "この割り当てを削除してもよろしいですか?",
"Are you sure you want to resolve all recent issues for this machine?": "この機器の最近のすべての異常記録を解消してもよろしいですか?ステータスが正常に戻ります。",
"Are you sure you want to send this command?": "このコマンドを送信してもよろしいですか?",
"Are you sure you want to start delivery?": "配送を開始してもよろしいですか?",
"Are you sure you want to delete this machine? This action cannot be undone.": "この機器を削除してもよろしいですか?この操作は取り消せません。",
"Are you sure?": "よろしいですか?",
"Assign": "割り当て",
"Assign Advertisement": "広告配信",
@ -174,6 +174,7 @@
"Authorized Machines": "承認済み機器",
"Authorized Machines Management": "承認済み機器管理",
"Authorized Status": "承認ステータス",
"Auto Refresh": "自動更新",
"Auto Replenishment": "一括補充",
"Automatically calculate replenishment needs based on machine capacity": "機器容量に基づいて補充必要量を自動計算",
"Availability": "可用性 (Availability)",
@ -185,16 +186,18 @@
"Badge Settings": "バッジ設定",
"Barcode": "バーコード",
"Barcode / Material": "バーコード / 資材",
"Based on Hours": "時間ベースで計算",
"Basic Information": "基本情報",
"Basic Settings": "基本設定",
"Basic Specifications": "基本仕様",
"Batch": "バッチ",
"Batch No": "ロット番号",
"Batch Number": "ロット番号",
"Batch sync command has been queued. Machines will be updated sequentially.": "一括同期コマンドがキューに追加されました。機器は順次更新されます。",
"Before Qty": "変動前数量",
"Based on Hours": "時間ベースで計算",
"Belongs To": "会社名",
"Belongs To Company": "所属会社",
"Bill Acceptor": "紙幣識別機",
"Branch": "分庫",
"Branch Warehouses": "分庫数",
"Business Type": "業務タイプ",
@ -218,7 +221,6 @@
"Cannot delete warehouse with existing stock": "在庫がある倉庫は削除できません",
"Card Machine System": "カードリーダーシステム",
"Card Reader": "カードリーダー",
"Card UID": "カードUID",
"Card Reader No": "カードリーダー番号",
"Card Reader Reboot": "カードリーダー再起動",
"Card Reader Restart": "カードリーダー再起動",
@ -226,6 +228,7 @@
"Card System": "カードシステム",
"Card Terminal": "カード端末",
"Card Terminal System": "カードリーダーシステム",
"Card UID": "カードUID",
"Cash Module": "コイン・紙幣モジュール",
"Cash Module Feature": "現金モジュール機能",
"Cash Module Function": "現金モジュール機能",
@ -256,9 +259,9 @@
"Close Panel": "パネルを閉じる",
"Code": "コード",
"Code Copied": "コードをコピーしました",
"Coin Acceptor": "硬貨機",
"Coin/Banknote Machine": "硬貨・紙幣機",
"Coin/Bill Acceptor": "硬貨・紙幣機",
"Coin Acceptor": "硬貨機",
"Command Center": "コマンドセンター",
"Command Confirmation": "コマンド確認",
"Command Type": "コマンドタイプ",
@ -287,8 +290,8 @@
"Confirm Delete": "削除の確認",
"Confirm Deletion": "データの削除確認",
"Confirm Password": "新しいパスワードの確認",
"Confirm Status Change": "ステータス変更の確認",
"Confirm Prepare": "準備の確認",
"Confirm Status Change": "ステータス変更の確認",
"Confirm Stock-In": "入庫の確認",
"Confirm Stock-in Order": "入庫伝票の確認",
"Confirm Transfer": "在庫移動の確認",
@ -302,6 +305,7 @@
"Connection restored": "接続復旧",
"Connectivity Status": "接続ステータス概要",
"Connectivity vs Sales Correlation": "接続状態と売上の相関分析",
"Consumed": "消込成功",
"Contact & Details": "連絡先・詳細",
"Contact Email": "連絡先メール",
"Contact Info": "連絡先情報",
@ -316,7 +320,6 @@
"Contract Start": "契約開始",
"Contract Until (Optional)": "契約満了日 (任意)",
"Contract information updated": "契約情報が更新されました",
"Consumed": "消込成功",
"Control": "監視操作",
"Copy": "コピー",
"Copy Code": "コードをコピー",
@ -408,6 +411,7 @@
"Device Status Logs": "デバイスステータスログ",
"Devices": "台のデバイス",
"Disable": "無効",
"Disable Advertisement Confirmation": "広告無効化の確認",
"Disable Code": "パスコード無効化",
"Disable Customer Confirmation": "顧客無効化確認",
"Disable Pass Code": "パスコード無効化",
@ -441,6 +445,7 @@
"Draft": "下書き",
"Duration": "時間",
"Duration (Seconds)": "再生秒数",
"E-Ticket (EasyCard/iPass)": "電子チケット (EasyCard/iPass)",
"E.SUN Bank Scan": "玉山銀行スキャン",
"E.SUN Pay": "玉山 Pay",
"E.SUN QR Pay": "玉山銀行QR決済",
@ -451,6 +456,7 @@
"ECPay Invoice Settings Description": "ECPay 電子領収書設定",
"ESUN": "玉山銀行",
"ESUN Scan Pay": "玉山スキャン決済",
"Easy Wallet": "悠遊付 (Easy Wallet)",
"Edit": "編集",
"Edit Account": "アカウント編集",
"Edit Advertisement": "広告編集",
@ -472,8 +478,6 @@
"Edit Staff Card": "スタッフカード編集",
"Edit Sub Account Role": "サブアカウントロール編集",
"Edit Warehouse": "倉庫編集",
"E-Ticket (EasyCard/iPass)": "電子チケット (EasyCard/iPass)",
"Easy Wallet": "悠遊付 (Easy Wallet)",
"Electronic Invoice": "電子領収書",
"Electronic Invoices": "電子領収書",
"Elevator descending": "昇降プラットフォーム下降中",
@ -517,6 +521,7 @@
"Error processing request": "リクエスト処理エラー",
"Error report accepted": "エラー報告を受理しました",
"Error: :message (:code)": "エラー: :message (:code)",
"Errors": "異常回数",
"Estimated Expiry": "推定期限",
"Execute": "実行",
"Execute Change": "お釣り払い出し実行",
@ -545,6 +550,7 @@
"Failed to load tab content": "タブ内容の読み込みに失敗しました",
"Failed to resolve issues.": "異常の解消に失敗しました。",
"Failed to save permissions.": "権限の保存に失敗しました。",
"Failed to send sync command.": "同期コマンドの送信に失敗しました。",
"Failed to update machine images: ": "機器画像の更新に失敗しました: ",
"Feature Settings": "機能設定",
"Feature Toggles": "機能切り替え",
@ -681,6 +687,7 @@
"Hopper error (0424)": "ホッパー異常 (0424)",
"Hopper heating timeout": "ホッパー加熱タイムアウト",
"Hopper overheated": "ホッパー過熱",
"Hourly Sales": "時間別販売数",
"Hours": "時間",
"Hrs": "時間",
"IC Card UID": "ICカード番号",
@ -692,6 +699,7 @@
"Image Downloaded": "画像をダウンロードしました",
"Immediate": "即時",
"In Stock": "現在庫",
"Inactive": "停止中",
"Includes Credit Card/Mobile Pay": "クレジット/QR決済を含む",
"Indefinite": "無期限",
"Info": "情報",
@ -720,15 +728,14 @@
"JKO Pay": "街口支付 (JKO Pay)",
"JKO_MERCHANT_ID": "街口支付 (JKO Pay) 加盟店ID",
"Japanese": "日本語",
"Inactive": "停止中",
"Joined": "加入日",
"Just now": "たった今",
"Key": "キー",
"Key No": "鍵番号",
"LEVEL TYPE": "レベルタイプ",
"LINE Pay": "LINE Pay",
"LINE Pay Direct": "LINE Pay 直結",
"LINE Pay Direct Settings Description": "LINE Pay 直結設定",
"LINE Pay": "LINE Pay",
"LINE_PAY_CHANNEL_ID": "LINE Pay チャンネルID",
"LIVE": "ライブ",
"Last Communication": "最終通信",
@ -824,6 +831,7 @@
"Machine System Settings": "機器システム設定",
"Machine Utilization": "機器稼働率",
"Machine created successfully.": "機器が正常に作成されました。",
"Machine deleted successfully.": "機器が正常に削除されました。",
"Machine images updated successfully.": "機器画像が正常に更新されました。",
"Machine is heartbeat normal": "機器の通信は正常です",
"Machine model created successfully.": "機器モデルが正常に作成されました。",
@ -836,7 +844,6 @@
"Machine to Warehouse": "機器から倉庫",
"Machine to warehouse returns": "機器から倉庫への返却",
"Machine updated successfully.": "機器が正常に更新されました。",
"Machine deleted successfully.": "機器が正常に削除されました。",
"Machines": "機器管理",
"Machines Online": "オンライン機器",
"Main": "本庫",
@ -870,6 +877,8 @@
"Manage your warehouses, including main and branch warehouses": "本庫と分庫を含む倉庫を管理",
"Management of operational parameters": "運用パラメータの管理",
"Management of operational parameters and models": "運用パラメータとモデルの管理",
"Manual Sync Ads": "手動広告同期",
"Manual Sync Products": "手動商品同期",
"Manufacturer": "製造メーカー",
"Material Code": "資材コード",
"Material Name": "素材名",
@ -886,9 +895,6 @@
"Max Stock": "在庫上限",
"Member": "会員価格",
"Member & External": "会員および外部システム",
"Member List": "会員リスト",
"Member Management": "会員管理",
"Member Price": "会員価格",
"Member + 1": "会員 + 1",
"Member + 2": "会員 + 2",
"Member + 3": "会員 + 3",
@ -898,14 +904,17 @@
"Member + 7": "会員 + 7",
"Member + 8": "会員 + 8",
"Member + 9": "会員 + 9",
"Member + LINE Pay": "会員 + LINE Pay",
"Member + JKO Pay": "会員 + JKO Pay",
"Member + Easy Wallet": "会員 + Easy Wallet",
"Member + JKO Pay": "会員 + JKO Pay",
"Member + LINE Pay": "会員 + LINE Pay",
"Member + Pi Pay": "会員 + Pi Pay",
"Member + PlusPay": "会員 + PlusPay",
"Member List": "会員リスト",
"Member Management": "会員管理",
"Member Price": "会員価格",
"Member Status": "会員ステータス",
"Member Verify Pickup": "会員認証受取",
"Member System": "会員システム",
"Member Verify Pickup": "会員認証受取",
"Membership Tiers": "会員ランク",
"Menu Permissions": "メニュー権限",
"Merchant IDs": "加盟店IDリスト",
@ -925,8 +934,8 @@
"Monitor and manage stock levels across your fleet": "すべての機器の在庫レベルを監視および管理",
"Monitor events and system activity across your vending fleet.": "すべての自販機のイベントとシステムアクティビティを監視。",
"Monitor warehouse stock summary": "倉庫在庫の概要を監視",
"Monthly Transactions": "今月の取引額",
"Monthly Cumulative Revenue": "今月の累計収益",
"Monthly Transactions": "今月の取引額",
"Monthly cumulative revenue overview": "今月の累計収益の概要",
"Motor not stopped": "モーターが停止していません",
"Movement History": "変動履歴",
@ -938,6 +947,7 @@
"Name in English": "英語名",
"Name in Japanese": "日本語名",
"Name in Traditional Chinese": "繁体字中国語名",
"Needs Attention": "要注意",
"Needs replenishment": "補充が必要",
"Never Connected": "接続履歴なし",
"Never Used": "未使用",
@ -1028,7 +1038,18 @@
"OEE.Hours": "時間",
"OEE.Orders": "注文",
"OEE.Sales": "販売",
"Off": "オフ",
"Offline": "オフライン",
"Offline + 1": "オフライン + 1",
"Offline + 2": "オフライン + 2",
"Offline + 3": "オフライン + 3",
"Offline + 4": "オフライン + 4",
"Offline + 9": "オフライン + 9",
"Offline + Easy Wallet": "オフライン + Easy Wallet",
"Offline + JKO Pay": "オフライン + JKO Pay",
"Offline + LINE Pay": "オフライン + LINE Pay",
"Offline + Pi Pay": "オフライン + Pi Pay",
"Offline + PlusPay": "オフライン + PlusPay",
"Offline Machines": "オフライン機器",
"Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "アカウントが削除されると、すべてのリソースとデータは完全に削除されます。アカウントを削除する前に、保持したいデータや情報をダウンロードしてください。",
"Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "アカウントが削除されると、すべてのデータは永久に削除されます。完全に削除することを確認するためにパスワードを入力してください。",
@ -1067,6 +1088,7 @@
"Order is now in delivery": "注文は配送中です",
"Order prepared successfully, stock deducted": "注文の準備が成功し、在庫が差し引かれました",
"Orders": "購入注文",
"Orders per hour for selected date": "選択した日付の1時間あたりの注文数",
"Original": "元の",
"Original Type": "元のタイプ",
"Original:": "元:",
@ -1082,7 +1104,6 @@
"PI_MERCHANT_ID": "Pi 拍錢包 加盟店ID",
"PNG, JPG up to 2MB": "PNG, JPG 最大 2MB",
"PNG, JPG, WEBP up to 10MB": "PNG, JPG, WEBP 最大 10MB",
"Recommended: 320x320 (Auto-cropped)": "推奨サイズ: 320x320 (自動トリミング)",
"POS Reboot": "POS再起動",
"PS_LEVEL": "PS_LEVEL",
"PS_MERCHANT_ID": "全盈+Pay 加盟店ID",
@ -1146,6 +1167,7 @@
"Personnel assigned successfully": "担当者が正常に割り当てられました",
"Phone": "電話番号",
"Photo Slot": "写真スロット",
"Pi Pay": "Pi 拍錢包 (Pi Pay)",
"Picked up": "受取済み",
"Picked up Time": "受取時間",
"Pickup Code": "受取コード",
@ -1166,6 +1188,7 @@
"Please enter address first": "先に住所を入力してください",
"Please enter configuration name": "設定名を入力してください",
"Please select a company": "会社を選択してください",
"Please select a company.": "会社を選択してください。",
"Please select a machine": "機器を選択してください",
"Please select a machine first": "先に機器を選択してください",
"Please select a machine model": "機器モデルを選択してください",
@ -1174,24 +1197,13 @@
"Please select a material": "素材を選択してください",
"Please select a slot": "スロットを選択してください",
"Please select warehouse and machine": "倉庫と機器を選択してください",
"Pi Pay": "Pi 拍錢包 (Pi Pay)",
"PlusPay": "全盈+PAY (PlusPay)",
"Point Rules": "ポイントルール",
"Point Settings": "ポイント設定",
"Points": "ポイント",
"Offline + 1": "オフライン + 1",
"Offline + 2": "オフライン + 2",
"Offline + 3": "オフライン + 3",
"Offline + 4": "オフライン + 4",
"Offline + 9": "オフライン + 9",
"Offline + LINE Pay": "オフライン + LINE Pay",
"Offline + JKO Pay": "オフライン + JKO Pay",
"Offline + Easy Wallet": "オフライン + Easy Wallet",
"Offline + Pi Pay": "オフライン + Pi Pay",
"Offline + PlusPay": "オフライン + PlusPay",
"Points/Voucher": "ポイント/クーポン",
"Points Settings": "ポイント設定",
"Points toggle": "ポイント切り替え",
"Points/Voucher": "ポイント/クーポン",
"Position": "配信位置",
"Prepared": "準備完了",
"Preparing": "準備中",
@ -1216,7 +1228,6 @@
"Product Status": "商品ステータス",
"Product created successfully": "商品が正常に作成されました",
"Product deleted successfully": "商品が正常に削除されました",
"Slot sensor blocked": "スロットセンサーが塞がれています",
"Product empty": "スロットが空です (PDT_EMPTY)",
"Product status updated to :status": "商品のステータスが :status に更新されました",
"Product updated successfully": "商品が正常に更新されました",
@ -1237,12 +1248,12 @@
"Purchasing": "購入中",
"QR": "QR",
"QR CODE": "QRコード",
"QR Code Payment": "QRコード決済",
"QR Scan Payment": "QRスキャン決済",
"Qty": "数量",
"Qty Change": "変動数",
"Quality": "品質 (Quality)",
"Quantity": "数量",
"QR Code Payment": "QRコード決済",
"Questionnaire": "アンケート",
"Quick Expiry Check": "クイック期限チェック",
"Quick Maintenance": "クイックメンテナンス",
@ -1253,6 +1264,7 @@
"Real-time OEE analysis awaits": "リアルタイムOEE分析待機中",
"Real-time Operation Logs (Last 50)": "リアルタイム操作ログ (直近50件)",
"Real-time fleet efficiency and OEE metrics": "全機器のリアルタイム効率とOEE指標",
"Real-time fleet status and revenue monitoring": "全機器のリアルタイムステータスと収益監視",
"Real-time inventory status across all machines with expiry tracking": "すべての機器のリアルタイム在庫状態と期限追跡",
"Real-time monitoring across all machines": "全機器のリアルタイム監視",
"Real-time monitoring and adjustment of cargo lane inventory and expiration dates": "スロット在庫と期限のリアルタイム監視および調整",
@ -1260,12 +1272,16 @@
"Real-time slot-level inventory across all machines": "全機器のリアルタイムスロットレベル在庫",
"Real-time status monitoring": "リアルタイムステータス監視",
"Reason for this command...": "このコマンドの理由を入力...",
"Reason for this sync...": "今回の同期の理由...",
"Recalculate": "再計算",
"Receipt Printing": "領収書印刷",
"Recent Commands": "最近のコマンド",
"Recent Login": "最近のログイン",
"Recently reported errors or warnings in logs": "最近のログにエラーまたは警告が報告されています",
"Recommended: 320x320 (Auto-cropped)": "推奨サイズ: 320x320 (自動トリミング)",
"Records": "記録",
"Refresh Now": "今すぐ更新",
"Refreshing in :seconds s": ":seconds 秒後に更新",
"Refunded": "返金済み",
"Regenerate": "再生成",
"Regenerating the token will disconnect the physical machine until it is updated. Continue?": "トークンを再生成すると、更新されるまで物理機器の接続が切断されます。続行しますか?",
@ -1313,6 +1329,7 @@
"Result reported": "結果が報告されました",
"Retail Price": "小売価格",
"Returns": "返却伝票",
"Revenue": "本日の収益",
"Risk": "リスク状態",
"Role": "ロール",
"Role Identification": "ロール識別情報",
@ -1339,6 +1356,7 @@
"Sales Permissions": "販売管理権限",
"Sales Record": "販売記録",
"Sales Records": "販売記録",
"Sales Today": "本日の販売数",
"Save": "保存",
"Save Changes": "変更を保存",
"Save Config": "設定を保存",
@ -1358,6 +1376,7 @@
"Scan to pick up your product": "スキャンして商品を受け取る",
"Schedule": "スケジュール",
"Search Company Title...": "会社名を検索...",
"Search Company...": "会社を検索...",
"Search Flow ID / Slot...": "フローID / スロットを検索...",
"Search Invoice No / Flow ID...": "領収書番号 / フローIDを検索...",
"Search Machine...": "機器を検索...",
@ -1411,6 +1430,7 @@
"Select Product": "商品を選択",
"Select Slot": "スロットを選択",
"Select Slot...": "スロットを選択...",
"Select Target Company": "対象の会社を選択",
"Select Target Slot": "対象のスロットを選択",
"Select Warehouse": "倉庫を選択",
"Select a machine to deep dive": "詳細分析する機器を選択",
@ -1461,6 +1481,7 @@
"Slot not closed": "スロットが閉まっていません",
"Slot not found": "指定されたスロットが見つかりません",
"Slot report synchronized success": "スロットレポートの同期に成功しました",
"Slot sensor blocked": "スロットセンサーが塞がれています",
"Slot updated successfully.": "スロットが正常に更新されました。",
"Slots": "スロット数",
"Slots need replenishment": "補充が必要なスロット",
@ -1489,10 +1510,10 @@
"Staff card created successfully": "スタッフカードが正常に作成されました",
"Staff card deleted successfully": "スタッフカードが正常に削除されました",
"Staff card updated successfully": "スタッフカードが正常に更新されました",
"Standby": "待機中",
"Standby Ad": "待機広告",
"Start Date": "開始日",
"Start Delivery": "配送開始",
"Standby": "待機中",
"Start Time": "開始時間",
"Statistics": "統計",
"Status": "ステータス",
@ -1543,7 +1564,6 @@
"Submit Record": "記録を提出",
"Subtotal": "小計",
"Success": "成功",
"Timeout": "タイムアウト",
"Super Admin": "特権管理者",
"Super-admin role cannot be assigned to tenant accounts.": "特権管理者ロールは顧客アカウントに割り当てることはできません。",
"Superseded": "上書きされました",
@ -1551,6 +1571,11 @@
"Superseded by new command": "新しいコマンドにより上書きされました",
"Superseded by new command (Timeout)": "新しいコマンドにより上書きされました (タイムアウト)",
"Survey Analysis": "アンケート分析",
"Sync Ads": "広告を同期",
"Sync Products": "商品データを同期",
"Sync command sent successfully.": "同期コマンドが正常に送信されました。",
"Sync to All Machines": "全機器へ同期",
"Sync to Machine": "機器へ広告を同期",
"Syncing": "同期中",
"Syncing Permissions...": "権限を同期中...",
"System": "システム",
@ -1590,15 +1615,16 @@
"The Super Admin role name cannot be modified.": "特権管理者ロールの名前は変更できません。",
"The image is too large. Please upload an image smaller than 1MB.": "画像サイズが大きすぎます。1MB未満の画像をアップロードしてください。",
"This is a system administrator role. Its name is locked to ensure system stability.": "これはシステム管理者ロールです。システムの安定性を確保するため、名前はロックされています。",
"This machine has a pending command. Please wait.": "この機器には実行中のコマンドがあります。しばらくお待ちください。",
"This role belongs to another company and cannot be assigned.": "このロールは別の会社に属しているため、割り当てることができません。",
"This slot has a pending command. Please wait.": "このスロットには実行中のコマンドがあります。しばらくお待ちください。",
"This machine has a pending command. Please wait.": "この機器には実行中のコマンドがあります。しばらくお待ちください。",
"This slot has a pending update. Please wait for the previous command to complete.": "このスロットには保留中の更新があります。前のコマンドが完了するまでお待ちください。",
"This slot is syncing with the machine. Please wait.": "このスロットは機器と同期中です。しばらくお待ちください。",
"Ticket": "チケット",
"Ticket Link": "チケットリンク",
"Time": "時間",
"Time Slots": "時間帯",
"Timeout": "タイムアウト",
"Timer": "タイマー",
"Timestamp": "タイムスタンプ",
"To": "移動先",
@ -1613,6 +1639,7 @@
"Total Gross Value": "総販売額",
"Total Logins": "総ログイン回数",
"Total Machines": "総機器数",
"Total Orders": "本日の注文",
"Total Quantity": "総数量",
"Total Selected": "選択合計",
"Total Slots": "総スロット数",
@ -1687,12 +1714,13 @@
"Upload Image": "画像をアップロード",
"Upload New Images": "新しい写真をアップロード",
"Upload Video": "動画をアップロード",
"Upload failed, please try again": "アップロードに失敗しました、再試行してください",
"Uploading new images will replace all existing images.": "新しい写真をアップロードすると、既存のすべての写真が置き換えられます。",
"Uploading...": "アップロード中...",
"Usage Completed": "使用完了",
"Usage Limit": "使用回数上限",
"Usage Logs": "使用履歴",
"Usage Progress": "使用進捗",
"Verified": "検証済み",
"Usage Completed": "使用完了",
"Used": "使用済み",
"User": "一般ユーザー",
"User Info": "ユーザー情報",
@ -1713,6 +1741,8 @@
"Vending": "販売ページ",
"Vending Page": "販売ページ",
"Venue Management": "施設管理",
"Verified": "検証済み",
"Verified Only": "検証済みのみ",
"Video": "動画",
"View Details": "詳細を見る",
"View Full History": "完全な履歴を見る",
@ -1767,15 +1797,17 @@
"Welcome Gift Status": "来店ギフトステータス",
"Work Content": "作業内容",
"Yes, Cancel": "はい、キャンセルします",
"Yes, regenerate": "はい、再生成します",
"Yes, Deactivate": "はい、無効にします",
"Yes, Delete": "はい、削除します",
"Yes, Disable": "はい、無効にします",
"Yes, regenerate": "はい、再生成します",
"Yesterday": "昨日",
"You can assign or change the personnel handling this order": "この注文を処理する担当者を割り当て、または変更できます",
"You cannot assign permissions you do not possess.": "自身が持っていない権限を割り当てることはできません。",
"You cannot delete your own account.": "自分自身のアカウントは削除できません。",
"Your recent account activity": "最近のアカウントアクティビティ",
"[PickupCode] Verification failed: :code": "[受取コード] 検証失敗: :code",
"[StaffCard] Verification failed: :uid": "[スタッフカード] 検証失敗: :uid",
"accounts": "アカウント管理",
"admin": "管理者",
"analysis": "分析管理",
@ -1890,9 +1922,9 @@
"movement.note.initial_sync_report": "B009 初回同期スロット在庫(新規スロット: :slot_no, 初期在庫: :new",
"movement.note.manual_adjustment": "バックエンド手動スロット在庫調整(旧: :old → 新: :new",
"movement.note.product_changed_and_adjusted": "B009 スロット商品変更および在庫調整(在庫 :old → :new",
"movement.note.remote_dispense_queued": "遠隔出庫コマンド (B055), コマンド ID: :id",
"movement.note.replenishment_correction": "B009 棚卸報告修正(旧: :old → 新: :new",
"movement.note.slot_decommissioned_by_b009": "B009 全量同期:スロット :slot_no は報告リストにありません。在庫 :old はゼロにリセットされ削除されました",
"movement.note.remote_dispense_queued": "遠隔出庫コマンド (B055), コマンド ID: :id",
"movement.type.adjustment": "在庫調整",
"movement.type.decommission": "B009 全量同期削除",
"movement.type.pickup": "受取コード消費",
@ -1901,6 +1933,7 @@
"movement.type.rollback": "出庫失敗ロールバック",
"of": "/全",
"of items": "件中",
"orders": "件",
"pending": "機器受取待機中",
"permissions": "権限設定",
"permissions.accounts": "アカウント管理",
@ -1916,50 +1949,20 @@
"special-permission": "特別権限",
"standby": "待機広告",
"success": "成功",
"super-admin": "特権管理者",
"superseded": "コマンドは上書きされました",
"timeout": "コマンドタイムアウト",
"super-admin": "特権管理者",
"times": "回",
"to": "",
"update": "更新",
"used": "使用済み",
"user": "一般ユーザー",
"vending": "販売ページ",
"Verified Only": "検証済みのみ",
"verified": "検証成功",
"verify_success": "検証成功",
"video": "動画",
"visit_gift": "来店ギフト",
"vs Yesterday": "昨日比",
"warehouses": "倉庫管理",
"待填寫": "未記入",
"Sales Today": "本日の販売数",
"Revenue": "本日の収益",
"Errors": "異常回数",
"times": "回",
"orders": "件",
"Hourly Sales": "時間別販売数",
"Orders per hour for selected date": "選択した日付の1時間あたりの注文数",
"Alerts Today": "本日のアラート",
"All Normal": "すべて正常",
"Needs Attention": "要注意",
"Total Orders": "本日の注文",
"Real-time fleet status and revenue monitoring": "全機器のリアルタイムステータスと収益監視",
"[StaffCard] Verification failed: :uid": "[スタッフカード] 検証失敗: :uid",
"[PickupCode] Verification failed: :code": "[受取コード] 検証失敗: :code",
"Sync to Machine": "機器へ広告を同期",
"Manual Sync Ads": "手動広告同期",
"Sync command sent successfully.": "同期コマンドが正常に送信されました。",
"Failed to send sync command.": "同期コマンドの送信に失敗しました。",
"Sync Ads": "広告を同期",
"Uploading...": "アップロード中...",
"Upload failed, please try again": "アップロードに失敗しました、再試行してください",
"Sync to All Machines": "全機器へ同期",
"Sync Products": "商品データを同期",
"Reason for this sync...": "今回の同期の理由...",
"Select Target Company": "対象の会社を選択",
"Search Company...": "会社を検索...",
"Manual Sync Products": "手動商品同期",
"Please select a company.": "会社を選択してください。",
"Batch sync command has been queued. Machines will be updated sequentially.": "一括同期コマンドがキューに追加されました。機器は順次更新されます。",
"A sync command was recently sent. Please wait 1 minute.": "先ほど同期コマンドが送信されました。1分間お待ちください。"
"待填寫": "未記入"
}

View File

@ -1,20 +1,17 @@
{
"10s": "10秒",
"30s": "30秒",
"60s": "60秒",
"Auto Refresh": "自動更新",
"Off": "關閉",
"Refresh Now": "立即更新",
"Refreshing in :seconds s": "將在 :seconds 秒後更新",
"15 Seconds": "15 秒",
"30 Seconds": "30 秒",
"30s": "30秒",
"60 Seconds": "60 秒",
"60s": "60秒",
"A new verification link has been sent to your email address.": "已將新的驗證連結發送至您的電子郵件地址。",
"A sync command was recently sent. Please wait 1 minute.": "近期已發送過同步指令,請等待 1 分鐘後再試",
"AI Prediction": "AI智能預測",
"API Token": "API 金鑰",
"API Token Copied": "API 金鑰已複製",
"API Token regenerated successfully.": "API 金鑰重新產生成功。",
"API Token has been regenerated due to serial number change.": "由於序號變更API 金鑰已重新產生。",
"API Token regenerated successfully.": "API 金鑰重新產生成功。",
"APK Versions": "APK版本",
"APP Features": "APP功能",
"APP Management": "APP管理",
@ -39,7 +36,6 @@
"Action / Target": "操作 / 對象",
"Actions": "操作",
"Active": "已啟用",
"Are you sure you want to change the status of this item?": "您確定要變更此項目的狀態嗎?",
"Active Slots": "使用中貨道",
"Active Status": "啟用狀態",
"Ad Settings": "廣告設置",
@ -79,9 +75,9 @@
"Advertisement created successfully.": "廣告建立成功。",
"Advertisement deleted successfully": "廣告刪除成功",
"Advertisement deleted successfully.": "廣告刪除成功。",
"Advertisement status updated to :status": "廣告狀態已更新為 :status",
"Advertisement updated successfully": "廣告更新成功",
"Advertisement updated successfully.": "廣告更新成功。",
"Bill Acceptor": "紙鈔機",
"Affiliated Company": "所屬公司",
"Affiliated Unit": "公司名稱",
"Affiliation": "所屬單位",
@ -89,6 +85,7 @@
"Alert Summary": "告警摘要",
"Alerts": "警示",
"Alerts Pending": "待處理告警",
"Alerts Today": "今日異常",
"All": "全部",
"All Affiliations": "所有公司",
"All Categories": "所有分類",
@ -96,6 +93,7 @@
"All Companies": "所有公司",
"All Levels": "所有層級",
"All Machines": "所有機台",
"All Normal": "運作正常",
"All Permissions": "全部權限",
"All Slots": "所有貨道",
"All Stable": "狀態穩定",
@ -122,6 +120,7 @@
"Are you sure you want to cancel this order? If the order has been prepared, stock will be returned to the warehouse.": "確定要取消此訂單嗎?若已備貨,庫存將退回倉庫。",
"Are you sure you want to cancel this pass code? This action cannot be undone.": "您確定要取消此通行碼嗎?此動作無法復原。",
"Are you sure you want to cancel this pickup code? This action cannot be undone.": "確定要取消此取貨碼嗎?此操作無法復原。",
"Are you sure you want to change the status of this item?": "您確定要變更此項目的狀態嗎?",
"Are you sure you want to change the status of this item? This will affect its visibility on vending machines.": "您確定要變更此項目的狀態嗎?這將會影響其在販賣機上的顯示內容。",
"Are you sure you want to change the status of this product? Disabled products will not be visible on the machine.": "確定要變更此商品的狀態嗎?停用的商品將不會在機台上顯示。",
"Are you sure you want to change the status? After disabling, this account will no longer be able to log in to the system.": "您確定要變更狀態嗎?停用之後,該帳號將會立即被登出且無法再登入系統。",
@ -139,19 +138,20 @@
"Are you sure you want to delete this configuration? This action cannot be undone.": "您確定要刪除此金流配置嗎?此操作將無法復原。",
"Are you sure you want to delete this draft order? This action cannot be undone.": "您確定要刪除此調撥單草稿嗎?此操作將無法復原。",
"Are you sure you want to delete this item? This action cannot be undone.": "確定要刪除此項目嗎?此操作無法復原。",
"Are you sure you want to delete this machine? This action cannot be undone.": "您確定要刪除此機台嗎?此操作將無法復原。",
"Are you sure you want to delete this pass code?": "確定要刪除此通行碼嗎?",
"Are you sure you want to delete this product or category? This action cannot be undone.": "您確定要刪除此商品或分類嗎?此操作將無法復原。",
"Are you sure you want to delete this product?": "您確定要刪除此商品嗎?",
"Are you sure you want to delete this product? All related historical translation data will also be removed.": "確定要刪除此商品嗎?所有相關的歷史翻譯數據也將被移除。",
"Are you sure you want to delete this role? This action cannot be undone.": "您確定要刪除此角色嗎?此操作將無法復原。",
"Are you sure you want to delete your account?": "您確定要刪除您的帳號嗎?",
"Are you sure you want to disable this advertisement?": "您確定要停用此廣告嗎?",
"Are you sure you want to disable this pass code? It will no longer be valid for machine access.": "您確定要停用此通行碼嗎?停用後將無法再用於機台存取。",
"Are you sure you want to proceed? This action cannot be undone.": "您確定要繼續嗎?此操作將無法復原。",
"Are you sure you want to remove this assignment?": "您確定要移除此投放嗎?",
"Are you sure you want to resolve all recent issues for this machine?": "您確定要排除此機台目前所有的異常紀錄嗎?這將會恢復機台狀態為正常。",
"Are you sure you want to send this command?": "確定要發送此指令嗎?",
"Are you sure you want to start delivery?": "確定要開始配送嗎?",
"Are you sure you want to delete this machine? This action cannot be undone.": "您確定要刪除此機台嗎?此操作將無法復原。",
"Are you sure?": "您確定嗎?",
"Assign": "分配所屬機台",
"Assign Advertisement": "投放廣告",
@ -174,6 +174,7 @@
"Authorized Machines": "授權機台",
"Authorized Machines Management": "授權機台管理",
"Authorized Status": "已授權",
"Auto Refresh": "自動更新",
"Auto Replenishment": "一鍵補貨",
"Automatically calculate replenishment needs based on machine capacity": "根據機台容量自動計算補貨需求",
"Availability": "可用性 (Availability)",
@ -185,16 +186,18 @@
"Badge Settings": "識別證",
"Barcode": "條碼",
"Barcode / Material": "條碼 / 物料編碼",
"Based on Hours": "依據時數計算",
"Basic Information": "基本資訊",
"Basic Settings": "基本設定",
"Basic Specifications": "基本規格",
"Batch": "批號",
"Batch No": "批號",
"Batch Number": "批號",
"Batch sync command has been queued. Machines will be updated sequentially.": "批次同步指令已進入隊列,機台將依序進行更新",
"Before Qty": "異動前數量",
"Based on Hours": "依據時數計算",
"Belongs To": "公司名稱",
"Belongs To Company": "公司名稱",
"Bill Acceptor": "紙鈔機",
"Branch": "分倉",
"Branch Warehouses": "分倉數量",
"Business Type": "業務類型",
@ -218,7 +221,6 @@
"Cannot delete warehouse with existing stock": "無法刪除仍有庫存的倉庫",
"Card Machine System": "刷卡機系統",
"Card Reader": "刷卡機",
"Card UID": "卡片 UID",
"Card Reader No": "刷卡機編號",
"Card Reader Reboot": "刷卡機重啟",
"Card Reader Restart": "卡機重啟",
@ -226,6 +228,7 @@
"Card System": "刷卡機系統",
"Card Terminal": "刷卡機端",
"Card Terminal System": "刷卡機系統",
"Card UID": "卡片 UID",
"Cash Module": "硬幣機 / 紙鈔機模組",
"Cash Module Feature": "現金模組功能",
"Cash Module Function": "現金模組功能",
@ -257,9 +260,9 @@
"Close Panel": "關閉面板",
"Code": "代碼",
"Code Copied": "代碼已複製",
"Coin Acceptor": "硬幣機",
"Coin/Banknote Machine": "硬幣機/紙鈔機",
"Coin/Bill Acceptor": "硬幣機/紙鈔機",
"Coin Acceptor": "硬幣機",
"Command Center": "指令中心",
"Command Confirmation": "指令確認",
"Command Type": "指令類型",
@ -288,8 +291,8 @@
"Confirm Delete": "確認刪除",
"Confirm Deletion": "確認刪除資料",
"Confirm Password": "確認新密碼",
"Confirm Status Change": "確認狀態變更",
"Confirm Prepare": "確認備貨",
"Confirm Status Change": "確認狀態變更",
"Confirm Stock-In": "確認進貨",
"Confirm Stock-in Order": "確認進貨單",
"Confirm Transfer": "確認調撥",
@ -299,10 +302,12 @@
"Confirm this transfer?": "確定要確認此調撥作業嗎?",
"Connected": "通訊中",
"Connecting...": "連線中",
"Connection error": "連線錯誤",
"Connection lost (LWT)": "連線中斷",
"Connection restored": "連線恢復",
"Connectivity Status": "連線狀態概況",
"Connectivity vs Sales Correlation": "連線狀態與銷售關聯分析",
"Consumed": "核銷成功",
"Contact & Details": "聯絡資訊與詳情",
"Contact Email": "聯絡人信箱",
"Contact Info": "聯絡資訊",
@ -317,14 +322,13 @@
"Contract Start": "合約起始",
"Contract Until (Optional)": "合約到期日 (選填)",
"Contract information updated": "合約資訊已更新",
"Consumed": "核銷成功",
"Control": "監控操作",
"Copy": "複製",
"Copy Code": "複製代碼",
"Copy Link": "複製連結",
"Cost": "成本",
"Coupons": "優惠券",
"Create": "建立",
"Create": "新增",
"Create Config": "建立配置",
"Create Machine": "新增機台",
"Create New Role": "建立新角色",
@ -372,6 +376,7 @@
"Damage": "報廢",
"Danger Zone: Delete Account": "危險區域:刪除帳號",
"Dashboard": "儀表板",
"Data Changes": "資料異動詳情",
"Data Configuration": "資料設定",
"Data Configuration Permissions": "資料設定權限",
"Date": "日期",
@ -409,6 +414,7 @@
"Device Status Logs": "設備狀態紀錄",
"Devices": "台設備",
"Disable": "停用",
"Disable Advertisement Confirmation": "停用廣告確認",
"Disable Code": "停用通行碼",
"Disable Customer Confirmation": "停用客戶確認",
"Disable Pass Code": "停用通行碼",
@ -442,6 +448,7 @@
"Draft": "草稿",
"Duration": "時長",
"Duration (Seconds)": "播放秒數",
"E-Ticket (EasyCard/iPass)": "電子票證 (悠遊卡/一卡通)",
"E.SUN Bank Scan": "玉山銀行掃碼",
"E.SUN Pay": "玉山 Pay",
"E.SUN QR Pay": "玉山銀行掃碼",
@ -452,6 +459,7 @@
"ECPay Invoice Settings Description": "綠界科技電子發票設定",
"ESUN": "玉山銀行",
"ESUN Scan Pay": "玉山掃碼支付",
"Easy Wallet": "悠遊付",
"Edit": "編輯",
"Edit Account": "編輯帳號",
"Edit Advertisement": "編輯廣告",
@ -473,8 +481,6 @@
"Edit Staff Card": "編輯員工識別卡",
"Edit Sub Account Role": "編輯子帳號角色",
"Edit Warehouse": "編輯倉庫",
"E-Ticket (EasyCard/iPass)": "電子票證 (悠遊卡/一卡通)",
"Easy Wallet": "悠遊付",
"Electronic Invoice": "電子發票",
"Electronic Invoices": "電子發票",
"Elevator descending": "升降平台下降中",
@ -518,6 +524,7 @@
"Error processing request": "處理請求時發生錯誤",
"Error report accepted": "錯誤回報已受理",
"Error: :message (:code)": "錯誤::message (:code)",
"Errors": "異常次數",
"Estimated Expiry": "預計到期時間",
"Execute": "執行",
"Execute Change": "執行找零",
@ -546,14 +553,18 @@
"Failed to load tab content": "載入分頁內容失敗",
"Failed to resolve issues.": "排除異常失敗。",
"Failed to save permissions.": "無法儲存權限設定。",
"Failed to send command": "發送指令失敗",
"Failed to send sync command.": "無法送出同步指令",
"Failed to update machine images: ": "更新機台圖片失敗:",
"Feature Settings": "功能設定",
"Feature Toggles": "功能開關",
"Field": "欄位",
"Fill Quantity": "補貨數量",
"Fill Rate": "滿載率",
"Fill in the device repair or maintenance details": "填寫設備維修或保養詳情",
"Fill in the product details below": "請在下方填寫商品的詳細資訊",
"Filter": "篩選",
"Filter by Company": "依公司篩選",
"Filter by Warehouse Presence": "依據倉庫存貨篩選",
"Firmware Version": "韌體版本",
"Firmware updated to :version": "韌體版本更新 : :version",
@ -682,6 +693,7 @@
"Hopper error (0424)": "料斗箱異常 (0424)",
"Hopper heating timeout": "料斗箱加熱逾時",
"Hopper overheated": "料斗箱過熱",
"Hourly Sales": "逐小時銷售量",
"Hours": "小時",
"Hrs": "小時",
"IC Card UID": "IC 卡號",
@ -694,6 +706,7 @@
"Image Downloaded": "圖片已下載",
"Immediate": "立即",
"In Stock": "當前庫存",
"Inactive": "已停用",
"Includes Credit Card/Mobile Pay": "含信用卡/行動支付",
"Indefinite": "無限期",
"Info": "一般",
@ -722,15 +735,14 @@
"JKO Pay": "街口支付",
"JKO_MERCHANT_ID": "街口支付 商店代號",
"Japanese": "日文",
"Inactive": "已停用",
"Joined": "加入日期",
"Just now": "剛剛",
"Key": "金鑰 (Key)",
"Key No": "鑰匙編號",
"LEVEL TYPE": "層級類型",
"LINE Pay": "LINE Pay",
"LINE Pay Direct": "LINE Pay 官方直連",
"LINE Pay Direct Settings Description": "LINE Pay 官方直連設定",
"LINE Pay": "LINE Pay",
"LINE_PAY_CHANNEL_ID": "LINE Pay 頻道 ID",
"LIVE": "實時",
"Last Communication": "最後通訊",
@ -773,6 +785,7 @@
"Lock Page Lock": "機台 APP 鎖定",
"Lock Page Unlock": "機台 APP 解鎖",
"Locked Page": "鎖定頁",
"Log Details": "操作紀錄詳情",
"Log Time": "記錄時間",
"Login History": "登入歷史",
"Login failed: :account": "登入失敗::account",
@ -784,7 +797,6 @@
"Low Stock Alerts": "低庫存警示",
"Low stock and out-of-stock alerts": "低庫存與缺貨警示",
"Loyalty & Features": "行銷與點數",
"Marketing and Loyalty": "行銷與點數",
"Machine": "機台",
"Machine / Date": "機台 / 日期",
"Machine / Employee": "機台 / 員工",
@ -827,6 +839,7 @@
"Machine System Settings": "機台系統設定",
"Machine Utilization": "機台稼動率",
"Machine created successfully.": "機台已成功建立。",
"Machine deleted successfully.": "機台已成功刪除。",
"Machine images updated successfully.": "機台圖片已成功更新。",
"Machine is heartbeat normal": "機台通訊正常",
"Machine model created successfully.": "機台型號已成功建立。",
@ -839,7 +852,6 @@
"Machine to Warehouse": "機台對倉庫",
"Machine to warehouse returns": "機台退回倉庫",
"Machine updated successfully.": "機台更新成功。",
"Machine deleted successfully.": "機台已成功刪除。",
"Machines": "機台管理",
"Machines Online": "在線機台數",
"Main": "總倉",
@ -860,6 +872,7 @@
"Manage administrative and tenant accounts": "管理系統管理者與客戶帳號",
"Manage all tenant accounts and validity": "管理所有客戶帳號及其效期",
"Manage employee IC cards and track usage logs.": "管理員工 IC 卡並追蹤使用日誌。",
"Manage machine access permissions": "管理機台存取權限",
"Manage multi-use authorization codes for testing and maintenance": "管理用於測試與維修的多用途授權碼",
"Manage stock levels, stock-in orders, and movement history": "追蹤庫存水位、進貨單與異動紀錄",
"Manage stock transfers between warehouses and machine returns": "建立倉庫間調撥或機台退庫單",
@ -873,7 +886,10 @@
"Manage your warehouses, including main and branch warehouses": "管理您的倉庫,包含總倉與分倉設定",
"Management of operational parameters": "機台運作參數管理",
"Management of operational parameters and models": "管理運作參數與型號",
"Manual Sync Ads": "手動同步機台廣告",
"Manual Sync Products": "手動同步商品",
"Manufacturer": "製造商",
"Marketing and Loyalty": "行銷與點數",
"Material Code": "物料代碼",
"Material Name": "素材名稱",
"Material Type": "素材類型",
@ -889,9 +905,6 @@
"Max Stock": "庫存上限",
"Member": "會員價",
"Member & External": "會員與外部系統",
"Member List": "會員列表",
"Member Management": "會員管理",
"Member Price": "會員價",
"Member + 1": "會員 + 1",
"Member + 2": "會員 + 2",
"Member + 3": "會員 + 3",
@ -901,14 +914,17 @@
"Member + 7": "會員 + 7",
"Member + 8": "會員 + 8",
"Member + 9": "會員 + 9",
"Member + LINE Pay": "會員 + LINE Pay",
"Member + JKO Pay": "會員 + 街口支付",
"Member + Easy Wallet": "會員 + 悠遊付",
"Member + JKO Pay": "會員 + 街口支付",
"Member + LINE Pay": "會員 + LINE Pay",
"Member + Pi Pay": "會員 + Pi 拍錢包",
"Member + PlusPay": "會員 + 全盈+PAY",
"Member List": "會員列表",
"Member Management": "會員管理",
"Member Price": "會員價",
"Member Status": "會員狀態",
"Member Verify Pickup": "會員驗證取貨",
"Member System": "會員系統",
"Member Verify Pickup": "會員驗證取貨",
"Membership Tiers": "會員等級",
"Menu Permissions": "選單權限",
"Merchant IDs": "特店代號清單",
@ -924,12 +940,13 @@
"Model changed to :model": "型號變更::model",
"Models": "型號列表",
"Modification History": "異動歷程",
"Modified fields": "修改欄位",
"Modifying your own administrative permissions may result in losing access to certain system functions.": "修改自身管理權限可能導致失去對部分系統功能的控制權。",
"Monitor and manage stock levels across your fleet": "監控並管理所有機台的庫存水位",
"Monitor events and system activity across your vending fleet.": "跨機台連線動態與系統日誌監控。",
"Monitor warehouse stock summary": "監控倉庫庫存摘要",
"Monthly Transactions": "本月交易統計",
"Monthly Cumulative Revenue": "本月累計營收",
"Monthly Transactions": "本月交易統計",
"Monthly cumulative revenue overview": "本月累計營收概況",
"Motor not stopped": "電機未停止",
"Movement History": "異動紀錄",
@ -941,9 +958,11 @@
"Name in English": "英文名稱",
"Name in Japanese": "日文名稱",
"Name in Traditional Chinese": "繁體中文名稱",
"Needs Attention": "需要注意",
"Needs replenishment": "需要補貨",
"Never Connected": "從未連線",
"Never Used": "從未使用",
"New": "新值",
"New Command": "新增指令",
"New Machine Name": "新機台名稱",
"New Password": "新密碼",
@ -954,6 +973,7 @@
"New Stock-In Order": "新增進貨單",
"New Sub Account Role": "新增子帳號角色",
"New Transfer": "新增調撥單",
"New Value": "新資料",
"Next": "下一頁",
"No Company": "系統",
"No Invoice": "不開立發票",
@ -968,11 +988,13 @@
"No assignments": "尚未投放",
"No associated order found": "無關聯訂單",
"No categories found.": "找不到分類。",
"No changes detected": "未偵測到資料變更",
"No command history": "尚無指令紀錄",
"No configurations found": "暫無相關配置",
"No content provided": "未提供內容",
"No customers found": "找不到客戶資料",
"No data available": "暫無資料",
"No detailed changes recorded": "沒有詳細的變更紀錄",
"No file uploaded.": "未上傳任何檔案。",
"No heartbeat for over 30 seconds": "超過 30 秒未收到心跳",
"No history records": "尚無歷史紀錄",
@ -990,6 +1012,7 @@
"No materials available": "沒有可用的素材",
"No movement records found": "查無異動紀錄",
"No movements found": "尚無異動紀錄",
"No operation logs found": "找不到操作紀錄",
"No pass codes found": "找不到通行碼",
"No permissions": "無權限項目",
"No pickup codes found": "找不到取貨碼",
@ -1031,8 +1054,21 @@
"OEE.Hours": "小時",
"OEE.Orders": "訂單",
"OEE.Sales": "銷售",
"Off": "關閉",
"Offline": "離線",
"Offline + 1": "離線 + 1",
"Offline + 2": "離線 + 2",
"Offline + 3": "離線 + 3",
"Offline + 4": "離線 + 4",
"Offline + 9": "離線 + 9",
"Offline + Easy Wallet": "離線 + 悠遊付",
"Offline + JKO Pay": "離線 + 街口支付",
"Offline + LINE Pay": "離線 + LINE Pay",
"Offline + Pi Pay": "離線 + Pi 拍錢包",
"Offline + PlusPay": "離線 + 全盈+PAY",
"Offline Machines": "離線機台",
"Old": "舊值",
"Old Value": "舊資料",
"Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "一旦您的帳號被刪除,其所有資源和數據將被永久刪除。在刪除帳號之前,請下載您希望保留的任何數據或資訊。",
"Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "帳號一旦刪除,所有關連數據將被永久移除。請輸入您的密碼以確認您希望永久刪除此帳號。",
"One-click replenishment order generation": "一鍵產生補貨單",
@ -1042,6 +1078,7 @@
"Online Machines": "在線機台",
"Online Status": "在線狀態",
"Only system roles can be assigned to platform administrative accounts.": "僅系統角色可指派給平台管理帳號。",
"Operation Logs": "操作紀錄",
"Operation Note": "操作備註",
"Operation Records": "操作紀錄",
"Operation failed": "操作失敗",
@ -1070,6 +1107,7 @@
"Order is now in delivery": "訂單配送中",
"Order prepared successfully, stock deducted": "訂單已成功備貨,庫存已扣除",
"Orders": "購買單",
"Orders per hour for selected date": "當日各小時訂單筆數",
"Original": "原始",
"Original Type": "原始類型",
"Original:": "原:",
@ -1085,7 +1123,6 @@
"PI_MERCHANT_ID": "Pi 拍錢包 商店代號",
"PNG, JPG up to 2MB": "支援 PNG, JPG (最大 2MB)",
"PNG, JPG, WEBP up to 10MB": "支援 PNG, JPG, WEBP 格式,且不超過 10MB",
"Recommended: 320x320 (Auto-cropped)": "建議尺寸320x320 (系統將自動裁切)",
"POS Reboot": "刷卡重啟",
"PS_LEVEL": "PS_LEVEL",
"PS_MERCHANT_ID": "全盈+Pay 商店代號",
@ -1149,6 +1186,7 @@
"Personnel assigned successfully": "人員指派成功",
"Phone": "手機號碼",
"Photo Slot": "照片欄位",
"Pi Pay": "Pi 拍錢包",
"Picked up": "領取",
"Picked up Time": "領取時間",
"Pickup Code": "取貨碼",
@ -1169,6 +1207,7 @@
"Please enter address first": "請先輸入地址",
"Please enter configuration name": "請輸入設定名稱",
"Please select a company": "請選擇公司",
"Please select a company.": "請選擇公司",
"Please select a machine": "請選擇機台",
"Please select a machine first": "請先選擇機台",
"Please select a machine model": "請選擇機台型號",
@ -1177,24 +1216,13 @@
"Please select a material": "請選擇素材",
"Please select a slot": "請選擇貨道",
"Please select warehouse and machine": "請選擇倉庫和機台",
"Pi Pay": "Pi 拍錢包",
"PlusPay": "全盈+PAY",
"Point Rules": "點數規則",
"Point Settings": "點數設定",
"Points": "點數功能",
"Offline + 1": "離線 + 1",
"Offline + 2": "離線 + 2",
"Offline + 3": "離線 + 3",
"Offline + 4": "離線 + 4",
"Offline + 9": "離線 + 9",
"Offline + LINE Pay": "離線 + LINE Pay",
"Offline + JKO Pay": "離線 + 街口支付",
"Offline + Easy Wallet": "離線 + 悠遊付",
"Offline + Pi Pay": "離線 + Pi 拍錢包",
"Offline + PlusPay": "離線 + 全盈+PAY",
"Points/Voucher": "點數/優惠券",
"Points Settings": "點數設定",
"Points toggle": "點數開關",
"Points/Voucher": "點數/優惠券",
"Position": "投放位置",
"Prepared": "已備貨",
"Preparing": "備貨中",
@ -1219,7 +1247,6 @@
"Product Status": "商品狀態",
"Product created successfully": "商品已成功建立",
"Product deleted successfully": "商品已成功刪除",
"Slot sensor blocked": "貨道口有物",
"Product empty": "貨道缺貨 (PDT_EMPTY)",
"Product status updated to :status": "商品狀態已更新為 :status",
"Product updated successfully": "商品已成功更新",
@ -1240,12 +1267,12 @@
"Purchasing": "購買中",
"QR": "二維碼",
"QR CODE": "二維碼",
"QR Code Payment": "掃碼支付",
"QR Scan Payment": "掃碼支付功能",
"Qty": "數量",
"Qty Change": "異動數量",
"Quality": "品質 (Quality)",
"Quantity": "數量",
"QR Code Payment": "掃碼支付",
"Questionnaire": "問卷",
"Quick Expiry Check": "效期快速檢查",
"Quick Maintenance": "快速維護",
@ -1256,6 +1283,7 @@
"Real-time OEE analysis awaits": "即時 OEE 分析預備中",
"Real-time Operation Logs (Last 50)": "即時操作日誌 (最後 50 筆)",
"Real-time fleet efficiency and OEE metrics": "全機台即時效率與 OEE 指標",
"Real-time fleet status and revenue monitoring": "全機台即時狀態與營收監控",
"Real-time inventory status across all machines with expiry tracking": "即時掌握所有機台庫存狀態與有效期限追蹤",
"Real-time monitoring across all machines": "跨機台即時狀態監控",
"Real-time monitoring and adjustment of cargo lane inventory and expiration dates": "即時監控與調整各機台貨道庫存與效期狀態",
@ -1263,12 +1291,16 @@
"Real-time slot-level inventory across all machines": "跨機台的即時貨道庫存追蹤",
"Real-time status monitoring": "即時監控機台連線動態",
"Reason for this command...": "請輸入執行此指令的原因...",
"Reason for this sync...": "此次同步的原因...",
"Recalculate": "重新計算",
"Receipt Printing": "收據簽單",
"Recent Commands": "最近指令",
"Recent Login": "最近登入",
"Recently reported errors or warnings in logs": "近期日誌中有錯誤或警告回報",
"Recommended: 320x320 (Auto-cropped)": "建議尺寸320x320 (系統將自動裁切)",
"Records": "筆",
"Refresh Now": "立即更新",
"Refreshing in :seconds s": "將在 :seconds 秒後更新",
"Refunded": "已退款",
"Regenerate": "重新產生",
"Regenerating the token will disconnect the physical machine until it is updated. Continue?": "重新產生金鑰將導致實體機台暫時失去連線,必須於機台端更新此新金鑰才能恢復。確定繼續嗎?",
@ -1316,6 +1348,7 @@
"Result reported": "結果已回報",
"Retail Price": "零售價",
"Returns": "回庫單",
"Revenue": "今日營收",
"Risk": "風險狀態",
"Role": "角色",
"Role Identification": "角色識別資訊",
@ -1342,6 +1375,7 @@
"Sales Permissions": "銷售管理權限",
"Sales Record": "銷售紀錄",
"Sales Records": "銷售紀錄",
"Sales Today": "今日銷售",
"Save": "儲存",
"Save Changes": "儲存變更",
"Save Config": "儲存配置",
@ -1361,6 +1395,7 @@
"Scan to pick up your product": "掃描以領取您的商品",
"Schedule": "排程區間",
"Search Company Title...": "搜尋公司名稱...",
"Search Company...": "搜尋公司...",
"Search Flow ID / Slot...": "搜尋 流水號 / 貨道...",
"Search Invoice No / Flow ID...": "搜尋 發票號碼 / 流水號...",
"Search Machine...": "搜尋機台...",
@ -1385,6 +1420,7 @@
"Search machines by name or serial...": "搜尋機台名稱或序號...",
"Search machines...": "搜尋機台...",
"Search models...": "搜尋型號...",
"Search notes or values...": "搜尋備註或數值...",
"Search order number...": "搜尋單號...",
"Search products...": "搜尋商品名稱...",
"Search roles...": "搜尋角色...",
@ -1414,6 +1450,7 @@
"Select Product": "選擇商品",
"Select Slot": "選擇貨道",
"Select Slot...": "選擇貨道...",
"Select Target Company": "選擇目標公司",
"Select Target Slot": "選擇目標貨道",
"Select Warehouse": "選擇倉庫",
"Select a machine to deep dive": "請選擇機台以開始深度分析",
@ -1464,6 +1501,7 @@
"Slot not closed": "貨道未關閉",
"Slot not found": "找不到指定貨道",
"Slot report synchronized success": "貨道狀態同步成功",
"Slot sensor blocked": "貨道口有物",
"Slot updated successfully.": "貨道更新成功。",
"Slots": "貨道數",
"Slots need replenishment": "需要補貨的貨道",
@ -1492,10 +1530,10 @@
"Staff card created successfully": "員工識別卡建立成功",
"Staff card deleted successfully": "員工識別卡刪除成功",
"Staff card updated successfully": "員工識別卡更新成功",
"Standby": "系統待機",
"Standby Ad": "待機廣告",
"Start Date": "起始日",
"Start Delivery": "開始配送",
"Standby": "系統待機",
"Start Time": "開始時間",
"Statistics": "數據統計",
"Status": "狀態",
@ -1546,7 +1584,6 @@
"Submit Record": "提交紀錄",
"Subtotal": "小計",
"Success": "成功",
"Timeout": "逾時",
"Super Admin": "超級管理員",
"Super-admin role cannot be assigned to tenant accounts.": "超級管理員角色無法指派給客戶帳號。",
"Superseded": "已取代",
@ -1554,6 +1591,11 @@
"Superseded by new command": "此指令已由後面最新的指令所取代",
"Superseded by new command (Timeout)": "指令逾時 (1 分鐘未回報),已被新指令覆蓋。",
"Survey Analysis": "問卷分析",
"Sync Ads": "同步廣告",
"Sync Products": "同步商品資料",
"Sync command sent successfully.": "同步指令已成功送出",
"Sync to All Machines": "同步到所有機台",
"Sync to Machine": "同步廣告至機台",
"Syncing": "同步中",
"Syncing Permissions...": "正在同步權限...",
"System": "系統",
@ -1577,6 +1619,7 @@
"TapPay Integration": "TapPay 支付串接",
"TapPay Integration Settings Description": "喬睿科技支付串接設定",
"Target": "目標",
"Target Item": "操作目標",
"Target Machine": "目標機台",
"Target Warehouse": "目標倉庫",
"Tax ID": "統一編號",
@ -1593,15 +1636,16 @@
"The Super Admin role name cannot be modified.": "超級管理員角色的名稱無法修改。",
"The image is too large. Please upload an image smaller than 1MB.": "圖片檔案太大,請上傳小於 1MB 的圖片。",
"This is a system administrator role. Its name is locked to ensure system stability.": "這是系統管理員角色,名稱已鎖定以確保系統穩定性。",
"This machine has a pending command. Please wait.": "此機台已有指令正在執行,請稍後。",
"This role belongs to another company and cannot be assigned.": "此角色屬於其他公司,無法指派。",
"This slot has a pending command. Please wait.": "此貨道已有指令正在執行,請稍後。",
"This machine has a pending command. Please wait.": "此機台已有指令正在執行,請稍後。",
"This slot has a pending update. Please wait for the previous command to complete.": "此貨道已有更新指令在執行中,請等候前一個指令完成。",
"This slot is syncing with the machine. Please wait.": "此貨道正在與機台同步中,請稍候。",
"Ticket": "憑證",
"Ticket Link": "憑證連結",
"Time": "時間",
"Time Slots": "時段組合",
"Timeout": "逾時",
"Timer": "計時器",
"Timestamp": "時間戳記",
"To": "目的地",
@ -1616,6 +1660,7 @@
"Total Gross Value": "銷售總額",
"Total Logins": "總登入次數",
"Total Machines": "機台總數",
"Total Orders": "今日訂單",
"Total Quantity": "補貨總量",
"Total Selected": "已選擇總數",
"Total Slots": "總貨道數",
@ -1676,7 +1721,7 @@
"Unlock Now": "立即解鎖",
"Unlock Page": "頁面解鎖",
"Unpublish": "下架",
"Update": "更新",
"Update": "編輯",
"Update Authorization": "更新授權",
"Update Customer": "更新客戶",
"Update Pass Code": "更新通行碼",
@ -1690,12 +1735,13 @@
"Upload Image": "上傳圖片",
"Upload New Images": "上傳新照片",
"Upload Video": "上傳影片",
"Upload failed, please try again": "上傳失敗,請重試",
"Uploading new images will replace all existing images.": "上傳新照片將會取代所有現有照片。",
"Uploading...": "上傳中...",
"Usage Completed": "使用完成",
"Usage Limit": "使用次數上限",
"Usage Logs": "使用紀錄",
"Usage Progress": "使用進度",
"Verified": "驗證成功",
"Usage Completed": "使用完成",
"Used": "已使用",
"User": "一般用戶",
"User Info": "用戶資訊",
@ -1716,6 +1762,8 @@
"Vending": "販賣頁",
"Vending Page": "販賣頁",
"Venue Management": "場地管理",
"Verified": "驗證成功",
"Verified Only": "僅限驗證",
"Video": "影片",
"View Details": "查看詳情",
"View Full History": "查看完整歷程",
@ -1770,26 +1818,34 @@
"Welcome Gift Status": "來店禮",
"Work Content": "作業內容",
"Yes, Cancel": "確認取消",
"Yes, regenerate": "是的,重新產生",
"Yes, Deactivate": "是的,停用",
"Yes, Delete": "是的,刪除",
"Yes, Disable": "是的,停用",
"Yes, regenerate": "是的,重新產生",
"Yesterday": "昨日",
"You can assign or change the personnel handling this order": "您可以指派或變更處理此訂單的人員",
"You cannot assign permissions you do not possess.": "您無法指派您自身不具備的權限。",
"You cannot delete your own account.": "您無法刪除自己的帳號。",
"Your recent account activity": "最近的帳號活動",
"[PickupCode] Verification failed: :code": "[取貨碼] 驗證失敗: :code",
"[StaffCard] Verification failed: :uid": "[員工卡] 驗證失敗: :uid",
"accounts": "帳號管理",
"admin": "管理員",
"analysis": "分析管理",
"and :count other items": "等 :count 項商品",
"app": "APP 管理",
"audit": "稽核管理",
"barcode": "條碼",
"basic-settings": "基本設定",
"basic.machines": "機台設定",
"basic.payment-configs": "客戶金流設定",
"by": "由",
"cancel": "取消",
"category": "分類",
"category_created": "分類已建立",
"category_deleted": "分類已刪除",
"category_id": "分類",
"category_updated": "分類資訊已更新",
"command.change": "找零",
"command.checkout": "結帳",
"command.dispense": "出貨",
@ -1799,14 +1855,17 @@
"command.reload_stock": "同步庫存",
"command.unlock": "解鎖",
"companies": "客戶管理",
"company_id": "公司",
"completed": "取貨完成",
"consume": "取貨成功",
"consume_failed": "取貨失敗",
"consumed": "核銷完成",
"cost": "成本",
"create": "建立",
"data-config": "資料設定",
"data-config.sub-account-roles": "子帳號角色",
"data-config.sub-accounts": "子帳號管理",
"description": "商品描述",
"disabled": "停用",
"e.g. 500ml / 300g": "例如500ml / 300g",
"e.g. John Doe": "例如:張曉明",
@ -1828,6 +1887,8 @@
"files selected": "個檔案已選擇",
"hours ago": "小時前",
"image": "圖片",
"image_url": "商品圖片",
"is_active": "啟用狀態",
"items": "筆項目",
"john@example.com": "john@example.com",
"line": "Line 管理",
@ -1841,6 +1902,8 @@
"log.pickup.verify_success": "[取貨碼] 驗證成功,碼::code",
"log.pickup.verify_success_note": "機台 [:machine_sn] 已驗證取貨碼 [:code]",
"machines": "機台管理",
"manufacturer": "製造商",
"member_price": "會員價",
"members": "會員管理",
"menu.analysis": "數據分析",
"menu.app": "APP 運維",
@ -1893,22 +1956,32 @@
"movement.note.initial_sync_report": "B009 首次同步初始化貨道庫存(新增貨道: :slot_no初始庫存: :new",
"movement.note.manual_adjustment": "後台手動修改貨道庫存(舊: :old → 新: :new",
"movement.note.product_changed_and_adjusted": "B009 貨道商品變更並調整庫存(庫存 :old → :new",
"movement.note.remote_dispense_queued": "遠端出貨指令 (B055),指令 ID: :id",
"movement.note.replenishment_correction": "B009 盤點回報修正(舊: :old → 新: :new",
"movement.note.slot_decommissioned_by_b009": "B009 全量同步:貨道 :slot_no 不在回報清單中,庫存 :old 歸零並移除",
"movement.note.remote_dispense_queued": "遠端出貨指令 (B055),指令 ID: :id",
"movement.type.adjustment": "盤點調整",
"movement.type.decommission": "B009 全量同步移除",
"movement.type.pickup": "取貨碼消耗",
"movement.type.remote_dispense": "遠端出貨",
"movement.type.replenishment": "補貨入庫",
"movement.type.rollback": "出貨失敗退回",
"name": "商品名稱",
"name_dictionary_key": "多語系鍵值",
"of": "/共",
"of items": "筆項目",
"orders": "筆",
"pending": "等待機台領取",
"permissions": "權限設定",
"permissions.accounts": "帳號管理",
"permissions.companies": "客戶管理",
"permissions.roles": "角色權限管理",
"price": "售價",
"product": "商品",
"product_catalog_synced_to_all_machines": "商品目錄已同步至所有機台",
"product_created": "商品已建立",
"product_deleted": "商品已刪除",
"product_status_toggled": "商品狀態已切換",
"product_updated": "商品資訊已更新",
"remote": "遠端管理",
"reservation": "預約系統",
"roles": "角色權限",
@ -1916,101 +1989,28 @@
"sales": "銷售管理",
"sent": "機台已接收",
"set": "已設定",
"spec": "規格",
"special-permission": "特殊權限",
"spring_limit": "彈簧容量",
"standby": "待機廣告",
"status": "狀態",
"success": "成功",
"super-admin": "超級管理員",
"superseded": "指令已覆蓋",
"timeout": "指令逾時",
"super-admin": "超級管理員",
"times": "次",
"to": "至",
"track_limit": "履帶容量",
"type": "商品類型",
"update": "更新",
"used": "已使用",
"user": "一般用戶",
"vending": "販賣頁",
"Verified Only": "僅限驗證",
"verified": "驗證成功",
"verify_success": "驗證成功",
"video": "影片",
"visit_gift": "來店禮",
"vs Yesterday": "較昨日",
"warehouses": "倉庫管理",
"待填寫": "待填寫",
"Sales Today": "今日銷售",
"Revenue": "今日營收",
"Errors": "異常次數",
"times": "次",
"orders": "筆",
"Hourly Sales": "逐小時銷售量",
"Orders per hour for selected date": "當日各小時訂單筆數",
"Alerts Today": "今日異常",
"All Normal": "運作正常",
"Needs Attention": "需要注意",
"Total Orders": "今日訂單",
"Real-time fleet status and revenue monitoring": "全機台即時狀態與營收監控",
"[StaffCard] Verification failed: :uid": "[員工卡] 驗證失敗: :uid",
"[PickupCode] Verification failed: :code": "[取貨碼] 驗證失敗: :code",
"Sync to Machine": "同步廣告至機台",
"Manual Sync Ads": "手動同步機台廣告",
"Sync command sent successfully.": "同步指令已成功送出",
"Failed to send sync command.": "無法送出同步指令",
"Sync Ads": "同步廣告",
"Uploading...": "上傳中...",
"Upload failed, please try again": "上傳失敗,請重試",
"Sync to All Machines": "同步到所有機台",
"Connection error": "連線錯誤",
"Failed to send command": "發送指令失敗",
"Sync Products": "同步商品資料",
"Reason for this sync...": "此次同步的原因...",
"Select Target Company": "選擇目標公司",
"Search Company...": "搜尋公司...",
"Manual Sync Products": "手動同步商品",
"Please select a company.": "請選擇公司",
"Batch sync command has been queued. Machines will be updated sequentially.": "批次同步指令已進入隊列,機台將依序進行更新",
"A sync command was recently sent. Please wait 1 minute.": "近期已發送過同步指令,請等待 1 分鐘後再試",
"Operation Logs": "操作紀錄",
"product": "商品",
"category": "分類",
"product_created": "商品已建立",
"product_updated": "商品資訊已更新",
"product_status_toggled": "商品狀態已切換",
"product_deleted": "商品已刪除",
"product_catalog_synced_to_all_machines": "商品目錄已同步至所有機台",
"category_created": "分類已建立",
"category_updated": "分類資訊已更新",
"category_deleted": "分類已刪除",
"Search notes or values...": "搜尋備註或數值...",
"Filter by Company": "依公司篩選",
"No operation logs found": "找不到操作紀錄",
"Old Value": "舊資料",
"New Value": "新資料",
"Data Changes": "資料異動詳情",
"Field": "欄位",
"Old": "舊值",
"New": "新值",
"No changes detected": "未偵測到資料變更",
"Log Details": "操作紀錄詳情",
"No detailed changes recorded": "沒有詳細的變更紀錄",
"Modified fields": "修改欄位",
"company_id": "公司",
"category_id": "分類",
"name": "商品名稱",
"name_dictionary_key": "多語系鍵值",
"barcode": "條碼",
"spec": "規格",
"manufacturer": "製造商",
"description": "商品描述",
"price": "售價",
"member_price": "會員價",
"cost": "成本",
"track_limit": "履帶容量",
"spring_limit": "彈簧容量",
"type": "商品類型",
"image_url": "商品圖片",
"status": "狀態",
"is_active": "啟用狀態",
"Operator": "操作人員",
"Create": "新增",
"Update": "編輯",
"Target Item": "操作目標",
"Manage machine access permissions": "管理機台存取權限"
"待填寫": "待填寫"
}

View File

@ -207,6 +207,25 @@ $baseRoute = 'admin.data-config.advertisements';
{{-- Action Buttons --}}
<div class="flex items-center gap-3">
<div class="flex items-center gap-2">
<button type="button"
@if($ad->is_active)
@click="toggleStatus('{{ route($baseRoute . '.status.toggle', $ad->id) }}')"
@else
@click="toggleFormAction = '{{ route($baseRoute . '.status.toggle', $ad->id) }}'; $nextTick(() => $refs.statusToggleForm.submit())"
@endif
class="p-3 rounded-xl bg-slate-50 dark:bg-slate-800 text-slate-400 hover:bg-emerald-500 hover:text-white transition-all duration-300 border border-slate-200/50 dark:border-slate-700/50"
title="{{ __('Status') }}">
@if($ad->is_active)
<svg class="w-4 h-4 stroke-[2.5]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 5.25v13.5m-7.5-13.5v13.5" />
</svg>
@else
<svg class="w-4 h-4 stroke-[2.5]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round"
d="M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.348a1.125 1.125 0 010 1.971l-11.54 6.347c-.75.412-1.667-.13-1.667-.986V5.653z" />
</svg>
@endif
</button>
<button type="button" @click="openEditModal(@js($ad))"
class="p-3 rounded-xl bg-slate-50 dark:bg-slate-800 text-slate-400 hover:bg-cyan-500 hover:text-white transition-all duration-300 border border-slate-200/50 dark:border-slate-700/50"
title="{{ __('Edit') }}">
@ -332,6 +351,24 @@ $baseRoute = 'admin.data-config.advertisements';
</td>
<td class="px-6 py-4 text-right">
<div class="flex justify-end items-center gap-2">
@if($ad->is_active)
<button type="button" @click="toggleStatus('{{ route($baseRoute . '.status.toggle', $ad->id) }}')"
class="p-2.5 rounded-lg bg-slate-50 dark:bg-slate-800 text-slate-400 hover:text-amber-500 hover:bg-amber-500/5 transition-all border border-transparent hover:border-amber-500/20"
title="{{ __('Disable') }}">
<svg class="w-4 h-4 stroke-[2.5]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 5.25v13.5m-7.5-13.5v13.5" />
</svg>
</button>
@else
<button type="button" @click="toggleFormAction = '{{ route($baseRoute . '.status.toggle', $ad->id) }}'; $nextTick(() => $refs.statusToggleForm.submit())"
class="p-2.5 rounded-lg bg-slate-50 dark:bg-slate-800 text-slate-400 hover:text-emerald-500 hover:bg-emerald-500/5 transition-all border border-transparent hover:border-emerald-500/20"
title="{{ __('Enable') }}">
<svg class="w-4 h-4 stroke-[2.5]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round"
d="M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.348a1.125 1.125 0 010 1.971l-11.54 6.347c-.75.412-1.667-.13-1.667-.986V5.653z" />
</svg>
</button>
@endif
<button @click="openEditModal(@js($ad))"
class="p-2.5 rounded-lg bg-slate-50 dark:bg-slate-800 text-slate-400 hover:text-cyan-500 hover:bg-cyan-500/5 transition-all border border-transparent hover:border-cyan-500/20"
title="{{ __('Edit') }}">
@ -720,6 +757,13 @@ $baseRoute = 'admin.data-config.advertisements';
<x-delete-confirm-modal :title="__('Delete Advertisement Confirmation')"
:message="__('Are you sure you want to delete this advertisement? This will also remove all assignments to machines.')" />
<x-status-confirm-modal :title="__('Disable Advertisement Confirmation')" :message="__('Are you sure you want to disable this advertisement?')" />
<form x-ref="statusToggleForm" :action="toggleFormAction" method="POST" class="hidden">
@csrf
@method('PATCH')
</form>
</div>
@endsection
@ -746,6 +790,22 @@ $baseRoute = 'admin.data-config.advertisements';
isDeleteConfirmOpen: false,
deleteFormAction: '',
// Status Toggle
isStatusConfirmOpen: false,
toggleFormAction: '',
toggleStatus(actionUrl) {
this.toggleFormAction = actionUrl;
this.isStatusConfirmOpen = true;
},
submitConfirmedForm() {
if (this.isStatusConfirmOpen) {
this.isStatusConfirmOpen = false;
this.$refs.statusToggleForm.submit();
}
},
// Preview
isPreviewOpen: false,
previewAd: { url: '', type: '', name: '', duration: 15 },
@ -843,7 +903,7 @@ $baseRoute = 'admin.data-config.advertisements';
syncAdsToMachine() {
if (!this.selectedMachineId) {
window.showToast?.('{{ __('Please select a machine first') }}', 'error');
window.showToast?.(@js(__('Please select a machine first')), 'error');
return;
}
this.isSyncConfirmOpen = true;

View File

@ -5,36 +5,28 @@
{{-- Company Filter (If Admin) --}}
@if(auth()->user()->isSystemAdmin())
<div class="w-full sm:w-64">
<select name="log_company_id" class="hidden"
data-hs-select='{
"placeholder": "{{ __("Filter by Company") }}",
"toggleClasses": "hs-select-toggle luxury-select-toggle",
"dropdownClasses": "hs-select-menu w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-white/10 rounded-xl shadow-2xl mt-2 z-[100]",
"optionClasses": "hs-select-option py-2 px-3 text-sm text-slate-800 dark:text-slate-300 cursor-pointer hover:bg-slate-100 dark:hover:bg-white/5 rounded-lg flex items-center justify-between",
"hasSearch": true,
"searchPlaceholder": "{{ __("Search Company...") }}"
}'>
<option value="">{{ __('All Companies') }}</option>
@foreach($companies as $company)
<option value="{{ $company->id }}" {{ request('log_company_id') == $company->id ? 'selected' : '' }}>
{{ $company->name }}
</option>
@endforeach
</select>
<div class="w-full sm:w-64 flex-none">
<x-searchable-select
name="log_company_id"
:options="$companies"
:selected="request('log_company_id')"
:placeholder="__('Filter by Company')"
/>
</div>
@endif
{{-- Search Keyword --}}
<div class="relative group w-full sm:w-64 sm:flex-none">
<span class="absolute inset-y-0 left-0 flex items-center pl-4 pointer-events-none z-10 text-slate-400 group-focus-within:text-cyan-500 transition-colors">
<svg class="w-4 h-4 stroke-[2.5]" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round">
<span class="absolute inset-y-0 left-0 flex items-center pl-4 pointer-events-none z-10">
<svg class="w-4 h-4 text-slate-400 group-focus-within:text-cyan-500 transition-colors"
viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" x2="16.65" y2="16.65"></line>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg>
</span>
<input type="text" name="search_log" value="{{ request('search_log') }}"
class="py-2.5 pl-12 pr-6 block w-full luxury-input text-sm font-bold"
class="py-2.5 pl-11 pr-4 block w-full luxury-input text-sm font-bold"
placeholder="{{ __('Search notes or values...') }}">
</div>
@ -154,7 +146,10 @@
<td class="px-6 py-5">
<div class="flex flex-col">
<span class="text-[10px] font-black text-indigo-500 uppercase tracking-widest">{{ __($log->module) }}</span>
<span class="text-sm font-black text-slate-800 dark:text-slate-100">#{{ $log->target_id }}</span>
<span class="text-sm font-black text-slate-800 dark:text-slate-100 truncate max-w-[150px]" title="{{ $log->target_name }}">{{ $log->target_name ?: '#' . $log->target_id }}</span>
@if($log->target_name)
<span class="text-[10px] font-bold text-slate-400">#{{ $log->target_id }}</span>
@endif
</div>
</td>
<td class="px-6 py-5">
@ -249,7 +244,10 @@
<div class="flex items-center justify-between pt-3 border-t border-slate-100 dark:border-white/5">
<div class="flex flex-col">
<span class="text-xs font-bold text-slate-400">#{{ $log->target_id }}</span>
<span class="text-xs font-bold text-slate-700 dark:text-slate-200">{{ $log->target_name ?: '#' . $log->target_id }}</span>
@if($log->target_name)
<span class="text-[10px] font-bold text-slate-400">#{{ $log->target_id }}</span>
@endif
<span class="text-[10px] font-black text-slate-500 uppercase">{{ $log->user->name ?? 'System' }}</span>
</div>
@if(!empty($changedKeysMob))

View File

@ -170,6 +170,7 @@ Route::middleware(['auth', 'verified', 'tenant.access'])->prefix('admin')->name(
// 廣告管理 (Advertisement Management)
Route::middleware('can:menu.data-config.advertisements')->group(function () {
Route::resource('advertisements', App\Http\Controllers\Admin\AdvertisementController::class)->except(['show', 'create', 'edit']);
Route::patch('/advertisements/{id}/toggle-status', [App\Http\Controllers\Admin\AdvertisementController::class, 'toggleStatus'])->name('advertisements.status.toggle');
Route::get('/advertisements/machine/{machine}', [App\Http\Controllers\Admin\AdvertisementController::class, 'getMachineAds'])->name('advertisements.machine.get');
Route::post('/advertisements/assign', [App\Http\Controllers\Admin\AdvertisementController::class, 'assign'])->name('advertisements.assign');
Route::post('/advertisements/assignments/reorder', [App\Http\Controllers\Admin\AdvertisementController::class, 'reorderAssignments'])->name('advertisements.assignments.reorder');