Mahdi
631a3267d1
fix: accept createIfMissing when converting a lead to a customer
2026-10-20 21:07:39 +03:30
Mahdi
b731fe43aa
fix: fold the activity board picker and its actions into one dropdown
2026-10-20 17:59:34 +03:30
Mahdi
15cbd62997
test: update promote-from-prior stage service mock for activity boards
2026-10-20 17:36:30 +03:30
Mahdi
e6aa4c64f0
feat: group activities into boards with their own stages, like sales pipelines
...
Existing stages and activities move into a default board per environment; new activities pick a board in the form.
2026-10-20 17:23:27 +03:30
Mahdi
9127fa334b
fix: stop birth dates from saving one day early in Tehran time
2026-10-20 15:20:47 +03:30
Mahdi
9a86f63f48
feat: let the Jalali date picker jump to any month or year from its title
2026-10-20 14:47:25 +03:30
Mahdi
29398a445b
fix: validate activity, deal and lead assignees by active membership in the current environment
2026-10-20 14:47:08 +03:30
Mahdi
bb8fd489de
fix: let owners and admins change a user's role from the edit-user modal
2026-10-20 12:50:32 +03:30
Mahdi
86e9ee6c2c
fix: treat Tahesab no-records as an empty customer list instead of a 502
...
Listing all customers no longer fails on the final empty code range, and importing a missing code no longer creates a placeholder person.
2026-10-20 12:26:20 +03:30
Mahdi
adb63447ca
fix: stop Tahesab imports from stealing links between shared-mobile customers
...
List all Tahesab customers in one paginated table with a page-size picker instead of 2000-code pages.
2026-10-20 12:00:11 +03:30
Mahdi
c1b38e1737
feat: filter Tahesab sync results to customers not yet imported
2026-10-20 11:07:58 +03:30
Mahdi
be7ae0a1d8
fix: keep the SMS credit chip pastel green when the balance is healthy
2026-10-20 10:25:38 +03:30
Mahdi
bbbedc6059
fix: polish SMS header chip and add deposit info in adm panel
...
Tighten the wallet chip layout and let super-admins set charge deposit details shown in the header charge modal.
2026-10-19 21:47:17 +03:30
Mahdi
f5d68d83fc
feat: add per-org SMS wallet with adm panel and header credit
...
Bill all platform SMS (including OTP), allow negative balance with manual/auto cutoffs, and support own-panel bypass without wallet debit.
2026-10-19 15:55:48 +03:30
Mahdi
f15ebb72ea
fix: let only the owner set logout time and move the attendance tab
2026-10-19 13:54:09 +03:30
Mahdi
8590579605
feat: log staff sign-in and sign-out and force logout at a set time
2026-10-19 13:34:55 +03:30
Mahdi
3863c5e7d1
fix: hide role permissions for modules disabled in super admin
2026-10-19 12:20:52 +03:30
Mahdi
e6f9876177
fix: keep the customers menu visible when the owner views as another user
2026-10-19 11:56:05 +03:30
Mahdi and Cursor
fddf22d7fe
fix: open the card menu from the three-dot button
...
Anchor the activity and deal menus to the button so they show beside the card.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-19 11:40:25 +03:30
Mahdi and Cursor
ada9a1f21f
fix: show activity board columns again
...
Give the kanban the remaining page height so the columns are no longer collapsed.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-19 11:18:19 +03:30
Mahdi and Cursor
2f11105628
fix: keep customer profile tabs from overlapping on mobile
...
Let the tab row scroll sideways so long labels stay readable.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-19 09:40:59 +03:30
Mahdi and Cursor
36eda8653e
merge: bring Ant Design UI from dev into main
...
Keep the design refresh together with DISC, the sales copilot, and treasury behavior.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-18 21:33:56 +03:30
Mahdi and Cursor
8fdd5147a5
feat(web): migrate finance treasury pages to Ant Design Vue
...
Replace legacy Ui* chrome on treasury routes with Ant layout, and polish mobile incomes stats colors plus nav visibility.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-18 21:06:18 +03:30
Mahdi and Cursor
002f697dfe
feat: add DISC profiles and a sales copilot as an org module
...
Help reps capture a customer's likely behavior style and get negotiation guidance, with the feature gated from super admin.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-18 21:04:26 +03:30
Mahdi and Cursor
96befd3867
feat: add treasury audit, attachment download, and installment SMS
...
Let cheque clearance pick a cash account and export income, expense, and installment lists to Excel.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-18 19:59:24 +03:30
Mahdi and Cursor
b25b5b125a
fix(web): resolve vue-tsc errors blocking push of Ant migration
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-18 19:48:16 +03:30
Mahdi and Cursor
4abab55a6b
feat(web): migrate CRM screens to Ant Design Vue with central theme
...
Adopt ant-design-vue and a shared antdTheme for leads, pipeline, invoices, and shared form controls under strict single-page governance.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-18 19:39:59 +03:30
Mahdi and Cursor
8981a552fc
feat: gate treasury as an org module and group money inputs
...
Link optional invoice and cheque settlements to cash accounts, and let superadmin enable the finance module per organization.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-18 19:33:09 +03:30
Mahdi and Cursor
ab538b8304
feat: add internal finance ledger for accounts, claims, and payroll
...
Keep booked income and expense separate from cash balances, with installments, recurring items, and reports.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-18 18:49:49 +03:30
Mahdi and Cursor
61d17c5cea
fix: persist the prior-archive cutoff date when the owner changes it
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-18 16:31:19 +03:30
Mahdi and Cursor
23f8da2c65
feat: log outbound SMS and show history in compose modal
...
Persist manual, campaign, and automation SMS; expose history APIs for people and leads.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 21:23:07 +03:30
Mahdi and Cursor
9325d879a5
docs: spec unified outbound SMS log in compose modal
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 21:16:08 +03:30
Mahdi and Cursor
d62e004e90
feat: SMS campaigns for people or leads with filters and batching
...
Add audience tabs, province/city filters, select-all ids, dynamic SMS tokens, and 50-sized create/send chunks.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 20:54:32 +03:30
Mahdi and Cursor
32c722f42a
docs: spec SMS campaign people/leads tabs and batch send
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 20:47:48 +03:30
Mahdi and Cursor
f7b07f6b7a
feat: owner read-only view-as from team users table
...
Allow org owners to inspect any member's data scope via dual JWT; server blocks mutations and team page stays reachable for return.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 19:57:26 +03:30
Mahdi and Cursor
52c7306e78
fix(web): shorten prior-switch label to اطلاعات قبل
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 19:19:31 +03:30
Mahdi and Cursor
960e01938d
fix(web): apply prior lens on user ProfileView timeline
...
Filter my-desk activities and deals by archive cutoff so current work stays clean.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 19:12:48 +03:30
Mahdi and Cursor
3fb5f32ac3
fix: align activity badge and person profile with prior lens
...
Count nav badge for desk=mine, always apply activity prior filter on person records, and stop loading prior=all deals on profiles.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 18:56:44 +03:30
Mahdi and Cursor
0ce2533066
fix(api): load multer types for avatar upload typecheck
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 18:08:31 +03:30
Mahdi and Cursor
bc68582fe2
Fix prior archive filter collisions
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 17:49:51 +03:30
Mahdi and Cursor
e86841fc60
feat(web): add prior archive promote actions
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 17:28:57 +03:30
Mahdi and Cursor
5069647f79
Add prior archive team settings UI
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 17:20:28 +03:30
Mahdi and Cursor
008733d338
Add prior promotion endpoints
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 17:13:01 +03:30
Mahdi
c5708ed59b
chore: stop tracking local SDD scratch files
2026-10-17 17:03:23 +03:30
Mahdi and Cursor
65d66bb331
Implement prior archive cutoff API
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 17:01:52 +03:30
Mahdi and Cursor
79ba146118
Wire prior archive cutoff through API
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 16:52:20 +03:30
Mahdi and Cursor
02841a5b8c
refactor(api): cutoff-based prior-archive where helpers
...
Replace didar/live-deal filters with createdAt cutoff and promotedFromPriorAt; add unit tests.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 16:33:32 +03:30
Mahdi
a04743c6df
feat: add prior-archive promote fields and shared cutoff DTOs
2026-10-17 16:27:29 +03:30
Mahdi and Cursor
27635c0752
docs: add prior-archive cutoff plan and ignore worktrees
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 16:07:59 +03:30
Mahdi and Cursor
03e1c01023
docs: specify date-cutoff prior archive and one-way promote
...
Replace Didar-source classification with org cutoff date, deals/activities-only filter, and a promote tag that does not mutate record fields.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 15:29:37 +03:30