diff --git a/paperless-backend/src/agrarmonitor/agrarmonitor-polling.service.ts b/paperless-backend/src/agrarmonitor/agrarmonitor-polling.service.ts index 05cdbd5..06cb551 100644 --- a/paperless-backend/src/agrarmonitor/agrarmonitor-polling.service.ts +++ b/paperless-backend/src/agrarmonitor/agrarmonitor-polling.service.ts @@ -486,10 +486,13 @@ export class AgrarmonitorPollingService implements OnModuleInit { } const customers = await amClient.fetchCustomers(); - const lieferantMap = new Map(); + const lieferantMap = new Map(); // lieferantennummer → AM-ID + const kundenMap = new Map(); // kundennummer → AM-ID for (const c of customers) { - const nr = String(c['lieferantennummer'] ?? '').trim(); - if (nr) lieferantMap.set(nr, Number(c.id)); + const liefNr = String(c['lieferantennummer'] ?? '').trim(); + if (liefNr) lieferantMap.set(liefNr, Number(c.id)); + const kdNr = String(c['kundennummer'] ?? '').trim(); + if (kdNr) kundenMap.set(kdNr, Number(c.id)); } const allCorrespondents: any[] = []; @@ -501,15 +504,23 @@ export class AgrarmonitorPollingService implements OnModuleInit { page++; } - const lieferantRegex = /\((\d+)\)$/; + const lieferantRegex = /\((\d+)\)$/; // reine Zahl → Lieferantennummer + const kundenRegex = /\(KD(\d+)\)$/; // KD-Prefix → Kundennummer let matched = 0; let unmatched = 0; for (const corr of allCorrespondents) { - const m = lieferantRegex.exec(corr.name as string); - if (!m) { unmatched++; continue; } + const name = corr.name as string; + let amId: number | undefined; + + const kdMatch = kundenRegex.exec(name); + if (kdMatch) { + amId = kundenMap.get(kdMatch[1]); + } else { + const liefMatch = lieferantRegex.exec(name); + if (liefMatch) amId = lieferantMap.get(liefMatch[1]); + } - const amId = lieferantMap.get(m[1]); if (amId === undefined) { unmatched++; continue; } let setting = await this.corrSettingRepo.findOneBy({ CorrespondentId: corr.id as number });