feat(admin): GET /admin/belege/{belegnummer} - volle Lieferdetails

Neuer Admin-Endpunkt, der zu einer ERP-Belegnummer das komplette Detail-Paket
einer Lieferung liefert (Kopf, Positionen mit Scan-Ständen, Kunde +
Ansprechpartner, referenzierte Artikel/Lager, Notizen, Geld-Gutschrift,
Dienstleistungswerte, Kontakte). Jede Lieferung, unabhaengig vom Status;
404 bei unbekannter Belegnummer.

Umsetzung: TourRepository::find_tour_id_by_belegnummer loest die Belegnummer
auf ihre tour_id auf; der Use Case laedt das bestehende Tour-Aggregat und
destilliert daraus in-memory die eine Lieferung samt referenzierter Stammdaten
(neues DTO DeliveryDetails). Kein neuer grosser Query.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dennis Nemec
2026-07-09 23:42:57 +02:00
parent 7c6d883d44
commit af034250e7
10 changed files with 234 additions and 2 deletions

View File

@ -988,6 +988,21 @@ impl TourRepository for PgTourRepository {
tx.commit().await.map_err(db)?;
Ok(res.rows_affected())
}
async fn find_tour_id_by_belegnummer(
&self,
belegnummer: &str,
) -> Result<Option<Uuid>, ApplicationError> {
let tour_id: Option<Uuid> = sqlx::query_scalar(
"SELECT tour_id FROM deliveries WHERE erp_belegnummer = $1 LIMIT 1",
)
.bind(belegnummer)
.fetch_optional(&self.pool)
.await
.map_err(db)?;
Ok(tour_id)
}
}
// ===== Upsert-Helfer =====================================================