fix(kontrolle): Abbruch löscht bereits nachgefüllten Fehlbestand nicht mehr
Beim Testen des neuen Inline-Nachfüll-Dialogs (Karte 07) gefunden: Sofort- Nachfüllung während laufender Kontrolle + anschließender Abbruch führte zu IntegrityError (FK-Verweis aus nachfuellung), da _verwirf_kontrolldaten jeden Fehlbestand der Kontrolle unbedingt löschte. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L85hmKbvX7Cqkq47KnQhFt
This commit is contained in:
@@ -3,7 +3,7 @@ from datetime import datetime, timezone
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.models.fehlbestand import Fehlbestand
|
||||
from app.models.fehlbestand import Fehlbestand, FehlbestandStatus
|
||||
from app.models.kontrolle import Kontrolle, KontrollStatus, Kontrollposition
|
||||
from app.models.mindermenge import MindermengeStatus, MindermengenGenehmigung
|
||||
from app.models.objektposition import Objektposition, ObjektpositionStatus
|
||||
@@ -110,6 +110,12 @@ async def _lasse_mindermengen_ablaufen(
|
||||
async def _verwirf_kontrolldaten(db: AsyncSession, kontrolle_id) -> None:
|
||||
fehlbestaende = await db.execute(select(Fehlbestand).where(Fehlbestand.kontrolle_id == kontrolle_id))
|
||||
for fehlbestand in fehlbestaende.scalars().all():
|
||||
if fehlbestand.status != FehlbestandStatus.offen:
|
||||
# Bereits (teilweise) nachgefüllt (Karte 07 Sofort-Nachfüllung während
|
||||
# der Kontrolle) - das ist eine echte, dokumentierte Bestandsbewegung
|
||||
# und darf beim Verwerfen/Abbruch der Kontrolle NICHT gelöscht werden
|
||||
# (FK-Verweis aus nachfuellung + Historie müssen erhalten bleiben).
|
||||
continue
|
||||
await db.delete(fehlbestand)
|
||||
positionen = await db.execute(select(Kontrollposition).where(Kontrollposition.kontrolle_id == kontrolle_id))
|
||||
for position in positionen.scalars().all():
|
||||
|
||||
Reference in New Issue
Block a user