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.
This commit is contained in:
2026-10-20 12:26:20 +03:30
parent adb63447ca
commit 86e9ee6c2c
2 changed files with 27 additions and 3 deletions
@@ -507,7 +507,13 @@ export class TahesabPersonLinkService {
dto.moshtariCode, dto.moshtariCode,
dto.moshtariCode, dto.moshtariCode,
); );
row = (asMoshtariList(raw)[0] ?? {}) as Record<string, unknown>; const found = asMoshtariList(raw)[0];
if (!found) {
throw new NotFoundException(
`مشتری با کد ${dto.moshtariCode} در ته‌حساب یافت نشد.`,
);
}
row = found as Record<string, unknown>;
} }
const name = pickName(row) || `مشتری ته‌حساب ${dto.moshtariCode}`; const name = pickName(row) || `مشتری ته‌حساب ${dto.moshtariCode}`;
const tel = pickTel(row); const tel = pickTel(row);
@@ -176,6 +176,9 @@ export function normalizeMandehResponse(raw: unknown): NormalizedAssets {
}; };
} }
/** ته‌حساب برای بازه/جستجوی بدون نتیجه به‌جای لیست خالی خطای «هیچ رکوردی یافت نشد» می‌دهد */
const NO_RECORDS = { emptyResultOnError: /رکوردی یافت نشد/i };
export class TahesabApi { export class TahesabApi {
constructor( constructor(
private readonly http: TahesabHttpClient, private readonly http: TahesabHttpClient,
@@ -307,15 +310,30 @@ export class TahesabApi {
[fromCode, toCode], [fromCode, toCode],
'POST', 'POST',
opts?.timeoutMs, opts?.timeoutMs,
NO_RECORDS,
); );
} }
doListMoshtariByPhone(phone: string | number) { doListMoshtariByPhone(phone: string | number) {
return this.call('DoListMoshtari-ByPhone', 'DoListMoshtari', [phone]); return this.call(
'DoListMoshtari-ByPhone',
'DoListMoshtari',
[phone],
undefined,
undefined,
NO_RECORDS,
);
} }
doListMoshtariByName(name: string) { doListMoshtariByName(name: string) {
return this.call('DoListMoshtari-ByName', 'DoListMoshtari', [name]); return this.call(
'DoListMoshtari-ByName',
'DoListMoshtari',
[name],
undefined,
undefined,
NO_RECORDS,
);
} }
/** body key حساس به حروف کوچک مثل همکار */ /** body key حساس به حروف کوچک مثل همکار */