fix: match correspondents by Kundennummer (KD-prefix) in addition to Lieferantennummer
Build and Push Multi-Platform Images / build-and-push (push) Successful in 29s

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-25 14:51:31 +02:00
parent 018f487baf
commit 4046c656de
@@ -486,10 +486,13 @@ export class AgrarmonitorPollingService implements OnModuleInit {
} }
const customers = await amClient.fetchCustomers(); const customers = await amClient.fetchCustomers();
const lieferantMap = new Map<string, number>(); const lieferantMap = new Map<string, number>(); // lieferantennummer → AM-ID
const kundenMap = new Map<string, number>(); // kundennummer → AM-ID
for (const c of customers) { for (const c of customers) {
const nr = String(c['lieferantennummer'] ?? '').trim(); const liefNr = String(c['lieferantennummer'] ?? '').trim();
if (nr) lieferantMap.set(nr, Number(c.id)); 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[] = []; const allCorrespondents: any[] = [];
@@ -501,15 +504,23 @@ export class AgrarmonitorPollingService implements OnModuleInit {
page++; page++;
} }
const lieferantRegex = /\((\d+)\)$/; const lieferantRegex = /\((\d+)\)$/; // reine Zahl → Lieferantennummer
const kundenRegex = /\(KD(\d+)\)$/; // KD-Prefix → Kundennummer
let matched = 0; let matched = 0;
let unmatched = 0; let unmatched = 0;
for (const corr of allCorrespondents) { for (const corr of allCorrespondents) {
const m = lieferantRegex.exec(corr.name as string); const name = corr.name as string;
if (!m) { unmatched++; continue; } 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; } if (amId === undefined) { unmatched++; continue; }
let setting = await this.corrSettingRepo.findOneBy({ CorrespondentId: corr.id as number }); let setting = await this.corrSettingRepo.findOneBy({ CorrespondentId: corr.id as number });