diff --git a/app/Http/Controllers/Admin/BasicSettings/MachineSettingController.php b/app/Http/Controllers/Admin/BasicSettings/MachineSettingController.php index c10316c..f40d784 100644 --- a/app/Http/Controllers/Admin/BasicSettings/MachineSettingController.php +++ b/app/Http/Controllers/Admin/BasicSettings/MachineSettingController.php @@ -194,6 +194,12 @@ class MachineSettingController extends AdminController 'is_spring_slot_41_50' => 'boolean', 'is_spring_slot_51_60' => 'boolean', 'member_system_enabled' => 'boolean', + 'tax_invoice_enabled' => 'boolean', + 'card_terminal_enabled' => 'boolean', + 'scan_pay_esun_enabled' => 'boolean', + 'scan_pay_linepay_enabled' => 'boolean', + 'shopping_cart_enabled' => 'boolean', + 'cash_module_enabled' => 'boolean', 'machine_model_id' => 'required|exists:machine_models,id', 'payment_config_id' => 'nullable|exists:payment_configs,id', 'location' => 'nullable|string|max:255', diff --git a/app/Http/Controllers/Admin/CompanyController.php b/app/Http/Controllers/Admin/CompanyController.php index 466b558..ab7c24a 100644 --- a/app/Http/Controllers/Admin/CompanyController.php +++ b/app/Http/Controllers/Admin/CompanyController.php @@ -74,13 +74,6 @@ class CompanyController extends Controller if (isset($validated['settings'])) { $validated['settings']['enable_material_code'] = filter_var($validated['settings']['enable_material_code'] ?? false, FILTER_VALIDATE_BOOLEAN); $validated['settings']['enable_points'] = filter_var($validated['settings']['enable_points'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['tax_invoice'] = filter_var($validated['settings']['tax_invoice'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['card_terminal'] = filter_var($validated['settings']['card_terminal'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['scan_pay_esun'] = filter_var($validated['settings']['scan_pay_esun'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['scan_pay_linepay'] = filter_var($validated['settings']['scan_pay_linepay'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['shopping_cart'] = filter_var($validated['settings']['shopping_cart'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['welcome_gift'] = filter_var($validated['settings']['welcome_gift'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['cash_module'] = filter_var($validated['settings']['cash_module'] ?? false, FILTER_VALIDATE_BOOLEAN); } DB::transaction(function () use ($validated) { @@ -185,13 +178,6 @@ class CompanyController extends Controller if (isset($validated['settings'])) { $validated['settings']['enable_material_code'] = filter_var($validated['settings']['enable_material_code'] ?? false, FILTER_VALIDATE_BOOLEAN); $validated['settings']['enable_points'] = filter_var($validated['settings']['enable_points'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['tax_invoice'] = filter_var($validated['settings']['tax_invoice'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['card_terminal'] = filter_var($validated['settings']['card_terminal'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['scan_pay_esun'] = filter_var($validated['settings']['scan_pay_esun'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['scan_pay_linepay'] = filter_var($validated['settings']['scan_pay_linepay'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['shopping_cart'] = filter_var($validated['settings']['shopping_cart'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['welcome_gift'] = filter_var($validated['settings']['welcome_gift'] ?? false, FILTER_VALIDATE_BOOLEAN); - $validated['settings']['cash_module'] = filter_var($validated['settings']['cash_module'] ?? false, FILTER_VALIDATE_BOOLEAN); } DB::transaction(function () use ($validated, $company) { @@ -230,13 +216,6 @@ class CompanyController extends Controller $formattedSettings = [ 'enable_material_code' => filter_var($settings['enable_material_code'] ?? false, FILTER_VALIDATE_BOOLEAN), 'enable_points' => filter_var($settings['enable_points'] ?? false, FILTER_VALIDATE_BOOLEAN), - 'tax_invoice' => filter_var($settings['tax_invoice'] ?? false, FILTER_VALIDATE_BOOLEAN), - 'card_terminal' => filter_var($settings['card_terminal'] ?? false, FILTER_VALIDATE_BOOLEAN), - 'scan_pay_esun' => filter_var($settings['scan_pay_esun'] ?? false, FILTER_VALIDATE_BOOLEAN), - 'scan_pay_linepay' => filter_var($settings['scan_pay_linepay'] ?? false, FILTER_VALIDATE_BOOLEAN), - 'shopping_cart' => filter_var($settings['shopping_cart'] ?? false, FILTER_VALIDATE_BOOLEAN), - 'welcome_gift' => filter_var($settings['welcome_gift'] ?? false, FILTER_VALIDATE_BOOLEAN), - 'cash_module' => filter_var($settings['cash_module'] ?? false, FILTER_VALIDATE_BOOLEAN), ]; // Ensure we force save the JSON cast properly diff --git a/app/Http/Controllers/Admin/WarehouseController.php b/app/Http/Controllers/Admin/WarehouseController.php index 34058ed..e5e3408 100644 --- a/app/Http/Controllers/Admin/WarehouseController.php +++ b/app/Http/Controllers/Admin/WarehouseController.php @@ -147,7 +147,7 @@ class WarehouseController extends Controller public function inventory(Request $request) { - $tab = $request->input('tab', 'stock-in'); + $tab = $request->input('tab', 'stock'); $warehouses = Warehouse::active()->orderBy('name')->get(); $data = compact('warehouses', 'tab'); diff --git a/app/Models/Machine/Machine.php b/app/Models/Machine/Machine.php index 8b50ed7..bea51a1 100644 --- a/app/Models/Machine/Machine.php +++ b/app/Models/Machine/Machine.php @@ -85,6 +85,12 @@ class Machine extends Model 'images', 'creator_id', 'updater_id', + 'tax_invoice_enabled', + 'card_terminal_enabled', + 'scan_pay_esun_enabled', + 'scan_pay_linepay_enabled', + 'shopping_cart_enabled', + 'cash_module_enabled', ]; protected $appends = ['image_urls', 'calculated_status']; @@ -177,6 +183,12 @@ class Machine extends Model 'is_spring_slot_41_50' => 'boolean', 'is_spring_slot_51_60' => 'boolean', 'member_system_enabled' => 'boolean', + 'tax_invoice_enabled' => 'boolean', + 'card_terminal_enabled' => 'boolean', + 'scan_pay_esun_enabled' => 'boolean', + 'scan_pay_linepay_enabled' => 'boolean', + 'shopping_cart_enabled' => 'boolean', + 'cash_module_enabled' => 'boolean', 'images' => 'array', ]; diff --git a/database/migrations/2026_04_24_082553_add_system_settings_to_machines_table.php b/database/migrations/2026_04_24_082553_add_system_settings_to_machines_table.php new file mode 100644 index 0000000..91e23e3 --- /dev/null +++ b/database/migrations/2026_04_24_082553_add_system_settings_to_machines_table.php @@ -0,0 +1,40 @@ +boolean('tax_invoice_enabled')->default(0)->after('invoice_status')->comment('電子發票開關'); + $table->boolean('card_terminal_enabled')->default(0)->after('card_reader_no')->comment('刷卡機系統開關'); + $table->boolean('scan_pay_esun_enabled')->default(0)->after('card_terminal_enabled')->comment('玉山掃碼支付開關'); + $table->boolean('scan_pay_linepay_enabled')->default(0)->after('scan_pay_esun_enabled')->comment('LinePay支付開關'); + $table->boolean('shopping_cart_enabled')->default(0)->after('scan_pay_linepay_enabled')->comment('購物車功能開關'); + $table->boolean('cash_module_enabled')->default(0)->after('shopping_cart_enabled')->comment('現金模組開關'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('machines', function (Blueprint $table) { + $table->dropColumn([ + 'tax_invoice_enabled', + 'card_terminal_enabled', + 'scan_pay_esun_enabled', + 'scan_pay_linepay_enabled', + 'shopping_cart_enabled', + 'cash_module_enabled', + ]); + }); + } +}; diff --git a/resources/views/admin/basic-settings/machines/edit.blade.php b/resources/views/admin/basic-settings/machines/edit.blade.php index b995832..7fa8700 100644 --- a/resources/views/admin/basic-settings/machines/edit.blade.php +++ b/resources/views/admin/basic-settings/machines/edit.blade.php @@ -77,7 +77,8 @@ } this.$el.submit(); } - }" @submit.prevent="submitForm" action="{{ route('admin.basic-settings.machines.update', $machine) }}" method="POST" enctype="multipart/form-data" class="space-y-6"> + }" @submit.prevent="submitForm" action="{{ route('admin.basic-settings.machines.update', $machine) }}" method="POST" enctype="multipart/form-data" + x-data="{ activeTab: 'basic' }" class="space-y-6"> @csrf @method('PUT') @@ -101,9 +102,34 @@ @endif + +
+ + + +
+
+ + +
@@ -194,8 +220,14 @@
+
+
+ + + +
-
+
@@ -230,11 +262,24 @@
+
+ + + @foreach($paymentConfigs as $config) + + @endforeach + +
-
+
@@ -271,9 +316,184 @@
+ + +
+
+
+
+ + + +
+

{{ __('Machine System Settings') }}

+
+ +
+ +
+
+
+
+ +
+
+ {{ __('Electronic Invoice') }} + {{ __('System-wide Invoice Support') }} +
+
+
+ + tax_invoice_enabled ? 'checked' : '' }} class="sr-only peer"> +
+
+
+ +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
- +
@@ -321,7 +541,7 @@
@@ -338,83 +558,6 @@
-
-
-
- - - -
-

{{ __('Payment & Invoice') }}

-
- -
-
- - - @foreach($paymentConfigs as $config) - - @endforeach - -
- -
- - - - - - -
-
-
- -
-
-
- - - -
-

{{ __('Member & External') }}

-
- -
- - - -
-
- diff --git a/resources/views/admin/companies/index.blade.php b/resources/views/admin/companies/index.blade.php index 4d6d015..5393f13 100644 --- a/resources/views/admin/companies/index.blade.php +++ b/resources/views/admin/companies/index.blade.php @@ -225,7 +225,7 @@

- {{ __('Customer List') }} + {{ __('Customer Management') }}

{{ __('Manage all tenant accounts and validity') }} @@ -1012,116 +1012,6 @@

- - -
-
-

{{ __('Taxation System') }}

-
-
- -
-
- - -
-
-

{{ __('Card Terminal System') }}

-
-
- -
-
- - -
-
-

{{ __('QR Scan Payment') }}

-
-
- - -
-
- - -
-
-

{{ __('Shopping Cart Feature') }}

-
-
- -
-
- - -
-
-

{{ __('Welcome Gift Feature') }}

-
-
- -
-
- - -
-
-

{{ __('Cash Module Feature') }}

-
-
- -
-
diff --git a/resources/views/admin/warehouses/inventory.blade.php b/resources/views/admin/warehouses/inventory.blade.php index b9d1e77..6fc3572 100644 --- a/resources/views/admin/warehouses/inventory.blade.php +++ b/resources/views/admin/warehouses/inventory.blade.php @@ -242,7 +242,7 @@

-