fix(settings): fee only from fee_service_charge_percentage; deploy:tenant

Remove service_charge_percentage alias and config/fee.php fallback (empty → 0).
Move code-managed Montzar/price runtime keys to can_edit=1 in deploy SQL.
Add settings:deploy and deploy:tenant artisan commands for server deploy.
Advanced admin settings merge runtime keys from local DB; block manual edits.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-19 19:55:29 +03:30
co-authored by Cursor
parent 5b2ed2e5fc
commit 027170a33f
12 changed files with 353 additions and 142 deletions
+12 -47
View File
@@ -1,60 +1,25 @@
#!/usr/bin/env bash
# اجرای deploy_settings_const.sql روی یک یا چند دیتابیس — بدون کپی در Navicat.
# اجرای deploy_settings_const.sql — ترجیحاً از artisan (اتصال .env):
#
# از ریشهٔ سرور:
# bash database/sql/run_deploy_settings.sh
# bash database/sql/run_deploy_settings.sh abaeigold
# bash database/sql/run_deploy_settings.sh abaeigold gholaktala
# php artisan settings:deploy
# php artisan settings:deploy tenant_db_name
# php artisan settings:deploy --preserve
# php artisan settings:deploy db1 db2
#
# اتصال از .env (DB_HOST / DB_PORT / DB_USERNAME / DB_PASSWORD).
# اگر نام DB ندهی، همان DB_DATABASE داخل .env استفاده می‌شود.
# این اسکریپت همان artisan را صدا می‌زند.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$ROOT"
SQL_FILE="${SQL_FILE:-database/sql/deploy_settings_const.sql}"
read_env() {
grep "^${1}=" .env | cut -d= -f2- | tr -d '\r"' | head -1
}
DB_HOST=$(read_env DB_HOST)
DB_PORT=$(read_env DB_PORT)
DB_USERNAME=$(read_env DB_USERNAME)
DB_PASSWORD=$(read_env DB_PASSWORD)
DB_DATABASE=$(read_env DB_DATABASE)
if [[ ! -f "$SQL_FILE" ]]; then
echo "ERROR: SQL file not found: $SQL_FILE" >&2
if [[ ! -f artisan ]]; then
echo "ERROR: artisan not found in $ROOT" >&2
exit 1
fi
if [[ -z "${DB_HOST:-}" || -z "${DB_USERNAME:-}" ]]; then
echo "ERROR: DB_HOST / DB_USERNAME missing in .env" >&2
exit 1
ARGS=()
if [[ -n "${SQL_FILE:-}" && "${SQL_FILE}" != "database/sql/deploy_settings_const.sql" ]]; then
ARGS+=(--file="$SQL_FILE")
fi
if [[ $# -gt 0 ]]; then
DBS=("$@")
else
if [[ -z "${DB_DATABASE:-}" ]]; then
echo "ERROR: no database name. Pass it as argument or set DB_DATABASE in .env" >&2
exit 1
fi
DBS=("$DB_DATABASE")
fi
mysql_run() {
local db="$1"
mysql -h "$DB_HOST" -P "${DB_PORT:-3306}" -u "$DB_USERNAME" -p"$DB_PASSWORD" \
--default-character-set=utf8mb4 "$db"
}
for db in "${DBS[@]}"; do
echo "==> $SQL_FILE → $db @ $DB_HOST:${DB_PORT:-3306}"
mysql_run "$db" < "$SQL_FILE"
echo " done: $db"
done
echo "==> all done"
exec php artisan settings:deploy "${ARGS[@]}" "$@"