fix: Duplikatprüfung immer gegen die ASN, die das Dokument beim Upload bekäme
Build and Push Multi-Platform Images / build-and-push (push) Successful in 39s
Build and Push Multi-Platform Images / build-and-push (push) Successful in 39s
Im Posteingang kann das ASN-Feld der Aktion von der Belegnummer abweichen. Prüfung, Versions-Upload und normaler Upload nutzen jetzt dieselbe ASN. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
79dadb9c93
commit
c1afa02ee2
8 files changed
+89
-24
No files matched your search
@@ -26,6 +26,7 @@ import { applyTemplate, buildVariables } from './variable-resolver';
|
||||
import { DokumentVersionService } from '../paperless/dokument-version.service';
|
||||
import {
|
||||
aktionenAbEntscheidung,
|
||||
ermittleUploadAsn,
|
||||
originalSeitenDesAbschnitts,
|
||||
type PaperlessEntscheidung,
|
||||
} from './paperless-entscheidung.util';
|
||||
@@ -471,12 +472,18 @@ export class InboxPostprocessorService {
|
||||
if (!interneBelegnummer)
|
||||
throw new Error('Interne Belegnummer konnte nicht aufgelöst werden');
|
||||
|
||||
// 2. Vom Benutzer bestätigt: als neue Version an das Stammdokument hängen
|
||||
// 2. ASN, die das Dokument beim Upload bekäme – gegen genau diese wird geprüft
|
||||
const asnTpl = String(content.asn ?? '').trim();
|
||||
const asn = asnTpl ? applyTemplate(asnTpl, variables).trim() : null;
|
||||
const archiveSerialNumber = ermittleUploadAsn(asn, interneBelegnummer);
|
||||
|
||||
// 3. Vom Benutzer bestätigt: als neue Version an das Stammdokument hängen
|
||||
if (entscheidung?.aktion === 'version') {
|
||||
await this.dokumentVersion.haengeVersionAn(
|
||||
entscheidung.documentId,
|
||||
pdfPath,
|
||||
interneBelegnummer,
|
||||
archiveSerialNumber ?? null,
|
||||
);
|
||||
this.logger.log(
|
||||
`Belegnummer ${interneBelegnummer} als neue Version zu Dokument ${entscheidung.documentId} hinzugefügt`,
|
||||
@@ -486,22 +493,11 @@ export class InboxPostprocessorService {
|
||||
};
|
||||
}
|
||||
|
||||
// 3. ASN bestimmen (für den Upload)
|
||||
const asnTpl = String(content.asn ?? '').trim();
|
||||
const asn = asnTpl ? applyTemplate(asnTpl, variables).trim() : null;
|
||||
let archiveSerialNumber: number | undefined;
|
||||
if (asn) {
|
||||
const n = parseInt(asn.replace(/[^0-9]/g, ''), 10);
|
||||
if (!Number.isNaN(n)) archiveSerialNumber = n;
|
||||
}
|
||||
if (archiveSerialNumber === undefined) {
|
||||
const n = parseInt(interneBelegnummer.replace(/[^0-9]/g, ''), 10);
|
||||
if (!Number.isNaN(n)) archiveSerialNumber = n;
|
||||
}
|
||||
|
||||
// 4. Duplikat-Check Paperless: CF7 + aus der Belegnummer abgeleitete ASN
|
||||
const pruefung =
|
||||
await this.paperlessService.pruefeBelegnummer(interneBelegnummer);
|
||||
// 4. Duplikat-Check Paperless: CF7 + Upload-ASN
|
||||
const pruefung = await this.paperlessService.pruefeBelegnummer(
|
||||
interneBelegnummer,
|
||||
archiveSerialNumber ?? null,
|
||||
);
|
||||
if (pruefung.status !== 'frei') {
|
||||
this.logger.warn(
|
||||
`Duplikat (Paperless): Belegnummer ${interneBelegnummer} bereits vorhanden (Dokument(e) ${pruefung.kandidaten.join(', ')})`,
|
||||
|
||||
Reference in new issue
Block a user