diff --git a/app/Console/Commands/DeploySettingsConstCommand.php b/app/Console/Commands/DeploySettingsConstCommand.php index 774fb3f..aac3b6e 100644 --- a/app/Console/Commands/DeploySettingsConstCommand.php +++ b/app/Console/Commands/DeploySettingsConstCommand.php @@ -146,14 +146,14 @@ class DeploySettingsConstCommand extends Command $sync = app(SettingsRuntimeCanEditSync::class); $sync->useDatabase($database); $updated = $sync->sync(); - $this->line(" runtime can_edit sync: {$updated} row(s) updated"); + $this->line(" can_edit sync: {$updated} row(s) updated"); $status = $sync->statusMap(); if ($status !== []) { $preview = collect($status) ->map(fn ($canEdit, $key) => "{$key}={$canEdit}") ->implode(', '); - $this->line(" runtime keys: {$preview}"); + $this->line(" can_edit sample: {$preview}"); } $violations = $sync->violations(); @@ -161,6 +161,11 @@ class DeploySettingsConstCommand extends Command $this->warn(' WARN: runtime keys still can_edit≠1: '.implode(', ', array_keys($violations))); } + $advancedViolations = $sync->advancedViolations(); + if ($advancedViolations !== []) { + $this->warn(' WARN: advanced keys still can_edit≠0: '.implode(', ', array_keys($advancedViolations))); + } + $fee = \App\Models\Setting::query() ->where('key', 'fee_deduct_from_gold') ->first(['key', 'can_edit']); diff --git a/app/Services/SettingsRuntimeCanEditSync.php b/app/Services/SettingsRuntimeCanEditSync.php index 8aa69f6..9468a56 100644 --- a/app/Services/SettingsRuntimeCanEditSync.php +++ b/app/Services/SettingsRuntimeCanEditSync.php @@ -6,31 +6,101 @@ use App\Models\Setting; use Illuminate\Support\Facades\DB; /** - * تثبیت can_edit=1 برای کلیدهای runtime tenant (Montzar، up/down_price، …). - * بعد از deploy_settings_const.sql هم اجرا می‌شود تا حتی با SQL قدیمی روی سرور درست بماند. + * تثبیت can_edit بعد از deploy_settings_const.sql / deploy:tenant: + * - RUNTIME_KEYS → 1 + * - ADVANCED_PANEL_KEYS → 0 (فقط تنظیمات پیشرفته) + * - chart_use_local_data → 1 (تنظیمات عادی → منبع قیمت و تابلو) */ class SettingsRuntimeCanEditSync { + /** + * کلیدهای can_edit=0 — فقط تنظیمات پیشرفته (ادمین دیپلوی). + * هم‌تراز آخرین override در deploy_settings_const.sql + * + * @var list + */ + public const ADVANCED_PANEL_KEYS = [ + 'up_price', + 'down_price', + 'price_extreme_date', + 'main_product', + 'price_provider', + 'zaarbox_api_url', + 'montzar_base_url', + 'montzar_diff', + 'montzar_closed', + 'montzar_order_response', + 'montzar_token', + 'montzar_live_price', + 'montzar_last_product_log', + 'montzar_truly_buy_mazaneh', + 'montzar_truly_sell_mazaneh', + 'montzar_mazaneh', + 'node_client_id', + 'node_shared_secret', + 'external_order_api_enabled', + 'deposit_method_gateway', + 'deposit_method_identified', + 'deposit_method_shetab', + 'payping_verify_url', + 'payping_start_url', + 'payping_strict_failed_withdraw', + 'payping_fin_token', + 'chart_id', + 'payping_round_toman', + 'payping_gateway_items', + 'payping_gateway_name', + 'payping_fin_customer_id', + 'payping_fin_url', + ]; + /** @return list */ public function keys(): array { return SuperAdminProgramSettingsOverlay::RUNTIME_KEYS; } + /** @return list */ + public function advancedKeys(): array + { + return self::ADVANCED_PANEL_KEYS; + } + public function sync(): int { - $keys = $this->keys(); - if ($keys === []) { - return 0; + $updated = 0; + + $runtime = $this->keys(); + if ($runtime !== []) { + $updated += Setting::query() + ->whereIn('key', $runtime) + ->where(function ($query) { + $query->where('can_edit', '!=', 1) + ->orWhereNull('can_edit'); + }) + ->update(['can_edit' => 1]); } - return Setting::query() - ->whereIn('key', $keys) + $advanced = $this->advancedKeys(); + if ($advanced !== []) { + $updated += Setting::query() + ->whereIn('key', $advanced) + ->where(function ($query) { + $query->where('can_edit', '!=', 0) + ->orWhereNull('can_edit'); + }) + ->update(['can_edit' => 0]); + } + + $updated += Setting::query() + ->where('key', 'chart_use_local_data') ->where(function ($query) { $query->where('can_edit', '!=', 1) ->orWhereNull('can_edit'); }) ->update(['can_edit' => 1]); + + return $updated; } /** @@ -55,12 +125,44 @@ class SettingsRuntimeCanEditSync } /** - * @return array key => can_edit for all runtime keys present in DB + * @return array key => can_edit still not 0 among advanced keys + */ + public function advancedViolations(): array + { + $keys = $this->advancedKeys(); + if ($keys === []) { + return []; + } + + return Setting::query() + ->whereIn('key', $keys) + ->where(function ($query) { + $query->where('can_edit', '!=', 0) + ->orWhereNull('can_edit'); + }) + ->orderBy('key') + ->pluck('can_edit', 'key') + ->all(); + } + + /** + * @return array key => can_edit for runtime + sample advanced keys */ public function statusMap(): array { + $keys = array_values(array_unique(array_merge( + $this->keys(), + [ + 'price_provider', + 'montzar_token', + 'chart_id', + 'chart_use_local_data', + 'deposit_method_gateway', + ] + ))); + return Setting::query() - ->whereIn('key', $this->keys()) + ->whereIn('key', $keys) ->orderBy('key') ->pluck('can_edit', 'key') ->all(); diff --git a/app/Services/SuperAdminProgramSettingsOverlay.php b/app/Services/SuperAdminProgramSettingsOverlay.php index c5d06e7..969144f 100644 --- a/app/Services/SuperAdminProgramSettingsOverlay.php +++ b/app/Services/SuperAdminProgramSettingsOverlay.php @@ -60,20 +60,11 @@ class SuperAdminProgramSettingsOverlay 'tracking_systems', ]; - /** لاگ/قیمت لحظه‌ای همکار — can_edit=1 در DB؛ کد مستقیم UpdateConfig می‌زند، نه سوپرادمین */ + /** + * فقط کلیدهایی که هنوز از پنل قابل ویرایش نیستند و کد tenant می‌نویسد. + * بقیهٔ سابق (montzar_* / up_price / …) can_edit=0 و فقط در تنظیمات پیشرفته ویرایش می‌شوند. + */ public const RUNTIME_KEYS = [ - 'montzar_last_product_log', - 'montzar_order_response', - 'montzar_live_price', - 'montzar_mazaneh', - 'montzar_diff', - 'montzar_truly_buy_mazaneh', - 'montzar_truly_sell_mazaneh', - 'montzar_token', - 'montzar_closed', - 'up_price', - 'down_price', - 'price_extreme_date', 'do_send_liman', ]; diff --git a/database/sql/DEPLOY_CHECKLIST.md b/database/sql/DEPLOY_CHECKLIST.md index bfa44fe..071661e 100644 --- a/database/sql/DEPLOY_CHECKLIST.md +++ b/database/sql/DEPLOY_CHECKLIST.md @@ -98,7 +98,8 @@ php artisan settings:deploy | `2019`/`2021` No بعد از baseline | baseline قدیمی → `fake_package_migrations.sql` | | `Unknown host HOST` | از `.env` بخوان نه placeholder | | `Unknown column 'total_referrals'` | `git pull` + `php artisan migrate` (ensure_total_referrals) | -| `montzar_*` هنوز `can_edit=0` در Navicat | **`git pull` روی server** سپس `php artisan deploy:tenant` — باید `runtime can_edit sync` و `montzar_token=1` چاپ شود | +| `montzar_token` / `price_provider` هنوز `can_edit=1` در Navicat | **`git pull` روی server** سپس `php artisan deploy:tenant` (یا چند DB: `php artisan settings:deploy db1 db2 …`) — باید `can_edit sync` و `price_provider=0` چاپ شود | +| `chart_use_local_data` در تنظیمات پیشرفته است | همان deploy — باید `chart_use_local_data=1` و فقط در تنظیمات عادی باشد | | گروه Montzar در تنظیمات عادی نیست | **`git pull` + build ادمین** (`ed326a4+`) + `price_provider=montzar` در سوپرادمین | | کلید runtime در سوپرادمین نیست (عمدی) | API `19d28f2+` + `npm run replicas:sync`؛ web سوپرادمین هم `git pull` + build | | `Unknown column 'order_limit_enabled'` / محدودیت سفارش ذخیره نمی‌شود | `git pull` + `php artisan migrate` (ensure_products_baseline_columns) | diff --git a/database/sql/deploy_settings_const.sql b/database/sql/deploy_settings_const.sql index 5947a3c..5d6ae82 100644 --- a/database/sql/deploy_settings_const.sql +++ b/database/sql/deploy_settings_const.sql @@ -209,7 +209,7 @@ SELECT 'chart_use_local_data', 'false', 'نمودار از داده خود سا WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'chart_use_local_data' LIMIT 1); INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) -SELECT 'chart_id', '', 'UUID نمودار Zaarbox', 1, 1, 'خالی = UUID پیش‌فرض سرویس', 'text' +SELECT 'chart_id', '', 'UUID نمودار Zaarbox', 0, 1, 'خالی = UUID پیش‌فرض سرویس', 'text' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'chart_id' LIMIT 1); INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`) @@ -1324,7 +1324,7 @@ UPDATE `settings` SET `type` = 'text' WHERE `type` IS NULL OR TRIM(`type`) = ''; -- کلیدهای modular اضافی (INSERT اگر نبود) -- --------------------------------------------------------------------------- INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`, `description`) -SELECT 'price_provider', 'منبع قیمت', 'montzar', 1, 0, 1, 'select', 'منبع فعال قیمت|montzar,zaarbox,main_product' +SELECT 'price_provider', 'منبع قیمت', 'montzar', 0, 0, 1, 'select', 'منبع فعال قیمت|montzar,zaarbox,main_product' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_provider' LIMIT 1); -- حذف alias قدیمی؛ منبع واحد: fee_service_charge_percentage @@ -1363,7 +1363,7 @@ SELECT 'enamad_logo', 'لوگوی اینماد', '', 1, 0, 1, 'text' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'enamad_logo' LIMIT 1); INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`) -SELECT 'zaarbox_api_url', 'آدرس API تابلو Zaarbox', '', 1, 0, 1, 'text' +SELECT 'zaarbox_api_url', 'آدرس API تابلو Zaarbox', '', 0, 0, 1, 'text' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zaarbox_api_url' LIMIT 1); INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`) @@ -1371,7 +1371,7 @@ SELECT 'zaarbox_price_key', 'شناسه ردیف تابلو (key یا UUID)', '' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zaarbox_price_key' LIMIT 1); INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`) -SELECT 'main_product', 'محصول آبشده', '', 1, 0, 1, 'text' +SELECT 'main_product', 'محصول آبشده', '', 0, 0, 1, 'text' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'main_product' LIMIT 1); INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`) @@ -2219,11 +2219,12 @@ UPDATE `settings` SET `title_fa` = 'شناسه ردیف تابلو (key یا UUI -- 'show_to_users_chat', 'chat_api', 'chat_api_key', 'chat_upload_url', 'chat_download_url', 'chat_webhook_secret', 'chat_webhook_base_url' -- ); --- قابل ویرایش در پنل (can_edit = 1) +-- قابل ویرایش در پنل عادی (can_edit = 1) UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'name_fa', 'auto_active_customer', 'balance_report_exclude_customer_id', 'buy_fee', 'charge_notif', 'close_price', + 'chart_use_local_data', 'require_zero_main_gold_before_other_buy', 'sms_notif_order_admin', 'sms_notif_order_customer', 'sms_notif_withdraw_admin', 'sms_notif_withdraw_otp', 'sms_notif_login_otp', @@ -2233,7 +2234,7 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'sms_notif_price_trigger', 'sms_notif_wallet_alert', 'sms_notif_support_admin', 'deposit_sms_support_number', 'deposit_support_message_text', 'deposit_account_holder', 'deposit_card_number', 'deposit_account_number', 'deposit_sheba', - 'deposit_method_card_to_card', 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', + 'deposit_method_card_to_card', 'endDay', 'fee_free', 'fee_service_charge_percentage', 'gift_for_referral', 'gift_for_referrer', @@ -2243,9 +2244,6 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'min_first_buy', 'min_withdraw', 'min_deposit', 'minimum_sell', 'montzar_mobile', 'montzar_open_buy', 'montzar_open_sell', 'montzar_password', 'montzar_product_id', - 'montzar_closed', 'montzar_diff', 'montzar_last_product_log', 'montzar_live_price', 'montzar_mazaneh', - 'montzar_order_response', 'montzar_token', - 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', 'open_register', 'referral_id', 'referral_show', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', 'register_jibit_verify', 'register_referral_bonus_message', 'register_referral_sms_to_referrer', @@ -2254,10 +2252,9 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'products_site_link_enabled', 'products_site_link_url', 'products_site_link_text', 'startDay', 'support_messenger', 'support_messenger_id', 'support_messenger_text', 'support_messengers', - 'up_price', 'down_price', 'price_extreme_date', 'do_send_liman', + 'do_send_liman', 'has_chat', 'deposit_support_message_text', 'deposit_account_holder', 'deposit_card_number', 'deposit_account_number', 'deposit_sheba', - 'deposit_method_card_to_card', 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', 'text_about', 'text_rule', 'about_software', 'enamad_url', 'enamad_logo', 'price_channel_enabled', 'price_channel_messengers', 'price_channel_diff', 'price_channel_min_seconds', 'price_channel_message_text', @@ -2268,13 +2265,23 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'zaarbox_price_key' ); --- کلیدهای runtime — فقط tenant DB؛ can_edit=1 (خارج از سوپرادمین) +-- تنظیمات پیشرفته (can_edit=0) — فقط در پنل پیشرفته؛ ادمین دیپلوی ویرایش می‌کند +UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN ( + 'up_price', 'down_price', 'price_extreme_date', + 'main_product', 'price_provider', 'zaarbox_api_url', + 'montzar_base_url', 'montzar_diff', 'montzar_closed', 'montzar_order_response', + 'montzar_token', 'montzar_live_price', 'montzar_last_product_log', + 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', 'montzar_mazaneh', + 'node_client_id', 'node_shared_secret', 'external_order_api_enabled', + 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', + 'payping_verify_url', 'payping_start_url', 'payping_strict_failed_withdraw', + 'payping_fin_token', 'chart_id', 'payping_round_toman', 'payping_gateway_items', + 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url' +); + +-- کلید runtime باقی‌مانده — can_edit=1 UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( - 'montzar_last_product_log', 'montzar_order_response', - 'montzar_live_price', 'montzar_mazaneh', 'montzar_diff', - 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', - 'montzar_token', 'montzar_closed', - 'up_price', 'down_price', 'price_extreme_date', 'do_send_liman' + 'do_send_liman' ); -- تفکیک نهایی type (بعد از همه batchها — override روی دیتابیس موجود) @@ -2433,17 +2440,27 @@ WHERE `key` = 'deposit_method_shetab'; -- AND TRIM(COALESCE(`value`, '')) IN ('', 'none') -- AND EXISTS (SELECT 1 FROM (SELECT `value` FROM `settings` WHERE `key` = 'send_to_tahesab') AS s WHERE s.`value` IN ('true', '1', 'yes')); --- آخرین override: کلیدهای runtime همیشه can_edit=1 (tenant-only) +-- آخرین override (deploy:tenant → settings:deploy روی هر DB tenant): +-- فقط runtime باقی‌مانده can_edit=1؛ کلیدهای پیشرفته can_edit=0؛ chart_use_local_data=1 UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( - 'montzar_last_product_log', 'montzar_order_response', - 'montzar_live_price', 'montzar_mazaneh', 'montzar_diff', - 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', - 'montzar_token', 'montzar_closed', - 'up_price', 'down_price', 'price_extreme_date', 'do_send_liman' + 'do_send_liman' ); +UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN ( + 'up_price', 'down_price', 'price_extreme_date', + 'main_product', 'price_provider', 'zaarbox_api_url', + 'montzar_base_url', 'montzar_diff', 'montzar_closed', 'montzar_order_response', + 'montzar_token', 'montzar_live_price', 'montzar_last_product_log', + 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', 'montzar_mazaneh', + 'node_client_id', 'node_shared_secret', 'external_order_api_enabled', + 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', + 'payping_verify_url', 'payping_start_url', 'payping_strict_failed_withdraw', + 'payping_fin_token', 'chart_id', 'payping_round_toman', 'payping_gateway_items', + 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url' +); +UPDATE `settings` SET `can_edit` = 1 WHERE `key` = 'chart_use_local_data'; SELECT `key`, `can_edit` FROM `settings` -WHERE `key` IN ('montzar_token', 'montzar_diff', 'montzar_open_buy') +WHERE `key` IN ('montzar_token', 'montzar_diff', 'montzar_open_buy', 'chart_use_local_data', 'price_provider') ORDER BY `key`; COMMIT; diff --git a/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql b/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql index 0588cd5..14aa935 100644 --- a/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql +++ b/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql @@ -1646,6 +1646,7 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'name_fa', 'auto_active_customer', 'balance_report_exclude_customer_id', 'buy_fee', 'charge_notif', 'close_price', + 'chart_use_local_data', 'sms_notif_order_admin', 'sms_notif_order_customer', 'sms_notif_withdraw_admin', 'sms_notif_withdraw_otp', 'sms_notif_login_otp', 'sms_notif_gateway_charge_admin', 'sms_notif_register_customer', 'sms_notif_register_admin', @@ -1654,6 +1655,7 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'sms_notif_price_trigger', 'sms_notif_wallet_alert', 'sms_notif_support_admin', 'deposit_sms_support_number', 'deposit_support_message_text', 'deposit_account_holder', 'deposit_card_number', 'deposit_sheba', + 'deposit_method_card_to_card', 'endDay', 'fee_free', 'fee_service_charge_percentage', 'gift_for_referral', 'gift_for_referrer', @@ -1663,9 +1665,6 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'min_first_buy', 'min_withdraw', 'min_deposit', 'minimum_sell', 'montzar_mobile', 'montzar_open_buy', 'montzar_open_sell', 'montzar_password', 'montzar_product_id', - 'montzar_closed', 'montzar_diff', 'montzar_last_product_log', 'montzar_live_price', 'montzar_mazaneh', - 'montzar_order_response', 'montzar_token', - 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', 'open_register', 'referral_id', 'referral_show', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', 'register_jibit_verify', 'register_referral_bonus_message', 'register_referral_sms_to_referrer', @@ -1674,7 +1673,7 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'products_site_link_enabled', 'products_site_link_url', 'products_site_link_text', 'startDay', 'support_messenger', 'support_messenger_id', 'support_messenger_text', - 'up_price', 'down_price', 'price_extreme_date', 'do_send_liman', + 'do_send_liman', 'deposit_support_message_text', 'deposit_account_holder', 'deposit_card_number', 'deposit_sheba', 'text_about', 'text_rule', 'tracking_systems', 'tracking_systems_enabled', @@ -1682,13 +1681,23 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'zaarbox_price_key' ); --- کلیدهای runtime — فقط tenant DB؛ can_edit=1 (خارج از سوپرادمین) +-- تنظیمات پیشرفته (can_edit=0) +UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN ( + 'up_price', 'down_price', 'price_extreme_date', + 'main_product', 'price_provider', 'zaarbox_api_url', + 'montzar_base_url', 'montzar_diff', 'montzar_closed', 'montzar_order_response', + 'montzar_token', 'montzar_live_price', 'montzar_last_product_log', + 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', 'montzar_mazaneh', + 'node_client_id', 'node_shared_secret', 'external_order_api_enabled', + 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', + 'payping_verify_url', 'payping_start_url', 'payping_strict_failed_withdraw', + 'payping_fin_token', 'chart_id', 'payping_round_toman', 'payping_gateway_items', + 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url' +); + +-- کلید runtime باقی‌مانده UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( - 'montzar_last_product_log', 'montzar_order_response', - 'montzar_live_price', 'montzar_mazaneh', 'montzar_diff', - 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', - 'montzar_token', 'montzar_closed', - 'up_price', 'down_price', 'price_extreme_date', 'do_send_liman' + 'do_send_liman' ); UPDATE `settings` SET `can_edit` = 1 WHERE `key` = 'min_deposit'; @@ -1754,14 +1763,23 @@ UPDATE `settings` SET `type` = 'number' WHERE `key` IN ( -- AND TRIM(COALESCE(`value`, '')) IN ('', 'none') -- AND EXISTS (SELECT 1 FROM (SELECT `value` FROM `settings` WHERE `key` = 'send_to_tahesab') AS s WHERE s.`value` IN ('true', '1', 'yes')); --- آخرین override: کلیدهای runtime همیشه can_edit=1 (tenant-only) +-- آخرین override: فقط runtime باقی‌مانده can_edit=1؛ بقیهٔ پیشرفته can_edit=0 UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( - 'montzar_last_product_log', 'montzar_order_response', - 'montzar_live_price', 'montzar_mazaneh', 'montzar_diff', - 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', - 'montzar_token', 'montzar_closed', - 'up_price', 'down_price', 'price_extreme_date', 'do_send_liman' + 'do_send_liman' ); +UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN ( + 'up_price', 'down_price', 'price_extreme_date', + 'main_product', 'price_provider', 'zaarbox_api_url', + 'montzar_base_url', 'montzar_diff', 'montzar_closed', 'montzar_order_response', + 'montzar_token', 'montzar_live_price', 'montzar_last_product_log', + 'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh', 'montzar_mazaneh', + 'node_client_id', 'node_shared_secret', 'external_order_api_enabled', + 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', + 'payping_verify_url', 'payping_start_url', 'payping_strict_failed_withdraw', + 'payping_fin_token', 'chart_id', 'payping_round_toman', 'payping_gateway_items', + 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url' +); +UPDATE `settings` SET `can_edit` = 1 WHERE `key` = 'chart_use_local_data'; COMMIT; diff --git a/database/sql/settings_menu_and_show_to_user.sql b/database/sql/settings_menu_and_show_to_user.sql index a66d3df..f260067 100644 --- a/database/sql/settings_menu_and_show_to_user.sql +++ b/database/sql/settings_menu_and_show_to_user.sql @@ -53,7 +53,9 @@ UPDATE `settings` SET `menu` = CASE 'store_status', 'key', 'is_store', 'sms_panel', 'enamad_url', 'enamad_logo' ) THEN 'general' WHEN `key` LIKE 'min_%' OR `key` LIKE 'minimum_%' OR `key` LIKE 'balance_report_exclude%' THEN 'limits' - WHEN `key` LIKE 'zaarbox_%' OR `key` IN ('price_provider', 'main_product') THEN 'price_source' + WHEN `key` = 'chart_use_local_data' + OR `key` LIKE 'zaarbox_%' + OR `key` IN ('price_provider', 'main_product') THEN 'price_source' WHEN `key` LIKE 'node_%' OR `key` IN ('montify_name', 'external_order_api_enabled') THEN 'store' WHEN `key` LIKE 'chart_%' THEN 'chart' WHEN `key` IN ('wss_enabled', 'sse_path', 'wss_path', 'profit_gold_api_enabled') THEN 'infra'