Files
boursecu_server/database/sql/deploy_settings_const.sql
T
mohmdsdgandCursor 8cee34bfba feat: landing settings, instant withdraw deduct, and OTP site URL
Add has_landing plus landing_* deploy keys, deduct balance on withdraw request, keep app_url for SMS login links, and clarify Zarin rial wallet document titles.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 17:01:39 +03:30

2743 lines
211 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- deploy_settings_const.sql — آپدیت settings + const (بدون تغییر schema)
--
-- workflow deploy (DB موجود):
-- 0) بکاپ
-- 1) mysql ... < database/sql/baseline_migrations.sql ← حتماً قبل از migrate
-- 2) php artisan migrate
-- 3) php artisan settings:deploy
-- (یا: bash database/sql/run_deploy_settings.sh)
--
-- workflow نصب از صفر (DB خالی):
-- 1) php artisan migrate ← schema dump + incremental
-- 2) php artisan settings:deploy
--
-- اصول:
-- • چند بار قابل اجرا (idempotent)
-- • value / is_active ردیف‌های موجود هرگز دست نخورده — فقط INSERT برای کلید جدید
-- • can_edit / title_fa / description / type / menu / show_to_user هر deploy از این فایل به‌روز می‌شوند
-- • menu و show_to_user: database/sql/settings_menu_and_show_to_user.sql (settings:deploy و migrate اضافه می‌کنند)
-- • کلیدهای can_edit=0 (سوپرادمین) در این فایل کامنت شده‌اند — مالکیت: SuperAdminProgramSettingsOverlay
-- • schema (جدول/ستون) فقط با migrate — نه این فایل
--
-- ⚠️ هرگز UPDATE روی `value` برای ردیف موجود ننویس (مگر شرط خالی بودن صریح و مستند).
-- ادمین/کارفرما مقدار را در پنل تنظیم می‌کند؛ این فایل فقط کلید جدید با default می‌سازد.
--
-- قبل از اجرا: USE `نام_دیتابیس`; + بکاپ
-- =============================================================================
START TRANSACTION;
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
SET @db = DATABASE();
-- متن پیش‌فرض invite_link_text (تک‌خطی با CHAR(10) — سازگار با همه کلاینت‌های SQL)
SET @invite_link_default_text = CONCAT(
'⭐️الان طلا بخر؛ آخر ماه سودشو ببر!', CHAR(10),
'با خرید طلای آبشده در مقدارهای کم ولی مستمر، سود بیشتری ببر!', CHAR(10),
CHAR(10),
'این دعوت نامه از طرف "٪نام" عزیز برای شما ارسال شده تا شما هم از بازار طلای ما جا نمونید.', CHAR(10),
'روی لینک زیر کلیک کنید و ثبت نام خود را تکمیل کنید.', CHAR(10),
CHAR(10),
'٪لینک'
);
SET @invite_link_desc = CONCAT(
'متن پیام اشتراک‌گذاری دعوت در اپ کاربر (دکمه «اشتراک با دوستان»، پروفایل، کسب درآمد و مودال اشتراک).', CHAR(10),
CHAR(10),
'متغیرها:', CHAR(10),
'• %نام یا ٪نام = نام کامل کاربر دعوت‌کننده', CHAR(10),
'• %لینک یا ٪لینک = آدرس ثبت‌نام با کد معرف', CHAR(10),
CHAR(10),
'فاصله اختیاری بعد از % مجاز است (مثلاً % نام).', CHAR(10),
'خالی = متن پیش‌فرض اپ.'
);
SET @deposit_guide_desc = CONCAT(
'متن راهنمای واریز در مودال شارژ حساب.', CHAR(10),
CHAR(10),
'متغیرها:', CHAR(10),
'• %نام یا ٪نام = نام صاحب حساب', CHAR(10),
'• %کارت یا ٪کارت = شماره کارت', CHAR(10),
'• %شبا یا ٪شبا = شماره شبا', CHAR(10),
CHAR(10),
'فاصله بعد از % اختیاری است.', CHAR(10),
'خالی = متن پیش‌فرض اپ.'
);
SET @sms_charge_note = 'لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی بفرستید.';
SET @sms_charge_note_desc = 'متن راهنمای مودال شارژ اعتبار پیامک در پنل ادمین.';
SET @deposit_support_msg_desc = CONCAT(
'متن پیام هنگام کلیک «پیام به پشتیبانی» در مودال واریز.', CHAR(10),
CHAR(10),
'متغیر:', CHAR(10),
'• %نام یا ٪نام = نام صاحب حساب', CHAR(10),
CHAR(10),
'پیش‌فرض اپ: باسلام، %نام هستم. کدپیگیری و مبلغ واریزی من:'
);
SET @price_channel_message_desc = CONCAT(
'متن پیامی که با تغییر قیمت به کانال فرستاده می‌شود.', CHAR(10),
'هر متغیر را عیناً در قالب بنویسید (با % یا ٪).', CHAR(10),
CHAR(10),
'قیمت تابلو — مثل اپ:', CHAR(10),
'• %گرم_فروش = عدد بزرگ صفحهٔ اصلی (فروش هر گرم)', CHAR(10),
'• %گرم_خرید = خرید هر گرم', CHAR(10),
'• %مثقال_فروش = فروش هر مثقال', CHAR(10),
'• %مثقال_خرید = خرید هر مثقال', CHAR(10),
CHAR(10),
'زمان ارسال:', CHAR(10),
'• %تاریخ = تاریخ شمسی', CHAR(10),
'• %ساعت = ساعت', CHAR(10),
CHAR(10),
'نام فروشگاه:', CHAR(10),
'• %نام = فقط نام فروشگاه', CHAR(10),
'• %عنوان = خط آماده: 📊 قیمت لحظه‌ای + نام', CHAR(10),
CHAR(10),
'تماس (از فیلدهای پایین همین بخش):', CHAR(10),
'• %شماره = شماره تماس', CHAR(10),
'• %آیدی = آیدی کانال', CHAR(10),
'• %لینک = لینک', CHAR(10),
CHAR(10),
'اختیاری:', CHAR(10),
'• %محصولات = لیست همهٔ محصولات', CHAR(10),
'• %فوتر = شماره + آیدی + لینک با هم', CHAR(10),
CHAR(10),
'خالی = قالب پیش‌فرض.'
);
SET @price_channel_default_text = CONCAT(
'سلام 👋', CHAR(10),
'%عنوان', CHAR(10),
'📅 %تاریخ 🕐 %ساعت', CHAR(10),
CHAR(10),
'🔴 خرید گرم: %گرم_خرید', CHAR(10),
'🟢 فروش گرم: %گرم_فروش', CHAR(10),
'🔴 خرید مثقال: %مثقال_خرید', CHAR(10),
'🟢 فروش مثقال: %مثقال_فروش', CHAR(10),
CHAR(10),
'📞 %شماره', CHAR(10),
'%آیدی', CHAR(10),
'%لینک'
);
-- ستون‌های اختیاری settings (بعضی DBهای قدیمی ندارند)
SET @sql = IF(
(SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'settings' AND COLUMN_NAME = 'is_exist') = 0,
'ALTER TABLE `settings` ADD COLUMN `is_exist` TINYINT(1) NOT NULL DEFAULT 0',
'SELECT 1'
);
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @sql = IF(
(SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'settings' AND COLUMN_NAME = 'type') = 0,
IF(
(SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'settings' AND COLUMN_NAME = 'description') > 0,
'ALTER TABLE `settings` ADD COLUMN `type` VARCHAR(50) NULL DEFAULT NULL AFTER `description`',
'ALTER TABLE `settings` ADD COLUMN `type` VARCHAR(50) NULL DEFAULT NULL'
),
'SELECT 1'
);
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- ---------------------------------------------------------------------------
-- charset — نمایش فارسی در پنل ادمین
-- ---------------------------------------------------------------------------
ALTER TABLE `settings`
MODIFY COLUMN `description` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
MODIFY COLUMN `title_fa` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
MODIFY COLUMN `type` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;
ALTER TABLE `const`
MODIFY COLUMN `title_fa` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;
-- ---------------------------------------------------------------------------
-- اصلاح باگ‌ها / rename کلیدهای قدیمی
-- ---------------------------------------------------------------------------
UPDATE `settings` SET `key` = 'logo_login' WHERE `key` LIKE 'logo_login%' AND `key` <> 'logo_login';
DELETE s1 FROM `settings` s1
INNER JOIN `settings` s2 ON s1.`key` = s2.`key` AND s1.`id` < s2.`id`
WHERE s1.`key` = 'montzar_closed';
UPDATE `settings` SET `key` = 'support_messenger_id' WHERE `key` = 'bale_support_id';
UPDATE `settings` SET `key` = 'support_messenger_text' WHERE `key` = 'bale_support_text';
-- legacy is_requaire_referral → referral_id: فقط rename کلید؛ value/is_active دست نمی‌خورد
-- SETTINGS — کلیدهای جدید (INSERT فقط اگر key نبود)
-- =============================================================================
-- کلیدهای پایه برند (هر DB — value خالی؛ از پنل پر می‌شود)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'name_fa', '', 'نام فارسی اپ', 1, 1, NULL, 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'name_fa' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'app_url', '', 'آدرس اپ (کاربر)', 1, 1, NULL, 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'app_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'admin_url', '', 'آدرس پنل ادمین', 1, 1, NULL, 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'admin_url' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'logo_login', '', 'لوگوی صفحه ورود', 0, 0, NULL, 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'logo_login' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'logo_register', '', 'لوگوی ثبت‌نام', 0, 0, NULL, 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'logo_register' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'has_page_earn_money', 'false', 'صفحه کسب درآمد', 1, 1, NULL, 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'has_page_earn_money' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'montzar_order_response', '[]', 'پاسخ سفارش همکار', 1, 1, NULL, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_order_response' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'montzar_last_product_log', '{}', 'لاگ محصول همکار', 1, 1, NULL, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_last_product_log' LIMIT 1);
-- هیرو لاگین دسکتاپ (تم VIP) — متن‌های ستون چپ
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'login_hero_eyebrow', 'سرمایه‌گذاری هوشمند در', 'خط اول هیرو لاگین', 1, 1,
'متن بالای عنوان طلا در ستون چپ صفحه ورود دسکتاپ (تم VIP).', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'login_hero_eyebrow' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'login_hero_title', 'طلای جهانی', 'عنوان هیرو لاگین', 1, 1,
'عنوان طلایی ستون چپ صفحه ورود دسکتاپ (تم VIP).', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'login_hero_title' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'login_hero_feature_1', 'خرید و فروش آنلاین طلا', 'ویژگی ۱ هیرو لاگین', 1, 1,
'اولین آیتم لیست ویژگی‌های ستون چپ لاگین دسکتاپ.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'login_hero_feature_1' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'login_hero_feature_2', 'قیمت لحظه‌ای و دقیق', 'ویژگی ۲ هیرو لاگین', 1, 1,
'دومین آیتم لیست ویژگی‌های ستون چپ لاگین دسکتاپ.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'login_hero_feature_2' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'login_hero_feature_3', 'امنیت بالا و قابل اطمینان', 'ویژگی ۳ هیرو لاگین', 1, 1,
'سومین آیتم لیست ویژگی‌های ستون چپ لاگین دسکتاپ.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'login_hero_feature_3' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'login_hero_feature_4', 'پشتیبانی ۲۴/۷', 'ویژگی ۴ هیرو لاگین', 1, 1,
'چهارمین آیتم لیست ویژگی‌های ستون چپ لاگین دسکتاپ.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'login_hero_feature_4' LIMIT 1);
-- قیمت zaarbox (اگر از قبل دارید value دست نخورده)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'chart_use_local_data', 'false', 'نمودار از داده خود سایت', 1, 1,
'خاموش = Zaarbox (chart_id) | روشن = تاریخچه ذخیره‌شده prices', 'switch'
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', 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`)
SELECT 'show_last_price', 'true', 'نمایش آخرین قیمت DB اگر API قطع شد', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'show_last_price' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'show_gold_ounce_price', 'false', 'نمایش قیمت انس طلا', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'show_gold_ounce_price' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'show_home_price_when_closed', 'false', 'نمایش قیمت صفحه اصلی خارج از ساعت کاری', 1, 1,
'روشن: وقتی فروشگاه خارج از ساعت کاری است، قیمت صفحه اصلی اپ همچنان نمایش داده می‌شود و پیام «فروشگاه بسته است» نشان داده نمی‌شود. خرید/فروش همچنان بسته می‌ماند. خاموش: مثل قبل، خارج از ساعت پیام بسته بودن و قیمت صفر نشان داده می‌شود.',
'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'show_home_price_when_closed' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'show_product_details', 'true', 'نمایش جزئیات اطلاعات محصول', 1, 1,
'روشن: بعد از انتخاب محصول در صفحه خرید/فروش، متن توضیح محصول نمایش داده می‌شود. خاموش: توضیح نشان داده نمی‌شود.',
'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'show_product_details' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'products_site_link_enabled', 'false', 'دکمه لینک خارجی در خرید/فروش', 1, 1,
'روشن: در صفحه خرید/فروش (بالای تب دسته‌ها) یک دکمه تمام‌عرض نشان داده می‌شود که با کلیک، لینک تنظیم‌شده را در تب جدید مرورگر باز می‌کند. خاموش: دکمه مخفی است.',
'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'products_site_link_enabled' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'products_site_link_url', '', 'آدرس لینک دکمه خرید/فروش', 1, 1,
'آدرس کامل سایت یا صفحه خارجی (مثلاً https://example.com). با کلیک روی دکمه در اپ کاربر، همین آدرس در تب جدید مرورگر باز می‌شود. اگر خالی باشد، با وجود روشن بودن سوییچ، دکمه کاری انجام نمی‌دهد.',
'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'products_site_link_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'products_site_link_text', '', 'متن دکمه لینک خرید/فروش', 1, 1,
'متنی که روی دکمه لینک خارجی در صفحه خرید/فروش نمایش داده می‌شود. اگر خالی باشد، پیش‌فرض «ورود به سایت» همراه آیکون کره زمین نشان داده می‌شود.',
'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'products_site_link_text' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'show_product_trade_status', 'false', 'نمایش خرید/فروش باز روی کارت محصول', 1, 1,
'روشن: روی کارت محصول برچسب خرید باز/بسته و فروش باز/بسته نمایش داده می‌شود. خاموش: مخفی است.',
'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'show_product_trade_status' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'show_product_card_meta', 'true', 'نمایش دسته و تحویل و مقدار روی کارت محصول', 1, 1,
'روشن: روی کارت محصول دسته‌بندی، وضعیت تحویل فیزیکی و مقدار/وزن نمایش داده می‌شود. خاموش: مخفی است.',
'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'show_product_card_meta' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'main_product_price', 'false', 'قیمت از محصول (legacy)', 1, 1, 'از price_provider استفاده کنید'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'main_product_price' LIMIT 1);
-- montzar_price حذف شد — منبع همکار فقط با price_provider=montzar
-- Montzar — برای تعویض provider یا پر شدن خودکار توسط cron
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_mobile', '', 'موبایل API همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_mobile' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_password', '', 'رمز API همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_password' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_product_id', '25', 'کد محصول همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_product_id' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_account_zarin', '', 'کد حساب همکار در زرین', 1, 1,
'کد حساب طرف‌حساب همکار در زرین؛ سند خرید/فروش پوشش‌شده روی همکار روی این حساب ثبت می‌شود.'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_account_zarin' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_account_tahesab', '', 'کد حساب همکار در ته‌حساب', 1, 1,
'کد حساب طرف‌حساب همکار در ته‌حساب؛ سند خرید/فروش پوشش‌شده روی همکار روی این حساب ثبت می‌شود.'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_account_tahesab' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_account_pargar', '', 'کد حساب همکار در پرگار', 1, 1,
'کد حساب طرف‌حساب همکار در پرگار؛ سند خرید/فروش پوشش‌شده روی همکار روی این حساب ثبت می‌شود.'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_account_pargar' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_base_url', 'https://limangold.ir', 'آدرس سرور همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_base_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_token', '', 'توکن همکار (خودکار)', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_token' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_open_buy', 'true', 'باز بودن خرید همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_open_buy' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_open_sell', 'true', 'باز بودن فروش همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_open_sell' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'montzar_order_wait_callback', 'true', 'انتظار کالبک سفارش همکار', 1, 1,
'روشن: سفارش همکار تا دریافت کالبک (یا استعلام مسیر وضعیت) در انتظار می‌ماند و کیف ثبت نمی‌شود. خاموش: مثل قبل بلافاصله با پاسخ HTTP همکار قطعی می‌شود.',
'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_order_wait_callback' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'montzar_order_status_path', '/server/customer/order', 'مسیر استعلام وضعیت سفارش همکار', 1, 1,
'مسیر GET روی سرور همکار (montzar_base_url). شماره سفارش همکار به انتها اضافه می‌شود؛ مثلاً /server/customer/order/40000.',
'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_order_status_path' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_diff', '0', 'اختلاف قیمت همکار', 1, 1, 'سیستم پر می‌کند'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_diff' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_live_price', '0', 'قیمت لحظه‌ای همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_live_price' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_mazaneh', '0', 'مظنه همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_mazaneh' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_truly_buy_mazaneh', '0', 'مظنه خرید همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_truly_buy_mazaneh' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'montzar_truly_sell_mazaneh', '0', 'مظنه فروش همکار', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_truly_sell_mazaneh' LIMIT 1);
-- API خارجی Node (HMAC)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'node_client_id', '', 'شناسه کلاینت API خارجی (X-Client-Id)', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'node_client_id' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'node_shared_secret', '', 'کلید امضای HMAC API خارجی', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'node_shared_secret' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'external_order_api_enabled', 'true', 'فعال‌سازی API سفارش خارجی (get_wallet / order)', 1, 1, 'true + node_client_id + node_shared_secret'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'external_order_api_enabled' LIMIT 1);
-- SSE قیمت (last/list از لاراول)
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'wss_enabled', 'true', 'قیمت لحظه‌ای (SSE)', 0, 1, 'روشن: اپ به sse_path وصل می‌شود؛ خاموش: polling /api/price/last و /customer/product/list', 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'wss_enabled' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'sse_path', '/api/price/stream', 'مسیر SSE قیمت', 0, 1, 'GET لاراول — استریم event:last و event:list با payload کامل', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sse_path' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'tracking_systems', '[]', 'سایت‌های ری‌گیری', 1, 1,
'JSON لیست سایت‌های ری‌گیری — هر مورد: id، name، url. از منوی «سایت‌های ری‌گیری» ویرایش می‌شود.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'tracking_systems' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'tracking_systems_enabled', 'false', 'نمایش سایت‌های ری‌گیری', 1, 1,
'روشن: منوی «سایت‌های ری‌گیری» در ادمین و اپ مشتری نمایش داده می‌شود. خاموش: مخفی است.', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'tracking_systems_enabled' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'montify_name', '', 'نام فروشگاه در درگاه', 0, 1, NULL, 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montify_name' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'is_store', 'false', 'حالت فروشگاهی', 0, 1, 'فعال = سبد خرید، دسته‌بندی، حواله، تخفیف', 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'is_store' LIMIT 1);
-- Jibit
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'jibit_verification', 'true', 'تأیید کارت بانکی با جیبیت', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'jibit_verification' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'register_jibit_verify', 'true', 'تأیید کدملی/موبایل در ثبت‌نام', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'register_jibit_verify' LIMIT 1);
-- ساعات معامله
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'close_price', 'false', 'بستن قیمت در بازه زمانی', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'close_price' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'startDay', '09:00', 'شروع بازه معامله', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'startDay' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'endDay', '22:00', 'پایان بازه معامله', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'endDay' LIMIT 1);
-- ثبت‌نام / معرف
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'auto_active_customer', 'false', 'فعال‌سازی خودکار کاربر', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'auto_active_customer' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'fee_free', '0', 'تعداد سفارش اول بدون کارمزد', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'fee_free' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'charge_notif', 'true', 'پیامک شارژ ادمین', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'charge_notif' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'customer_direct_sms', 'false', 'پیامک تکی به مشتری از لیست', 0, 1,
-- 'روشن: در لیست مشتریان دکمه ارسال پیامک تکی نمایش داده می‌شود. خاموش: مخفی است. فقط از صفحه دیپلوی قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'customer_direct_sms' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'enable_automation', 'false', 'اتوماسیون', 0, 1,
-- 'روشن: منوی اتوماسیون در پنل ادمین و اجرای موتور فعال است. خاموش: منو مخفی است و API/کران اجرا نمی‌شود. فقط از سوپرادمین قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'enable_automation' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'enable_conditional_order', 'false', 'سفارش شرطی', 0, 1,
-- 'روشن: قابلیت سفارش شرطی سراسری فعال است. خاموش: منو و ارزیابی اجرا نمی‌شود. فقط از دیپلوی قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'enable_conditional_order' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'enable_product_funds', 'false', 'قلک محصول', 0, 1,
-- 'روشن: ساخت و مدیریت قلک per-product در اپ مشتری فعال است (یک محصول در هر قلک؛ انتقال بدون سند حسابداری). خاموش: منو و API ساخت قلک جدید در دسترس نیست. فقط از دیپلوی قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'enable_product_funds' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'has_page_gift_card', 'false', 'کارت هدیه', 0, 1,
-- 'روشن: منوی «ثبت کارت هدیه» و صفحه ثبت کد در اپ کاربر فعال است. خاموش: منو و صفحه مخفی است و API استفاده از کد هدیه در دسترس نیست. فقط از دیپلوی قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'has_page_gift_card' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'enable_customer_level_profit', 'false', 'سود چندسطحی معرف', 0, 1,
-- 'روشن: در لیست مشتریان آیکون تنظیم درصد سود هر سطح زیرمجموعه فعال است و پس از سفارش، سهم کارمزد طبق درصدهای هر معرف به کیف طلا واریز می‌شود. خاموش: آیکون و واریز سود چندسطحی غیرفعال است. فقط از دیپلوی قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'enable_customer_level_profit' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'has_page_price_trigger', 'true', 'هشدار قیمت', 0, 1,
-- 'روشن: منوی هشدار قیمت در اپ کاربر نمایش داده می‌شود. خاموش: منو و صفحه مخفی است. فقط از دیپلوی قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'has_page_price_trigger' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'has_page_notification', 'true', 'اعلان داخل اپ', 0, 1,
-- 'روشن: زنگوله اعلان در اپ کاربر و منوی ثبت اعلان در ادمین فعال است. خاموش: مخفی است. فقط از دیپلوی قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'has_page_notification' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'jibit_enabled', 'true', 'احراز هویت جیبیت', 0, 1,
-- 'روشن: سرویس احراز هویت جیبیت (تطبیق کد ملی/موبایل و کارت بانکی) فعال است. خاموش: هیچ فراخوانی به جیبیت انجام نمی‌شود و احراز هویت خودکار کار نمی‌کند. فقط از صفحه دیپلوی قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'jibit_enabled' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'fee_conditional_order', '0', 'کارمزد سفارش شرطی', 1, 1,
'مبلغ ریالی که با هر بار ثبت تریگر از کیف پول ریالی مشتری کم می‌شود. صفر = رایگان.',
'number'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'fee_conditional_order' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_order_admin', 'true', 'پیامک خرید/فروش به ادمین', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_order_admin' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_order_customer', 'true', 'پیامک خرید/فروش به مشتری', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_order_customer' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_withdraw_admin', 'true', 'پیامک درخواست برداشت به ادمین', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_withdraw_admin' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_withdraw_otp', 'true', 'پیامک رمز برداشت', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_withdraw_otp' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_login_otp', 'true', 'پیامک رمز ورود', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_login_otp' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_gateway_charge_admin', 'true', 'پیامک شارژ درگاه به ادمین', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_gateway_charge_admin' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_register_customer', 'true', 'پیامک خوش‌آمد ثبت‌نام', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_register_customer' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_register_admin', 'true', 'پیامک ثبت‌نام به ادمین', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_register_admin' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_jibit_admin', 'true', 'پیامک احراز هویت به ادمین', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_jibit_admin' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_bank_card_admin', 'true', 'پیامک کارت بانکی به ادمین', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_bank_card_admin' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_bank_card_customer', 'true', 'پیامک تایید کارت به مشتری', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_bank_card_customer' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_fund_withdraw_admin', 'true', 'پیامک برداشت قلک به ادمین', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_fund_withdraw_admin' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_fund_withdraw_customer', 'true', 'پیامک برداشت قلک به مشتری', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_fund_withdraw_customer' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_price_trigger', 'true', 'پیامک هشدار قیمت', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_price_trigger' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_wallet_alert', 'true', 'پیامک هشدار اعتبار پنل پیامک', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_wallet_alert' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sms_notif_support_admin', 'true', 'پیامک پیام پشتیبانی به ادمین', 1, 1,
'روشن: وقتی مشتری اولین پیام خوانده‌نشده را در چت پشتیبانی می‌فرستد و ادمین همان اتاق را باز و visible ندارد، پیامک به ادمین‌های دارای «ارسال پیامک» می‌رود. خاموش: اعلان پیامک چت نمی‌رود.'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_notif_support_admin' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'chat_webhook_secret', '', 'رمز وب‌هوک چت', 0, 1,
-- 'رمز مشترک بین لاراول و سرور چت برای اعلان پیام پشتیبانی. فقط سرور؛ در صورت خالی بودن به‌صورت خودکار ساخته می‌شود.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'chat_webhook_secret' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'chat_webhook_base_url', '', 'آدرس پایه وب‌هوک چت', 0, 1,
-- 'اگر APP_URL فرانت است (مثلاً https://niazitala.ir) اینجا آدرس لاراول را بگذار (مثلاً https://niazitala.ir/server). خالی = همان APP_URL.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'chat_webhook_base_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'gift_for_referrer', '0.005', 'پاداش معرف', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'gift_for_referrer' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'gift_for_referral', '0', 'پاداش معرف‌شونده', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'gift_for_referral' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'register_referral_sms_to_referrer', 'false', 'SMS به معرف هنگام ثبت‌نام', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'register_referral_sms_to_referrer' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'register_referral_bonus_message', 'false', 'پیام پاداش در SMS ثبت‌نام', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'register_referral_bonus_message' LIMIT 1);
-- default: false — value ردیف موجود در deploy عوض نمی‌شود (فقط INSERT اگر کلید نبود)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'referral_gift_on_first_order', 'false', 'پاداش معرف پس از اولین سفارش', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_gift_on_first_order' LIMIT 1);
-- default: true — وقتی montzar روشن است پاداش معرفی از همکار خرید می‌شود؛ خاموش = واریز محلی مثل قبل
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'referral_gift_buy_from_montzar', 'true', 'خرید پاداش معرفی از همکار', 1, 1,
'روشن: اگر منبع قیمت montzar باشد، قبل از واریز پاداش معرف/معرف‌شونده همان وزن از همکار خرید می‌شود؛ شکست خرید = واریز نمی‌شود. خاموش: مثل قبل فقط به کیف واریز می‌شود بدون خرید از همکار.',
'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_gift_buy_from_montzar' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'referral_limit', '', 'محدودیت دعوت', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_limit' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'group_sms', 'false', 'پیامک گروهی', 0, 1,
-- 'روشن: دکمه ارسال پیامک گروهی در پنل ادمین فعال است (ارسال ۱۰تایی). خاموش: ارسال پیامک گروهی غیرفعال است. فقط از تنظیمات پیشرفته.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'group_sms' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'customer_special_pricing', 'false', 'قیمت ویژه مشتری', 0, 1,
-- 'روشن: زیرمنوی قیمت ویژه در مشتریان و اعمال سود خرید/فروش پکیج روی مظنه و سفارش برای کاربران انتخاب‌شده. خاموش: غیرفعال. فقط از دیپلوی قابل تغییر است.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'customer_special_pricing' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'sms_panel', 'true', 'پنل پیامک (کیف پول)', 0, 1, 'روشن: پنل پیامک و کیف پول billing فعال است. خاموش: پیامک‌ها مثل قبل ارسال می‌شوند بدون billing.', 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_panel' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'tahesab_host', '', 'آدرس IP سرور ته‌حساب', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'tahesab_host' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'tahesab_port', '', 'پورت سرور ته‌حساب', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'tahesab_port' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'tahesab_token', '', 'توکن ته‌حساب', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'tahesab_token' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'tahesab_db', '', 'دیتابیس ته‌حساب', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'tahesab_db' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'tahesab_bank_account', '', 'حساب بانکی ته‌حساب', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'tahesab_bank_account' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'send_to_tahesab', 'false', 'ارسال به ته‌حساب (قدیمی)', 0, 0, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'send_to_tahesab' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'accounting_provider', 'none', 'سیستم حسابداری', 0, 1, 'none,pargar,tahesab,zarin'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'accounting_provider' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_api', '', 'آدرس API زرین', 0, 1, 'آدرس پایه وب‌سرویس زرین (بدون /ZarrinService/accounting).', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_api' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_token', '', 'توکن زرین', 0, 1, 'توکن مکمل API زرین که در نرم‌افزار زرین تعریف می‌شود.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_token' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_noe_kar', '16', 'نوع کار پیش‌فرض زرین', 0, 1, 'کد noeKar هنگام ساخت کار ساخته در زرین. مقدار ۱۶ معمولاً گرمی است و برای sabtSanadTedadi مناسب نیست.', 'number'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_noe_kar' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_noe_kar_tedadi', '17', 'نوع کار تعدادی زرین', 0, 1, 'noeKar برای سند تعدادی (سکه/شمش/گوی/مکعب). روی زرین معمولاً ۱۷=سکه-تعدادی یا ۱۸=اجرت تعدادی. اگر خالی/نامعتبر باشد کد از ۱۷ استفاده می‌کند.', 'number'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_noe_kar_tedadi' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_gorohe_kar', '52', 'گروه کار پیش‌فرض زرین', 0, 1, 'کد gorooheKar هنگام ساخت/جستجوی کار در زرین. برای جداسازی چند پنل روی یک زرین، برای هر پنل مقدار متفاوت بگذارید.', 'number'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_gorohe_kar' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_name_g', 'مشتری نقدی (خریدار)', 'نام گروه حساب مشتریان زرین', 0, 1, 'پارامتر nameG در addhesab — گروه حساب زرین. برای اپ خانگی: مشتری نقدی (خریدار) = گروه ۶. گروه همکار استفاده نشود (مظنه متفاوت است).', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_name_g' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_uid_prefix', '', 'پیشوند عددی uid زرین', 0, 1, 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_uid_prefix' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_idbank', '', 'کد حساب بانک زرین', 0, 1, 'کد حساب بانک یا صندوق در زرین (idbank وب‌سرویس payment) برای واریز/برداشت ریالی کیف. سند نوع وجه نقد است نه خرید فی.', 'number'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_idbank' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'send_to_pargar', 'false', 'ارسال به پرگار (قدیمی)', 0, 0, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'send_to_pargar' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'pargar_username', '', 'نام کاربری API پرگار', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'pargar_username' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'pargar_password', '', 'رمز عبور API پرگار', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'pargar_password' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'pargar_api_token', '', 'توکن ثابت API پرگار', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'pargar_api_token' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'pargar_item_id_rial', '0', 'کد کالای ریال پرگار', 0, 1,
-- 'کد کالا برای اسناد واریز/برداشت ریالی در پرگار. صفر = استفاده از کد طلا با وزن صفر.', 'number'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'pargar_item_id_rial' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'pargar_item_id_gold', '11', 'کد کالای طلا پرگار', 0, 1,
-- 'کد کالای طلا (کیف اصلی / آبشده) در پرگار برای اسناد وزن‌دار.', 'number'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'pargar_item_id_gold' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'telegram_bot_token', '', 'توکن بات تلگرام', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'telegram_bot_token' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'bale_bot_token', '', 'توکن بات بله', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'bale_bot_token' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'rubika_bot_token', '', 'توکن بات روبیکا', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'rubika_bot_token' LIMIT 1);
-- ===========================================================================
-- ارسال قیمت به کانال‌های پیام‌رسان (بله / تلگرام / روبیکا)
-- • دسترسی (can_edit=0): price_channel_access — تا روشن نشود، گروه کانال در تنظیمات عادی مخفی است
-- • محتوا (can_edit=1): روشن/خاموش، انتخاب پیام‌رسان، اختلاف، خطوط پایانی، فاصله
-- • سیستمی (can_edit=0): مقصد ارسال هر پیام‌رسان (آیدی چنل/گروه)
-- • توکن‌ها همان bale_bot_token / telegram_bot_token / rubika_bot_token (can_edit=0)
-- ===========================================================================
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'price_channel_access', 'false', 'دسترسی ارسال قیمت به کانال', 0, 1,
-- 'روشن: گروه «ارسال قیمت به کانال» در تنظیمات عادی پنل دیده می‌شود. خاموش: مخفی است (فقط از تنظیمات پیشرفته).', 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_access' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'price_channel_enabled', 'false', 'ارسال قیمت به کانال', 1, 1,
'روشن: بعد از هر تغییر قیمت، مظنه به کانال‌های پیام‌رسان انتخاب‌شده ارسال می‌شود.', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_enabled' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'price_channel_messengers', '', 'پیام‌رسان‌های ارسال قیمت', 1, 1,
'کدام پیام‌رسان‌ها قیمت بگیرند؟ می‌توانید چند مورد را انتخاب کنید. گزینه‌ها: بله، تلگرام، روبیکا.', 'multiselect'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_messengers' LIMIT 1);
-- نوع multiselect را روی ردیف‌های موجود هم اعمال کن (نصب‌هایی که قبلاً text گرفته بودند)
UPDATE `settings` SET `type` = 'multiselect' WHERE `key` = 'price_channel_messengers';
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'price_channel_diff', '0', 'اختلاف قیمت کانال (ریال)', 1, 1,
'مبلغی که به قیمت خرید کانال اضافه و از قیمت فروش کم می‌شود (اسپرد اضافه فقط برای کانال).', 'price'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_diff' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'price_channel_min_seconds', '120', 'حداقل فاصله ارسال (ثانیه)', 1, 1,
'حداقل فاصله بین دو ارسال به کانال؛ جلوی سیل پیام را می‌گیرد. صفر = هر تغییر قیمت.', 'number'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_min_seconds' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'price_channel_message_text', @price_channel_default_text, 'قالب متن پیام کانال', 1, 1, @price_channel_message_desc, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_message_text' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'price_channel_footer_id', '', 'آیدی کانال در پیام', 1, 1,
'آیدی/یوزرنیم کانال برای متغیر %آیدی در قالب پیام. خالی = خط خالی.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_footer_id' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'price_channel_footer_phone', '', 'شماره تماس در پیام', 1, 1,
'شماره تماس برای متغیر %شماره در قالب پیام. خالی = خط خالی.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_footer_phone' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'price_channel_footer_link', '', 'لینک در پیام', 1, 1,
'لینک برای متغیر %لینک در قالب پیام. خالی = خط خالی.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_footer_link' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'price_channel_bale_to', '', 'مقصد ارسال بله', 0, 1,
-- 'آیدی چنل/گروه بله برای ارسال قیمت (چند مقصد با ویرگول).', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_bale_to' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'price_channel_telegram_to', '', 'مقصد ارسال تلگرام', 0, 1,
-- 'آیدی چنل/گروه تلگرام برای ارسال قیمت (چند مقصد با ویرگول).', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_telegram_to' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'price_channel_rubika_to', '', 'مقصد ارسال روبیکا', 0, 1,
-- 'آیدی چنل/گروه روبیکا برای ارسال قیمت (چند مقصد با ویرگول).', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_rubika_to' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'change_mesghal', '4.3318', 'وزن مثقال (گرم)', 1, 1,
'ضریب تبدیل قیمت مثقال به گرم برای نمایش خط «هر گرم» در پیام کانال.', 'number'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'change_mesghal' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'support_messenger_id', '', 'شناسه پشتیبانی پیام‌رسان', 1, 0, 'یوزرنیم یا شماره تماس بسته به پیام‌رسان انتخاب‌شده'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'support_messenger_id' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'support_messenger_text', '', 'متن پشتیبانی پیام‌رسان', 1, 0, 'متن دکمه یا توضیح پشتیبانی در اپ کاربر'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'support_messenger_text' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'invite_link_text', @invite_link_default_text, 'متن دعوتنامه اشتراک‌گذاری', 1, 1, @invite_link_desc, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'invite_link_text' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'support_messenger', '', 'پیام‌رسان پشتیبانی', 1, 1, 'bale,telegram,whatsapp,rubika,eitaa,soroush'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'support_messenger' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'show_to_users_chat', 'deactivate', 'نمایش چت به کاربران', 0, 1,
-- 'روشن: قابلیت چت پشتیبانی برای این دیپلوی فعال است (منوی ادمین و پیش‌نیاز نمایش به کاربر). خاموش: چت در ادمین و اپ کاربر مخفی است و سوییچ «چت پشتیبانی» (has_chat) از تنظیمات عادی هم برداشته می‌شود.', 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'show_to_users_chat' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'chat_api', '', 'API چت', 0, 1,
-- 'هاست سرور چت جدا (بدون https)، مثلاً chat.example.ir — برای WS و ساخت روم.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'chat_api' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'chat_api_key', '', 'کلید API چت', 0, 1,
-- 'کلید API سرور چت جدا.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'chat_api_key' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'chat_upload_url', '', 'آدرس آپلود فایل چت', 0, 1,
-- 'URL کامل آپلود مدیا برای چت پشتیبانی.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'chat_upload_url' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'chat_download_url', '', 'آدرس دانلود فایل چت', 0, 1,
-- 'پایهٔ URL دانلود/نمایش فایل‌های چت پشتیبانی.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'chat_download_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'has_chat', 'true', 'چت پشتیبانی', 1, 1,
'روشن: چت پشتیبانی در اپ مشتری نمایش داده می‌شود (فقط وقتی show_to_users_chat هم روشن باشد). خاموش: دکمه و صفحه چت برای کاربر مخفی است.', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'has_chat' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'has_landing', 'false', 'لندینگ وبسایت', 0, 1,
'روشن: منوی تنظیمات وبسایت در ادمین و تنظیمات لندینگ برای اپ کاربر فعال است. خاموش: منو مخفی است.', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'has_landing' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_site', '', 'تنظیمات کلی سایت', 1, 1,
'محتوای تنظیمات کلی لندینگ وبسایت. در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_site' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_header', '', 'هدر و ناوبری', 1, 1,
'محتوای هدر و ناوبری لندینگ. در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_header' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_hero', '', 'هیرو', 1, 1,
'محتوای سکشن هیرو لندینگ. در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_hero' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_live_price', '', 'لیبل‌های قیمت لحظه‌ای', 1, 1,
'لیبل‌ها و متن قیمت لحظه‌ای لندینگ. در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_live_price' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_calculator', '', 'عنوان ماشین حساب', 1, 1,
'عنوان و متن ماشین حساب لندینگ. در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_calculator' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_feature', '', 'امکانات (چرا نیازی طلا)', 1, 1,
'متن امکانات لندینگ (چرا نیازی طلا). در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_feature' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_steps', '', 'مراحل شروع', 1, 1,
'متن مراحل شروع لندینگ. در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_steps' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_trust', '', 'اعتماد و مجوزها', 1, 1,
'متن اعتماد و مجوزها (بدون اینماد). در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_trust' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_faq', '', 'سوالات متداول', 1, 1,
'سوالات متداول لندینگ. در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_faq' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_buttom_cta', '', 'سکشن پایین صفحه لندینگ برای معرفی', 1, 1,
'متن دعوت به اقدام پایین صفحه لندینگ. در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_buttom_cta' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'landing_footer', '', 'فوتر', 1, 1,
'محتوای فوتر لندینگ. در اپ کاربر با get_settings در دسترس است.', 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'landing_footer' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_sms_support_number', '', 'شماره تماس پشتیبانی', 1, 1,
'شماره تماس پشتیبانی که در صفحه واریز، درباره ما و قوانین به مشتری نشان داده می‌شود. با کلیک، تماس تلفنی برقرار می‌شود.', 'number'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_sms_support_number' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_account_holder', '', 'نام صاحب حساب واریز', 1, 1,
'نام صاحب حساب واریز — در متن راهنما و پیام پشتیبانی با ٪نام یا %نام جایگزین می‌شود.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_account_holder' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_card_number', '', 'شماره کارت واریز', 1, 1,
'شماره کارت واریز — در متن‌ها با ٪کارت یا %کارت جایگزین می‌شود.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_card_number' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_account_number', '', 'شماره حساب واریز', 1, 1,
'شماره حساب بانکی واریز — در مودال راهنمای شارژ کنار کارت و شبا نمایش داده می‌شود. در متن‌ها با ٪حساب یا %حساب جایگزین می‌شود.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_account_number' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_sheba', '', 'شبا واریز', 1, 1,
'شماره شبا واریز — در متن‌ها با ٪شبا یا %شبا جایگزین می‌شود.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_sheba' LIMIT 1);
-- شارژ سامانه پیامکی (مودال اعتبار پیامک) — can_edit=0
-- value ردیف موجود فقط اگر خالی باشد پر می‌شود (ویجت هدر نباید مقدار خالی سوپرادمین را نگه دارد)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'sms_charge_card_number', '6219861961033817', 'شماره کارت شارژ پیامک', 0, 1,
'شماره کارت برای واریز شارژ سامانه پیامکی (مودال اعتبار پیامک).', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_card_number' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'sms_charge_sheba', 'IR080560611828005603604201', 'شماره شبا شارژ پیامک', 0, 1,
'شماره شبا برای واریز شارژ سامانه پیامکی.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_sheba' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'sms_charge_account_holder', 'حسین منتظر', 'نام صاحب حساب شارژ پیامک', 0, 1,
'نام صاحب حساب واریز شارژ سامانه پیامکی.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_account_holder' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'sms_charge_note', @sms_charge_note, 'متن راهنمای شارژ پیامک', 0, 1,
@sms_charge_note_desc, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_note' LIMIT 1);
UPDATE `settings` SET `value` = '6219861961033817'
WHERE `key` = 'sms_charge_card_number' AND (`value` IS NULL OR TRIM(`value`) = '');
UPDATE `settings` SET `value` = 'IR080560611828005603604201'
WHERE `key` = 'sms_charge_sheba' AND (`value` IS NULL OR TRIM(`value`) = '');
UPDATE `settings` SET `value` = 'حسین منتظر'
WHERE `key` = 'sms_charge_account_holder' AND (`value` IS NULL OR TRIM(`value`) = '');
UPDATE `settings` SET `value` = @sms_charge_note
WHERE `key` = 'sms_charge_note' AND (`value` IS NULL OR TRIM(`value`) = '');
-- روش‌های واریز (قابل ویرایش؛ کارت به کارت پیش‌فرض روشن)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_method_card_to_card', 'true', 'فعال‌سازی کارت به کارت', 1, 1,
'روشن (پیش‌فرض): روش کارت به کارت در صفحه واریز اپ نمایش داده می‌شود. خاموش: این روش از لیست روش‌های واریز حذف می‌شود.', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_method_card_to_card' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_method_gateway', 'false', 'فعال‌سازی درگاه پرداخت', 1, 1,
'روشن: روش درگاه پرداخت در صفحه واریز نمایش داده می‌شود. خاموش: مخفی است. اتصال و کدهای درگاه در تنظیمات پیشرفته → روش‌های واریز تنظیم می‌شوند.', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_method_gateway' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_method_identified', 'false', 'فعال‌سازی شناسه واریز', 1, 1,
'روشن: روش شناسه واریز در صفحه واریز نمایش داده می‌شود. خاموش: مخفی است.', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_method_identified' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_method_shetab', 'false', 'فعال‌سازی شبکه شتابی', 1, 1,
'روشن: روش شبکه شتابی در صفحه واریز نمایش داده می‌شود. خاموش: مخفی است.', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_method_shetab' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_support_message_text', 'شماره حساب', 'متن پیام به پشتیبانی (واریز)', 1, 1, @deposit_support_msg_desc, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_support_message_text' LIMIT 1);
-- min/max قیمت روز (سیستم)
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'up_price', '0', 'بیشترین قیمت امروز', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'up_price' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'down_price', '0', 'کمترین قیمت امروز', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'down_price' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'price_extreme_date', '', 'تاریخ min/max روز', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_extreme_date' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'metal_type', 'طلای آبشده', 'عنوان فلز در UI', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'metal_type' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'main_metal', 'طلا', 'نام فلز اصلی (ادمین)', 0, 1, NULL, 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'main_metal' LIMIT 1);
-- ---------------------------------------------------------------------------
-- درگاه شارژ آنلاین (Montify / external_payment) — فقط تنظیمات پیشرفته (can_edit=0)
-- پیش‌فرض enabled خاموش؛ value ردیف موجود دست نخورده می‌ماند.
-- ---------------------------------------------------------------------------
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'external_payment_enabled', 'false', 'فعال‌سازی شارژ آنلاین', 0, 1,
-- 'روشن: در صورت کامل بودن BASE_URL و client_id و client_secret و gateway، دکمه پرداخت آنلاین در اپ نمایش داده می‌شود. خاموش: فقط واریز دستی.',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'external_payment_enabled' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'wallet_payment_provider', 'none', 'نوع درگاه شارژ آنلاین', 0, 1,
-- 'none=خاموش، montify=پارتنر Montify|none,montify',
-- 'select'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'wallet_payment_provider' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'external_payment_base_url', '', 'آدرس API درگاه (BASE_URL)', 0, 1,
-- 'آدرس پایه API سرویس Montify (بدون اسلش انتهایی)، مثلاً https://node.example.com — فقط سرور؛ در اپ کاربر ارسال نمی‌شود.',
-- 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'external_payment_base_url' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'external_payment_client_id', '', 'شناسه کلاینت (client_id)', 0, 1,
-- 'شناسه partner (client_id) — فقط سرور؛ در اپ کاربر یا پاسخ get_settings عمومی نیست.',
-- 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'external_payment_client_id' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'external_payment_client_secret', '', 'رمز کلاینت (client_secret)', 0, 1,
-- 'رمز مخفی partner (client_secret) — فقط سرور. در فرانت و Network تب کاربر دیده نمی‌شود.',
-- 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'external_payment_client_secret' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'external_payment_gateway', 'zarinpall', 'نام درگاه داخل Montify', 0, 1,
-- 'نام درگاه فعال داخل Montify: zarinpall، zibal، payping یا sepal|zarinpall,zibal,payping,sepal',
-- 'select'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'external_payment_gateway' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'external_payment_return_url', '', 'آدرس برگشت (return_url)', 0, 1,
-- 'آدرس صفحه فرانت بعد از پرداخت. خالی = دامنه سایت + /wallet/payment-result',
-- 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'external_payment_return_url' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'external_payment_webhook_url', '', 'آدرس Webhook', 0, 1,
-- 'آدرس بک‌اند برای webhook (شارژ قطعی کیف). خالی = مسیر پیش‌فرض سرور.',
-- 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'external_payment_webhook_url' LIMIT 1);
-- درگاه — کلیدهای اختیاری payping
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'payping_fin_sync_enabled', 'false', 'همگام‌سازی fin', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_fin_sync_enabled' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'payping_fin_url', 'https://limangold.ir/kernel/admin/fin', 'URL fin', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_fin_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'payping_fin_token', '', 'توکن fin', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_fin_token' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'payping_fin_customer_id', '23', 'customer_id fin', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_fin_customer_id' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'payping_start_url', 'https://payping.limangold.ir/payment/start', 'آدرس شروع درگاه', 1, 1, NULL, 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_start_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'payping_verify_url', 'https://payping.limangold.ir/payment/verify', 'آدرس تأیید درگاه', 1, 1, NULL, 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_verify_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'payping_gateway_name', '', 'نام gateway درگاه', 1, 1, 'sepal,', 'select'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_gateway_name' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'payping_gateway_items', '', 'لیست item (چرخشی)', 1, 1, NULL, 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_gateway_items' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'payping_round_toman', 'false', 'گرد کردن مبلغ به تومان', 1, 1, NULL, 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_round_toman' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'payping_strict_failed_withdraw', 'false', 'اولویت تراکنش ناموفق', 1, 1, NULL, 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_strict_failed_withdraw' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'open_register', 'true', 'ثبت‌نام باز', 1, 1, NULL, 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'open_register' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'referral_id', 'required', 'کد معرف اجباری', 1, 1, 'روشن = اجباری در ثبت‌نام | خاموش = اختیاری', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_id' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'referral_show', 'true', 'نمایش فیلد کد معرف', 1, 1,
'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود).',
'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_show' LIMIT 1);
-- fee_single حذف شد — اختلاف فقط buy_fee / sell_fee (خالی = صفر)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'buy_fee', '', 'سود خرید نمایش', 1, 1, NULL, 'price'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'buy_fee' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'sell_fee', '', 'سود فروش نمایش', 1, 1, NULL, 'price'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sell_fee' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'fee_service_charge_percentage', '0.005', 'درصد کارمزد سفارش', 1, 1, NULL, 'number'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'fee_service_charge_percentage' LIMIT 1);
-- fee_deduct_from_gold: value پیش‌فرض false فقط در INSERT اولیه؛ اجرای مجدد value/is_active را overwrite نمی‌کند
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'fee_deduct_from_gold', 'false', 'اعمال مبلغ دقیق در معامله مشتری', 0, 1,
-- 'روشن: مشتری دقیقاً همان مبلغ یا وزنی را که وارد کرده دریافت می‌کند. در فروش، مثلاً ۱۰۰ میلیون ریال درخواست → همان ۱۰۰ میلیون واریز و کارمزد از طلای کیف کسر می‌شود. در خرید، مثلاً ۱۰ گرم درخواست → همان ۱۰ گرم واریز و کارمزد به ریال قابل پرداخت اضافه می‌شود. خاموش (پیش‌فرض): در فروش کارمزد از مبلغ ریالی واریزی کم می‌شود (مشتری مبلغ کمتری می‌گیرد). در خرید کارمزد از وزن طلای واریزی کم می‌شود (مشتری طلای کمتری می‌گیرد).',
-- 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'fee_deduct_from_gold' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'min_withdraw', '', 'حداقل برداشت (ریال)', 1, 1, NULL, 'price'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'min_withdraw' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'min_deposit', '1000000', 'حداقل واریز کیف پول (ریال)', 1, 1,
'حداقل مبلغ واریز به کیف پول (ریال). مبالغ کمتر در اپ و درگاه پذیرفته نمی‌شوند.',
'price'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'min_deposit' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'min_first_buy', '', 'حداقل اولین خرید (ریال)', 1, 1, NULL, 'price'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'min_first_buy' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'minimum_sell', '', 'حداقل فروش', 1, 1, NULL, 'price'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'minimum_sell' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'referral_bonus_amount', '', 'مقدار پاداش معرف', 1, 1, NULL, 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_bonus_amount' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'balance_report_exclude_customer_id', '', 'حذف مشتری از تراز', 1, 1, NULL, 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'balance_report_exclude_customer_id' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'montzar_closed', 'false', 'بسته بودن همکار', 1, 1, NULL, 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_closed' LIMIT 1);
-- =============================================================================
-- عنوان فارسی — backfill اولیه (فقط اگر title_fa خالی باشد؛ override نهایی در انتهای فایل)
-- =============================================================================
-- backfill عنوان فارسی کلیدهای قدیمی (فقط اگر title_fa خالی/NULL باشد)
UPDATE `settings` SET `title_fa` = 'نام فارسی اپ' WHERE `key` = 'name_fa' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'نام انگلیسی اپ' WHERE `key` = 'name_en' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'آدرس اپ (کاربر)' WHERE `key` = 'app_url' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'آدرس پایه' WHERE `key` = 'bace_url' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'لوگوی صفحه ورود' WHERE `key` = 'logo_login' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'لوگوی ثبت‌نام' WHERE `key` = 'logo_register' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'آدرس پنل ادمین' WHERE `key` = 'admin_url' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'عنوان PWA' WHERE `key` = 'title_pwa' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'عنوان favicon' WHERE `key` = 'title_fav' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'متن قوانین' WHERE `key` = 'text_rule' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'متن درباره ما' WHERE `key` = 'text_about' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'صفحه کسب درآمد' WHERE `key` = 'has_page_earn_money' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'صفحه صندوق' WHERE `key` = 'has_page_fund' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'صفحه مجوزها' WHERE `key` = 'has_page_permission' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'هشدار قیمت' WHERE `key` = 'has_page_price_trigger' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'صفحه طلای فیزیکی' WHERE `key` = 'has_page_physical_gold' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'رنگ اصلی' WHERE `key` = 'color_primary' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'رنگ ثانویه' WHERE `key` = 'color_secondary' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'کارمزد (قدیمی — درصد)' WHERE `key` = 'fee' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'چت پشتیبانی' WHERE `key` = 'has_chat' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'آدرس API سرور' WHERE `key` = 'server_url' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'کلید داخلی اپ' WHERE `key` = 'key' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'تعداد معرف برای هدیه' WHERE `key` = 'referral_count_for_gift' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'مقدار پاداش معرف' WHERE `key` = 'referral_bonus_amount' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '' OR `title_fa` = 'مبلغ پاداش معرف');
UPDATE `settings` SET `title_fa` = 'حداقل برداشت (ریال)' WHERE `key` = 'min_withdraw' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'حداقل واریز کیف پول (ریال)' WHERE `key` = 'min_deposit' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'حداقل اولین خرید (ریال)' WHERE `key` = 'min_first_buy' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `value` = '1000000' WHERE `key` = 'min_deposit' AND (`value` IS NULL OR TRIM(`value`) = '');
UPDATE `settings` SET `title_fa` = 'حداقل فروش' WHERE `key` = 'minimum_sell' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'ثبت‌نام باز' WHERE `key` = 'open_register' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'ارسال به ته‌حساب' WHERE `key` = 'send_to_tahesab' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'گرد کردن تومان پی‌پینگ' WHERE `key` = 'payping_round_toman' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'برداشت ناموفق سخت‌گیرانه' WHERE `key` = 'payping_strict_failed_withdraw' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'وضعیت فروشگاه' WHERE `key` = 'store_status' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'حالت فروشگاهی' WHERE `key` = 'is_store' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'محصولات متصل به کیف اصلی' WHERE `key` = 'main_wallet_products' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'واحد وزن' WHERE `key` = 'unit' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
UPDATE `settings` SET `title_fa` = 'حذف مشتری از تراز' WHERE `key` = 'balance_report_exclude_customer_id' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'منبع قیمت'),
-- `description` = 'منبع فعال قیمت|montzar,zaarbox,main_product'
-- WHERE `key` = 'price_provider';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'محصول / UUID تابلو')
-- WHERE `key` = 'main_product';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'آدرس API Zaarbox')
-- WHERE `key` = 'zaarbox_api_url';
UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'شناسه ردیف Zaarbox')
WHERE `key` = 'zaarbox_price_key';
UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'سود خرید نمایش')
WHERE `key` = 'buy_fee';
UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'سود فروش نمایش')
WHERE `key` = 'sell_fee';
UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'درصد کارمزد سفارش')
WHERE `key` = 'fee_service_charge_percentage';
UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'تأیید کارت جیبیت')
WHERE `key` = 'jibit_verification';
UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'تأیید ثبت‌نام جیبیت')
WHERE `key` = 'register_jibit_verify';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'شناسه کلاینت API خارجی')
-- WHERE `key` = 'node_client_id';
UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'کلید HMAC API خارجی')
WHERE `key` = 'node_shared_secret';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'API سفارش خارجی')
-- WHERE `key` = 'external_order_api_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'قیمت لحظه‌ای (SSE)')
-- WHERE `key` = 'wss_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'مسیر SSE قیمت')
-- WHERE `key` = 'sse_path';
UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'بسته بودن همکار')
WHERE `key` = 'montzar_closed';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'نام فروشگاه در درگاه')
-- WHERE `key` = 'montify_name';
-- =============================================================================
-- CONST — کلیدهای مورد استفاده کد
-- =============================================================================
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'jibit_counter', '0', 'شمارنده API جیبیت'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'jibit_counter' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'app_closed', 'false', 'بسته بودن اپ (ساعات)'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'app_closed' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'gram', '1', 'گرم هدیه ثبت‌نام'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'gram' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'price', '[]', 'لیست قیمت TGJU (JSON)'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'price' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'main_product', '', 'محصول آبشده (fallback)'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'main_product' LIMIT 1);
UPDATE `const` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'شمارنده جیبیت')
WHERE `key` = 'jibit_counter';
UPDATE `const` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'باز بودن درگاه')
WHERE `key` = 'is_gateway_open';
UPDATE `const` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'محصول آبشده (fallback)')
WHERE `key` = 'main_product';
-- =============================================================================
-- نوع فیلد پنل ادمین (type) — value دست نخورده
-- =============================================================================
-- longtext
UPDATE `settings` SET `type` = 'longtext' WHERE `key` IN (
'text_rule', 'text_about', 'about_software', 'support_messenger_text', 'invite_link_text',
'deposit_support_message_text', 'price_channel_message_text',
'montzar_order_response', 'montzar_last_product_log', 'tracking_systems',
'sms_charge_note'
);
-- select (+ گزینه‌ها در description)
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `type` = 'select', `description` = 'none,pargar,tahesab,zarin' WHERE `key` = 'accounting_provider';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `type` = 'select', `description` = 'منبع فعال قیمت|montzar,zaarbox,main_product' WHERE `key` = 'price_provider';
UPDATE `settings` SET `type` = 'switch', `title_fa` = 'کد معرف اجباری', `description` = 'روشن = اجباری در ثبت‌نام | خاموش = اختیاری' WHERE `key` = 'referral_id';
UPDATE `settings` SET `type` = 'switch', `title_fa` = 'نمایش فیلد کد معرف', `description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود).' WHERE `key` = 'referral_show';
UPDATE `settings` SET `type` = 'select', `description` = 'sepal,' WHERE `key` = 'payping_gateway_name';
UPDATE `settings` SET `type` = 'select', `description` = 'bale,telegram,whatsapp,rubika,eitaa,soroush' WHERE `key` = 'support_messenger';
-- switch
UPDATE `settings` SET `type` = 'switch' WHERE `key` IN (
'chart_use_local_data',
'jibit_enabled', 'jibit_verification', 'register_jibit_verify', 'open_register', 'auto_active_customer',
'referral_show',
'close_price', 'show_last_price', 'show_gold_ounce_price', 'show_home_price_when_closed', 'show_product_details',
'show_product_trade_status', 'show_product_card_meta',
'products_site_link_enabled',
'fee_deduct_from_gold',
'require_zero_main_gold_before_other_buy',
'profit_gold_api_enabled', 'payping_round_toman', 'payping_strict_failed_withdraw',
'has_page_earn_money', 'has_page_price_trigger', 'has_page_notification', 'has_page_gift_card',
'enable_customer_level_profit', 'charge_notif', 'group_sms', 'customer_special_pricing', 'sms_panel', 'customer_direct_sms',
'enable_conditional_order', 'enable_product_funds', 'enable_automation',
'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',
'sms_notif_jibit_admin', 'sms_notif_bank_card_admin', 'sms_notif_bank_card_customer',
'sms_notif_fund_withdraw_admin', 'sms_notif_fund_withdraw_customer',
'sms_notif_price_trigger', 'sms_notif_wallet_alert', 'sms_notif_support_admin',
'montzar_closed', 'montzar_open_buy', 'montzar_open_sell', 'montzar_order_wait_callback',
'payping_fin_sync_enabled', 'external_order_api_enabled', 'is_store', 'wss_enabled', 'tracking_systems_enabled',
'register_referral_sms_to_referrer', 'register_referral_bonus_message',
'referral_gift_on_first_order', 'referral_gift_buy_from_montzar',
'banner_enabled', 'permision__enabled'
);
-- price (مبالغ ریالی)
UPDATE `settings` SET `type` = 'price' WHERE `key` IN (
'buy_fee', 'sell_fee',
'min_withdraw', 'min_deposit', 'min_first_buy', 'minimum_sell',
'up_price', 'down_price'
);
-- number (شماره، شناسه، درصد، تعداد — بدون جداکننده هزارگان)
UPDATE `settings` SET `type` = 'number' WHERE `key` IN (
'fee_service_charge_percentage', 'fee_free',
'montzar_product_id', 'gift_for_referrer', 'gift_for_referral',
'payping_fin_customer_id', 'tahesab_port', 'referral_limit',
'deposit_sms_support_number',
'pargar_item_id_rial', 'pargar_item_id_gold'
);
-- text (بقیه — URL، توکن، کلید API، ساعت، ...)
UPDATE `settings` SET `type` = 'text' WHERE `key` IN (
'name_fa', 'name_en', 'app_url', 'bace_url', 'logo_login', 'logo_register', 'admin_url', 'title_pwa', 'title_fav',
'server_url', 'key', 'main_product', 'zaarbox_api_url', 'zaarbox_price_key', 'chart_id',
'etehadie_api_url', 'montzar_mobile', 'montzar_password', 'montzar_base_url',
'montzar_order_status_path',
'montzar_token', 'montzar_diff', 'montzar_live_price', 'montzar_mazaneh',
'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh',
'montzar_account_zarin', 'montzar_account_tahesab', 'montzar_account_pargar',
'startDay', 'endDay',
'payping_start_url', 'payping_verify_url', 'payping_gateway_items', 'payping_fin_url',
'payping_fin_token', 'tahesab_host', 'tahesab_token', 'tahesab_db',
'pargar_username', 'pargar_password', 'pargar_api_token',
'pargar_item_id_rial', 'pargar_item_id_gold',
'node_client_id', 'node_shared_secret',
'sse_path',
'tahesab_bank_account', 'telegram_bot_token', 'bale_bot_token', 'support_messenger_id',
'referral_bonus_amount', 'balance_report_exclude_customer_id', 'metal_type', 'main_metal', 'montify_name', 'price_extreme_date',
'liman_token',
'products_site_link_url', 'products_site_link_text',
'sms_charge_card_number', 'sms_charge_sheba', 'sms_charge_account_holder'
);
-- پیش‌فرض برای ردیف‌های بدون type
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', 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
DELETE FROM `settings` WHERE `key` = 'service_charge_percentage';
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`)
-- SELECT 'title_pwa', 'عنوان PWA', '', 0, 0, 0, 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'title_pwa' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`)
-- SELECT 'title_fav', 'عنوان favicon', '', 0, 0, 0, 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'title_fav' LIMIT 1);
INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`)
SELECT 'text_rule', 'متن قوانین', '', 1, 0, 1, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'text_rule' LIMIT 1);
INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`)
SELECT 'text_about', 'متن درباره ما', '', 1, 0, 1, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'text_about' LIMIT 1);
INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`)
SELECT 'about_software', 'متن درباره نرم‌افزار', '', 1, 0, 1, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'about_software' LIMIT 1);
UPDATE `settings` SET `key` = 'about_software' WHERE `key` = 'text_about_extra';
INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`)
SELECT 'enamad_url', 'آدرس اینماد', '', 1, 0, 1, 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'enamad_url' LIMIT 1);
INSERT INTO `settings` (`key`, `title_fa`, `value`, `can_edit`, `is_exist`, `is_active`, `type`)
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', '', 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`)
SELECT 'zaarbox_price_key', 'شناسه ردیف تابلو (key یا UUID)', '', 1, 0, 1, 'text'
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', 'محصول آبشده', '', 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`)
SELECT 'profit_gold_api_enabled', 'API سود طلا', 'false', 1, 0, 0, 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'profit_gold_api_enabled' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'unit', '', 'واحد وزن دارایی و معاملات', 1, 1,
'واحد نمایش وزن فلز در دارایی‌ها، کیف پول و تراکنش‌ها|گرم,کیلوگرم', 'select'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'unit' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'main_wallet_products', '13', 'محصولات متصل به کیف اصلی', 0, 1,
-- 'محصولاتی که موجودی‌شان از کیف طلای اصلی خوانده می‌شود. چند محصول با کاما. پیش‌فرض: 13'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'main_wallet_products' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'require_zero_main_gold_before_other_buy', 'true', 'الزام صفر بودن کیف اصلی قبل از خرید محصول دیگر', 1, 1,
'روشن: اگر مانده طلای کیف اصلی صفر یا زیر صفر باشد (بدهی)، مشتری ابتدا باید آبشده/مانده کیف اصلی را صفر کند و بعد می‌تواند محصول دیگر بخرد. خاموش: بدون این محدودیت. معامله خودِ محصولات کیف اصلی همیشه مجاز است.', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'require_zero_main_gold_before_other_buy' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'apk_download_link', '', 'لینک دانلود اپ اندروید', 0, 1,
-- 'آدرس کامل فایل APK اندروید (https). اگر خالی باشد لینک دانلود در اپ نمایش داده نمی‌شود.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'apk_download_link' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'banner_enabled', 'true', 'نمایش بنرها', 1, 1,
'روشن: منوی «بنرها» در ادمین و اسلایدر صفحه اصلی اپ مشتری نمایش داده می‌شود. خاموش: مخفی است (محتوای بنر از همان منو مدیریت می‌شود).', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'banner_enabled' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'permision__enabled', 'false', 'نمایش منوی مجوزها', 0, 1,
-- 'روشن: آیتم «مجوز ها» در منوی تنظیمات اپ خانگی (تم جدید) نمایش داده می‌شود. خاموش: مخفی است.', 'switch'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'permision__enabled' LIMIT 1);
-- ---------------------------------------------------------------------------
-- const — کلیدهای اضافی
-- ---------------------------------------------------------------------------
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'is_gateway_open', 'true', 'باز بودن درگاه پرداخت'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'is_gateway_open' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'header_banner', '', 'بنر بالای صفحه'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'header_banner' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'last_order_log', '', 'لاگ آخرین سفارش همکار'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'last_order_log' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'liman', '', 'توکن fin (legacy)'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'liman' LIMIT 1);
-- ---------------------------------------------------------------------------
-- پاکسازی کلیدهای legacy / تست
-- ---------------------------------------------------------------------------
DELETE FROM `settings` WHERE `key` IN (
'test', 'test2', 'test22', 'test3', 'test33', 'longtest', 'longtest2', 'test*',
'is_requaire_referral', 'send_to_goldir', 'goldir_price', 'liman_token',
'melted_product_id', 'display_montzar', 'tabanGohar_price', 'etehadie_api_url',
'price_method', 'price_primary_source',
'has_page_fund', 'has_page_permission', 'has_page_physical_gold',
'product_update_price_on_list', 'product_auto_close_open_on_list',
'referral_count_for_gift', 'store_status',
'name_en', 'bace_url', 'server_url', 'key', 'color_primary', 'color_secondary',
'price_from_nasiryan',
'montzar_price',
'fee_single',
'goldir_base_url', 'fee_cash', 'default_vc_number', 'payping_gateway_item',
'wss_path', 'wss_link', 'wss_trigger_path',
'wss_trigger_host', 'wss_trigger_scheme', 'wss_http_port', 'wss_socket_port'
);
DELETE FROM `const` WHERE `key` = 'log' OR `key` LIKE 'goldir%' OR `key` IN (
'limited_price',
'first_customer_wallet_value',
'nasiryan',
'nasiryan_price',
'nasiryan_diff',
'nasiryan_mazaneh',
'nasiryan_truly_buy_mazaneh',
'nasiryan_truly_sell_mazaneh',
'nasiryan_closed'
);
-- ---------------------------------------------------------------------------
-- metadata — type / title_fa / description (value / is_active دست نمی‌خورند؛ can_edit در انتها)
-- ---------------------------------------------------------------------------
UPDATE `settings` SET `description` = NULL
WHERE LOWER(TRIM(COALESCE(`description`, ''))) IN ('true', 'false', '0', '1', 'yes', 'no', 'in server')
OR TRIM(COALESCE(`description`, '')) LIKE 'count of%';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'منبع فعال قیمت. montzar = همکار|montzar,zaarbox,main_product'
-- WHERE `key` = 'price_provider';
UPDATE `settings` SET
`type` = 'switch',
`title_fa` = 'کد معرف اجباری',
`description` = 'روشن = اجباری در ثبت‌نام | خاموش = اختیاری'
WHERE `key` = 'referral_id';
UPDATE `settings` SET
`type` = 'switch',
`title_fa` = 'نمایش فیلد کد معرف',
`description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود).'
WHERE `key` = 'referral_show';
UPDATE `settings` SET `type` = 'switch'
WHERE `key` IN ('register_referral_sms_to_referrer', 'register_referral_bonus_message', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar');
UPDATE `settings` SET
`type` = 'switch',
`title_fa` = 'نمودار از داده خود سایت',
`description` = 'خاموش = Zaarbox (chart_id) | روشن = تاریخچه prices'
WHERE `key` = 'chart_use_local_data';
UPDATE `settings` SET `type` = 'number', `title_fa` = 'تعداد سفارش اول بدون کارمزد', `description` = 'عدد — ۰ یعنی غیرفعال'
WHERE `key` = 'fee_free';
UPDATE `settings` SET `description` = 'تعداد سفارش اول بدون کارمزد' WHERE `key` = 'fee_free';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'id یا reading_method محصول آبشده' WHERE `key` = 'main_product';
UPDATE `settings` SET
`title_fa` = 'شناسه پشتیبانی پیام‌رسان',
`type` = 'text',
`description` = 'یوزرنیم یا شماره تماس بسته به پیام‌رسان انتخاب‌شده'
WHERE `key` = 'support_messenger_id';
UPDATE `settings` SET
`title_fa` = 'متن راهنمای واریز',
`type` = 'longtext',
`can_edit` = 1,
`description` = @deposit_guide_desc
WHERE `key` = 'support_messenger_text';
UPDATE `settings` SET
`title_fa` = 'متن پیام به پشتیبانی (واریز)',
`type` = 'longtext',
`can_edit` = 1,
`description` = @deposit_support_msg_desc
WHERE `key` = 'deposit_support_message_text';
UPDATE `settings` SET
`title_fa` = 'نام صاحب حساب واریز',
`type` = 'text',
`can_edit` = 1,
`description` = 'نام صاحب حساب واریز — در متن راهنما و پیام پشتیبانی با ٪نام یا %نام جایگزین می‌شود.'
WHERE `key` = 'deposit_account_holder';
UPDATE `settings` SET
`title_fa` = 'شماره کارت واریز',
`type` = 'text',
`can_edit` = 1,
`description` = 'شماره کارت واریز — در متن‌ها با ٪کارت یا %کارت جایگزین می‌شود.'
WHERE `key` = 'deposit_card_number';
UPDATE `settings` SET
`title_fa` = 'شماره حساب واریز',
`type` = 'text',
`can_edit` = 1,
`description` = 'شماره حساب بانکی واریز — در مودال راهنمای شارژ کنار کارت و شبا نمایش داده می‌شود. در متن‌ها با ٪حساب یا %حساب جایگزین می‌شود.'
WHERE `key` = 'deposit_account_number';
UPDATE `settings` SET
`title_fa` = 'شبا واریز',
`type` = 'text',
`can_edit` = 1,
`description` = 'شماره شبا واریز — در متن‌ها با ٪شبا یا %شبا جایگزین می‌شود.'
WHERE `key` = 'deposit_sheba';
UPDATE `settings` SET
`title_fa` = 'شماره کارت شارژ پیامک',
`type` = 'text',
`can_edit` = 0,
`description` = 'شماره کارت برای واریز شارژ سامانه پیامکی (مودال اعتبار پیامک).'
WHERE `key` = 'sms_charge_card_number';
UPDATE `settings` SET
`title_fa` = 'شماره شبا شارژ پیامک',
`type` = 'text',
`can_edit` = 0,
`description` = 'شماره شبا برای واریز شارژ سامانه پیامکی.'
WHERE `key` = 'sms_charge_sheba';
UPDATE `settings` SET
`title_fa` = 'نام صاحب حساب شارژ پیامک',
`type` = 'text',
`can_edit` = 0,
`description` = 'نام صاحب حساب واریز شارژ سامانه پیامکی.'
WHERE `key` = 'sms_charge_account_holder';
UPDATE `settings` SET
`title_fa` = 'متن راهنمای شارژ پیامک',
`type` = 'longtext',
`can_edit` = 0,
`description` = @sms_charge_note_desc
WHERE `key` = 'sms_charge_note';
UPDATE `settings` SET
`title_fa` = 'متن دعوتنامه اشتراک‌گذاری',
`type` = 'longtext',
`description` = @invite_link_desc
WHERE `key` = 'invite_link_text';
UPDATE `settings` SET
`title_fa` = 'پیام‌رسان پشتیبانی',
`type` = 'select',
`description` = 'bale,telegram,whatsapp,rubika,eitaa,soroush'
WHERE `key` = 'support_messenger';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'آدرس IP سرور ته‌حساب',
-- `type` = 'text',
-- `description` = NULL
-- WHERE `key` = 'tahesab_host';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'پورت سرور ته‌حساب',
-- `type` = 'number',
-- `description` = NULL
-- WHERE `key` = 'tahesab_port';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'نام دیتابیس ته‌حساب',
-- `type` = 'text',
-- `description` = 'مثال: TahesabDB'
-- WHERE `key` = 'tahesab_db';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'حساب بانکی ته‌حساب',
-- `type` = 'text',
-- `description` = 'نام حساب بانکی در سند واریز'
-- WHERE `key` = 'tahesab_bank_account';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'مقدار پاداش معرف' WHERE `key` = 'referral_bonus_amount';
UPDATE `settings` SET `type` = 'text' WHERE `key` = 'balance_report_exclude_customer_id';
-- پاکسازی title_fa / description از نام پروژه یا ارجاع کد
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'حالت فروشگاهی'
-- WHERE `key` = 'is_store' AND (`title_fa` LIKE '%قطره%' OR `title_fa` LIKE '%کشکول%');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'همگام‌سازی fin'
-- WHERE `key` = 'payping_fin_sync_enabled' AND `title_fa` LIKE '%لیمان%';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'نام فروشگاه در درگاه', `description` = 'نام فروشگاه که در درگاه پرداخت و رسید بانکی به کاربر نمایش داده می‌شود.'
-- WHERE `key` = 'montify_name';
-- descriptionهای قدیمی که عمداً NULL می‌شدند — در بلوک پایانی بازنویسی می‌شوند
UPDATE `const` SET `title_fa` = 'توکن fin (legacy)' WHERE `key` = 'liman' AND `title_fa` LIKE '%لیمان%';
UPDATE `const` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'بنر بالای صفحه') WHERE `key` = 'header_banner';
UPDATE `const` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'باز بودن درگاه') WHERE `key` = 'is_gateway_open';
UPDATE `const` SET `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'لاگ آخرین سفارش') WHERE `key` = 'last_order_log';
-- ---------------------------------------------------------------------------
-- راهنمای کامل تنظیمات (description) — برای نمایش در پنل ادمین
-- فرمت select: «متن راهنما|گزینه۱,گزینه۲»
-- ---------------------------------------------------------------------------
UPDATE `settings` SET `description` = 'نام فارسی برند که در پیامک‌ها، عنوان صفحات و بخش‌های عمومی اپ کاربر نمایش داده می‌شود.' WHERE `key` = 'name_fa';
UPDATE `settings` SET `description` = 'آدرس کامل وب‌اپ کاربر (با https). در لینک‌های پیامک، بازگشت از درگاه و ارجاعات داخلی استفاده می‌شود.' WHERE `key` = 'app_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'آدرس کامل پنل مدیریت (با https). برای لینک‌های ادمین و تنظیمات CORS در صورت نیاز.' WHERE `key` = 'admin_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'آدرس تصویر لوگو در صفحه ورود. معمولاً از طریق دیپلوی یا آپلود فایل تنظیم می‌شود؛ در پنل قابل ویرایش نیست.' WHERE `key` = 'logo_login';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'آدرس تصویر لوگو در صفحه ثبت‌نام. معمولاً از طریق دیپلوی تنظیم می‌شود؛ در پنل قابل ویرایش نیست.' WHERE `key` = 'logo_register';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'عنوان کوتاه برای نصب PWA روی موبایل. از دیپلوی مدیریت می‌شود.' WHERE `key` = 'title_pwa';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'عنوان نمایش‌داده‌شده در تب مرورگر (favicon). از دیپلوی مدیریت می‌شود.' WHERE `key` = 'title_fav';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'عنوان فلز اصلی در رابط کاربر (مثلاً «طلای آبشده» یا «کاتد مس»). در دارایی، کیف پول و برچسب‌های معامله دیده می‌شود. فقط از دیپلوی/SQL تغییر می‌کند.' WHERE `key` = 'metal_type';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'نام فلز اصلی (ادمین)', `description` = 'نام کوتاه فلز برای برچسب‌های پنل ادمین (مثلاً «مس» یا «طلا»). «تراز طلایی» می‌شود «تراز مس» — نه «تراز مسی». فقط از دیپلوی/SQL تغییر می‌کند.' WHERE `key` = 'main_metal';
UPDATE `settings` SET `description` = 'واحد نمایش وزن در دارایی‌ها، کیف پول و جزئیات معاملات|گرم,کیلوگرم' WHERE `key` = 'unit';
UPDATE `settings` SET `description` = 'روشن: کاربران جدید می‌توانند ثبت‌نام کنند. خاموش: فقط ورود کاربران موجود مجاز است.' WHERE `key` = 'open_register';
UPDATE `settings` SET `description` = 'روشن: بعد از ثبت‌نام کاربر می‌تواند وارد اپ شود (بدون تأیید دستی ادمین). خاموش: ورود فقط بعد از فعال‌سازی دستی در پنل. این سوییچ اجازهٔ خرید/فروش نمی‌دهد — معامله فقط بعد از احراز هویت ممکن است.' WHERE `key` = 'auto_active_customer';
UPDATE `settings` SET `title_fa` = 'فعال‌سازی خودکار پس از ثبت‌نام' WHERE `key` = 'auto_active_customer';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'نوع چیدمان اپ: روشن = حالت فروشگاهی (سبد، دسته‌بندی، حواله و …). خاموش = حالت معامله آبشده/محصولات کلاسیک. فقط از دیپلوی تغییر می‌کند.' WHERE `key` = 'is_store';
UPDATE `settings` SET `description` = 'روشن: نمودار قیمت از تاریخچه ذخیره‌شده در دیتابیس خودتان. خاموش: از سرویس تابلو آنلاین (با شناسه chart_id) استفاده می‌شود.' WHERE `key` = 'chart_use_local_data';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'شناسه یکتا (UUID) نمودار در سرویس تابلو. اگر خالی باشد از شناسه پیش‌فرض سرویس استفاده می‌شود.' WHERE `key` = 'chart_id';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'منبع دریافت قیمت لحظه‌ای برای اپ کاربر و همگام‌سازی محصولات. مقدار montzar = قیمت از همکار (Montzar).|montzar,zaarbox,main_product' WHERE `key` = 'price_provider';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'شناسه عددی یا نام reading_method محصول آبشده مرجع. وقتی منبع قیمت روی main_product باشد برای محاسبه استفاده می‌شود.' WHERE `key` = 'main_product';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'آدرس سرور(های) فید قیمت (/api/free). تا ۵ آدرس (JSON آرایه) پشتیبانی می‌شود؛ اگر آدرس اول پاسخ ندهد به‌ترتیب سراغ بعدی می‌رود. مقدار تکی قبلی حفظ می‌شود.' WHERE `key` = 'zaarbox_api_url';
UPDATE `settings` SET `description` = 'کلید یا UUID ردیف قیمت در پاسخ API تابلو. باید با محصول/ردیف موردنظر در سرویس خارجی یکسان باشد.' WHERE `key` = 'zaarbox_price_key';
UPDATE `settings` SET `description` = 'وقتی مظنه زنده نیست (و فروشگاه از نظر ساعت بسته حساب نمی‌شود): روشن = آخرین قیمت ذخیره‌شده نشان داده شود. خاموش = پیام «مظنه در دسترس نیست».' WHERE `key` = 'show_last_price';
UPDATE `settings` SET `description` = 'روشن: اگر آدرس API تابلو (zaarbox_api_url) تنظیم شده باشد، قیمت انس طلا در اپ مشتری نمایش داده می‌شود. خاموش: نمایش داده نمی‌شود.' WHERE `key` = 'show_gold_ounce_price';
UPDATE `settings` SET `description` = 'فقط وقتی «بستن خودکار خارج از ساعت کاری» روشن است و الان خارج از بازه هستید. روشن: آخرین قیمت روی صفحه اصلی نشان داده می‌شود (معامله بسته می‌ماند). خاموش: پیام «فروشگاه بسته است».' WHERE `key` = 'show_home_price_when_closed';
UPDATE `settings` SET `description` = 'روشن: بعد از انتخاب محصول در صفحه خرید/فروش، متن توضیح محصول نمایش داده می‌شود. خاموش: توضیح نشان داده نمی‌شود.' WHERE `key` = 'show_product_details';
UPDATE `settings` SET `description` = 'روشن: در صفحه خرید/فروش (بالای تب دسته‌ها) یک دکمه تمام‌عرض نشان داده می‌شود که با کلیک، لینک تنظیم‌شده را در تب جدید مرورگر باز می‌کند. خاموش: دکمه مخفی است.' WHERE `key` = 'products_site_link_enabled';
UPDATE `settings` SET `description` = 'آدرس کامل سایت یا صفحه خارجی (مثلاً https://example.com). با کلیک روی دکمه در اپ کاربر، همین آدرس در تب جدید مرورگر باز می‌شود. اگر خالی باشد، با وجود روشن بودن سوییچ، دکمه کاری انجام نمی‌دهد.' WHERE `key` = 'products_site_link_url';
UPDATE `settings` SET `description` = 'متنی که روی دکمه لینک خارجی در صفحه خرید/فروش نمایش داده می‌شود. اگر خالی باشد، پیش‌فرض «ورود به سایت» همراه آیکون کره زمین نشان داده می‌شود.' WHERE `key` = 'products_site_link_text';
UPDATE `settings` SET `description` = 'روشن: روی کارت محصول برچسب خرید باز/بسته و فروش باز/بسته نمایش داده می‌شود. خاموش: مخفی است.' WHERE `key` = 'show_product_trade_status';
UPDATE `settings` SET `description` = 'روشن: روی کارت محصول دسته‌بندی، وضعیت تحویل فیزیکی و مقدار/وزن نمایش داده می‌شود. خاموش: مخفی است.' WHERE `key` = 'show_product_card_meta';
UPDATE `settings` SET `description` = 'سوییچ اصلی ساعت کاری. خاموش: محدودیت ساعت نیست — مظنه زنده یا با «نمایش آخرین قیمت ذخیره‌شده» آخرین قیمت، وگرنه «مظنه در دسترس نیست». روشن: داخل بازه همان منطق مظنه؛ خارج از بازه با «نمایش قیمت صفحه اصلی خارج از ساعت کاری» یا پیام «فروشگاه بسته است».' WHERE `key` = 'close_price';
UPDATE `settings` SET `description` = 'ساعت شروع فعالیت روزانه. فقط وقتی «بستن خودکار خارج از ساعت کاری» روشن باشد اعمال می‌شود (مثلاً ۰۹:۰۰).' WHERE `key` = 'startDay';
UPDATE `settings` SET `description` = 'ساعت پایان فعالیت روزانه. فقط وقتی «بستن خودکار خارج از ساعت کاری» روشن باشد اعمال می‌شود (مثلاً ۲۲:۰۰).' WHERE `key` = 'endDay';
UPDATE `settings` SET `description` = 'مبلغ اضافه (ریال) روی قیمت پایه برای سمت خرید. خالی یا صفر = بدون اختلاف.' WHERE `key` = 'buy_fee';
UPDATE `settings` SET `description` = 'مبلغ کسر (ریال) از قیمت پایه برای سمت فروش. خالی یا صفر = بدون اختلاف.' WHERE `key` = 'sell_fee';
UPDATE `settings` SET `description` = 'درصد کارمزد هر سفارش از مبلغ معامله (اعشاری؛ مثلاً ۰٫۰۰۵ یعنی نیم در هزار).' WHERE `key` = 'fee_service_charge_percentage';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'اعمال مبلغ دقیق در معامله مشتری',
-- `type` = 'switch',
-- `can_edit` = 0,
-- `description` = 'روشن: مشتری دقیقاً همان مبلغ یا وزنی را که وارد کرده دریافت می‌کند. در فروش، مثلاً ۱۰۰ میلیون ریال درخواست → همان ۱۰۰ میلیون واریز و کارمزد از طلای کیف کسر می‌شود. در خرید، مثلاً ۱۰ گرم درخواست → همان ۱۰ گرم واریز و کارمزد به ریال قابل پرداخت اضافه می‌شود. خاموش (پیش‌فرض): در فروش کارمزد از مبلغ ریالی واریزی کم می‌شود (مشتری مبلغ کمتری می‌گیرد). در خرید کارمزد از وزن طلای واریزی کم می‌شود (مشتری طلای کمتری می‌گیرد).'
-- WHERE `key` = 'fee_deduct_from_gold';
UPDATE `settings` SET `description` = 'تعداد اولین سفارش‌های هر کاربر که از کارمزد معاف می‌شوند. ۰ = غیرفعال.' WHERE `key` = 'fee_free';
UPDATE `settings` SET `description` = 'حداقل مبلغ درخواست برداشت وجه (ریال). درخواست‌های کمتر رد می‌شوند.' WHERE `key` = 'min_withdraw';
UPDATE `settings` SET `description` = 'حداقل مبلغ واریز به کیف پول (ریال). مبالغ کمتر در اپ و درگاه پذیرفته نمی‌شوند.' WHERE `key` = 'min_deposit';
UPDATE `settings` SET `description` = 'حداقل مبلغ اولین خرید هر کاربر (ریال). برای فعال‌سازی کیف یا احراز سطح اول استفاده می‌شود.' WHERE `key` = 'min_first_buy';
UPDATE `settings` SET `description` = 'حداقل مقدار/مبلغ مجاز برای ثبت سفارش فروش. بسته به نوع محصول می‌تواند وزن یا ریال باشد.' WHERE `key` = 'minimum_sell';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'بیشترین قیمت ثبت‌شده در روز جاری (ریال). توسط سیستم به‌روز می‌شود؛ دستی تغییر ندهید.' WHERE `key` = 'up_price';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'کمترین قیمت ثبت‌شده در روز جاری (ریال). توسط سیستم به‌روز می‌شود؛ دستی تغییر ندهید.' WHERE `key` = 'down_price';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'تاریخ آخرین به‌روزرسانی بیشترین/کمترین قیمت روز. توسط سیستم پر می‌شود.' WHERE `key` = 'price_extreme_date';
UPDATE `settings` SET `description` = 'شناسه عددی مشتری که از گزارش تراز و آمار تجمیعی حذف می‌شود (مثلاً حساب تست). چند id با کاما.' WHERE `key` = 'balance_report_exclude_customer_id';
UPDATE `settings` SET `description` = 'تنظیم legacy — از price_provider استفاده کنید. روشن بودن این گزینه دیگر توصیه نمی‌شود.' WHERE `key` = 'main_product_price';
UPDATE `settings` SET `description` = 'متن کامل قوانین و مقررات استفاده از اپ که در صفحه قوانین به کاربر نشان داده می‌شود. HTML ساده مجاز است.' WHERE `key` = 'text_rule';
UPDATE `settings` SET `description` = 'متن «درباره ما» شامل معرفی مجموعه، راه‌های ارتباطی و توضیح خدمات. در صفحه مربوطه در اپ کاربر نمایش داده می‌شود.' WHERE `key` = 'text_about';
UPDATE `settings` SET `description` = 'متن بالای عنوان طلا در ستون چپ صفحه ورود دسکتاپ (تم VIP).' WHERE `key` = 'login_hero_eyebrow';
UPDATE `settings` SET `description` = 'عنوان طلایی ستون چپ صفحه ورود دسکتاپ (تم VIP).' WHERE `key` = 'login_hero_title';
UPDATE `settings` SET `description` = 'اولین آیتم لیست ویژگی‌های ستون چپ لاگین دسکتاپ.' WHERE `key` = 'login_hero_feature_1';
UPDATE `settings` SET `description` = 'دومین آیتم لیست ویژگی‌های ستون چپ لاگین دسکتاپ.' WHERE `key` = 'login_hero_feature_2';
UPDATE `settings` SET `description` = 'سومین آیتم لیست ویژگی‌های ستون چپ لاگین دسکتاپ.' WHERE `key` = 'login_hero_feature_3';
UPDATE `settings` SET `description` = 'چهارمین آیتم لیست ویژگی‌های ستون چپ لاگین دسکتاپ.' WHERE `key` = 'login_hero_feature_4';
UPDATE `settings` SET `description` = 'متن معرفی نرم‌افزار — در تنظیمات پنل ذخیره می‌شود (HTML یا چند خط متن).' WHERE `key` = 'about_software';
UPDATE `settings` SET `description` = 'لینک اعتماد اینماد (مثلاً trustseal.enamad.ir/?id=...&Code=...).' WHERE `key` = 'enamad_url';
UPDATE `settings` SET `description` = 'آدرس تصویر لوگوی اینماد (مثلاً trustseal.enamad.ir/logo.aspx?id=...&Code=...).' WHERE `key` = 'enamad_logo';
UPDATE `settings` SET `description` = 'روشن: وارد کردن کد معرف در ثبت‌نام اجباری است. خاموش: کد معرف اختیاری است. اگر «نمایش فیلد کد معرف» خاموش باشد، اجباری بودن اعمال نمی‌شود.' WHERE `key` = 'referral_id';
UPDATE `settings` SET `description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود). اگر خاموش است و اجباری روشن باشد، فقط ثبت‌نام از لینک دعوت ممکن است.' WHERE `key` = 'referral_show';
UPDATE `settings` SET `description` = 'مقدار پاداش (گرم) به کیف معرف. ۰ = بدون پاداش. زمان واریز بسته به «پاداش معرف پس از اولین سفارش» است. خرید پوشش از همکار با کلید «خرید پاداش معرفی از همکار» کنترل می‌شود.' WHERE `key` = 'gift_for_referrer';
UPDATE `settings` SET `description` = 'مقدار پاداش (گرم) به معرف‌شونده. ۰ = بدون پاداش. زمان واریز بسته به «پاداش معرف پس از اولین سفارش» است. خرید پوشش از همکار با کلید «خرید پاداش معرفی از همکار» کنترل می‌شود.' WHERE `key` = 'gift_for_referral';
UPDATE `settings` SET `description` = 'روشن: پس از ثبت‌نام کاربر جدید، پیامک اطلاع‌رسانی برای معرف ارسال می‌شود.' WHERE `key` = 'register_referral_sms_to_referrer';
UPDATE `settings` SET `description` = 'روشن: متن پاداش معرف در پیامک خوش‌آمد ثبت‌نام گنجانده می‌شود.' WHERE `key` = 'register_referral_bonus_message';
UPDATE `settings` SET `description` = 'روشن: پاداش معرف (gift_for_referrer) و معرف‌شونده (gift_for_referral) پس از تکمیل اولین سفارش معرف‌شونده به کیف واریز می‌شود — فقط اگر مقدار هر پاداش بیشتر از صفر باشد. خاموش: پاداش بلافاصله پس از ثبت‌نام موفق یا تأیید احراز هویت واریز می‌شود (باز هم فقط برای مقادیر بیشتر از صفر).' WHERE `key` = 'referral_gift_on_first_order';
UPDATE `settings` SET
`title_fa` = 'خرید پاداش معرفی از همکار',
`can_edit` = 1,
`type` = 'switch',
`description` = 'روشن: اگر منبع قیمت montzar باشد، قبل از واریز پاداش معرف/معرف‌شونده همان وزن از همکار خرید می‌شود؛ شکست خرید = واریز نمی‌شود. خاموش: مثل قبل فقط به کیف واریز می‌شود بدون خرید از همکار.'
WHERE `key` = 'referral_gift_buy_from_montzar';
UPDATE `settings` SET `description` = 'حداکثر تعداد دعوت‌های مجاز برای هر کاربر. خالی = بدون محدودیت.' WHERE `key` = 'referral_limit';
UPDATE `settings` SET
`title_fa` = 'مقدار پاداش معرف',
`can_edit` = 1,
`type` = 'text',
`description` = 'مبلغ یا مقدار پاداش معرف برای نمایش در پیامک‌ها و متن‌های دعوت.'
WHERE `key` = 'referral_bonus_amount';
UPDATE `settings` SET `description` = 'روشن: تطبیق شماره کارت بانکی کاربر با سرویس احراز هویت جیبیت هنگام ثبت/ویرایش کارت.' WHERE `key` = 'jibit_verification';
UPDATE `settings` SET `description` = 'روشن: تطبیق کد ملی و موبایل در فرآیند ثبت‌نام از طریق سرویس جیبیت.' WHERE `key` = 'register_jibit_verify';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: منوی «کسب درآمد / دعوت دوستان» در اپ کاربر نمایش داده می‌شود.' WHERE `key` = 'has_page_earn_money';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: منوی هشدار قیمت در اپ کاربر نمایش داده می‌شود. خاموش: منو و صفحه مخفی است. فقط از دیپلوی قابل تغییر است.' WHERE `key` = 'has_page_price_trigger';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: زنگوله اعلان در اپ کاربر و منوی ثبت اعلان در ادمین فعال است. خاموش: مخفی است. فقط از دیپلوی قابل تغییر است.' WHERE `key` = 'has_page_notification';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'اعلان داخل اپ' WHERE `key` = 'has_page_notification';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'دسترسی ارسال قیمت به کانال',
-- `type` = 'switch',
-- `can_edit` = 0,
-- `description` = 'روشن: گروه «ارسال قیمت به کانال» در تنظیمات عادی پنل دیده می‌شود. خاموش: مخفی است (فقط از تنظیمات پیشرفته).'
-- WHERE `key` = 'price_channel_access';
-- محصول: اعلان داخل اپ پیش‌فرض روشن برای همه دیپلوی‌ها (can_edit=0؛ فقط از دیپلوی)
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'true' WHERE `key` = 'has_page_notification';
UPDATE `settings` SET `description` = 'شماره موبایل حساب API سرویس همکار قیمت. برای دریافت توکن و لیست محصولات.' WHERE `key` = 'montzar_mobile';
UPDATE `settings` SET `description` = 'رمز عبور حساب API سرویس همکار قیمت. محرمانه نگه دارید.' WHERE `key` = 'montzar_password';
UPDATE `settings` SET `description` = 'شناسه محصول آبشده در API همکار. باید با محصول مرجع در سرویس خارجی یکسان باشد.' WHERE `key` = 'montzar_product_id';
UPDATE `settings` SET `description` = 'کد حساب طرف‌حساب همکار در زرین؛ سند خرید/فروش پوشش‌شده روی همکار روی این حساب ثبت می‌شود.' WHERE `key` = 'montzar_account_zarin';
UPDATE `settings` SET `description` = 'کد حساب طرف‌حساب همکار در ته‌حساب؛ سند خرید/فروش پوشش‌شده روی همکار روی این حساب ثبت می‌شود.' WHERE `key` = 'montzar_account_tahesab';
UPDATE `settings` SET `description` = 'کد حساب طرف‌حساب همکار در پرگار؛ سند خرید/فروش پوشش‌شده روی همکار روی این حساب ثبت می‌شود.' WHERE `key` = 'montzar_account_pargar';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'آدرس پایه سرور API همکار (بدون اسلش انتهایی). مثال: https://example.com' WHERE `key` = 'montzar_base_url';
UPDATE `settings` SET `description` = 'توکن دسترسی API همکار. پس از ورود موفق توسط سیستم پر می‌شود؛ دستی ویرایش نکنید.' WHERE `key` = 'montzar_token';
UPDATE `settings` SET `description` = 'اختلاف قیمت دریافتی از همکار (ریال). توسط cron/همگام‌سازی پر می‌شود.' WHERE `key` = 'montzar_diff';
UPDATE `settings` SET `description` = 'آخرین قیمت لحظه‌ای دریافت‌شده از همکار (ریال). فقط خواندنی — توسط سیستم به‌روز می‌شود.' WHERE `key` = 'montzar_live_price';
UPDATE `settings` SET `description` = 'مظنه میانی دریافت‌شده از همکار. توسط سیستم به‌روز می‌شود.' WHERE `key` = 'montzar_mazaneh';
UPDATE `settings` SET `description` = 'مظنه واقعی سمت خرید از همکار. توسط سیستم به‌روز می‌شود.' WHERE `key` = 'montzar_truly_buy_mazaneh';
UPDATE `settings` SET `description` = 'مظنه واقعی سمت فروش از همکار. توسط سیستم به‌روز می‌شود.' WHERE `key` = 'montzar_truly_sell_mazaneh';
UPDATE `settings` SET `description` = 'روشن: امکان ثبت سفارش خرید از طریق قیمت همکار باز است (طبق وضعیت سرویس خارجی).' WHERE `key` = 'montzar_open_buy';
UPDATE `settings` SET `description` = 'روشن: امکان ثبت سفارش فروش از طریق قیمت همکار باز است.' WHERE `key` = 'montzar_open_sell';
UPDATE `settings` SET `description` = 'روشن: سرویس همکار در حال حاضر بسته/غیرفعال گزارش شده است.' WHERE `key` = 'montzar_closed';
UPDATE `settings` SET `description` = 'پاسخ JSON آخرین سفارش ارسالی به همکار. برای عیب‌یابی؛ توسط سیستم پر می‌شود.' WHERE `key` = 'montzar_order_response';
UPDATE `settings` SET `description` = 'لاگ JSON آخرین محصول دریافت‌شده از API همکار. توسط سیستم پر می‌شود.' WHERE `key` = 'montzar_last_product_log';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'آدرس کامل فایل APK اندروید (https). اگر خالی باشد لینک دانلود در اپ نمایش داده نمی‌شود.' WHERE `key` = 'apk_download_link';
UPDATE `settings` SET `description` = 'روشن: منوی «بنرها» در ادمین و اسلایدر صفحه اصلی اپ مشتری نمایش داده می‌شود. خاموش: مخفی است (محتوای بنر از همان منو مدیریت می‌شود).' WHERE `key` = 'banner_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: آیتم «مجوز ها» در منوی تنظیمات اپ خانگی (تم جدید) نمایش داده می‌شود. خاموش: مخفی است.' WHERE `key` = 'permision__enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'شناسه کلاینت برای API سفارش خارجی (هدر X-Client-Id). باید با مقدار تنظیم‌شده در سرویس مقصد یکسان باشد.' WHERE `key` = 'node_client_id';
UPDATE `settings` SET `description` = 'کلید مشترک امضای HMAC برای احراز درخواست‌های API سفارش خارجی. محرمانه نگه دارید.' WHERE `key` = 'node_shared_secret';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: API دریافت کیف پول و ثبت سفارش از سرویس فروشگاه خارجی فعال است. نیاز به node_client_id و node_shared_secret دارد.' WHERE `key` = 'external_order_api_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: اپ به SSE (sse_path) وصل می‌شود و last/list با payload می‌آید؛ خاموش: polling.' WHERE `key` = 'wss_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'مسیر GET لاراول برای استریم قیمت — پیش‌فرض /api/price/stream' WHERE `key` = 'sse_path';
UPDATE `settings` SET `description` = 'JSON لیست سایت‌های ری‌گیری — هر مورد: id، name، url. از منوی «سایت‌های ری‌گیری» ویرایش می‌شود.' WHERE `key` = 'tracking_systems';
UPDATE `settings` SET `description` = 'روشن: منوی «سایت‌های ری‌گیری» در ادمین و اپ مشتری نمایش داده می‌شود. خاموش: مخفی است.' WHERE `key` = 'tracking_systems_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'نام فروشگاه که در درگاه پرداخت و رسید بانکی به کاربر نمایش داده می‌شود.' WHERE `key` = 'montify_name';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: پس از واریز/برداشت، تراکنش به سامانه حسابداری fin همگام‌سازی می‌شود.' WHERE `key` = 'payping_fin_sync_enabled';
UPDATE `settings` SET `description` = 'آدرس کامل endpoint ثبت تراکنش در سامانه fin (POST).' WHERE `key` = 'payping_fin_url';
UPDATE `settings` SET `description` = 'توکن احراز هویت برای API سامانه fin.' WHERE `key` = 'payping_fin_token';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'شناسه مشتری/حساب در سامانه fin که تراکنش‌ها به نام آن ثبت می‌شوند.' WHERE `key` = 'payping_fin_customer_id';
UPDATE `settings` SET `description` = 'آدرس API شروع پرداخت (redirect کاربر به درگاه).' WHERE `key` = 'payping_start_url';
UPDATE `settings` SET `description` = 'آدرس API تأیید و نهایی‌سازی پرداخت پس از بازگشت از درگاه.' WHERE `key` = 'payping_verify_url';
UPDATE `settings` SET `description` = 'نام درگاه پرداخت فعال که به سرویس واسط درگاه ارسال می‌شود|sepal,' WHERE `key` = 'payping_gateway_name';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'لیست کدهای item درگاه (با کاما) برای چرخش بین چند merchant.' WHERE `key` = 'payping_gateway_items';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: مبلغ پرداخت به نزدیک‌ترین تومان گرد می‌شود. خاموش: مبلغ دقیق ریالی.' WHERE `key` = 'payping_round_toman';
UPDATE `settings` SET `description` = 'روشن: در صورت وجود برداشت ناموفق قبلی، تسویه جدید با احتیاط بیشتر انجام می‌شود.' WHERE `key` = 'payping_strict_failed_withdraw';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'آدرس IP یا hostname سرور نرم‌افزار ته‌حساب روی شبکه داخلی.' WHERE `key` = 'tahesab_host';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'شماره پورت اتصال به API ته‌حساب (معمولاً 8080 یا مقدار مستندات ته‌حساب).' WHERE `key` = 'tahesab_port';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'توکن/API Key اتصال به ته‌حساب. از پنل ته‌حساب دریافت می‌شود.' WHERE `key` = 'tahesab_token';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'نام دیتابیس یا شناسه پایگاه در ته‌حساب که سند به آن ارسال می‌شود.' WHERE `key` = 'tahesab_db';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'نام یا کد حساب بانکی در سند واریز/برداشت ته‌حساب.' WHERE `key` = 'tahesab_bank_account';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: واریز و برداشت مشتریان به‌صورت خودکار به ته‌حساب ارسال می‌شود.' WHERE `key` = 'send_to_tahesab';
UPDATE `settings` SET `description` = 'نوع پیام‌رسان برای دکمه پشتیبانی در اپ کاربر|bale,telegram,whatsapp,rubika,eitaa,soroush' WHERE `key` = 'support_messenger';
UPDATE `settings` SET `description` = 'شناسه تماس پشتیبانی: یوزرنیم (تلگرام)، شماره (واتساپ/بله) یا آیدی بسته به پیام‌رسان انتخاب‌شده.' WHERE `key` = 'support_messenger_id';
UPDATE `settings` SET `description` = @deposit_guide_desc WHERE `key` = 'support_messenger_text';
UPDATE `settings` SET `description` = @deposit_support_msg_desc WHERE `key` = 'deposit_support_message_text';
UPDATE `settings` SET `description` = @price_channel_message_desc WHERE `key` = 'price_channel_message_text';
UPDATE `settings` SET
`title_fa` = 'قالب متن پیام کانال',
`type` = 'longtext',
`can_edit` = 1,
`description` = @price_channel_message_desc
WHERE `key` = 'price_channel_message_text';
UPDATE `settings` SET `description` = @invite_link_desc WHERE `key` = 'invite_link_text';
UPDATE `settings` SET `description` = 'شماره تماس پشتیبانی. اگر پر باشد، در منوی شناور پشتیبانی آیتم‌های «تماس» و «پیام» اضافه می‌شود؛ متن پیام از «متن پیام به پشتیبانی (واریز)» خوانده می‌شود.' WHERE `key` = 'deposit_sms_support_number';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'توکن ربات تلگرام برای ارسال اعلان‌ها. از BotFather دریافت می‌شود. محرمانه.' WHERE `key` = 'telegram_bot_token';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'توکن ربات بله برای ارسال اعلان‌ها. محرمانه.' WHERE `key` = 'bale_bot_token';
UPDATE `settings` SET `description` = 'روشن: بعد از شارژ یا کسر کیف توسط ادمین، پیامک به مشتری و ادمین‌های دارای «ارسال پیامک» می‌رود. خاموش: هیچ‌کدام ارسال نمی‌شود.' WHERE `key` = 'charge_notif';
UPDATE `settings` SET `description` = 'روشن: بعد از خرید یا فروش موفق، پیامک خلاصه معامله به ادمین‌های دارای «ارسال پیامک» می‌رود. خاموش: ادمین پیامک معامله نمی‌گیرد.' WHERE `key` = 'sms_notif_order_admin';
UPDATE `settings` SET `description` = 'روشن: بعد از خرید یا فروش موفق، پیامک رسید (مقدار، مبلغ، موجودی) به مشتری می‌رود. خاموش: مشتری پیامک معامله نمی‌گیرد.' WHERE `key` = 'sms_notif_order_customer';
UPDATE `settings` SET `description` = 'روشن: وقتی مشتری درخواست برداشت ریالی می‌دهد، پیامک به ادمین‌های دارای «ارسال پیامک» می‌رود. خاموش: اعلان برداشت به ادمین نمی‌رود.' WHERE `key` = 'sms_notif_withdraw_admin';
UPDATE `settings` SET `description` = 'روشن: رمز یکبارمصرف برداشت برای مشتری پیامک می‌شود. خاموش: رمز پیامک نمی‌شود (برداشت با OTP عملاً کار نمی‌کند). خاموش کردن توصیه نمی‌شود.' WHERE `key` = 'sms_notif_withdraw_otp';
UPDATE `settings` SET `description` = 'روشن: رمز یکبارمصرف ورود برای کاربر/مشتری پیامک می‌شود. خاموش: ورود با OTP ممکن نیست. خاموش کردن توصیه نمی‌شود.' WHERE `key` = 'sms_notif_login_otp';
UPDATE `settings` SET `description` = 'روشن: بعد از شارژ موفق کیف از درگاه پرداخت، پیامک به ادمین‌های دارای «ارسال پیامک» می‌رود. خاموش: اعلان شارژ درگاه نمی‌رود.' WHERE `key` = 'sms_notif_gateway_charge_admin';
UPDATE `settings` SET `description` = 'روشن: بعد از ثبت‌نام، پیامک خوش‌آمد (نام کاربری و لینک ورود) به مشتری می‌رود. خاموش: پیامک خوش‌آمد ارسال نمی‌شود.' WHERE `key` = 'sms_notif_register_customer';
UPDATE `settings` SET `description` = 'روشن: وقتی کسی با کد معرف ثبت‌نام می‌کند و پیامک به معرف خاموش است، اعلان ثبت‌نام به ادمین می‌رود. خاموش: این اعلان ادمین نمی‌رود.' WHERE `key` = 'sms_notif_register_admin';
UPDATE `settings` SET `description` = 'روشن: نتیجه احراز هویت جیبیت در ثبت‌نام برای ادمین‌های دارای «ارسال پیامک» پیامک می‌شود. خاموش: اعلان جیبیت نمی‌رود.' WHERE `key` = 'sms_notif_jibit_admin';
UPDATE `settings` SET `description` = 'روشن: وقتی مشتری کارت بانکی جدید ثبت می‌کند یا احراز کارت ناموفق است، پیامک به ادمین می‌رود. خاموش: اعلان کارت به ادمین نمی‌رود.' WHERE `key` = 'sms_notif_bank_card_admin';
UPDATE `settings` SET `description` = 'روشن: بعد از تایید کارت بانکی توسط ادمین، پیامک تایید به مشتری می‌رود. خاموش: مشتری از تایید کارت پیامک نمی‌گیرد.' WHERE `key` = 'sms_notif_bank_card_customer';
UPDATE `settings` SET `description` = 'روشن: برداشت از قلک (ریالی یا طلایی) برای ادمین‌های دارای «ارسال پیامک» پیامک می‌شود. خاموش: اعلان برداشت قلک به ادمین نمی‌رود.' WHERE `key` = 'sms_notif_fund_withdraw_admin';
UPDATE `settings` SET `description` = 'روشن: بعد از برداشت از قلک، پیامک رسید به مشتری می‌رود. خاموش: مشتری پیامک برداشت قلک نمی‌گیرد.' WHERE `key` = 'sms_notif_fund_withdraw_customer';
UPDATE `settings` SET `description` = 'روشن: وقتی هشدار قیمت مشتری (اقدام=پیامک) فعال می‌شود، پیامک به مشتری می‌رود. خاموش: هشدار قیمت پیامک نمی‌فرستد.' WHERE `key` = 'sms_notif_price_trigger';
UPDATE `settings` SET `description` = 'روشن: وقتی اعتبار کیف پول پنل پیامک صفر یا منفی شود، هشدار به سوپرادمین و ادمین‌های دارای «ارسال پیامک» می‌رود. خاموش: این هشدار نمی‌رود.' WHERE `key` = 'sms_notif_wallet_alert';
UPDATE `settings` SET `description` = 'روشن: وقتی مشتری اولین پیام خوانده‌نشده را در چت پشتیبانی می‌فرستد و ادمین همان اتاق را باز و visible ندارد، پیامک به ادمین‌های دارای «ارسال پیامک» می‌رود. خاموش: اعلان پیامک چت نمی‌رود.' WHERE `key` = 'sms_notif_support_admin';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'رمز مشترک بین لاراول و سرور چت برای اعلان پیام پشتیبانی. فقط سرور؛ در صورت خالی بودن به‌صورت خودکار ساخته می‌شود.' WHERE `key` = 'chat_webhook_secret';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'اگر APP_URL فرانت است (مثلاً https://niazitala.ir) اینجا آدرس لاراول را بگذار (مثلاً https://niazitala.ir/server). خالی = همان APP_URL.' WHERE `key` = 'chat_webhook_base_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'آدرس پایه وب‌هوک چت' WHERE `key` = 'chat_webhook_base_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: در لیست مشتریان دکمه ارسال پیامک تکی نمایش داده می‌شود و ادمین می‌تواند برای هر مشتری متن دلخواه بفرستد. خاموش: دکمه مخفی است. فقط از صفحه دیپلوی تغییر می‌کند.' WHERE `key` = 'customer_direct_sms';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'پیامک تکی به مشتری از لیست' WHERE `key` = 'customer_direct_sms';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: سرویس احراز هویت جیبیت (تطبیق کد ملی/موبایل و کارت بانکی) فعال است. خاموش: هیچ فراخوانی به جیبیت انجام نمی‌شود و احراز هویت خودکار کار نمی‌کند. فقط از صفحه دیپلوی قابل تغییر است.' WHERE `key` = 'jibit_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'احراز هویت جیبیت' WHERE `key` = 'jibit_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'سفارش شرطی' WHERE `key` = 'enable_conditional_order';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'قلک محصول' WHERE `key` = 'enable_product_funds';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: ساخت و مدیریت قلک per-product در اپ مشتری فعال است (یک محصول در هر قلک؛ انتقال بدون سند حسابداری). خاموش: منو و API ساخت قلک جدید در دسترس نیست. فقط از دیپلوی قابل تغییر است.' WHERE `key` = 'enable_product_funds';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'کارت هدیه' WHERE `key` = 'has_page_gift_card';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: منوی «ثبت کارت هدیه» و صفحه ثبت کد در اپ کاربر فعال است. خاموش: منو و صفحه مخفی است و API استفاده از کد هدیه در دسترس نیست. فقط از دیپلوی قابل تغییر است.' WHERE `key` = 'has_page_gift_card';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'سود چندسطحی معرف' WHERE `key` = 'enable_customer_level_profit';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: در لیست مشتریان آیکون تنظیم درصد سود هر سطح زیرمجموعه فعال است و پس از سفارش، سهم کارمزد طبق درصدهای هر معرف به کیف طلا واریز می‌شود. خاموش: آیکون و واریز سود چندسطحی غیرفعال است. فقط از دیپلوی قابل تغییر است.' WHERE `key` = 'enable_customer_level_profit';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: دکمه ارسال پیامک گروهی در پنل ادمین فعال است (ارسال ۱۰تایی). خاموش: ارسال پیامک گروهی غیرفعال است. فقط از تنظیمات پیشرفته.' WHERE `key` = 'group_sms';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'روشن: پنل پیامک و کیف پول billing فعال است. خاموش: پیامک‌ها مثل قبل ارسال می‌شوند بدون billing.' WHERE `key` = 'sms_panel';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'محصولاتی که موجودی‌شان از کیف طلای اصلی خوانده می‌شود. چند محصول با کاما. پیش‌فرض: 13' WHERE `key` = 'main_wallet_products';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = '13' WHERE `key` = 'main_wallet_products' AND TRIM(COALESCE(`value`, '')) = '';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `can_edit` = 0 WHERE `key` = 'main_wallet_products';
UPDATE `settings` SET
`title_fa` = 'الزام صفر بودن کیف اصلی قبل از خرید محصول دیگر',
`type` = 'switch',
`can_edit` = 1,
`description` = 'روشن: اگر مانده طلای کیف اصلی صفر یا زیر صفر باشد (بدهی)، مشتری ابتدا باید آبشده/مانده کیف اصلی را صفر کند و بعد می‌تواند محصول دیگر بخرد. خاموش: بدون این محدودیت. معامله خودِ محصولات کیف اصلی همیشه مجاز است.'
WHERE `key` = 'require_zero_main_gold_before_other_buy';
UPDATE `settings` SET `title_fa` = 'الزام صفر بودن کیف اصلی قبل از خرید محصول دیگر' WHERE `key` = 'require_zero_main_gold_before_other_buy';
UPDATE `settings` SET `description` = 'روشن: API محاسبه سود طلا فعال است. در اکثر نصب‌ها خاموش می‌ماند.' WHERE `key` = 'profit_gold_api_enabled';
-- ---------------------------------------------------------------------------
-- ensure — کلیدهای longtext (INSERT نهایی + تثبیت type بعد از batchهای type=text)
-- ---------------------------------------------------------------------------
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'invite_link_text', @invite_link_default_text, 'متن دعوتنامه اشتراک‌گذاری', 1, 1, @invite_link_desc, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'invite_link_text' LIMIT 1);
UPDATE `settings` SET
`title_fa` = 'متن دعوتنامه اشتراک‌گذاری',
`type` = 'longtext',
`description` = @invite_link_desc
WHERE `key` = 'invite_link_text';
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'deposit_support_message_text', 'شماره حساب', 'متن پیام به پشتیبانی (واریز)', 1, 1, @deposit_support_msg_desc, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_support_message_text' LIMIT 1);
UPDATE `settings` SET
`title_fa` = 'متن پیام به پشتیبانی (واریز)',
`type` = 'longtext',
`can_edit` = 1,
`description` = @deposit_support_msg_desc
WHERE `key` = 'deposit_support_message_text';
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'price_channel_message_text', @price_channel_default_text, 'قالب متن پیام کانال', 1, 1, @price_channel_message_desc, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_channel_message_text' LIMIT 1);
UPDATE `settings` SET
`title_fa` = 'قالب متن پیام کانال',
`type` = 'longtext',
`can_edit` = 1,
`description` = @price_channel_message_desc
WHERE `key` = 'price_channel_message_text';
UPDATE `settings` SET `type` = 'longtext'
WHERE `key` IN (
'text_rule', 'text_about', 'about_software', 'support_messenger_text', 'invite_link_text',
'deposit_support_message_text', 'price_channel_message_text',
'montzar_order_response', 'montzar_last_product_log'
);
-- ---------------------------------------------------------------------------
-- title_fa — استاندارد مشترک (override؛ value / is_active دست نمی‌خورند)
-- ---------------------------------------------------------------------------
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'آدرس پنل ادمین' WHERE `key` = 'admin_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'لینک دانلود اپ اندروید' WHERE `key` = 'apk_download_link';
UPDATE `settings` SET `title_fa` = 'آدرس اپ (کاربر)' WHERE `key` = 'app_url';
UPDATE `settings` SET `title_fa` = 'فعال‌سازی خودکار پس از ثبت‌نام' WHERE `key` = 'auto_active_customer';
UPDATE `settings` SET `title_fa` = 'آدرس پایه' WHERE `key` = 'bace_url';
UPDATE `settings` SET `title_fa` = 'حذف مشتری از تراز' WHERE `key` = 'balance_report_exclude_customer_id';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'توکن بات بله' WHERE `key` = 'bale_bot_token';
UPDATE `settings` SET `title_fa` = 'نمایش بنرها' WHERE `key` = 'banner_enabled';
UPDATE `settings` SET `title_fa` = 'سود خرید نمایش' WHERE `key` = 'buy_fee';
UPDATE `settings` SET `title_fa` = 'پیامک شارژ ادمین' WHERE `key` = 'charge_notif';
UPDATE `settings` SET `title_fa` = 'پیامک خرید/فروش به ادمین' WHERE `key` = 'sms_notif_order_admin';
UPDATE `settings` SET `title_fa` = 'پیامک خرید/فروش به مشتری' WHERE `key` = 'sms_notif_order_customer';
UPDATE `settings` SET `title_fa` = 'پیامک درخواست برداشت به ادمین' WHERE `key` = 'sms_notif_withdraw_admin';
UPDATE `settings` SET `title_fa` = 'پیامک رمز برداشت' WHERE `key` = 'sms_notif_withdraw_otp';
UPDATE `settings` SET `title_fa` = 'پیامک رمز ورود' WHERE `key` = 'sms_notif_login_otp';
UPDATE `settings` SET `title_fa` = 'پیامک شارژ درگاه به ادمین' WHERE `key` = 'sms_notif_gateway_charge_admin';
UPDATE `settings` SET `title_fa` = 'پیامک خوش‌آمد ثبت‌نام' WHERE `key` = 'sms_notif_register_customer';
UPDATE `settings` SET `title_fa` = 'پیامک ثبت‌نام به ادمین' WHERE `key` = 'sms_notif_register_admin';
UPDATE `settings` SET `title_fa` = 'پیامک احراز هویت به ادمین' WHERE `key` = 'sms_notif_jibit_admin';
UPDATE `settings` SET `title_fa` = 'پیامک کارت بانکی به ادمین' WHERE `key` = 'sms_notif_bank_card_admin';
UPDATE `settings` SET `title_fa` = 'پیامک تایید کارت به مشتری' WHERE `key` = 'sms_notif_bank_card_customer';
UPDATE `settings` SET `title_fa` = 'پیامک برداشت قلک به ادمین' WHERE `key` = 'sms_notif_fund_withdraw_admin';
UPDATE `settings` SET `title_fa` = 'پیامک برداشت قلک به مشتری' WHERE `key` = 'sms_notif_fund_withdraw_customer';
UPDATE `settings` SET `title_fa` = 'پیامک هشدار قیمت' WHERE `key` = 'sms_notif_price_trigger';
UPDATE `settings` SET `title_fa` = 'پیامک هشدار اعتبار پنل پیامک' WHERE `key` = 'sms_notif_wallet_alert';
UPDATE `settings` SET `title_fa` = 'پیامک پیام پشتیبانی به ادمین' WHERE `key` = 'sms_notif_support_admin';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'رمز وب‌هوک چت' WHERE `key` = 'chat_webhook_secret';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'UUID نمودار Zaarbox' WHERE `key` = 'chart_id';
UPDATE `settings` SET `title_fa` = 'نمودار از داده خود سایت' WHERE `key` = 'chart_use_local_data';
UPDATE `settings` SET `title_fa` = 'بستن خودکار خارج از ساعت کاری' WHERE `key` = 'close_price';
UPDATE `settings` SET `title_fa` = 'رنگ اصلی' WHERE `key` = 'color_primary';
UPDATE `settings` SET `title_fa` = 'رنگ ثانویه' WHERE `key` = 'color_secondary';
UPDATE `settings` SET `title_fa` = 'شماره تماس پشتیبانی' WHERE `key` = 'deposit_sms_support_number';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'کمترین قیمت امروز' WHERE `key` = 'down_price';
UPDATE `settings` SET `title_fa` = 'ساعت پایان' WHERE `key` = 'endDay';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'فعال‌سازی API سفارش خارجی (get_wallet / order)' WHERE `key` = 'external_order_api_enabled';
UPDATE `settings` SET `title_fa` = 'کارمزد (قدیمی — درصد)' WHERE `key` = 'fee';
UPDATE `settings` SET `title_fa` = 'تعداد سفارش اول بدون کارمزد' WHERE `key` = 'fee_free';
UPDATE `settings` SET `title_fa` = 'درصد کارمزد سفارش' WHERE `key` = 'fee_service_charge_percentage';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'اعمال مبلغ دقیق در معامله مشتری' WHERE `key` = 'fee_deduct_from_gold';
UPDATE `settings` SET `title_fa` = 'پاداش معرف‌شونده' WHERE `key` = 'gift_for_referral';
UPDATE `settings` SET `title_fa` = 'پاداش معرف' WHERE `key` = 'gift_for_referrer';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'پیامک گروهی' WHERE `key` = 'group_sms';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'قیمت ویژه مشتری',
-- `type` = 'switch',
-- `can_edit` = 0,
-- `description` = 'روشن: زیرمنوی قیمت ویژه در مشتریان و اعمال سود خرید/فروش پکیج روی مظنه و سفارش برای کاربران انتخاب‌شده. خاموش: غیرفعال. فقط از دیپلوی قابل تغییر است.'
-- WHERE `key` = 'customer_special_pricing';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'پنل پیامک (کیف پول)' WHERE `key` = 'sms_panel';
UPDATE `settings` SET
`title_fa` = 'چت پشتیبانی',
`type` = 'switch',
`can_edit` = 1,
`description` = 'روشن: چت پشتیبانی در اپ مشتری نمایش داده می‌شود (فقط وقتی show_to_users_chat هم روشن باشد). خاموش: دکمه و صفحه چت برای کاربر مخفی است.'
WHERE `key` = 'has_chat';
UPDATE `settings` SET
`title_fa` = 'لندینگ وبسایت',
`type` = 'switch',
`can_edit` = 0,
`description` = 'روشن: منوی تنظیمات وبسایت در ادمین و تنظیمات لندینگ برای اپ کاربر فعال است. خاموش: منو مخفی است.'
WHERE `key` = 'has_landing';
UPDATE `settings` SET `title_fa` = 'تنظیمات کلی سایت', `type` = 'longtext', `can_edit` = 1,
`description` = 'محتوای تنظیمات کلی لندینگ وبسایت. در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_site';
UPDATE `settings` SET `title_fa` = 'هدر و ناوبری', `type` = 'longtext', `can_edit` = 1,
`description` = 'محتوای هدر و ناوبری لندینگ. در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_header';
UPDATE `settings` SET `title_fa` = 'هیرو', `type` = 'longtext', `can_edit` = 1,
`description` = 'محتوای سکشن هیرو لندینگ. در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_hero';
UPDATE `settings` SET `title_fa` = 'لیبل‌های قیمت لحظه‌ای', `type` = 'longtext', `can_edit` = 1,
`description` = 'لیبل‌ها و متن قیمت لحظه‌ای لندینگ. در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_live_price';
UPDATE `settings` SET `title_fa` = 'عنوان ماشین حساب', `type` = 'longtext', `can_edit` = 1,
`description` = 'عنوان و متن ماشین حساب لندینگ. در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_calculator';
UPDATE `settings` SET `title_fa` = 'امکانات (چرا نیازی طلا)', `type` = 'longtext', `can_edit` = 1,
`description` = 'متن امکانات لندینگ (چرا نیازی طلا). در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_feature';
UPDATE `settings` SET `title_fa` = 'مراحل شروع', `type` = 'longtext', `can_edit` = 1,
`description` = 'متن مراحل شروع لندینگ. در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_steps';
UPDATE `settings` SET `title_fa` = 'اعتماد و مجوزها', `type` = 'longtext', `can_edit` = 1,
`description` = 'متن اعتماد و مجوزها (بدون اینماد). در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_trust';
UPDATE `settings` SET `title_fa` = 'سوالات متداول', `type` = 'longtext', `can_edit` = 1,
`description` = 'سوالات متداول لندینگ. در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_faq';
UPDATE `settings` SET `title_fa` = 'سکشن پایین صفحه لندینگ برای معرفی', `type` = 'longtext', `can_edit` = 1,
`description` = 'متن دعوت به اقدام پایین صفحه لندینگ. در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_buttom_cta';
UPDATE `settings` SET `title_fa` = 'فوتر', `type` = 'longtext', `can_edit` = 1,
`description` = 'محتوای فوتر لندینگ. در اپ کاربر با get_settings در دسترس است.'
WHERE `key` = 'landing_footer';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'نمایش چت به کاربران',
-- `type` = 'switch',
-- `description` = 'روشن: قابلیت چت پشتیبانی برای این دیپلوی فعال است (منوی ادمین و پیش‌نیاز نمایش به کاربر). خاموش: چت در ادمین و اپ کاربر مخفی است و سوییچ «چت پشتیبانی» (has_chat) از تنظیمات عادی هم برداشته می‌شود.',
-- `can_edit` = 0
-- WHERE `key` = 'show_to_users_chat';
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `title_fa` = 'API چت', `type` = 'text', `can_edit` = 0
-- WHERE `key` = 'chat_api';
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `title_fa` = 'کلید API چت', `type` = 'text', `can_edit` = 0
-- WHERE `key` = 'chat_api_key';
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `title_fa` = 'آدرس آپلود فایل چت', `type` = 'text', `can_edit` = 0
-- WHERE `key` = 'chat_upload_url';
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `title_fa` = 'آدرس دانلود فایل چت', `type` = 'text', `can_edit` = 0
-- WHERE `key` = 'chat_download_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'صفحه کسب درآمد' WHERE `key` = 'has_page_earn_money';
UPDATE `settings` SET `title_fa` = 'صفحه صندوق' WHERE `key` = 'has_page_fund';
UPDATE `settings` SET `title_fa` = 'صفحه مجوزها' WHERE `key` = 'has_page_permission';
UPDATE `settings` SET `title_fa` = 'صفحه طلای فیزیکی' WHERE `key` = 'has_page_physical_gold';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'هشدار قیمت' WHERE `key` = 'has_page_price_trigger';
UPDATE `settings` SET `title_fa` = 'متن دعوتنامه اشتراک‌گذاری' WHERE `key` = 'invite_link_text';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'حالت فروشگاهی' WHERE `key` = 'is_store';
UPDATE `settings` SET `title_fa` = 'تأیید کارت بانکی با جیبیت' WHERE `key` = 'jibit_verification';
UPDATE `settings` SET `title_fa` = 'کلید داخلی اپ' WHERE `key` = 'key';
UPDATE `settings` SET `title_fa` = 'خط اول هیرو لاگین' WHERE `key` = 'login_hero_eyebrow';
UPDATE `settings` SET `title_fa` = 'عنوان هیرو لاگین' WHERE `key` = 'login_hero_title';
UPDATE `settings` SET `title_fa` = 'ویژگی ۱ هیرو لاگین' WHERE `key` = 'login_hero_feature_1';
UPDATE `settings` SET `title_fa` = 'ویژگی ۲ هیرو لاگین' WHERE `key` = 'login_hero_feature_2';
UPDATE `settings` SET `title_fa` = 'ویژگی ۳ هیرو لاگین' WHERE `key` = 'login_hero_feature_3';
UPDATE `settings` SET `title_fa` = 'ویژگی ۴ هیرو لاگین' WHERE `key` = 'login_hero_feature_4';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'لوگوی صفحه ورود' WHERE `key` = 'logo_login';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'لوگوی ثبت‌نام' WHERE `key` = 'logo_register';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'نام فلز اصلی (ادمین)' WHERE `key` = 'main_metal';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'محصول آبشده' WHERE `key` = 'main_product';
UPDATE `settings` SET `title_fa` = 'قیمت از محصول (legacy)' WHERE `key` = 'main_product_price';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'محصولات متصل به کیف اصلی' WHERE `key` = 'main_wallet_products';
UPDATE `settings` SET `title_fa` = 'الزام صفر بودن کیف اصلی قبل از خرید محصول دیگر' WHERE `key` = 'require_zero_main_gold_before_other_buy';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'عنوان فلز در UI' WHERE `key` = 'metal_type';
UPDATE `settings` SET `title_fa` = 'حداقل اولین خرید (ریال)' WHERE `key` = 'min_first_buy';
UPDATE `settings` SET `title_fa` = 'حداقل برداشت (ریال)' WHERE `key` = 'min_withdraw';
UPDATE `settings` SET `title_fa` = 'حداقل واریز کیف پول (ریال)' WHERE `key` = 'min_deposit';
UPDATE `settings` SET `can_edit` = 1 WHERE `key` = 'min_deposit';
UPDATE `settings` SET `title_fa` = 'حداقل فروش' WHERE `key` = 'minimum_sell';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'نام فروشگاه در درگاه' WHERE `key` = 'montify_name';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'آدرس سرور همکار' WHERE `key` = 'montzar_base_url';
UPDATE `settings` SET `title_fa` = 'بسته بودن همکار' WHERE `key` = 'montzar_closed';
UPDATE `settings` SET `title_fa` = 'اختلاف قیمت همکار' WHERE `key` = 'montzar_diff';
UPDATE `settings` SET `title_fa` = 'لاگ محصول همکار' WHERE `key` = 'montzar_last_product_log';
UPDATE `settings` SET `title_fa` = 'قیمت لحظه‌ای همکار' WHERE `key` = 'montzar_live_price';
UPDATE `settings` SET `title_fa` = 'مظنه همکار' WHERE `key` = 'montzar_mazaneh';
UPDATE `settings` SET `title_fa` = 'موبایل API همکار' WHERE `key` = 'montzar_mobile';
UPDATE `settings` SET `title_fa` = 'باز بودن خرید همکار' WHERE `key` = 'montzar_open_buy';
UPDATE `settings` SET `title_fa` = 'باز بودن فروش همکار' WHERE `key` = 'montzar_open_sell';
UPDATE `settings` SET `title_fa` = 'پاسخ سفارش همکار' WHERE `key` = 'montzar_order_response';
UPDATE `settings` SET `title_fa` = 'رمز API همکار' WHERE `key` = 'montzar_password';
UPDATE `settings` SET `title_fa` = 'کد محصول همکار' WHERE `key` = 'montzar_product_id';
UPDATE `settings` SET `title_fa` = 'کد حساب همکار در زرین' WHERE `key` = 'montzar_account_zarin';
UPDATE `settings` SET `title_fa` = 'کد حساب همکار در ته‌حساب' WHERE `key` = 'montzar_account_tahesab';
UPDATE `settings` SET `title_fa` = 'کد حساب همکار در پرگار' WHERE `key` = 'montzar_account_pargar';
UPDATE `settings` SET `title_fa` = 'توکن همکار (خودکار)' WHERE `key` = 'montzar_token';
UPDATE `settings` SET `title_fa` = 'مظنه خرید همکار' WHERE `key` = 'montzar_truly_buy_mazaneh';
UPDATE `settings` SET `title_fa` = 'مظنه فروش همکار' WHERE `key` = 'montzar_truly_sell_mazaneh';
UPDATE `settings` SET `title_fa` = 'نام انگلیسی اپ' WHERE `key` = 'name_en';
UPDATE `settings` SET `title_fa` = 'نام فارسی اپ' WHERE `key` = 'name_fa';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'شناسه کلاینت API خارجی (X-Client-Id)' WHERE `key` = 'node_client_id';
UPDATE `settings` SET `title_fa` = 'کلید امضای HMAC API خارجی' WHERE `key` = 'node_shared_secret';
UPDATE `settings` SET `title_fa` = 'ثبت‌نام باز' WHERE `key` = 'open_register';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'customer_id fin' WHERE `key` = 'payping_fin_customer_id';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'همگام‌سازی fin' WHERE `key` = 'payping_fin_sync_enabled';
UPDATE `settings` SET `title_fa` = 'توکن fin' WHERE `key` = 'payping_fin_token';
UPDATE `settings` SET `title_fa` = 'URL fin' WHERE `key` = 'payping_fin_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'لیست item (چرخشی)' WHERE `key` = 'payping_gateway_items';
UPDATE `settings` SET `title_fa` = 'نام gateway درگاه' WHERE `key` = 'payping_gateway_name';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'گرد کردن مبلغ به تومان' WHERE `key` = 'payping_round_toman';
UPDATE `settings` SET `title_fa` = 'آدرس شروع درگاه' WHERE `key` = 'payping_start_url';
UPDATE `settings` SET `title_fa` = 'برداشت ناموفق سخت‌گیرانه' WHERE `key` = 'payping_strict_failed_withdraw';
UPDATE `settings` SET `title_fa` = 'آدرس تأیید درگاه' WHERE `key` = 'payping_verify_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'تاریخ min/max روز' WHERE `key` = 'price_extreme_date';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'منبع قیمت' WHERE `key` = 'price_provider';
UPDATE `settings` SET `title_fa` = 'API سود طلا' WHERE `key` = 'profit_gold_api_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'مقدار پاداش معرف' WHERE `key` = 'referral_bonus_amount';
UPDATE `settings` SET `title_fa` = 'تعداد معرف برای هدیه' WHERE `key` = 'referral_count_for_gift';
UPDATE `settings` SET `title_fa` = 'کد معرف اجباری' WHERE `key` = 'referral_id';
UPDATE `settings` SET `title_fa` = 'نمایش فیلد کد معرف' WHERE `key` = 'referral_show';
UPDATE `settings` SET `title_fa` = 'محدودیت دعوت' WHERE `key` = 'referral_limit';
UPDATE `settings` SET `title_fa` = 'تأیید کدملی/موبایل در ثبت‌نام' WHERE `key` = 'register_jibit_verify';
UPDATE `settings` SET `title_fa` = 'پیام پاداش در SMS ثبت‌نام' WHERE `key` = 'register_referral_bonus_message';
UPDATE `settings` SET `title_fa` = 'SMS به معرف هنگام ثبت‌نام' WHERE `key` = 'register_referral_sms_to_referrer';
UPDATE `settings` SET `title_fa` = 'پاداش معرف پس از اولین سفارش' WHERE `key` = 'referral_gift_on_first_order';
UPDATE `settings` SET `title_fa` = 'خرید پاداش معرفی از همکار' WHERE `key` = 'referral_gift_buy_from_montzar';
UPDATE `settings` SET `title_fa` = 'سود فروش نمایش' WHERE `key` = 'sell_fee';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'ارسال به ته‌حساب' WHERE `key` = 'send_to_tahesab';
UPDATE `settings` SET `title_fa` = 'آدرس API سرور' WHERE `key` = 'server_url';
UPDATE `settings` SET `title_fa` = 'نمایش آخرین قیمت ذخیره‌شده' WHERE `key` = 'show_last_price';
UPDATE `settings` SET `title_fa` = 'نمایش قیمت انس طلا' WHERE `key` = 'show_gold_ounce_price';
UPDATE `settings` SET `title_fa` = 'نمایش قیمت صفحه اصلی خارج از ساعت کاری' WHERE `key` = 'show_home_price_when_closed';
UPDATE `settings` SET `title_fa` = 'نمایش جزئیات اطلاعات محصول' WHERE `key` = 'show_product_details';
UPDATE `settings` SET `title_fa` = 'دکمه لینک خارجی در خرید/فروش' WHERE `key` = 'products_site_link_enabled';
UPDATE `settings` SET `title_fa` = 'آدرس لینک دکمه خرید/فروش' WHERE `key` = 'products_site_link_url';
UPDATE `settings` SET `title_fa` = 'متن دکمه لینک خرید/فروش' WHERE `key` = 'products_site_link_text';
UPDATE `settings` SET `title_fa` = 'نمایش خرید/فروش باز روی کارت محصول' WHERE `key` = 'show_product_trade_status';
UPDATE `settings` SET `title_fa` = 'نمایش دسته و تحویل و مقدار روی کارت محصول' WHERE `key` = 'show_product_card_meta';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'مسیر SSE قیمت' WHERE `key` = 'sse_path';
UPDATE `settings` SET `title_fa` = 'ساعت شروع' WHERE `key` = 'startDay';
UPDATE `settings` SET `title_fa` = 'وضعیت فروشگاه' WHERE `key` = 'store_status';
UPDATE `settings` SET `title_fa` = 'پیام‌رسان پشتیبانی' WHERE `key` = 'support_messenger';
UPDATE `settings` SET `title_fa` = 'شناسه پشتیبانی پیام‌رسان' WHERE `key` = 'support_messenger_id';
UPDATE `settings` SET `title_fa` = 'متن راهنمای واریز' WHERE `key` = 'support_messenger_text';
UPDATE `settings` SET `title_fa` = 'متن پیام به پشتیبانی (واریز)' WHERE `key` = 'deposit_support_message_text';
UPDATE `settings` SET `title_fa` = 'نام صاحب حساب واریز' WHERE `key` = 'deposit_account_holder';
UPDATE `settings` SET `title_fa` = 'شماره کارت واریز' WHERE `key` = 'deposit_card_number';
UPDATE `settings` SET `title_fa` = 'شماره حساب واریز' WHERE `key` = 'deposit_account_number';
UPDATE `settings` SET `title_fa` = 'شبا واریز' WHERE `key` = 'deposit_sheba';
UPDATE `settings` SET `title_fa` = 'شماره کارت شارژ پیامک' WHERE `key` = 'sms_charge_card_number';
UPDATE `settings` SET `title_fa` = 'شماره شبا شارژ پیامک' WHERE `key` = 'sms_charge_sheba';
UPDATE `settings` SET `title_fa` = 'نام صاحب حساب شارژ پیامک' WHERE `key` = 'sms_charge_account_holder';
UPDATE `settings` SET `title_fa` = 'متن راهنمای شارژ پیامک' WHERE `key` = 'sms_charge_note';
UPDATE `settings` SET `title_fa` = 'فعال‌سازی کارت به کارت' WHERE `key` = 'deposit_method_card_to_card';
UPDATE `settings` SET `title_fa` = 'فعال‌سازی درگاه پرداخت' WHERE `key` = 'deposit_method_gateway';
UPDATE `settings` SET `title_fa` = 'فعال‌سازی شناسه واریز' WHERE `key` = 'deposit_method_identified';
UPDATE `settings` SET `title_fa` = 'فعال‌سازی شبکه شتابی' WHERE `key` = 'deposit_method_shetab';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'حساب بانکی ته‌حساب' WHERE `key` = 'tahesab_bank_account';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'نام دیتابیس ته‌حساب' WHERE `key` = 'tahesab_db';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'آدرس IP سرور ته‌حساب' WHERE `key` = 'tahesab_host';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'پورت سرور ته‌حساب' WHERE `key` = 'tahesab_port';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'توکن ته‌حساب' WHERE `key` = 'tahesab_token';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'توکن بات تلگرام' WHERE `key` = 'telegram_bot_token';
UPDATE `settings` SET `title_fa` = 'متن درباره ما' WHERE `key` = 'text_about';
UPDATE `settings` SET `title_fa` = 'متن درباره نرم‌افزار' WHERE `key` = 'about_software';
UPDATE `settings` SET `title_fa` = 'آدرس اینماد' WHERE `key` = 'enamad_url';
UPDATE `settings` SET `title_fa` = 'لوگوی اینماد' WHERE `key` = 'enamad_logo';
UPDATE `settings` SET `type` = 'text', `can_edit` = 1 WHERE `key` IN ('enamad_url', 'enamad_logo');
UPDATE `settings` SET `title_fa` = 'متن قوانین' WHERE `key` = 'text_rule';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'عنوان favicon' WHERE `key` = 'title_fav';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'عنوان PWA' WHERE `key` = 'title_pwa';
UPDATE `settings` SET `title_fa` = 'واحد وزن دارایی و معاملات' WHERE `key` = 'unit';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'بیشترین قیمت امروز' WHERE `key` = 'up_price';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'قیمت لحظه‌ای (SSE)' WHERE `key` = 'wss_enabled';
UPDATE `settings` SET `title_fa` = 'سایت‌های ری‌گیری' WHERE `key` = 'tracking_systems';
UPDATE `settings` SET `title_fa` = 'نمایش سایت‌های ری‌گیری' WHERE `key` = 'tracking_systems_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'نمایش منوی مجوزها' WHERE `key` = 'permision__enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'آدرس API تابلو Zaarbox' WHERE `key` = 'zaarbox_api_url';
UPDATE `settings` SET `title_fa` = 'شناسه ردیف تابلو (key یا UUID)' WHERE `key` = 'zaarbox_price_key';
-- ---------------------------------------------------------------------------
-- can_edit — استاندارد مشترک (override؛ value دست نمی‌خورد)
-- ---------------------------------------------------------------------------
-- غیرقابل ویرایش در پنل (can_edit = 0)
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN (
-- 'admin_url', 'apk_download_link', 'app_url',
-- 'bale_bot_token',
-- 'chart_id', 'chart_use_local_data',
-- 'external_order_api_enabled',
-- 'external_payment_enabled',
-- 'external_payment_base_url',
-- 'external_payment_client_id',
-- 'external_payment_client_secret',
-- 'external_payment_gateway',
-- 'external_payment_return_url',
-- 'external_payment_webhook_url',
-- 'wallet_payment_provider',
-- 'fee_deduct_from_gold',
-- 'group_sms',
-- 'customer_special_pricing',
-- 'customer_direct_sms',
-- 'enable_conditional_order',
-- 'enable_product_funds',
-- 'has_page_price_trigger',
-- 'has_page_notification',
-- 'has_page_gift_card',
-- 'enable_customer_level_profit',
-- 'jibit_enabled',
-- 'has_page_earn_money',
-- 'is_store',
-- 'sms_panel',
-- 'logo_login', 'logo_register', 'title_pwa', 'title_fav',
-- 'main_product', 'main_wallet_products', 'metal_type', 'main_metal',
-- 'montify_name',
-- 'montzar_base_url',
-- 'node_client_id', 'node_shared_secret',
-- 'payping_fin_customer_id', 'payping_fin_sync_enabled', 'payping_fin_token', 'payping_fin_url',
-- 'payping_gateway_items', 'payping_gateway_name',
-- 'payping_round_toman', 'payping_start_url', 'payping_strict_failed_withdraw', 'payping_verify_url',
-- 'permision__enabled',
-- 'price_provider', 'profit_gold_api_enabled',
-- 'send_to_tahesab',
-- 'sse_path',
-- 'tahesab_bank_account', 'tahesab_db', 'tahesab_host', 'tahesab_port', 'tahesab_token',
-- 'telegram_bot_token', 'rubika_bot_token',
-- 'price_channel_access',
-- 'price_channel_bale_to', 'price_channel_telegram_to', 'price_channel_rubika_to',
-- 'unit',
-- 'wss_enabled',
-- 'zaarbox_api_url',
-- '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)
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',
'sms_notif_gateway_charge_admin', 'sms_notif_register_customer', 'sms_notif_register_admin',
'sms_notif_jibit_admin', 'sms_notif_bank_card_admin', 'sms_notif_bank_card_customer',
'sms_notif_fund_withdraw_admin', 'sms_notif_fund_withdraw_customer',
'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',
'endDay',
'fee_free', 'fee_service_charge_percentage',
'gift_for_referral', 'gift_for_referrer',
'invite_link_text',
'jibit_verification',
'main_product_price',
'min_first_buy', 'min_withdraw', 'min_deposit', 'minimum_sell',
'montzar_mobile', 'montzar_open_buy', 'montzar_open_sell', 'montzar_order_wait_callback',
'montzar_order_status_path',
'montzar_password', 'montzar_product_id',
'montzar_account_zarin', 'montzar_account_tahesab', 'montzar_account_pargar',
'open_register',
'referral_id', 'referral_show', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', 'referral_bonus_amount',
'register_jibit_verify', 'register_referral_bonus_message', 'register_referral_sms_to_referrer',
'sell_fee', 'show_last_price', 'show_home_price_when_closed', 'show_gold_ounce_price', 'show_product_details',
'show_product_trade_status', 'show_product_card_meta',
'products_site_link_enabled', 'products_site_link_url', 'products_site_link_text',
'startDay',
'support_messenger', 'support_messenger_id', 'support_messenger_text', 'support_messengers',
'do_send_liman',
'has_chat',
'deposit_support_message_text', 'deposit_account_holder', 'deposit_card_number', 'deposit_account_number', 'deposit_sheba',
'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',
'price_channel_footer_id', 'price_channel_footer_phone',
'price_channel_footer_link', 'change_mesghal',
'tracking_systems', 'tracking_systems_enabled',
'banner_enabled',
'zaarbox_price_key'
);
-- تنظیمات پیشرفته (can_edit=0) — فقط در پنل پیشرفته؛ ادمین دیپلوی ویرایش می‌کند
UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN (
'up_price', 'down_price', 'price_extreme_date', 'price_extreme_source',
'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',
'sms_charge_card_number', 'sms_charge_sheba', 'sms_charge_account_holder', 'sms_charge_note'
);
-- کلید runtime باقی‌مانده — can_edit=1
UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN (
'do_send_liman'
);
-- تفکیک نهایی type (بعد از همه batchها — override روی دیتابیس موجود)
UPDATE `settings` SET `type` = 'price' WHERE `key` IN (
'buy_fee', 'sell_fee',
'min_withdraw', 'min_deposit', 'min_first_buy', 'minimum_sell',
'up_price', 'down_price'
);
UPDATE `settings` SET `type` = 'number' WHERE `key` IN (
'fee_service_charge_percentage', 'fee_free',
'montzar_product_id', 'gift_for_referrer', 'gift_for_referral',
'payping_fin_customer_id', 'tahesab_port', 'referral_limit',
'deposit_sms_support_number',
'pargar_item_id_rial', 'pargar_item_id_gold'
);
UPDATE `settings` SET `type` = 'switch' WHERE `key` IN (
'deposit_method_card_to_card',
'deposit_method_gateway',
'deposit_method_identified',
'deposit_method_shetab'
);
UPDATE `settings` SET `description` = 'روشن (پیش‌فرض): روش کارت به کارت در صفحه واریز اپ نمایش داده می‌شود. خاموش: این روش از لیست روش‌های واریز حذف می‌شود.'
WHERE `key` = 'deposit_method_card_to_card';
UPDATE `settings` SET `description` = 'روشن: روش درگاه پرداخت در صفحه واریز نمایش داده می‌شود. خاموش: مخفی است. اتصال و کدهای درگاه در تنظیمات پیشرفته → روش‌های واریز تنظیم می‌شوند.'
WHERE `key` = 'deposit_method_gateway';
UPDATE `settings` SET `description` = 'روشن: روش شناسه واریز در صفحه واریز نمایش داده می‌شود. خاموش: مخفی است.'
WHERE `key` = 'deposit_method_identified';
UPDATE `settings` SET `description` = 'روشن: روش شبکه شتابی در صفحه واریز نمایش داده می‌شود. خاموش: مخفی است.'
WHERE `key` = 'deposit_method_shetab';
-- ---------------------------------------------------------------------------
-- تثبیت نهایی fee_deduct_from_gold — آخرین override قبل از COMMIT
-- (title_fa / description / type / can_edit — value و is_active دست نمی‌خورند)
-- ---------------------------------------------------------------------------
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'اعمال مبلغ دقیق در معامله مشتری',
-- `type` = 'switch',
-- `can_edit` = 0,
-- `description` = 'روشن: مشتری دقیقاً همان مبلغ یا وزنی را که وارد کرده دریافت می‌کند. در فروش، مثلاً ۱۰۰ میلیون ریال درخواست → همان ۱۰۰ میلیون واریز و کارمزد از طلای کیف کسر می‌شود. در خرید، مثلاً ۱۰ گرم درخواست → همان ۱۰ گرم واریز و کارمزد به ریال قابل پرداخت اضافه می‌شود. خاموش (پیش‌فرض): در فروش کارمزد از مبلغ ریالی واریزی کم می‌شود (مشتری مبلغ کمتری می‌گیرد). در خرید کارمزد از وزن طلای واریزی کم می‌شود (مشتری طلای کمتری می‌گیرد).'
-- WHERE `key` = 'fee_deduct_from_gold';
-- حسابداری: یک select مرکزی + can_edit=0
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `can_edit` = 0, `is_active` = 0 WHERE `key` IN ('send_to_tahesab', 'send_to_pargar');
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN (
-- 'accounting_provider',
-- 'tahesab_host', 'tahesab_port', 'tahesab_token', 'tahesab_db', 'tahesab_bank_account',
-- 'zarin_api', 'zarin_token', 'zarin_noe_kar', 'zarin_noe_kar_tedadi', 'zarin_gorohe_kar', 'zarin_name_g', 'zarin_uid_prefix', 'zarin_idbank',
-- 'pargar_username', 'pargar_password', 'pargar_api_token',
-- 'pargar_item_id_rial', 'pargar_item_id_gold'
-- );
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `can_edit` = 0, `is_active` = 1 WHERE `key` LIKE 'zarin_%';
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `type` = 'text', `can_edit` = 0 WHERE `key` IN ('zarin_api', 'zarin_token', 'zarin_name_g', 'zarin_uid_prefix');
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `type` = 'number', `can_edit` = 0 WHERE `key` IN ('zarin_noe_kar', 'zarin_noe_kar_tedadi', 'zarin_gorohe_kar', 'zarin_idbank');
-- درگاه شارژ آنلاین (Montify) — متادیتا + can_edit=0 (value دست نخورده)
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'فعال‌سازی شارژ آنلاین',
-- `type` = 'switch',
-- `can_edit` = 0,
-- `description` = 'روشن: در صورت کامل بودن BASE_URL و client_id و client_secret و gateway، دکمه پرداخت آنلاین در اپ نمایش داده می‌شود. خاموش: فقط واریز دستی.'
-- WHERE `key` = 'external_payment_enabled';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'نوع درگاه شارژ آنلاین',
-- `type` = 'select',
-- `can_edit` = 0,
-- `description` = 'none=خاموش، montify=پارتنر Montify|none,montify'
-- WHERE `key` = 'wallet_payment_provider';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'آدرس API درگاه (BASE_URL)',
-- `type` = 'text',
-- `can_edit` = 0,
-- `description` = 'آدرس پایه API سرویس Montify (بدون اسلش انتهایی)، مثلاً https://node.example.com — فقط سرور؛ در اپ کاربر ارسال نمی‌شود.'
-- WHERE `key` = 'external_payment_base_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'شناسه کلاینت (client_id)',
-- `type` = 'text',
-- `can_edit` = 0,
-- `description` = 'شناسه partner (client_id) — فقط سرور؛ در اپ کاربر یا پاسخ get_settings عمومی نیست.'
-- WHERE `key` = 'external_payment_client_id';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'رمز کلاینت (client_secret)',
-- `type` = 'text',
-- `can_edit` = 0,
-- `description` = 'رمز مخفی partner (client_secret) — فقط سرور. در فرانت و Network تب کاربر دیده نمی‌شود.'
-- WHERE `key` = 'external_payment_client_secret';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'نام درگاه داخل Montify',
-- `type` = 'select',
-- `can_edit` = 0,
-- `description` = 'نام درگاه فعال داخل Montify: zarinpall، zibal، payping یا sepal|zarinpall,zibal,payping,sepal'
-- WHERE `key` = 'external_payment_gateway';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'آدرس برگشت (return_url)',
-- `type` = 'text',
-- `can_edit` = 0,
-- `description` = 'آدرس صفحه فرانت بعد از پرداخت. خالی = دامنه سایت + /wallet/payment-result'
-- WHERE `key` = 'external_payment_return_url';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET
-- `title_fa` = 'آدرس Webhook',
-- `type` = 'text',
-- `can_edit` = 0,
-- `description` = 'آدرس بک‌اند برای webhook (شارژ قطعی کیف). خالی = مسیر پیش‌فرض سرور.'
-- WHERE `key` = 'external_payment_webhook_url';
-- فقط برای ردیف تازه/خالی: پیش‌فرض خاموش (value موجود ادمین حفظ می‌شود)
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'false'
-- WHERE `key` = 'external_payment_enabled' AND (`value` IS NULL OR TRIM(`value`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'none'
-- WHERE `key` = 'wallet_payment_provider' AND (`value` IS NULL OR TRIM(`value`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'سیستم حسابداری', `type` = 'select', `description` = 'none,pargar,tahesab,zarin'
-- WHERE `key` = 'accounting_provider';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `description` = 'سیستم حسابداری: none=هیچکدام، pargar=API پرگار، tahesab=ارسال خودکار ته‌حساب، zarin=ارسال خودکار زرین.' WHERE `key` = 'accounting_provider';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'آدرس API زرین', `description` = 'آدرس پایه وب‌سرویس زرین (بدون /ZarrinService/accounting).' WHERE `key` = 'zarin_api';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'توکن زرین', `description` = 'توکن مکمل API زرین که در نرم‌افزار زرین تعریف می‌شود.' WHERE `key` = 'zarin_token';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'نوع کار پیش‌فرض زرین', `type` = 'number', `description` = 'noeKar عمومی. مقدار ۱۶ معمولاً گرمی است و برای sabtSanadTedadi مناسب نیست؛ سند تعدادی از zarin_noe_kar_tedadi استفاده می‌کند.' WHERE `key` = 'zarin_noe_kar';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'نوع کار تعدادی زرین', `type` = 'number', `description` = 'noeKar برای سند تعدادی (سکه/شمش/گوی/مکعب). معمولاً ۱۷=سکه-تعدادی یا ۱۸=اجرت تعدادی.' WHERE `key` = 'zarin_noe_kar_tedadi';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'گروه کار پیش‌فرض زرین', `type` = 'number', `description` = 'کد gorooheKar هنگام ساخت/جستجوی کار در زرین. برای جداسازی چند پنل روی یک زرین، برای هر پنل مقدار متفاوت بگذارید.' WHERE `key` = 'zarin_gorohe_kar';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'نام گروه حساب مشتریان زرین', `type` = 'text', `description` = 'پارامتر nameG در addhesab — گروه حساب زرین. برای اپ خانگی: مشتری نقدی (خریدار) = گروه ۶. گروه همکار استفاده نشود (مظنه متفاوت است).' WHERE `key` = 'zarin_name_g';
-- فقط اگر خالی است، پیش‌فرض گروه ۶ را بگذار (value موجود دست نخورده)
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'مشتری نقدی (خریدار)' WHERE `key` = 'zarin_name_g' AND (`value` IS NULL OR TRIM(`value`) = '');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'پیشوند عددی uid زرین', `type` = 'text', `description` = 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.' WHERE `key` = 'zarin_uid_prefix';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'کد حساب بانک زرین', `type` = 'number', `description` = 'کد حساب بانک یا صندوق در زرین (idbank وب‌سرویس payment) برای واریز/برداشت ریالی کیف. سند نوع وجه نقد است نه خرید فی.' WHERE `key` = 'zarin_idbank';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'pargar'
-- WHERE `key` = 'accounting_provider'
-- AND TRIM(COALESCE(`value`, '')) IN ('', 'none')
-- AND EXISTS (SELECT 1 FROM (SELECT `value` FROM `settings` WHERE `key` = 'send_to_pargar') AS s WHERE s.`value` IN ('true', '1', 'yes'));
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'tahesab'
-- WHERE `key` = 'accounting_provider'
-- 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 (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 (
'do_send_liman'
);
UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN (
'up_price', 'down_price', 'price_extreme_date', 'price_extreme_source',
'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',
'sms_charge_card_number', 'sms_charge_sheba', 'sms_charge_account_holder', 'sms_charge_note'
);
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', 'chart_use_local_data', 'price_provider')
ORDER BY `key`;
COMMIT;
SELECT 'deploy_settings_const.sql finished' AS status;
-- menu / show_to_user: php artisan settings:deploy و migrate فایل
-- database/sql/settings_menu_and_show_to_user.sql را بعد از این اجرا می‌کنند.
-- بررسی fee_deduct_from_gold (desc_preview باید با «مشتری دقیقاً» شروع شود):
SELECT `key`, `title_fa`, LEFT(`description`, 60) AS desc_preview, `can_edit`, `type`, `value`
FROM `settings`
WHERE `key` = 'fee_deduct_from_gold';
-- بعد از اجرا (اختیاری):
-- SELECT `key`, `title_fa`, `value`, `type`, `is_active` FROM `settings` ORDER BY `key`;
-- SELECT `key`, `value`, `title_fa` FROM `const` ORDER BY `key`;