fix(tahesab): store a matched mobile as 09xxxxxxxxx
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9,7 +9,11 @@ import {
|
|||||||
import { Prisma } from '@prisma/client';
|
import { Prisma } from '@prisma/client';
|
||||||
import { PrismaService } from '../../prisma/prisma.service';
|
import { PrismaService } from '../../prisma/prisma.service';
|
||||||
import { carryPreviousSource } from '../../contacts/person-source';
|
import { carryPreviousSource } from '../../contacts/person-source';
|
||||||
import { phoneIdentityKeys, storedPhoneNumber } from '../../contacts/normalize';
|
import {
|
||||||
|
canonicalIranMobile,
|
||||||
|
phoneIdentityKeys,
|
||||||
|
storedPhoneNumber,
|
||||||
|
} from '../../contacts/normalize';
|
||||||
import { applyPersonGenderTitle } from '@mento/shared';
|
import { applyPersonGenderTitle } from '@mento/shared';
|
||||||
import { TahesabConnectionsService } from './connections.service';
|
import { TahesabConnectionsService } from './connections.service';
|
||||||
import {
|
import {
|
||||||
@@ -26,6 +30,20 @@ import { formatJalaliDate, parseBirthDate } from '../../common/excel';
|
|||||||
import { CustomerGroupsService } from '../../customer-groups/customer-groups.service';
|
import { CustomerGroupsService } from '../../customer-groups/customer-groups.service';
|
||||||
import { normalizeIranMobile, SanadBuilders, type TahesabApi } from './tahesab-methods';
|
import { normalizeIranMobile, SanadBuilders, type TahesabApi } from './tahesab-methods';
|
||||||
|
|
||||||
|
/** موبایل تهحساب را به شکل 0912… ذخیره میکند، حتی اگر قبلاً 912… یا +98912… بوده باشد. */
|
||||||
|
function canonicalMobileUpdate(
|
||||||
|
incoming: string | null,
|
||||||
|
current: { mobile: string | null; phone: string | null },
|
||||||
|
): { mobile?: string; phone?: string } {
|
||||||
|
const mobile =
|
||||||
|
canonicalIranMobile(incoming) ??
|
||||||
|
canonicalIranMobile(current.mobile) ??
|
||||||
|
canonicalIranMobile(current.phone);
|
||||||
|
if (!mobile) return {};
|
||||||
|
const phone = canonicalIranMobile(current.phone);
|
||||||
|
return phone ? { mobile, phone } : { mobile };
|
||||||
|
}
|
||||||
|
|
||||||
/** اندازهٔ هر صفحهٔ «همه» (بازهٔ کد) — امن برای پروکسی/nginx */
|
/** اندازهٔ هر صفحهٔ «همه» (بازهٔ کد) — امن برای پروکسی/nginx */
|
||||||
const LIST_PAGE_SIZE = 2000;
|
const LIST_PAGE_SIZE = 2000;
|
||||||
const LIST_TIMEOUT_MS = 55_000;
|
const LIST_TIMEOUT_MS = 55_000;
|
||||||
@@ -605,12 +623,7 @@ export class TahesabPersonLinkService {
|
|||||||
importSource: 'tahesab',
|
importSource: 'tahesab',
|
||||||
sourceRef,
|
sourceRef,
|
||||||
...(!existing.birthDate && pickBirthDate(row) ? { birthDate: pickBirthDate(row) } : {}),
|
...(!existing.birthDate && pickBirthDate(row) ? { birthDate: pickBirthDate(row) } : {}),
|
||||||
...(mobile
|
...canonicalMobileUpdate(mobile, existing),
|
||||||
? {
|
|
||||||
mobile: storedPhoneNumber(existing.mobile) || mobile,
|
|
||||||
phone: storedPhoneNumber(existing.phone) || mobile,
|
|
||||||
}
|
|
||||||
: {}),
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -650,6 +663,7 @@ export class TahesabPersonLinkService {
|
|||||||
importSource: 'tahesab',
|
importSource: 'tahesab',
|
||||||
sourceRef,
|
sourceRef,
|
||||||
...(!byMobile.birthDate && pickBirthDate(row) ? { birthDate: pickBirthDate(row) } : {}),
|
...(!byMobile.birthDate && pickBirthDate(row) ? { birthDate: pickBirthDate(row) } : {}),
|
||||||
|
...canonicalMobileUpdate(mobile, byMobile),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
personId = byMobile.id;
|
personId = byMobile.id;
|
||||||
|
|||||||
Reference in New Issue
Block a user