From 55b30f1f39364dd4cb09addf88a46d0795c783f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20P=C3=B6ttker?= Date: Tue, 26 May 2026 22:13:34 +0200 Subject: [PATCH] feat: skip documents still in Agrarmonitor Dateieingang during upload check - Before moving a document back to Posteingang, check if it's still waiting in the Agrarmonitor Dateieingang - If yes: skip silently (upload is pending processing) - If no: move to Posteingang tag as before - Handle 401/403 by clearing the session and aborting the check Co-Authored-By: Claude Sonnet 4.6 --- .../agrarmonitor-polling.service.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/paperless-backend/src/agrarmonitor/agrarmonitor-polling.service.ts b/paperless-backend/src/agrarmonitor/agrarmonitor-polling.service.ts index 0a5147c..2735bff 100644 --- a/paperless-backend/src/agrarmonitor/agrarmonitor-polling.service.ts +++ b/paperless-backend/src/agrarmonitor/agrarmonitor-polling.service.ts @@ -368,6 +368,35 @@ export class AgrarmonitorPollingService implements OnModuleInit { } if (!vorhanden) { + // Prüfen ob Beleg noch im Dateieingang von Agrarmonitor liegt + let imDateieingang: boolean; + try { + imDateieingang = await amClient.eingangsrechnungImDateieingangVorhanden(interneBelegnummer); + } catch (err: unknown) { + const status = (err as any)?.response?.status; + if (status === 401 || status === 403) { + this.agrarmonitorService.clearClient(); + const msg = `Session abgelaufen (${status}) — Upload-Check abgebrochen`; + this.logger.warn(msg); + result.errors.push(msg); + break; + } + // Bei Fehler vorsichtig: nicht verschieben + const msg = `${interneBelegnummer}: Dateieingang-Check fehlgeschlagen`; + this.logger.error(`${msg}: ${err instanceof Error ? err.message : err}`); + result.errors.push(msg); + await this.delay(500); + continue; + } + + if (imDateieingang) { + // Noch im Dateieingang — wartet auf Verarbeitung, nichts tun + result.skipped++; + await this.delay(500); + continue; + } + + // Weder verbucht noch im Dateieingang → zurück in Posteingang if (!isNaN(tagPosteingangId)) { const currentTags: number[] = (doc.tags as number[]) ?? []; const newTags = [...new Set(currentTags.filter(t => t !== tagHochgeladenId).concat([tagPosteingangId]))];