fix: MT-DP-06 Reihenfolge Duplikat-Check vor Status-Check
parent
b04757f9db
commit
51619ceb8f
|
|
@ -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());
|
||||
|
|
|
|||
Loading…
Reference in New Issue