diff --git a/apps/web/src/components/person-assets/PersonAssetsPanel.vue b/apps/web/src/components/person-assets/PersonAssetsPanel.vue
index a5eb7f1..8a57b8b 100644
--- a/apps/web/src/components/person-assets/PersonAssetsPanel.vue
+++ b/apps/web/src/components/person-assets/PersonAssetsPanel.vue
@@ -555,7 +555,7 @@ onMounted(async () => {
{{ formatMandehAmount(v.amount, v.unit) }}
{{ v.unit }}
- {{ v.status === 'بس' ? 'بد' : 'بس' }}
+ {{ Number(v.amount) >= 0 ? 'بد' : 'بس' }}
|
diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts
index 9010ea2..c7454c3 100644
--- a/packages/shared/src/index.ts
+++ b/packages/shared/src/index.ts
@@ -3,13 +3,13 @@ export type UserRole = "owner" | "admin" | "sales" | "support";
export const USER_ROLES: UserRole[] = ["owner", "admin", "sales", "support"];
export const USER_ROLE_LABELS: Record = {
- owner: "Ù
اÙÚ©",
- admin: "Ù
Ø¯ÛØ±",
- sales: "ÙØ±ÙØ´",
- support: "Ù¾Ø´ØªÛØ¨Ø§ÙÛ",
+ owner: "ÃÂ
çÃÂé",
+ admin: "ÃÂ
ïÃÂñ",
+ sales: "ÃÂñÃÂô",
+ support: "þôêÃÂèçÃÂÃÂ",
};
-/** ØªÙØ¸ÛÙ
ات سازÙ
اÙÛ Ù Ù
Ø¯ÛØ±Ûت کاربرا٠*/
+/** êÃÂøÃÂÃÂ
çê óçòÃÂ
çÃÂààÃÂ
ïÃÂñÃÂê éçñèñçà*/
export function canManageSettings(role: UserRole | string | null | undefined): boolean {
return role === "owner" || role === "admin";
}
@@ -18,12 +18,12 @@ export function canManageUsers(role: UserRole | string | null | undefined): bool
return role === "owner" || role === "admin";
}
-/** Ù
Ø´Ø§ÙØ¯Ù ÙÙ
٠پرÙÙØ¯ÙâÙØ§Û سازÙ
ا٠(ÙÙ ÙÙØ· Ù
اÙÚ©ÛØª Ø®ÙØ¯) */
+/** ÃÂ
ôçÃÂïàÃÂÃÂ
àþñÃÂÃÂïÃÂâÂÂÃÂçàóçòÃÂ
çà(ÃÂàÃÂÃÂ÷ ÃÂ
çÃÂéÃÂê îÃÂï) */
export function canViewAllRecords(role: UserRole | string | null | undefined): boolean {
return role === "owner" || role === "admin";
}
-/** تغÛÛØ± Ù
اÙÚ© پرÙÙØ¯Ù */
+/** êúÃÂÃÂñ ÃÂ
çÃÂé þñÃÂÃÂïà*/
export function canReassignRecords(role: UserRole | string | null | undefined): boolean {
return role === "owner" || role === "admin";
}
@@ -37,10 +37,10 @@ export interface AuthUserDto {
organizationId: string;
organizationName?: string;
hasAvatar?: boolean;
- /** Ù
اÙÚ© Ù
ØÛØ· ÙØ¹ÙÛ â Ø§Ø´ØªØ±Ø§Ú© Ù
تعÙ٠ب٠Ù
اÙÚ© است ÙÙ Ø¹Ø¶Ù Ø²ÛØ±Ù
جÙ
ÙØ¹Ù */
+ /** ÃÂ
çÃÂé ÃÂ
ÃÂÃÂ÷ ÃÂùÃÂàâ çôêñçé ÃÂ
êùÃÂàèàÃÂ
çÃÂé çóê ÃÂàùöàòÃÂñÃÂ
ìÃÂ
ÃÂùà*/
isOrgOwner?: boolean;
enabledModules?: OrgModuleKey[];
- /** Ø®ÙØ§ØµÙ اشتراک Ù
اÙÚ© Ù
ØÛØ· (Ø¨Ø±Ø§Û Ø§Ø¹Ø¶Ø§ ÙÙØ· Ø¬ÙØª ÙÙ
Ø§ÛØ´/Ú¯ÛØª ÙØ±Ùد) */
+ /** îÃÂçõàçôêñçé ÃÂ
çÃÂé ÃÂ
ÃÂÃÂ÷ (èñçàçùöç ÃÂÃÂ÷ ìÃÂê ÃÂÃÂ
çÃÂô/ïÃÂê ÃÂñÃÂï) */
subscription?: SubscriptionSummaryDto | null;
}
@@ -64,15 +64,15 @@ export const BILLING_PLAN_CODES: BillingPlanCode[] = [
];
export const BILLING_PLAN_LABELS: Record = {
- trial: "دÙ
Ù Û±Ûµ Ø±ÙØ²Ù",
- monthly: "Ù
Ø§ÙØ§ÙÙ",
- quarterly: "سÙâÙ
اÙÙ",
- semiannual: "ششâÙ
اÙÙ",
- yearly: "ÛکساÙÙ",
- custom: "Ø³ÙØ§Ø±Ø´Û",
+ trial: "ïÃÂ
àñõ ñÃÂòÃÂ",
+ monthly: "ÃÂ
çÃÂçÃÂÃÂ",
+ quarterly: "óÃÂâÂÂÃÂ
çÃÂÃÂ",
+ semiannual: "ôôâÂÂÃÂ
çÃÂÃÂ",
+ yearly: "ÃÂéóçÃÂÃÂ",
+ custom: "óÃÂçñôÃÂ",
};
-/** Ù
دت Ù¾ÛØ´âÙØ±Ø¶ Ù¾ÙÙâÙØ§ (Ø±ÙØ²) â custom ÙØ¯Ø§Ø±Ø¯ */
+/** ÃÂ
ïê þÃÂôâÂÂÃÂñö þÃÂÃÂâÂÂÃÂç (ñÃÂò) â custom ÃÂïçñï */
export const BILLING_PLAN_DAYS: Record, number> = {
trial: 15,
monthly: 30,
@@ -164,49 +164,49 @@ export const ORG_MODULE_KEYS: OrgModuleKey[] = [
];
export const ORG_MODULE_LABELS: Record = {
- customers: "Ù
Ø´ØªØ±ÛØ§Ù",
- pipeline: "Ú©Ø§Ø±ÛØ² ÙØ±ÙØ´",
- products: "Ù
ØØµÙÙØ§Øª",
- invoices: "ÙØ§Ú©ØªÙØ±ÙØ§",
- quotes: "Ù¾ÛØ´âÙØ§Ú©ØªÙØ±ÙØ§",
- commissions: "Ù¾ÙØ±Ø³Ø§Ùت",
- sales_forecast: "ÙØ¯Ù Ù Ù¾ÛØ´âبÛÙÛ",
- activities: "ÙØ¹Ø§ÙÛØªâÙØ§",
- tickets: "تÛکتâÙØ§",
- workflow_automations: "اتÙÙ
اسÛÙ٠گردش کار",
- message_automations: "اتÙÙ
اسÛÙÙ Ù¾ÛØ§Ù
Ú©",
- lead_forms: "ÙØ±Ù
âØ³Ø§Ø² Ø³Ø±ÙØ®",
- leads: "Ù
Ø¯ÛØ±Ûت ÙÛØ¯Ùا",
- project_boards: "Ú©Ø§Ø±ÛØ² پرÙÚÙ",
- inventory: "Ø§ÙØ¨Ø§Ø±",
- cheques: "ÚÚ©âÙØ§",
- attachments: "Ù¾ÛÙØ³ØªâÙØ§",
- loyalty: "باشگا٠Ù
Ø´ØªØ±ÛØ§Ù",
- reports: "گزارشâÙØ§",
- notes: "ÛØ§Ø¯Ø¯Ø§Ø´ØªâÙØ§",
- tahesab: "تÙâØØ³Ø§Ø¨",
- custom_fields: "ÙÛÙØ¯ÙØ§Û Ø³ÙØ§Ø±Ø´Û",
- currencies: "Ø§Ø±Ø²ÙØ§",
- team_settings: "تÛÙ
Ù ØªÙØ¸ÛÙ
ات سازÙ
اÙ",
+ customers: "ÃÂ
ôêñÃÂçÃÂ",
+ pipeline: "éçñÃÂò ÃÂñÃÂô",
+ products: "ÃÂ
ÃÂõÃÂÃÂçê",
+ invoices: "ÃÂçéêÃÂñÃÂç",
+ quotes: "þÃÂôâÂÂÃÂçéêÃÂñÃÂç",
+ commissions: "þÃÂñóçÃÂê",
+ sales_forecast: "ÃÂïààþÃÂôâÂÂèÃÂÃÂÃÂ",
+ activities: "ÃÂùçÃÂÃÂêâÂÂÃÂç",
+ tickets: "êÃÂéêâÂÂÃÂç",
+ workflow_automations: "çêÃÂÃÂ
çóÃÂÃÂàïñïô éçñ",
+ message_automations: "çêÃÂÃÂ
çóÃÂÃÂàþÃÂçÃÂ
é",
+ lead_forms: "ÃÂñÃÂ
âÂÂóçò óñÃÂî",
+ leads: "ÃÂ
ïÃÂñÃÂê ÃÂÃÂïÃÂç",
+ project_boards: "éçñÃÂò þñÃÂÃÂÃÂ",
+ inventory: "çÃÂèçñ",
+ cheques: "ÃÂéâÂÂÃÂç",
+ attachments: "þÃÂÃÂóêâÂÂÃÂç",
+ loyalty: "èçôïçàÃÂ
ôêñÃÂçÃÂ",
+ reports: "ïòçñôâÂÂÃÂç",
+ notes: "ÃÂçïïçôêâÂÂÃÂç",
+ tahesab: "êÃÂâÂÂÃÂóçè",
+ custom_fields: "ÃÂÃÂÃÂïÃÂçàóÃÂçñôÃÂ",
+ currencies: "çñòÃÂç",
+ team_settings: "êÃÂÃÂ
àêÃÂøÃÂÃÂ
çê óçòÃÂ
çÃÂ",
faq: "FAQ",
- audit_logs: "ÙØ§Ú¯ ÙØ¹Ø§ÙÛØª کاربراÙ",
- saved_views: "ÙÛÙØªØ±ÙØ§Û Ø°Ø®ÛØ±ÙâØ´Ø¯Ù",
- public_api: "API Ù ÙØ¨âÙÙÚ©",
- sms_campaigns: "Ù¾ÛØ§Ù
Ú© گرÙÙÛ",
- teams: "تÛÙ
âÙØ§ Ù Ø³Ø·Ø Ø¯Ø³ØªØ±Ø³Û Ø¨Ù Ù¾Ø±ÙÙØ¯ÙâÙØ§",
- woocommerce: "ÙÙکاÙ
رس",
- voip: "تÙÙ٠سازÙ
اÙÛ",
- reservations: "رزر٠٠ÙÙØ¨ØªâدÙÛ",
+ audit_logs: "ÃÂçï ÃÂùçÃÂÃÂê éçñèñçÃÂ",
+ saved_views: "ÃÂÃÂÃÂêñÃÂçàðîÃÂñÃÂâÂÂôïÃÂ",
+ public_api: "API àÃÂèâÂÂÃÂÃÂé",
+ sms_campaigns: "þÃÂçÃÂ
é ïñÃÂÃÂÃÂ",
+ teams: "êÃÂÃÂ
âÂÂÃÂç àó÷àïóêñóàèàþñÃÂÃÂïÃÂâÂÂÃÂç",
+ woocommerce: "ÃÂÃÂéçÃÂ
ñó",
+ voip: "êÃÂÃÂàóçòÃÂ
çÃÂÃÂ",
+ reservations: "ñòñààÃÂÃÂèêâÂÂïÃÂÃÂ",
};
export const ORG_MODULE_GROUPS: Array<{
title: string;
keys: OrgModuleKey[];
}> = [
- { title: "Ù
Ø´ØªØ±ÛØ§Ù", keys: ["customers"] },
- { title: "ÙÛØ¯Ùا", keys: ["leads", "lead_forms"] },
+ { title: "ÃÂ
ôêñÃÂçÃÂ", keys: ["customers"] },
+ { title: "ÃÂÃÂïÃÂç", keys: ["leads", "lead_forms"] },
{
- title: "ÙØ±ÙØ´",
+ title: "ÃÂñÃÂô",
keys: [
"pipeline",
"products",
@@ -216,10 +216,10 @@ export const ORG_MODULE_GROUPS: Array<{
"sales_forecast",
],
},
- { title: "ÙØ¹Ø§ÙÛØªâÙØ§", keys: ["activities", "notes"] },
- { title: "Ù¾Ø´ØªÛØ¨Ø§ÙÛ", keys: ["tickets", "faq"] },
+ { title: "ÃÂùçÃÂÃÂêâÂÂÃÂç", keys: ["activities", "notes"] },
+ { title: "þôêÃÂèçÃÂÃÂ", keys: ["tickets", "faq"] },
{
- title: "اتÙÙ
اسÛÙÙ",
+ title: "çêÃÂÃÂ
çóÃÂÃÂÃÂ",
keys: [
"workflow_automations",
"message_automations",
@@ -227,7 +227,7 @@ export const ORG_MODULE_GROUPS: Array<{
],
},
{
- title: "Ø§Ø¨Ø²Ø§Ø±ÙØ§",
+ title: "çèòçñÃÂç",
keys: [
"project_boards",
"inventory",
@@ -242,7 +242,7 @@ export const ORG_MODULE_GROUPS: Array<{
],
},
{
- title: "ØªÙØ¸ÛÙ
ات",
+ title: "êÃÂøÃÂÃÂ
çê",
keys: [
"team_settings",
"teams",
@@ -312,7 +312,7 @@ export interface OrgUserDto {
lastLoginAt?: string | null;
hasAvatar?: boolean;
commissionPercent?: number;
- /** own = ÙÙØ· Ø®ÙØ¯ | team = ÙÙ
âØªÛÙ
ÛâÙØ§ | org = ک٠سازÙ
ا٠*/
+ /** own = ÃÂÃÂ÷ îÃÂï | team = ÃÂÃÂ
âÂÂêÃÂÃÂ
ÃÂâÂÂÃÂç | org = éàóçòÃÂ
çà*/
dataVisibility?: DataVisibility;
createdAt: string;
}
@@ -322,9 +322,9 @@ export type DataVisibility = "own" | "team" | "org";
export const DATA_VISIBILITIES: DataVisibility[] = ["own", "team", "org"];
export const DATA_VISIBILITY_LABELS: Record = {
- own: "ÙÙØ· پرÙÙØ¯ÙâÙØ§Û Ø®ÙØ¯",
- team: "تÛÙ
âÙØ§Û عضÙ",
- org: "ک٠سازÙ
اÙ",
+ own: "ÃÂÃÂ÷ þñÃÂÃÂïÃÂâÂÂÃÂçàîÃÂï",
+ team: "êÃÂÃÂ
âÂÂÃÂçàùöÃÂ",
+ org: "éàóçòÃÂ
çÃÂ",
};
export interface UpdateUserVisibilityRequest {
@@ -345,14 +345,14 @@ export const ROLE_PERMISSION_ITEMS: Array<{
key: RolePermissionKey;
label: string;
}> = [
- { key: "customers", label: "Ù
Ø´ØªØ±ÛØ§Ù" },
- { key: "sales", label: "ÙØ±ÙØ´ Ù Ù
عاÙ
ÙØ§Øª" },
- { key: "billing", label: "Ù¾ÛØ´âÙØ§Ú©ØªÙØ±ÙØ§ Ù ÙØ§Ú©ØªÙØ±ÙØ§" },
- { key: "products", label: "Ù
ØØµÙÙØ§Øª ٠خدÙ
ات" },
- { key: "activities", label: "ÙØ¹Ø§ÙÛØªâÙØ§" },
- { key: "notes", label: "ÛØ§Ø¯Ø¯Ø§Ø´ØªâÙØ§" },
- { key: "reports", label: "گزارشâÙØ§" },
- { key: "audit", label: "ÙØ§Ú¯ ÙØ¹Ø§ÙÛØª کاربراÙ" },
+ { key: "customers", label: "ÃÂ
ôêñÃÂçÃÂ" },
+ { key: "sales", label: "ÃÂñÃÂô àÃÂ
ùçÃÂ
ÃÂçê" },
+ { key: "billing", label: "þÃÂôâÂÂÃÂçéêÃÂñÃÂç àÃÂçéêÃÂñÃÂç" },
+ { key: "products", label: "ÃÂ
ÃÂõÃÂÃÂçê àîïÃÂ
çê" },
+ { key: "activities", label: "ÃÂùçÃÂÃÂêâÂÂÃÂç" },
+ { key: "notes", label: "ÃÂçïïçôêâÂÂÃÂç" },
+ { key: "reports", label: "ïòçñôâÂÂÃÂç" },
+ { key: "audit", label: "ÃÂçï ÃÂùçÃÂÃÂê éçñèñçÃÂ" },
];
export interface OrgRoleMemberDto {
@@ -422,7 +422,7 @@ export interface ApiErrorBody {
}
export interface LoginRequest {
- /** اÛÙ
ÛÙ ÛØ§ Ø´Ù
ار٠Ù
ÙØ¨Ø§ÛÙ */
+ /** çÃÂÃÂ
ÃÂàÃÂç ôÃÂ
çñàÃÂ
ÃÂèçÃÂà*/
identifier: string;
password: string;
}
@@ -444,7 +444,7 @@ export interface LoginChallengeResponse {
channel: 'email' | 'mobile';
expiresInSeconds: number;
maskedDestination?: string;
- /** ÙÙØ· در Ù
ØÛØ· ØªÙØ³Ø¹Ù / AUTH_RETURN_OTP */
+ /** ÃÂÃÂ÷ ïñ ÃÂ
ÃÂÃÂ÷ êÃÂóùà/ AUTH_RETURN_OTP */
devCode?: string;
}
@@ -453,7 +453,7 @@ export interface RegisterChallengeResponse {
expiresInSeconds: number;
maskedEmail?: string;
maskedMobile?: string;
- /** ÙÙØªÛ سرÙÛØ³ اÛÙ
Û٠خاÙ
ÙØ´ است false â ÙÙØ· OTP Ù
ÙØ¨Ø§ÛÙ ÙØ§Ø²Ù
است */
+ /** ÃÂÃÂêàóñÃÂÃÂó çÃÂÃÂ
ÃÂàîçÃÂ
ÃÂô çóê false â ÃÂÃÂ÷ OTP ÃÂ
ÃÂèçÃÂàÃÂçòÃÂ
çóê */
emailOtpRequired?: boolean;
devEmailCode?: string;
devMobileCode?: string;
@@ -531,7 +531,7 @@ export interface UpdateOrganizationRequest {
businessField?: BusinessField;
}
-/** زÙ
ÛÙÙ ÙØ¹Ø§ÙÛØª سازÙ
ا٠â ÙÙ
âØªØ±Ø§Ø² ØµÙØ§Ûع Ø¯ÛØ¯Ø§Ø± */
+/** òÃÂ
ÃÂÃÂàÃÂùçÃÂÃÂê óçòÃÂ
çàâ ÃÂÃÂ
âÂÂêñçò õÃÂçÃÂù ïÃÂïçñ */
export const BUSINESS_FIELDS = [
"education",
"beauty",
@@ -558,26 +558,26 @@ export const BUSINESS_FIELDS = [
export type BusinessField = (typeof BUSINESS_FIELDS)[number];
export const BUSINESS_FIELD_LABELS: Record = {
- education: "Ø¢Ù
ÙØ²Ø´Ú¯Ø§Ù Ù Ù
ؤسسات Ø¢Ù
ÙØ²Ø´Û",
- beauty: "Ú©ÙÛÙÛÚ© Ø²ÛØ¨Ø§ÛÛ Ù Ø¢Ø±Ø§ÛØ´Ú¯Ø§Ù",
- real_estate: "اÙ
ÙØ§Ú© Ù Ù
Ø´Ø§ÙØ±ÛÙ Ù
سکÙ",
- construction: "ØµÙØ¹Øª ساختÙ
اÙ",
- advertising: "تبÙÛØºØ§Øª Ù Ù
Ø´Ø§ÙØ±Ù کسبâÙکار",
- insurance: "بÛÙ
Ù",
- consulting: "شرکتâÙØ§Û Ù
Ø´Ø§ÙØ±",
- startup: "استارتاپ ٠کسبâÙکار Ø¢ÙÙØ§ÛÙ",
- medical_devices: "تجÙÛØ²Ø§Øª پزشکÛ",
- travel: "Ú¯Ø±Ø¯Ø´Ú¯Ø±Û Ù Ù
ÙØ§Ø¬Ø±Øª",
- contractor: "Ù¾ÛÙ
اÙÚ©Ø§Ø±Û Ù Ù¾Ø±ÙÚÙâØ§Û",
- trading: "بازرگاÙÛ",
- manufacturing: "تÙÙÛØ¯Û Ù ØµÙØ¹ØªÛ",
- personal: "کسبâÙکار Ø´Ø®ØµÛ Ù Ø®Ø§ÙÚ¯Û",
- tech: "ÙØ±Ù
âØ§ÙØ²Ø§Ø± Ù Ø³Ø®ØªâØ§ÙØ²Ø§Ø±",
- legal: "ÙÚ©ÙØ§ Ù Ù
Ø´Ø§ÙØ±ÛÙ ØÙÙÙÛ",
- repair: "خدÙ
ات ٠تعÙ
ÛØ±Ø§Øª",
- retail: "خردÙâÙØ±ÙØ´Û",
- jewelry: "Ø·ÙØ§ Ù Ø¬ÙØ§Ùر",
- other: "Ø³Ø§ÛØ±",
+ education: "âÃÂ
ÃÂòôïçààÃÂ
äóóçê âÃÂ
ÃÂòôÃÂ",
+ beauty: "éÃÂÃÂÃÂÃÂé òÃÂèçÃÂààâñçÃÂôïçÃÂ",
+ real_estate: "çÃÂ
ÃÂçé àÃÂ
ôçÃÂñÃÂàÃÂ
óéÃÂ",
+ construction: "õÃÂùê óçîêÃÂ
çÃÂ",
+ advertising: "êèÃÂÃÂúçê àÃÂ
ôçÃÂñàéóèâÂÂÃÂéçñ",
+ insurance: "èÃÂÃÂ
ÃÂ",
+ consulting: "ôñéêâÂÂÃÂçàÃÂ
ôçÃÂñ",
+ startup: "çóêçñêçþ àéóèâÂÂÃÂéçñ âÃÂÃÂçÃÂÃÂ",
+ medical_devices: "êìÃÂÃÂòçê þòôéÃÂ",
+ travel: "ïñïôïñààÃÂ
ÃÂçìñê",
+ contractor: "þÃÂÃÂ
çÃÂéçñààþñÃÂÃÂÃÂâÂÂçÃÂ",
+ trading: "èçòñïçÃÂÃÂ",
+ manufacturing: "êÃÂÃÂÃÂïààõÃÂùêÃÂ",
+ personal: "éóèâÂÂÃÂéçñ ôîõààîçÃÂïÃÂ",
+ tech: "ÃÂñÃÂ
âÂÂçÃÂòçñ àóîêâÂÂçÃÂòçñ",
+ legal: "ÃÂéÃÂç àÃÂ
ôçÃÂñÃÂàÃÂÃÂÃÂÃÂÃÂ",
+ repair: "îïÃÂ
çê àêùÃÂ
ÃÂñçê",
+ retail: "îñïÃÂâÂÂÃÂñÃÂôÃÂ",
+ jewelry: "÷ÃÂç àìÃÂçÃÂñ",
+ other: "óçÃÂñ",
};
export function isBusinessField(value: string): value is BusinessField {
@@ -593,7 +593,7 @@ export interface ExchangeRateDto {
export interface UpdateOrgCurrenciesRequest {
baseCurrency?: string;
enabledCurrencies?: string[];
- /** ÙØ±Ø®âÙØ§ ÙØ³Ø¨Øª ب٠ارز پاÛÙØ ارز پاÛÙ ÙÛØ§Ø²Û Ø¨Ù ÙØ±Ø® ÙØ¯Ø§Ø±Ø¯ */
+ /** ÃÂñîâÂÂÃÂç ÃÂóèê èàçñò þçÃÂÃÂàçñò þçÃÂàÃÂÃÂçòàèàÃÂñî ÃÂïçñï */
rates?: Array<{ currency: string; rateToBase: number }>;
}
@@ -602,12 +602,12 @@ export const CURRENCY_CATALOG: Array<{
labelFa: string;
suffix: string;
}> = [
- { code: "IRR", labelFa: "Ø±ÛØ§Ù Ø§ÛØ±Ø§Ù", suffix: "Ø±ÛØ§Ù" },
- { code: "USD", labelFa: "Ø¯ÙØ§Ø± Ø¢Ù
رÛکا", suffix: "Ø¯ÙØ§Ø±" },
- { code: "EUR", labelFa: "ÛÙØ±Ù", suffix: "ÛÙØ±Ù" },
- { code: "AED", labelFa: "درÙÙ
اÙ
ارات", suffix: "درÙÙ
" },
- { code: "TRY", labelFa: "ÙÛØ± ترکÛÙ", suffix: "ÙÛØ±" },
- { code: "GBP", labelFa: "Ù¾ÙÙØ¯ اÙÚ¯ÙÛØ³", suffix: "Ù¾ÙÙØ¯" },
+ { code: "IRR", labelFa: "ñÃÂçàçÃÂñçÃÂ", suffix: "ñÃÂçÃÂ" },
+ { code: "USD", labelFa: "ïÃÂçñ âÃÂ
ñÃÂéç", suffix: "ïÃÂçñ" },
+ { code: "EUR", labelFa: "ÃÂÃÂñÃÂ", suffix: "ÃÂÃÂñÃÂ" },
+ { code: "AED", labelFa: "ïñÃÂÃÂ
çÃÂ
çñçê", suffix: "ïñÃÂÃÂ
" },
+ { code: "TRY", labelFa: "ÃÂÃÂñ êñéÃÂÃÂ", suffix: "ÃÂÃÂñ" },
+ { code: "GBP", labelFa: "þÃÂÃÂï çÃÂïÃÂÃÂó", suffix: "þÃÂÃÂï" },
];
export function currencySuffix(code: string): string {
@@ -677,10 +677,10 @@ export const PERSON_MOODS = ["newcomer", "happy", "unhappy", "special"] as const
export type PersonMood = (typeof PERSON_MOODS)[number];
export const PERSON_MOOD_LABELS: Record = {
- newcomer: "Ù
Ø´ØªØ±Û ØªØ§Ø²Ù ÙØ§Ø±Ø¯",
- happy: "Ù
Ø´ØªØ±Û Ø®ÙØ´ØØ§Ù",
- unhappy: "Ù
Ø´ØªØ±Û ÙØ§Ø±Ø§Ø¶Û",
- special: "Ù
Ø´ØªØ±Û Ø®Ø§Øµ",
+ newcomer: "ÃÂ
ôêñàêçòàÃÂçñï",
+ happy: "ÃÂ
ôêñàîÃÂôÃÂçÃÂ",
+ unhappy: "ÃÂ
ôêñàÃÂçñçöÃÂ",
+ special: "ÃÂ
ôêñàîçõ",
};
export interface PersonDto {
@@ -777,7 +777,7 @@ export interface DealDto {
person: PersonSummaryDto | null;
company: CompanySummaryDto | null;
owner: UserSummaryDto | null;
- /** Ù
سئÙÙØ§Ù Ù
شترک Ù
عاÙ
ÙÙ (Ø¹ÙØ§Ù٠بر Ù
اÙÚ© اصÙÛ) */
+ /** ÃÂ
óæÃÂÃÂçàÃÂ
ôêñé ÃÂ
ùçÃÂ
ÃÂà(ùÃÂçÃÂàèñ ÃÂ
çÃÂé çõÃÂÃÂ) */
assignees: UserSummaryDto[];
lineItems: DealLineItemDto[];
createdAt: string;
@@ -849,7 +849,7 @@ export interface UpdateDealRequest {
lineItems?: DealLineItemInput[];
}
-/** ÙÛÙØªØ± Ø°Ø®ÛØ±ÙâØ´Ø¯ÙÙ ÙÛØ³Øª اشخاص */
+/** ÃÂÃÂÃÂêñ ðîÃÂñÃÂâÂÂôïÃÂàÃÂÃÂóê çôîçõ */
export interface PeopleViewFilters {
q?: string;
sort?: string;
@@ -857,7 +857,7 @@ export interface PeopleViewFilters {
page?: number;
}
-/** ÙÛÙØªØ± Ø°Ø®ÛØ±ÙâØ´Ø¯ÙÙ Ú©Ø§Ø±ÛØ² / Ù
عاÙ
ÙØ§Øª */
+/** ÃÂÃÂÃÂêñ ðîÃÂñÃÂâÂÂôïÃÂàéçñÃÂò / ÃÂ
ùçÃÂ
ÃÂçê */
export interface DealsViewFilters {
q?: string;
amountMin?: string;
@@ -1014,7 +1014,7 @@ export interface NoteDto {
title: string | null;
body: string;
noteType: NoteType | string;
- /** team = تÛÙ
Û | personal = ÙÙØ· ÙÙÛØ³Ùد٠*/
+ /** team = êÃÂÃÂ
à| personal = ÃÂÃÂ÷ ÃÂÃÂÃÂóÃÂïà*/
visibility: NoteVisibility;
pinned: boolean;
color: string | null;
@@ -1029,7 +1029,7 @@ export interface NoteDto {
activity: { id: string; title: string } | null;
author: UserSummaryDto | null;
attachments: NoteAttachmentDto[];
- /** تعداد ÙØ³Ø®ÙâÙØ§Û ÙØ¨ÙÛ (Ø¨Ø±Ø§Û ÙÙ
Ø§ÛØ´ دکÙ
Ù ØªØ§Ø±ÛØ®ÚÙ) */
+ /** êùïçï ÃÂóîÃÂâÂÂÃÂçàÃÂèÃÂà(èñçàÃÂÃÂ
çÃÂô ïéÃÂ
àêçñÃÂîÃÂÃÂ) */
revisionCount?: number;
createdAt: string;
updatedAt: string;
@@ -1040,8 +1040,8 @@ export type NoteVisibility = "team" | "personal";
export const NOTE_VISIBILITIES: NoteVisibility[] = ["team", "personal"];
export const NOTE_VISIBILITY_LABELS: Record = {
- team: "تÛÙ
Û",
- personal: "Ø´Ø®ØµÛ (ÙÙØ· Ù
Ù)",
+ team: "êÃÂÃÂ
ÃÂ",
+ personal: "ôîõà(ÃÂÃÂ÷ ÃÂ
ÃÂ)",
};
export interface NoteRevisionDto {
@@ -1865,7 +1865,7 @@ export interface CreateSalesGoalRequest {
probability?: number | null;
currency?: string;
notes?: string;
- /** ÙÙØ· Ù
اÙÚ©/Ù
Ø¯ÛØ±Ø در ØºÛØ± اÛÙ ØµÙØ±Øª ÙØ¯Ù Ø¨Ø±Ø§Û Ø®ÙØ¯ کاربر */
+ /** ÃÂÃÂ÷ ÃÂ
çÃÂé/ÃÂ
ïÃÂñàïñ úÃÂñ çÃÂàõÃÂñê ÃÂïàèñçàîÃÂï éçñèñ */
userId?: string | null;
}
@@ -1896,13 +1896,13 @@ export interface SalesForecastDto {
periodStart: string;
periodEnd: string;
currency: string;
- /** Ù
جÙ
ÙØ¹ Ø§ÙØ¯Ø§Ù ÙÙ
âÙ¾ÙØ´Ø§Ù با باز٠*/
+ /** ÃÂ
ìÃÂ
ÃÂù çÃÂïçàÃÂÃÂ
âÂÂþÃÂôçàèç èçòà*/
targetAmount: number;
- /** Ù
عاÙ
ÙØ§Øª Ø¨Ø±ÙØ¯ÙâØ´Ø¯Ù Ø¯Ø± باز٠*/
+ /** ÃÂ
ùçÃÂ
ÃÂçê èñÃÂïÃÂâÂÂôïàïñ èçòà*/
wonAmount: number;
- /** Ù
عاÙ
ÙØ§Øª باز ÙØ¹ÙÛ */
+ /** ÃÂ
ùçÃÂ
ÃÂçê èçò ÃÂùÃÂà*/
openPipelineAmount: number;
- /** Ù¾ÛØ´âبÛÙÛ: تØÙÙ + Ú©Ø§Ø±ÛØ² باز à Ù
ÛØ§ÙÚ¯ÛÙ Ø§ØØªÙ
ا٠*/
+ /** þÃÂôâÂÂèÃÂÃÂÃÂ: êÃÂÃÂà+ éçñÃÂò èçò àÃÂ
ÃÂçÃÂïÃÂàçÃÂêÃÂ
çà*/
forecastAmount: number;
progressPercent: number | null;
openDealsCount: number;
@@ -1910,7 +1910,7 @@ export interface SalesForecastDto {
goals: SalesGoalDto[];
kpis: SalesForecastKpiDto[];
newCustomersCount: number;
- /** Ù
عاÙ
ÙØ§Øª Ø§ÛØ¬Ø§Ø¯Ø´Ø¯Ù در باز٠*/
+ /** ÃÂ
ùçÃÂ
ÃÂçê çÃÂìçïôïàïñ èçòà*/
newDealsCount: number;
}
@@ -2011,7 +2011,7 @@ export interface UpdateFaqArticleRequest {
position?: number;
}
-/** ساعات Ù
ÙÙØª پاسخ اÙ٠بر اساس اÙÙÙÛØª */
+/** óçùçê ÃÂ
ÃÂÃÂê þçóî çÃÂàèñ çóçó çÃÂÃÂÃÂÃÂê */
export const TICKET_SLA_HOURS: Record = {
urgent: 4,
high: 8,
@@ -2019,7 +2019,7 @@ export const TICKET_SLA_HOURS: Record = {
low: 48,
};
-/* âââ پرتا٠Ù
Ø´ØªØ±Û (OTP) âââ */
+/* âÂÂâÂÂâ þñêçàÃÂ
ôêñà(OTP) âÂÂâÂÂâ */
export interface PortalOrgInfoDto {
name: string;
@@ -2032,7 +2032,7 @@ export interface PortalRequestOtpRequest {
export interface PortalRequestOtpResponse {
ok: true;
- /** ÙÙØ· در ØØ§Ùت ØªÙØ³Ø¹Ù / دÙ
Ù ÙÙØªÛ SMS ÙØ§ÙØ¹Û ÙØµÙ ÙÛØ³Øª */
+ /** ÃÂÃÂ÷ ïñ ÃÂçÃÂê êÃÂóùà/ ïÃÂ
àÃÂÃÂêàSMS ÃÂçÃÂùàÃÂõàÃÂÃÂóê */
devCode?: string;
expiresInSeconds: number;
}
@@ -2089,7 +2089,7 @@ export interface PortalTicketDto {
updatedAt: string;
}
-/* âââ گزارشات Ù Ø¯Ø§Ø´Ø¨ÙØ±Ø¯ âââ */
+/* âÂÂâÂÂâ ïòçñôçê àïçôèÃÂñï âÂÂâÂÂâ */
export interface ReportsKpiDto {
key: string;
@@ -2127,7 +2127,7 @@ export interface ReportsTeamRowDto {
activitiesDone: number;
}
-/** Ú¯ÙÙÙâÙØ§Û drill-down گزارش عÙ
ÛÙ (ÙØ§Ø² Û± BI) */
+/** ïÃÂÃÂÃÂâÂÂÃÂçàdrill-down ïòçñô ùÃÂ
ÃÂà(ÃÂçò ñ BI) */
export type ReportsDrillKind =
| "stage_open"
| "team_won"
@@ -2152,25 +2152,25 @@ export interface ReportsFunnelStageDto {
pipelineName: string;
count: number;
amount: number;
- /** درصد تبدÛÙ ÙØ³Ø¨Øª ب٠Ù
رØÙÙ ÙØ¨Ù ÙÙ
Ø§Ù Ú©Ø§Ø±ÛØ²Ø null Ø¨Ø±Ø§Û Ø§ÙÙÛÙ Ù
رØÙÙ */
+ /** ïñõï êèïÃÂàÃÂóèê èàÃÂ
ñÃÂÃÂàÃÂèàÃÂÃÂ
çàéçñÃÂòànull èñçàçÃÂÃÂÃÂàÃÂ
ñÃÂÃÂà*/
conversionFromPrevPercent: number | null;
- /** سÙÙ
از Ú©Ù Ù
عاÙ
ÙØ§Øª باز ÙÙ
Ø§Ù Ú©Ø§Ø±ÛØ² */
+ /** óÃÂÃÂ
çò éàÃÂ
ùçÃÂ
ÃÂçê èçò ÃÂÃÂ
çàéçñÃÂò */
shareOfPipelinePercent: number;
}
-/** ÛÚ© ردÛÙ ÙØ±Ø® تبدÛÙ (ÙØ±ÙØ¯Û â Ù
ÙÙÙ) Ù
Ø«Ù Ø¯ÛØ¯Ø§Ø± */
+/** ÃÂé ñïÃÂàÃÂñî êèïÃÂà(ÃÂñÃÂïàâ ÃÂ
ÃÂÃÂÃÂ) ÃÂ
ëàïÃÂïçñ */
export interface ReportsConversionRateRowDto {
key: string;
label: string;
incomingCount: number;
wonCount: number;
- /** Ø¯Ø±ØµØ¯Ø Ø§Ú¯Ø± ÙØ±ÙØ¯Û ØµÙØ± باشد Û° */
+ /** ïñõïàçïñ ÃÂñÃÂïàõÃÂñ èçôï ð */
conversionPercent: number;
}
/**
- * ÙØ±Ø® تبدÛ٠ب٠سبک Ø¯ÛØ¯Ø§Ø±:
- * از Ù
عاÙ
ÙØ§Øª تازÙâØ³Ø§Ø®ØªÙâØ´Ø¯Ù Ø¯Ø± Ø¨Ø§Ø²ÙØ ÚÙØ¯ درصد Ø§ÙØ§Ù Ø¨Ø±ÙØ¯Ù شدÙâØ§ÙØ¯.
+ * ÃÂñî êèïÃÂàèàóèé ïÃÂïçñ:
+ * çò ÃÂ
ùçÃÂ
ÃÂçê êçòÃÂâÂÂóçîêÃÂâÂÂôïàïñ èçòÃÂàÃÂÃÂï ïñõï çÃÂçàèñÃÂïàôïÃÂâÂÂçÃÂï.
*/
export interface ReportsConversionRateDto {
incomingCount: number;
@@ -2192,7 +2192,7 @@ export interface ReportsPeriodCompareRowDto {
current: number;
previous: number;
changePercent: number | null;
- /** اگر ÙØ§Ø¨Ù Ú©ÙÛÚ© Ø¨Ø±Ø§Û ÙÛØ³Øª پرÙÙØ¯Ù باشد */
+ /** çïñ ÃÂçèàéÃÂÃÂé èñçàÃÂÃÂóê þñÃÂÃÂïàèçôï */
drillKind?: ReportsDrillKind;
}
@@ -2249,9 +2249,9 @@ export interface ReportsDashboardDto {
winRate: number;
};
funnel: ReportsFunnelStageDto[];
- /** ÙØ±Ø® تبدÛÙ ÙØ±ÙدÛâÙ
ÙÙÙ (سبک Ø¯ÛØ¯Ø§Ø±) */
+ /** ÃÂñî êèïÃÂàÃÂñÃÂïÃÂâÂÂÃÂ
ÃÂÃÂà(óèé ïÃÂïçñ) */
conversionRate: ReportsConversionRateDto;
- /** Ù
ÙØ§ÛØ³Ù ØµØ±ÛØ Ø¨Ø§Ø²Ù ÙØ¹ÙÛ Ø¨Ø§ Ø¯ÙØ±Ù ÙØ¨Ù ÙÙ
âØ·ÙÙ */
+ /** ÃÂ
ÃÂçÃÂóàõñÃÂàèçòàÃÂùÃÂàèç ïÃÂñàÃÂèàÃÂÃÂ
âÂÂ÷ÃÂà*/
periodCompare: ReportsPeriodCompareRowDto[];
tickets: {
open: number;
@@ -2309,7 +2309,7 @@ export interface HomeDashboardDto {
topCustomers: HomeDashboardTopCustomerDto[];
}
-/** برد پرÙÚÙ / Ú©Ø§Ø±ÛØ² کارت */
+/** èñï þñÃÂÃÂà/ éçñÃÂò éçñê */
export interface ProjectBoardStageDto {
id: string;
name: string;
@@ -2373,7 +2373,7 @@ export interface MoveProjectCardRequest {
position?: number;
}
-/** باشگا٠Ù
Ø´ØªØ±ÛØ§Ù */
+/** èçôïçàÃÂ
ôêñÃÂçà*/
export interface LoyaltyTierDto {
id: string;
name: string;
@@ -2476,7 +2476,7 @@ export interface RedeemLoyaltyRewardRequest {
personId: string;
}
-/** اتÙÙ
اسÛÙ٠اگر/Ø¢Ùگا٠*/
+/** çêÃÂÃÂ
çóÃÂÃÂàçïñ/âÃÂïçà*/
export type AutomationTrigger =
| "person_created"
| "lead_submitted"
@@ -2495,23 +2495,23 @@ export type AutomationAction =
| "add_loyalty_points";
export const AUTOMATION_TRIGGER_LABELS: Record = {
- person_created: "Ù
خاطب Ø¬Ø¯ÛØ¯ ساخت٠شد",
- lead_submitted: "ÙØ±Ù
Ø³Ø±ÙØ® ارسا٠شد",
- deal_created: "Ù
عاÙ
ÙÙ Ø¬Ø¯ÛØ¯ ساخت٠شد",
- deal_stage_changed: "Ù
رØÙÙ Ù
عاÙ
ÙÙ Ø¹ÙØ¶ شد",
- deal_won: "Ù
عاÙ
ÙÙ Ø¨Ø±ÙØ¯Ù شد",
- deal_lost: "Ù
عاÙ
Ù٠باخت",
- ticket_created: "تÛکت Ø¬Ø¯ÛØ¯ ساخت٠شد",
- ticket_resolved: "تÛکت ØÙ شد",
- invoice_issued: "ÙØ§Ú©ØªÙر صادر شد",
- invoice_paid: "پرداخت رÙÛ ÙØ§Ú©ØªÙر ثبت شد",
- activity_done: "ÙØ¹Ø§ÙÛØª تÙ
اÙ
شد",
+ person_created: "ÃÂ
îç÷è ìïÃÂï óçîêàôï",
+ lead_submitted: "ÃÂñÃÂ
óñÃÂî çñóçàôï",
+ deal_created: "ÃÂ
ùçÃÂ
ÃÂàìïÃÂï óçîêàôï",
+ deal_stage_changed: "ÃÂ
ñÃÂÃÂàÃÂ
ùçÃÂ
ÃÂàùÃÂö ôï",
+ deal_won: "ÃÂ
ùçÃÂ
ÃÂàèñÃÂïàôï",
+ deal_lost: "ÃÂ
ùçÃÂ
ÃÂàèçîê",
+ ticket_created: "êÃÂéê ìïÃÂï óçîêàôï",
+ ticket_resolved: "êÃÂéê ÃÂàôï",
+ invoice_issued: "ÃÂçéêÃÂñ õçïñ ôï",
+ invoice_paid: "þñïçîê ñÃÂàÃÂçéêÃÂñ ëèê ôï",
+ activity_done: "ÃÂùçÃÂÃÂê êÃÂ
çÃÂ
ôï",
};
export const AUTOMATION_ACTION_LABELS: Record = {
- create_activity: "ساخت ÙØ¹Ø§ÙÛØª",
- create_notification: "Ø§Ø±Ø³Ø§Ù Ø§Ø¹ÙØ§Ù",
- add_loyalty_points: "Ø§ÙØ²Ùد٠اÙ
ØªÛØ§Ø² باشگاÙ",
+ create_activity: "óçîê ÃÂùçÃÂÃÂê",
+ create_notification: "çñóçàçùÃÂçÃÂ",
+ add_loyalty_points: "çÃÂòÃÂïàçÃÂ
êÃÂçò èçôïçÃÂ",
};
export const MAX_AUTOMATION_STEPS = 8;
@@ -2540,14 +2540,14 @@ export const AUTOMATION_TRIGGER_GROUPS: {
label: string;
items: AutomationTrigger[];
}[] = [
- { label: "Ù
خاطب", items: ["person_created", "lead_submitted"] },
+ { label: "ÃÂ
îç÷è", items: ["person_created", "lead_submitted"] },
{
- label: "Ù
عاÙ
ÙÙ",
+ label: "ÃÂ
ùçÃÂ
ÃÂÃÂ",
items: ["deal_created", "deal_stage_changed", "deal_won", "deal_lost"],
},
- { label: "تÛکت", items: ["ticket_created", "ticket_resolved"] },
- { label: "ÙØ¹Ø§ÙÛØª", items: ["activity_done"] },
- { label: "Ù
اÙÛ", items: ["invoice_issued", "invoice_paid"] },
+ { label: "êÃÂéê", items: ["ticket_created", "ticket_resolved"] },
+ { label: "ÃÂùçÃÂÃÂê", items: ["activity_done"] },
+ { label: "ÃÂ
çÃÂÃÂ", items: ["invoice_issued", "invoice_paid"] },
];
export type AutomationStepKind = "action" | "condition";
@@ -2573,31 +2573,31 @@ export const AUTOMATION_CONDITION_FIELD_LABELS: Record<
AutomationConditionField,
string
> = {
- deal_amount: "Ù
Ø¨ÙØº Ù
عاÙ
ÙÙ",
- has_person: "Ù
خاطب دارد",
- has_company: "شرکت دارد",
- ticket_priority: "اÙÙÙÛØª تÛکت",
+ deal_amount: "ÃÂ
èÃÂú ÃÂ
ùçÃÂ
ÃÂÃÂ",
+ has_person: "ÃÂ
îç÷è ïçñï",
+ has_company: "ôñéê ïçñï",
+ ticket_priority: "çÃÂÃÂÃÂÃÂê êÃÂéê",
};
export const AUTOMATION_CONDITION_OP_LABELS: Record<
AutomationConditionOp,
string
> = {
- gte: "Ø¨Ø²Ø±Ú¯âØªØ± ÛØ§ Ù
ساÙÛ",
- lte: "Ú©ÙÚÚ©âØªØ± ÛØ§ Ù
ساÙÛ",
- eq: "Ù
ساÙÛ",
- neq: "ÙØ§Ù
ساÙÛ",
- is_set: "دارد",
- is_empty: "ÙØ¯Ø§Ø±Ø¯",
+ gte: "èòñïâÂÂêñ ÃÂç ÃÂ
óçÃÂÃÂ",
+ lte: "éÃÂÃÂéâÂÂêñ ÃÂç ÃÂ
óçÃÂÃÂ",
+ eq: "ÃÂ
óçÃÂÃÂ",
+ neq: "ÃÂçÃÂ
óçÃÂÃÂ",
+ is_set: "ïçñï",
+ is_empty: "ÃÂïçñï",
};
export const AUTOMATION_NOTIFY_CHANNEL_LABELS: Record<
AutomationNotifyChannel,
string
> = {
- app: "ÙØ§ØªÛÙÛÚ©ÛØ´Ù داخÙÛ",
- sms: "Ù¾ÛØ§Ù
Ú©",
- both: "ÙØ± دÙ",
+ app: "ÃÂçêÃÂÃÂÃÂéÃÂôàïçîÃÂÃÂ",
+ sms: "þÃÂçÃÂ
é",
+ both: "ÃÂñ ïÃÂ",
};
export const AUTOMATION_NOTIFY_CHANNELS = [
@@ -2660,7 +2660,7 @@ export interface AutomationRuleConfig {
notifyTarget?: AutomationNotifyTarget;
activityType?: "call" | "meeting" | "task" | "note";
points?: number;
- /** Ø²ÙØ¬ÛرÙ٠اعÙ
Ø§ÙØ اگر خاÙÛ Ø¨Ø§Ø´Ø¯ ÙÙ
ا٠action ØªÚ©Û Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯ */
+ /** òÃÂìÃÂñÃÂàçùÃÂ
çÃÂàçïñ îçÃÂàèçôï ÃÂÃÂ
çàaction êéàçóêÃÂçïàÃÂ
ÃÂâÂÂôÃÂï */
steps?: AutomationStep[];
}
@@ -2756,7 +2756,7 @@ export function automationStepToConfig(step: AutomationStep): AutomationRuleConf
};
}
-// ââ ØªÙâØØ³Ø§Ø¨ / ØØ³Ø§Ø¨Ø¯Ø§Ø±Û ââ
+// âÂÂâ êÃÂâÂÂÃÂóçè / ÃÂóçèïçñàâÂÂâÂÂ
export const TAHSAB_SANAD_TYPES = [
"buy_sale_gold",
@@ -2769,11 +2769,11 @@ export const TAHSAB_SANAD_TYPES = [
export type TahesabSanadType = (typeof TAHSAB_SANAD_TYPES)[number];
export const TAHSAB_SANAD_LABELS: Record = {
- buy_sale_gold: "Ø®Ø±ÛØ¯/ÙØ±ÙØ´ آبشدÙ",
- buy_sale_sekeh: "Ø®Ø±ÛØ¯/ÙØ±ÙØ´ سکÙ",
- talab_bedehi: "Ø·ÙØ¨/بدÙÛ",
- vkh_gold: "ÙØ§Ø±Ûز/Ø®Ø±ÙØ¬ Ø·ÙØ§",
- vkh_bank: "ÙØ§Ø±Ûز/Ø®Ø±ÙØ¬ باÙÚ©Û",
+ buy_sale_gold: "îñÃÂï/ÃÂñÃÂô âèôïÃÂ",
+ buy_sale_sekeh: "îñÃÂï/ÃÂñÃÂô óéÃÂ",
+ talab_bedehi: "÷ÃÂè/èïÃÂÃÂ",
+ vkh_gold: "ÃÂçñÃÂò/îñÃÂì ÷ÃÂç",
+ vkh_bank: "ÃÂçñÃÂò/îñÃÂì èçÃÂéÃÂ",
};
export interface TahesabConnectionDto {
@@ -2822,7 +2822,8 @@ export interface PersonAccountingLinkDto {
export interface MandehValueDto {
amount: string | number;
unit: string;
- status: "بس" | "بد";
+ /** بس = بستانکار | بد = بدهکار */
+ status: "بس" | "بد" | string;
}
export interface MandehDetailItemDto {
@@ -2843,7 +2844,7 @@ export interface PersonAssetsDto {
fetchedAt: string;
}
-// ââ Ù¾ÛØ§Ù
Ø®ÙØ¯Ú©Ø§Ø± (جدا از اتÙÙ
اسÛÙ٠گردش کار) ââ
+// âÂÂâ þÃÂçÃÂ
îÃÂïéçñ (ìïç çò çêÃÂÃÂ
çóÃÂÃÂàïñïô éçñ) âÂÂâÂÂ
export type MessageAutomationTrigger =
| "person_created"
@@ -2887,37 +2888,37 @@ export const MESSAGE_AUTOMATION_TRIGGER_LABELS: Record<
MessageAutomationTrigger,
string
> = {
- person_created: "Ù
خاطب Ø¬Ø¯ÛØ¯ ساخت٠شد",
- lead_submitted: "ÙØ±Ù
Ø³Ø±ÙØ® ارسا٠شد",
- deal_created: "Ù
عاÙ
ÙÙ Ø¬Ø¯ÛØ¯ ساخت٠شد",
- deal_stage_changed: "Ù
رØÙÙ Ù
عاÙ
ÙÙ Ø¹ÙØ¶ شد",
- deal_won: "Ù
عاÙ
ÙÙ Ø¨Ø±ÙØ¯Ù شد",
- deal_lost: "Ù
عاÙ
Ù٠باخت",
- ticket_created: "تÛکت Ø¬Ø¯ÛØ¯ ساخت٠شد",
- ticket_resolved: "تÛکت ØÙ شد",
- invoice_issued: "ÙØ§Ú©ØªÙر صادر شد",
- invoice_paid: "پرداخت رÙÛ ÙØ§Ú©ØªÙر ثبت شد",
- activity_created: "ÙØ¹Ø§ÙÛØª ثبت شد",
- activity_done: "ÙØ¹Ø§ÙÛØª تÙ
اÙ
شد",
+ person_created: "ÃÂ
îç÷è ìïÃÂï óçîêàôï",
+ lead_submitted: "ÃÂñÃÂ
óñÃÂî çñóçàôï",
+ deal_created: "ÃÂ
ùçÃÂ
ÃÂàìïÃÂï óçîêàôï",
+ deal_stage_changed: "ÃÂ
ñÃÂÃÂàÃÂ
ùçÃÂ
ÃÂàùÃÂö ôï",
+ deal_won: "ÃÂ
ùçÃÂ
ÃÂàèñÃÂïàôï",
+ deal_lost: "ÃÂ
ùçÃÂ
ÃÂàèçîê",
+ ticket_created: "êÃÂéê ìïÃÂï óçîêàôï",
+ ticket_resolved: "êÃÂéê ÃÂàôï",
+ invoice_issued: "ÃÂçéêÃÂñ õçïñ ôï",
+ invoice_paid: "þñïçîê ñÃÂàÃÂçéêÃÂñ ëèê ôï",
+ activity_created: "ÃÂùçÃÂÃÂê ëèê ôï",
+ activity_done: "ÃÂùçÃÂÃÂê êÃÂ
çÃÂ
ôï",
};
export const MESSAGE_AUTOMATION_UNIT_LABELS: Record<
MessageAutomationDelayUnit,
string
> = {
- minutes: "دÙÛÙÙ",
- hours: "ساعت",
- days: "Ø±ÙØ²",
- weeks: "ÙÙØªÙ",
- months: "Ù
اÙ",
+ minutes: "ïÃÂÃÂÃÂÃÂ",
+ hours: "óçùê",
+ days: "ñÃÂò",
+ weeks: "ÃÂÃÂêÃÂ",
+ months: "ÃÂ
çÃÂ",
};
export const MESSAGE_AUTOMATION_FIELDS = [
- { token: "{ÙØ§Ù
}", label: "ÙØ§Ù
Ù
شترÛ" },
- { token: "{Ø´Ù
ارÙ}", label: "Ø´Ù
ار٠Ù
ÙØ¨Ø§ÛÙ" },
- { token: "{ØªØ§Ø±ÛØ®}", label: "ØªØ§Ø±ÛØ® ارساÙ" },
- { token: "{عÙÙØ§Ù}", label: "عÙÙØ§Ù Ø±Ú©ÙØ±Ø¯" },
- { token: "{شرکت}", label: "ÙØ§Ù
شرکت" },
+ { token: "{ÃÂçÃÂ
}", label: "ÃÂçÃÂ
ÃÂ
ôêñÃÂ" },
+ { token: "{ôÃÂ
çñÃÂ}", label: "ôÃÂ
çñàÃÂ
ÃÂèçÃÂÃÂ" },
+ { token: "{êçñÃÂî}", label: "êçñÃÂî çñóçÃÂ" },
+ { token: "{ùÃÂÃÂçÃÂ}", label: "ùÃÂÃÂçàñéÃÂñï" },
+ { token: "{ôñéê}", label: "ÃÂçÃÂ
ôñéê" },
] as const;
export const MESSAGE_AUTOMATION_SMS_SEGMENT = 70;
@@ -2926,18 +2927,18 @@ export const MESSAGE_AUTOMATION_CHANNEL_LABELS: Record<
MessageAutomationChannel,
string
> = {
- app: "ÙØ§ØªÛÙ Ø¯Ø§Ø®Ù Ø¨Ø±ÙØ§Ù
Ù",
- sms: "Ù¾ÛØ§Ù
Ú©",
- both: "Ù¾ÛØ§Ù
Ú© Ù ÙØ§ØªÛÙ",
+ app: "ÃÂçêÃÂàïçîàèñÃÂçÃÂ
ÃÂ",
+ sms: "þÃÂçÃÂ
é",
+ both: "þÃÂçÃÂ
é àÃÂçêÃÂÃÂ",
};
export const MESSAGE_AUTOMATION_TARGET_LABELS: Record<
MessageAutomationTarget,
string
> = {
- staff: "Ù
سئÙ٠پرÙÙØ¯Ù",
- person: "Ù
شترÛ",
- both: "Ù
Ø´ØªØ±Û Ù Ù
سئÙÙ",
+ staff: "ÃÂ
óæÃÂàþñÃÂÃÂïÃÂ",
+ person: "ÃÂ
ôêñÃÂ",
+ both: "ÃÂ
ôêñààÃÂ
óæÃÂÃÂ",
};
export interface MessageAutomationRuleDto {
@@ -3064,7 +3065,7 @@ export interface PlatformUserDto {
lastLoginAt?: string | null;
createdAt: string;
memberships: PlatformUserMembershipDto[];
- /** ÙÙØ· اگر ØØ¯Ø§ÙÙ ÛÚ© عضÙÛØª Ù
اÙÚ© ÙØ¹Ø§Ù دارد */
+ /** ÃÂÃÂ÷ çïñ ÃÂïçÃÂàÃÂé ùöÃÂÃÂê ÃÂ
çÃÂé ÃÂùçàïçñï */
isBillingOwner?: boolean;
billing?: BillingAccountDto | null;
}
@@ -3101,7 +3102,7 @@ export { brand, APP_NAME, APP_NAME_FA, brandSuggestionFa } from "./brand";
export type { Brand } from "./brand";
export const API_PREFIX = "api";
-/* âââ ÙØ§Ú¯ ÙØ¹Ø§ÙÛØª کاربرا٠âââ */
+/* âÂÂâÂÂâ ÃÂçï ÃÂùçÃÂÃÂê éçñèñçàâÂÂâÂÂâ */
export interface AuditLogDto {
id: string;
@@ -3123,7 +3124,7 @@ export interface AuditLogListResponse {
limit: number;
}
-/* âââ ÙÛÙØªØ±ÙØ§Û Ø°Ø®ÛØ±ÙâØ´Ø¯Ù âââ */
+/* âÂÂâÂÂâ ÃÂÃÂÃÂêñÃÂçàðîÃÂñÃÂâÂÂôïàâÂÂâÂÂâ */
export type SavedViewScope =
| "deals"
@@ -3142,7 +3143,7 @@ export const SAVED_VIEW_SCOPES: SavedViewScope[] = [
"reports",
];
-/** ÙÛÙØªØ±ÙØ§Û Ø°Ø®ÛØ±ÙâØ´Ø¯ÙÙ ØµÙØÙ Ú¯Ø²Ø§Ø±Ø´Ø§Øª */
+/** ÃÂÃÂÃÂêñÃÂçàðîÃÂñÃÂâÂÂôïÃÂàõÃÂÃÂàïòçñôçê */
export interface ReportsViewFilters {
/** today | week | month | quarter | year | custom */
period: string;
@@ -3158,7 +3159,7 @@ export interface ReportsViewFilters {
};
}
-/** Ù
ترÛÚ©âÙØ§Û Ú¯Ø²Ø§Ø±Ø´âØ³Ø§Ø² ساد٠*/
+/** ÃÂ
êñÃÂéâÂÂÃÂçàïòçñôâÂÂóçò óçïà*/
export type ReportsBuilderMetric =
| "won_amount"
| "won_count"
@@ -3186,18 +3187,18 @@ export const REPORTS_BUILDER_METRIC_LABELS: Record<
ReportsBuilderMetric,
string
> = {
- won_amount: "Ù
Ø¨ÙØº Ù
عاÙ
ÙØ§Øª Ø¨Ø±ÙØ¯Ù",
- won_count: "تعداد Ù
عاÙ
ÙØ§Øª Ø¨Ø±ÙØ¯Ù",
- lost_count: "تعداد Ù
عاÙ
ÙØ§Øª باختÙ",
- open_count: "تعداد Ù
عاÙ
ÙØ§Øª باز",
- open_amount: "Ù
Ø¨ÙØº Ù
عاÙ
ÙØ§Øª باز",
- activities_done: "ÙØ¹Ø§ÙÛØª Ø§ÙØ¬Ø§Ù
âØ´Ø¯Ù",
- people_created: "Ù
Ø´ØªØ±ÛØ§Ù Ø¬Ø¯ÛØ¯",
- invoice_amount: "Ù
Ø¨ÙØº ÙØ§Ú©ØªÙر",
- invoice_count: "تعداد ÙØ§Ú©ØªÙر",
+ won_amount: "ÃÂ
èÃÂú ÃÂ
ùçÃÂ
ÃÂçê èñÃÂïÃÂ",
+ won_count: "êùïçï ÃÂ
ùçÃÂ
ÃÂçê èñÃÂïÃÂ",
+ lost_count: "êùïçï ÃÂ
ùçÃÂ
ÃÂçê èçîêÃÂ",
+ open_count: "êùïçï ÃÂ
ùçÃÂ
ÃÂçê èçò",
+ open_amount: "ÃÂ
èÃÂú ÃÂ
ùçÃÂ
ÃÂçê èçò",
+ activities_done: "ÃÂùçÃÂÃÂê çÃÂìçÃÂ
âÂÂôïÃÂ",
+ people_created: "ÃÂ
ôêñÃÂçàìïÃÂï",
+ invoice_amount: "ÃÂ
èÃÂú ÃÂçéêÃÂñ",
+ invoice_count: "êùïçï ÃÂçéêÃÂñ",
};
-/** ابعاد گرÙÙâØ¨ÙØ¯Û Ú¯Ø²Ø§Ø±Ø´âØ³Ø§Ø² */
+/** çèùçï ïñÃÂÃÂâÂÂèÃÂïàïòçñôâÂÂóçò */
export type ReportsBuilderDimension =
| "none"
| "owner"
@@ -3221,13 +3222,13 @@ export const REPORTS_BUILDER_DIMENSION_LABELS: Record<
ReportsBuilderDimension,
string
> = {
- none: "بدÙ٠گرÙÙâØ¨ÙØ¯Û (جÙ
ع Ú©Ù)",
- owner: "کاربر / Ù
سئÙÙ",
- team: "تÛÙ
",
- source: "Ù
ÙØ¨Ø¹",
- stage: "Ù
رØÙÙ Ú©Ø§Ø±ÛØ²",
- month: "Ù
اÙ",
- status: "ÙØ¶Ø¹Ûت Ù
عاÙ
ÙÙ",
+ none: "èïÃÂàïñÃÂÃÂâÂÂèÃÂïà(ìÃÂ
ù éÃÂ)",
+ owner: "éçñèñ / ÃÂ
óæÃÂÃÂ",
+ team: "êÃÂÃÂ
",
+ source: "ÃÂ
ÃÂèù",
+ stage: "ÃÂ
ñÃÂÃÂàéçñÃÂò",
+ month: "ÃÂ
çÃÂ",
+ status: "ÃÂöùÃÂê ÃÂ
ùçÃÂ
ÃÂÃÂ",
};
export interface ReportsBuilderQuery {
@@ -3278,7 +3279,7 @@ export interface CreateSavedViewRequest {
export type UpdateSavedViewRequest = Partial;
-/* âââ API عÙ
ÙÙ
Û Ù ÙØ¨âÙÙÚ© âââ */
+/* âÂÂâÂÂâ API ùÃÂ
ÃÂÃÂ
ààÃÂèâÂÂÃÂÃÂé âÂÂâÂÂâ */
export const WEBHOOK_EVENTS = [
"person.created",
@@ -3307,7 +3308,7 @@ export interface CreateOrganizationApiKeyRequest {
}
export interface CreateOrganizationApiKeyResponse extends OrganizationApiKeyDto {
- /** ÙÙØ· ÛÚ©âØ¨Ø§Ø± ÙÙگاÙ
ساخت Ø¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯Ù Ù
ÛâØ´ÙØ¯ */
+ /** ÃÂÃÂ÷ ÃÂéâÂÂèçñ ÃÂÃÂïçÃÂ
óçîê èñïñïçÃÂïàÃÂ
ÃÂâÂÂôÃÂï */
rawKey: string;
}
@@ -3329,7 +3330,7 @@ export interface CreateWebhookEndpointRequest {
isActive?: boolean;
}
-/** ÙÙØ· ÙÙگاÙ
Ø³Ø§Ø®ØªØ secret Ø¯ÙØ¨Ø§Ø±Ù برÙÙ
Ûâگردد */
+/** ÃÂÃÂ÷ ÃÂÃÂïçÃÂ
óçîêàsecret ïÃÂèçñàèñÃÂÃÂ
ÃÂâÂÂïñïï */
export interface CreateWebhookEndpointResponse extends WebhookEndpointDto {
secret: string;
}
@@ -3347,7 +3348,7 @@ export interface WebhookDeliveryDto {
deliveredAt: string | null;
}
-/* âââ Ù¾ÛØ§Ù
Ú© گرÙÙÛ âââ */
+/* âÂÂâÂÂâ þÃÂçÃÂ
é ïñÃÂÃÂàâÂÂâÂÂâ */
export type SmsCampaignStatus =
| "draft"
@@ -3375,7 +3376,7 @@ export interface CreateSmsCampaignRequest {
body: string;
personIds: string[];
scheduledAt?: string | null;
- /** اگر true باشد Ø¨ÙØ§ÙاصÙ٠ص٠Ù
ÛâØ´ÙØ¯ */
+ /** çïñ true èçôï èÃÂçÃÂçõÃÂàõàÃÂ
ÃÂâÂÂôÃÂï */
queueNow?: boolean;
}
@@ -3384,7 +3385,7 @@ export interface SmsCampaignListResponse {
total: number;
}
-/* âââ ØªÛÙ
âÙØ§ Ù Ø³Ø·Ø Ø¯Ø³ØªØ±Ø³Û Ø¨Ù Ù¾Ø±ÙÙØ¯ÙâÙØ§ âââ */
+/* âÂÂâÂÂâ êÃÂÃÂ
âÂÂÃÂç àó÷àïóêñóàèàþñÃÂÃÂïÃÂâÂÂÃÂç âÂÂâÂÂâ */
export type TeamMemberRole = "member" | "manager";
@@ -3421,7 +3422,7 @@ export interface SetTeamMembersRequest {
members: Array<{ userId: string; role: TeamMemberRole }>;
}
-/* âââ ÙÙکاÙ
رس âââ */
+/* âÂÂâÂÂâ ÃÂÃÂéçÃÂ
ñó âÂÂâÂÂâ */
export interface WooCommerceConnectionDto {
id: string;
@@ -3477,7 +3478,7 @@ export interface WooCommerceOrderLinkDto {
syncedAt: string;
}
-/* âââ ØªÙÙ٠سازÙ
اÙÛ / VoIP âââ */
+/* âÂÂâÂÂâ êÃÂÃÂàóçòÃÂ
çÃÂà/ VoIP âÂÂâÂÂâ */
export type VoipCallDirection = "inbound" | "outbound";
@@ -3493,7 +3494,7 @@ export interface VoipConnectionDto {
label: string;
enabled: boolean;
webhookSecretSet: boolean;
- /** ÙØ§Ùب URL Ø¨Ø±Ø§Û Ø´Ø±ÙØ¹ تÙ
Ø§Ø³Ø {number} جاÛگزÛÙ Ù
ÛâØ´ÙØ¯ */
+ /** ÃÂçÃÂè URL èñçàôñÃÂù êÃÂ
çóà{number} ìçÃÂïòÃÂàÃÂ
ÃÂâÂÂôÃÂï */
clickToCallUrl: string | null;
lastEventAt: string | null;
lastError: string | null;
@@ -3550,7 +3551,7 @@ export interface VoipClickToCallRequest {
}
export interface VoipWebhookEvent {
- /** Ø´ÙØ§Ø³Ù ÛÚ©ØªØ§Û ØªÙ
اس در Ø³Ø§ÙØªØ±Ø§Ù */
+ /** ôÃÂçóàÃÂéêçàêÃÂ
çó ïñ óçÃÂêñçà*/
callId: string;
direction: VoipCallDirection;
status: VoipCallStatus | string;
@@ -3559,16 +3560,16 @@ export interface VoipWebhookEvent {
startedAt?: string;
endedAt?: string;
durationSec?: number;
- /** ÙÛÙÚ© ÙØ§Û٠ضبط (Ø¨Ø±Ø§Û Ø®ÙØ§ØµÙ Ø®ÙØ¯Ú©Ø§Ø±) */
+ /** ÃÂÃÂÃÂé ÃÂçÃÂàöè÷ (èñçàîÃÂçõàîÃÂïéçñ) */
recordingUrl?: string;
- /** Ù
ت٠آÙ
ادÙ٠تÙ
Ø§Ø³Ø Ø§Ú¯Ø± باشد STT رد Ù
ÛâØ´ÙØ¯ */
+ /** ÃÂ
êàâÃÂ
çïÃÂàêÃÂ
çóàçïñ èçôï STT ñï ÃÂ
ÃÂâÂÂôÃÂï */
transcript?: string;
- /** Ø¨Ø±Ø§Û Ø³Ø§Ø²Ú¯Ø§Ø±Û Ø¨Ø§ ÙÛÙØ¯ÙØ§Û Ø±Ø§ÛØ¬ دÛگر */
+ /** èñçàóçòïçñàèç ÃÂÃÂÃÂïÃÂçàñçÃÂì ïÃÂïñ */
caller?: string;
callee?: string;
}
-/* âââ Ø±Ø²Ø±Ù Ù ÙÙØ¨ØªâدÙÛ âââ */
+/* âÂÂâÂÂâ ñòñààÃÂÃÂèêâÂÂïÃÂàâÂÂâÂÂâ */
export type ReservationStatus =
| "pending"
@@ -3584,10 +3585,10 @@ export const RESERVATION_STATUSES: ReservationStatus[] = [
];
export const RESERVATION_STATUS_LABELS: Record = {
- pending: "در Ø§ÙØªØ¸Ø§Ø±",
- confirmed: "تأÛÛØ¯ شدÙ",
- canceled: "ÙØºÙ شدÙ",
- done: "Ø§ÙØ¬Ø§Ù
شدÙ",
+ pending: "ïñ çÃÂêøçñ",
+ confirmed: "êãÃÂÃÂï ôïÃÂ",
+ canceled: "ÃÂúàôïÃÂ",
+ done: "çÃÂìçÃÂ
ôïÃÂ",
};
export interface ReservationServiceDto {
@@ -3595,7 +3596,7 @@ export interface ReservationServiceDto {
name: string;
description: string;
durationMinutes: number;
- /** Ø±ÙØ²ÙØ§Û ÙÙØªÙ Û°=ÛÚ©Ø´ÙØ¨Ù ⦠۶=Ø´ÙØ¨Ù (JS getDay) */
+ /** ñÃÂòÃÂçàÃÂÃÂêàð=ÃÂéôÃÂèà⦠ö=ôÃÂèà(JS getDay) */
workDays: number[];
dayStartHour: number;
dayEndHour: number;
@@ -3663,7 +3664,7 @@ export interface ReservationListResponse {
-/* âââ Ù
Ø¯ÛØ±Ûت ÙÛØ¯Ùا âââ */
+/* âÂÂâÂÂâ ÃÂ
ïÃÂñÃÂê ÃÂÃÂïÃÂç âÂÂâÂÂâ */
export type LeadAssignRule = "round_robin" | "equal_split";