authorizeMaintenanceAccess('maintenance.access'); $business_id = $this->maintenanceUtil->getBusinessId(); $settings = $this->maintenanceUtil->getMaintenanceSettings($business_id); $accountingEnabled = $this->maintenanceUtil->isAccountingEnabled($business_id); $assetEnabled = $this->maintenanceUtil->isAssetManagementEnabled($business_id); $crmEnabled = $this->maintenanceUtil->isCrmEnabled($business_id); return view('maintenance::settings.index', [ 'settings' => $settings, 'accounting_enabled' => $accountingEnabled, 'asset_enabled' => $assetEnabled, 'crm_enabled' => $crmEnabled, 'accounts' => $accountingEnabled ? $this->maintenanceUtil->getAccountingAccountsDropdown($business_id) : [], 'asset_categories' => $assetEnabled ? $this->maintenanceUtil->getAssetCategoriesDropdown($business_id) : [], 'locations' => $this->maintenanceUtil->getLocationsDropdown($business_id), ]); } public function update(Request $request) { $this->authorizeMaintenanceAccess('maintenance.access'); $business_id = $this->maintenanceUtil->getBusinessId(); $existing = $this->maintenanceUtil->getMaintenanceSettings($business_id); $data = $request->validate([ 'expense_account_id' => 'nullable|integer', 'payment_account_id' => 'nullable|integer', 'default_asset_category_id' => 'nullable|integer', 'auto_post_journal' => 'sometimes|boolean', 'auto_create_asset' => 'sometimes|boolean', 'crm_sync_followup_on_equipment' => 'sometimes|boolean', 'crm_sync_followup_on_work_order' => 'sometimes|boolean', 'auto_pm_reminders' => 'sometimes|boolean', 'auto_create_pm_work_order' => 'sometimes|boolean', 'sync_pos_stock' => 'sometimes|boolean', 'deduct_pos_stock_on_consume' => 'sometimes|boolean', 'default_stock_location_id' => 'nullable|integer', ]); $settings = array_merge($existing, [ 'expense_account_id' => $data['expense_account_id'] ?? null, 'payment_account_id' => $data['payment_account_id'] ?? null, 'default_asset_category_id' => $data['default_asset_category_id'] ?? null, 'auto_post_journal' => $request->boolean('auto_post_journal'), 'auto_create_asset' => $request->boolean('auto_create_asset'), 'crm_sync_followup_on_equipment' => $request->boolean('crm_sync_followup_on_equipment'), 'crm_sync_followup_on_work_order' => $request->boolean('crm_sync_followup_on_work_order'), 'auto_pm_reminders' => $request->boolean('auto_pm_reminders'), 'auto_create_pm_work_order' => $request->boolean('auto_create_pm_work_order'), 'sync_pos_stock' => $request->boolean('sync_pos_stock'), 'deduct_pos_stock_on_consume' => $request->boolean('deduct_pos_stock_on_consume'), 'default_stock_location_id' => $data['default_stock_location_id'] ?? null, ]); if (\Illuminate\Support\Facades\Schema::hasColumn('business', 'maintenance_settings')) { Business::where('id', $business_id)->update([ 'maintenance_settings' => json_encode($settings), ]); } return redirect() ->action([self::class, 'index']) ->with('status', 'تنظیمات نگهداری ذخیره شد.'); } }