Files
Holzleitner---Backend--aktu…/migrations/0031_delivery_review.sql
Dennis Nemec 2d364f3fb7 feat(review): Vier-Augen-Prüfung für geänderte Lieferscheine
Geänderte Lieferscheine (Artikel entfernt/teil-gutgeschrieben ODER
Geld-Gutschrift) sollen von der Fakturierung gegengeprüft werden, statt
die Menge im ERP zu reduzieren (was den Lagerbestand inkonsistent machte,
weil der Raw-Writeback die ERPframe-Engine umgeht).

- ERP-Writeback: kein Setzen der Belegzeilen-Menge mehr → ERP-Beleg bleibt
  im Original (kein Bestandskonflikt). Geld-Gutschrift wird weiter
  geschrieben (unkritisch, nur Vier-Augen). delivered-at/State/Zahlbed
  bleiben.
- Migration 0031: review_resolved_at/by/note auf deliveries. Der Status
  wird ABGELEITET (Abweichung via credited_quantity / aktueller Gutschrift
  vs. resolved_at), daher: Originalzustand wiederhergestellt ⇒ Flag weg;
  nach Bestätigung erneut geändert ⇒ wieder offen.
- ReviewRepository (Port + Pg-Impl) + Use Cases ListPendingReviews/
  ResolveReview.
- Endpoints: GET /admin/reviews (offene Prüfungen inkl. Änderungsdetails
  aus scan_audit/credit_audit) + POST /admin/reviews/{delivery_id}/resolve
  (Admin-Key).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 18:02:27 +02:00

26 lines
1.2 KiB
SQL

-- 0031_delivery_review.sql
--
-- Vier-Augen-Prüfung für geänderte Lieferscheine.
--
-- Sobald an einer Lieferung etwas vom ursprünglichen ERP-Beleg abweicht
-- (Artikel entfernt/teil-gutgeschrieben ODER Geld-Gutschrift gesetzt), soll
-- ein Mitarbeiter in der Fakturierung das gegenprüfen.
--
-- Bewusst KEINE eigene Status-Spalte: der Status wird ABGELEITET aus dem
-- vorhandenen Stand (`delivery_items.credited_quantity`, neueste
-- `delivery_credit_audit`-Zeile) versus dem hier gespeicherten Bestätigungs-
-- Zeitpunkt. Das erfüllt automatisch „Originalzustand wieder erreicht ⇒ Flag
-- weg" (keine Abweichung mehr) UND „nach Bestätigung erneut geändert ⇒ wieder
-- offen" (resolved_at < letzte Änderung), ohne Logik in die Scan-/Gutschrift-
-- Transaktionen zu hängen.
--
-- Abgeleiteter Status (im Read berechnet):
-- keine Abweichung -> none
-- Abweichung, resolved_at NULL oder < letzte Änderung -> pending
-- Abweichung, resolved_at >= letzte Änderung -> resolved
ALTER TABLE deliveries
ADD COLUMN review_resolved_at TIMESTAMPTZ,
ADD COLUMN review_resolved_by TEXT,
ADD COLUMN review_note TEXT;