diff --git a/src/main/java/de/hsmannheim/faktura/dokumente/service/DokumentServiceImpl.java b/src/main/java/de/hsmannheim/faktura/dokumente/service/DokumentServiceImpl.java index 0e538c5..59525b1 100644 --- a/src/main/java/de/hsmannheim/faktura/dokumente/service/DokumentServiceImpl.java +++ b/src/main/java/de/hsmannheim/faktura/dokumente/service/DokumentServiceImpl.java @@ -113,18 +113,20 @@ public class DokumentServiceImpl implements DokumentService { public Auftragsbestaetigung erstelleAuftragsbestaetigung(String angebotsNummer) { Angebot angebot = ladeAngebot(angebotsNummer); - // Status-Prüfung (PH-DP-04) + // Duplikat-Check zuerst (PH-DP-05 / MT-DP-06): wenn bereits eine AB existiert, + // ist das Angebot zwangsläufig UEBERFUEHRT und beide Prüfungen würden anschlagen. + // Die Spec verlangt in diesem Szenario explizit DuplicateDocumentException. + if (repository.existsFolgedokument(angebotsNummer)) { + throw new DuplicateDocumentException(angebotsNummer); + } + + // Allgemeiner Status-Check (PH-DP-04): greift bei anderen Nicht-OFFEN-Zuständen. if (angebot.getStatus() != DokumentStatus.OFFEN) { throw new IllegalStateException( "Angebot " + angebotsNummer + " ist nicht mehr OFFEN (Status: " + angebot.getStatus() + "). Auftragsbestätigung kann nicht erzeugt werden."); } - // Doppelte AB verhindern (PH-DP-05) - if (repository.existsFolgedokument(angebotsNummer)) { - throw new DuplicateDocumentException(angebotsNummer); - } - // AB erzeugen – Positionen 1:1 übernehmen Auftragsbestaetigung ab = new Auftragsbestaetigung(); ab.setDokumentNummer(abGenerator.naechsteNummer());