Enable immediate automation test runs without waiting for the scheduled hour, expose send history for debugging, and return all SuperAdmin overlay keys on refresh instead of only enable_automation.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use trading_hours_by_day for close_price gates, prefer public SuperAdmin fetch, and add refresh endpoint/command so stale last-good cache no longer keeps switches like enable_automation off.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ignore limangold/payping seed URLs from backup or superadmin when filling;
keep any real local value untouched unless force-overwrite.
Co-authored-by: Cursor <cursoragent@cursor.com>
Customer /api/get_settings dropped price_provider because SuperAdmin
catalog did not return it. Merge SA values when present; otherwise keep
the tenant copy so the app still receives the key.
Co-authored-by: Cursor <cursoragent@cursor.com>
Blank template values must not wipe local can_edit=0 settings like
price_provider until SuperAdmin actually saves a value for that tenant.
Co-authored-by: Cursor <cursoragent@cursor.com>
Force can_edit=1 for Montzar/price runtime keys via settings:deploy
and settings:sync-runtime-can-edit, so tenant DB stays correct even
when an older deploy SQL is still on the server.
Co-authored-by: Cursor <cursoragent@cursor.com>
editable_only now includes RUNTIME_KEYS; normalize can_edit in responses.
UpdateConfig and montzar login persist can_edit=1. SQL override moved before COMMIT.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
Remove email/in-app paths and enforce sms action on create/update so
price alerts match the product requirement for SMS-only delivery.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use double-quoted PHP string for Persian COMMENT; '' is SQL escaping, not valid inside PHP single quotes.
Co-authored-by: Cursor <cursoragent@cursor.com>
- New `show_in_list` column to control product visibility in customer list
- New `tv_price_formula_enabled` + `tv_price_formula` columns for separate TV pricing
- FormulaPriceService: isTvEnabled() and calculateTvForProduct()
- listTvProducts applies TV formula overrides before returning
- filterProductData handles both new field sets
Co-authored-by: Cursor <cursoragent@cursor.com>
Alerts now bind to a product_id and share one evaluator; displayed gold within a rounding step discharges the full wallet.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fetch public program-settings with 3-origin retry and no Laravel cache so
local DB settings stay in sync with the sold version.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep signed buy/sell extras so discounts work on quotes and orders, and ignore the nested user clone in this repo.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop unbounded TransactionsAdmin/customer dumps from dashboardMaster
and aggregate GT_products_report without loading all transactions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop unbounded TransactionsAdmin/customer dumps from dashboardMaster
and aggregate GT_products_report without loading all transactions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow SUPERADMIN_SMS_SHARED_SECRET (+ domain) like SMS remote, with
Bearer SUPERADMIN_REMOTE_TOKEN as fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>