Commit Graph
194 Commits
Author SHA1 Message Date
safavimohadeseh78 698fbed805 change gift-card 2026-09-21 11:09:40 +03:30
safavimohadeseh78 741faa38fb . 2026-09-08 14:06:28 +03:30
safavimohadeseh78andCursor 37b94ed32a Add create migrations for giftcards and giftcard_codes so new installs get both tables.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 19:22:53 +03:30
mohmdsdgandCursor 00b23ac404 feat(tahesab,colleague): push app balance to Tahesab and always wait callback
Add admin decision to write app wallet onto Tahesab even when zero, always await colleague callback regardless of the wait switch, and SMS admins on colleague reject.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 22:30:56 +03:30
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
mohmdsdgandCursor f3eaf91559 feat(pargar): prune inbound logs via MySQL INSERT trigger
Run one-time overflow cleanup on migrate and keep mande/document success
rows capped at 2000 with an AFTER INSERT trigger, without cron or manual SQL.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 20:24:44 +03:30
mohmdsdgandCursor 7e6cd92df4 feat(pargar): cap inbound mande/document logs after insert
Keep the newest 2000 success rows per inbound type so dumps stop growing from Pargar webhooks, and store compact document payloads instead of full JSON.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 10:19:56 +03:30
mohmdsdgandCursor bb52e4c35a fix(tahesab): show missing docs and create local table if absent
Pending list was empty because a missing tahesab table hid unsynced orders and charges. Create the table when needed and keep customer on each row.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 21:51:21 +03:30
mohmdsdgandCursor 0b1e5c687b feat(order): wait for colleague callback before settling wallet
Keep cover orders pending until colleague sts 2/4/6 via callback or 35s poll. Nightly prices:prune also drops old log tables.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 15:55:03 +03:30
mohmdsdg e9674d6571 fix some bugs 2026-09-02 11:38:57 +03:30
mohmdsdgandCursor 91a2dab440 fix(sms): keep charge deposit defaults and unlock referral bonus
Empty SuperAdmin chargeInfo was wiping sms_charge_* on header refresh.
Seed those keys only when empty, and move referral_bonus_amount to can_edit=1.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 21:38:19 +03:30
mohmdsdgandCursor e27a8ac397 fix(zarin): post rial wallet docs as cash via payment, not pooli buy-fi
Zarin kind=payment creates type 55 cash-only rows; it needs zarin_idbank as the counterpart account.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 16:51:16 +03:30
mohmdsdgandCursor 4c2200a0e0 Widen order price columns so current gold rial quotes persist.
Gold gram prices now exceed the old DECIMAL/INT range and MySQL 1264 aborted buys; store money fields as DECIMAL(20,4) and hide the raw SQL error from the app.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-31 16:14:02 +03:30
mohmdsdgandCursor 142cfd7661 fix(price): read last quote and daily extremes from the active provider
A stray montzar tick landed in the prices table, which stores no source, so
the database_last fallback served a ~168M quote on a shop whose Zaarbox board
was at ~217M. Last price and today's high/low now come from price_sync_logs
filtered by price_provider, the database fallback no longer counts as today's
price, and daily extremes reset when the provider changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-31 09:45:37 +03:30
mohmdsdg 283f17561c added some feature for accounting and enhance performance for dashboard 2026-08-30 20:18:48 +03:30
mohmdsdgandCursor 050bd26318 Add gold credit feature gated by SuperAdmin enable_gold_credit.
Port tables, APIs, and overdue cron from goldali, default the flag off, and keep customer routes behind auth.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-30 00:17:01 +03:30
mohmdsdg 6b5b490e2b added accounting failing handles 2026-08-27 16:16:20 +03:30
mohmdsdgandCursor 885ed33e6e feat(accounting): document colleague trades on configured accounts
Post Montzar-covered buy/sell to Zarin/Tahesab/Pargar using montzar_account_* settings, and harden public storage URL/MIME handling for uploads.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 16:59:27 +03:30
mohmdsdg ad78545ebd update setting 2026-08-26 12:56:57 +03:30
mohmdsdgandCursor 793c8cd9ed fix(settings): expose SuperAdmin feature flags to customer get_settings
Menu gates like enable_product_funds were missing from the public API, so the user app could not hide disabled features.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 14:19:22 +03:30
mohmdsdgandCursor 8984899042 fix(settings): push trading-hours changes to live user prices immediately
Recompute home price display on save, broadcast settings over SSE, and keep last-price status in sync without a user refresh.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 02:29:00 +03:30
mohmdsdgandCursor 1c8ab4b725 feat(schedule): add schedule:bootstrap and minute-precise automation runs
Install per-module schedule:run cron from artisan, store sms/in_app send minutes, and match scheduled triggers at exact HH:mm Tehran time.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 22:13:06 +03:30
mohmdsdg 571cd0ebea fix enamad 2026-08-24 18:17:47 +03:30
mohmdsdgandCursor dd9a287f24 fix(settings): expose about_software and enamad_url to user get_settings
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 17:00:18 +03:30
mohmdsdgandCursor 352bb9976d feat(settings): enable_automation gate; reject stale montzar quote jumps
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 16:15:52 +03:30
mohmdsdgandCursor b28a98938e feat(settings): add menu/show_to_user and public get_settings for client apps
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 15:32:35 +03:30
mohmdsdg 657c10d1cc added automation 2026-08-23 14:16:00 +03:30
mohmdsdg 89014821c5 fix all error 3 2026-08-22 16:50:49 +03:30
mohmdsdg 7d1f8958e5 fix hamkar table 2026-08-20 15:52:42 +03:30
mohmdsdgandCursor 924234bb19 fix(settings): PHP sync for runtime can_edit after deploy
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>
2026-08-19 21:07:12 +03:30
mohmdsdgandCursor b7eed369c6 fix(settings): force can_edit=1 for runtime keys in API and DB writes
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>
2026-08-19 20:15:28 +03:30
mohmdsdgandCursor 027170a33f 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>
2026-08-19 19:55:29 +03:30
mohmdsdgandCursor 832a7683fb fix(migration): parse error in show_in_list COMMENT SQL string
Use double-quoted PHP string for Persian COMMENT; '' is SQL escaping, not valid inside PHP single quotes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 14:16:46 +03:30
mohmdsdgandCursor a321ebdaad feat(product): add show_in_list toggle and TV price formula
- 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>
2026-08-19 11:51:54 +03:30
mohmdsdgandCursor b0296c6e94 feat(server): evaluate price alerts per product and fix gold discharge rounding
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>
2026-08-18 22:23:20 +03:30
mohmdsdgandCursor 351510d500 chore(server): add helper script to run deploy_settings_const.sql
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 17:57:22 +03:30
mohmdsdgandCursor e158831fd3 feat(server): add show_on_tv product flag and public /tv products API
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 17:17:01 +03:30
mohmdsdgandCursor 7d405cb83b feat(server): store and apply negative special price profits
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>
2026-08-17 13:11:00 +03:30
mohmdsdg bd8284e4f8 added setting for user 2026-08-16 22:00:23 +03:30
mohmdsdg acd1c2ea20 added table of co-woeker requests and new features 2026-08-16 20:03:18 +03:30
mohmdsdg d651ff9d6c fix dome bugs 2026-08-15 18:22:58 +03:30
safavimohadeseh78andCursor 4468eabd03 Add referral_show setting and keep existing setting values intact.
Allow hiding the referral field on user registration via settings SQL and ConfigService, and document SQL-only Cursor rules that never overwrite live values.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 08:26:13 +02:00
mohmdsdgandCursor 279e4bc881 Enable gated multi-level referral profit and harden chat/SMS notify paths.
Honor enable_customer_level_profit for order referral payouts, and tighten support-chat webhook/SMS plus SuperAdmin SMS panel sync settings.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 16:48:53 +03:30
mohmdsdgandCursor f421fcb83f Add formula-based product pricing (P/W/MG) for Parsian-style unit prices.
Port FormulaPriceService from colleague app so admins can compute a single unit price from reference mid, weight, and wage instead of offset coefficients.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 16:47:29 +03:30
mohmdsdg f42ae09d14 fix support issue 2026-08-05 12:56:52 +03:30
mohmdsdg bfb8b91133 added trigger for chat sms 2026-08-04 18:59:38 +03:30
mohmdsdg d360539208 fix title 2026-08-03 11:51:16 +03:30
mohmdsdg ef32046e85 بهط شیی 2026-08-02 14:00:00 +03:30
mohmdsdg eaff9dead2 added gholak 2026-08-01 17:30:14 +03:30
mohmdsdg 9642e603e7 fix some show 2026-08-01 16:47:26 +03:30