feat(admin): GET /admin/completed-deliveries — abgeschlossene Lieferungen eines Tages
Neuer Admin-Endpunkt, der ALLE an einem Tag (Berliner Kalendertag von completed_at) abgeschlossenen Lieferungen liefert — unabhängig vom Mail-Versand-Status. Pro Lieferung: Belegnummer und ein Flag `positions_modified`, das true ist, wenn eine Belegzeile in der Menge reduziert/entfernt wurde (delivery_items.credited_quantity > 0) oder eine aktive Geld-Gutschrift vorliegt (jüngstes delivery_credit_audit-Event 'set'). Pflichtparameter `day` (DD-MM-YYYY). Geschützt per admin_api_key. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
33
crates/application/src/usecases/list_completed_deliveries.rs
Normal file
33
crates/application/src/usecases/list_completed_deliveries.rs
Normal file
@ -0,0 +1,33 @@
|
||||
//! Use Case: abgeschlossene (ausgelieferte) Lieferungen eines Tages auflisten.
|
||||
//!
|
||||
//! Reine Lese-Operation für den Admin-Endpunkt. Im Gegensatz zu
|
||||
//! [`crate::usecases::ListDeliveredBelegnummernUseCase`] (Mailclient-Sicht,
|
||||
//! nur noch nicht versendete Belege) liefert dieser Use Case **alle**
|
||||
//! Abschlüsse des Tages — unabhängig vom Mail-Status — samt einem Flag, ob an
|
||||
//! der Lieferung Positionen verändert wurden (Menge reduziert/entfernt oder
|
||||
//! Geld-Gutschrift). Tages-/TZ-Logik liegt im Repository (Europe/Berlin).
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
use chrono::NaiveDate;
|
||||
|
||||
use crate::error::ApplicationError;
|
||||
use crate::ports::{CompletedDeliverySummary, DeliveryCompletionRepository};
|
||||
|
||||
pub struct ListCompletedDeliveriesUseCase {
|
||||
completions: Arc<dyn DeliveryCompletionRepository>,
|
||||
}
|
||||
|
||||
impl ListCompletedDeliveriesUseCase {
|
||||
pub fn new(completions: Arc<dyn DeliveryCompletionRepository>) -> Self {
|
||||
Self { completions }
|
||||
}
|
||||
|
||||
/// Liefert alle am `day` (Berliner Kalendertag) abgeschlossenen Lieferungen.
|
||||
pub async fn execute(
|
||||
&self,
|
||||
day: NaiveDate,
|
||||
) -> Result<Vec<CompletedDeliverySummary>, ApplicationError> {
|
||||
self.completions.list_completed_deliveries_for_day(day).await
|
||||
}
|
||||
}
|
||||
@ -19,6 +19,7 @@ pub mod get_account;
|
||||
pub mod get_attachment_preview;
|
||||
pub mod get_tour;
|
||||
pub mod import_erp_tours;
|
||||
pub mod list_completed_deliveries;
|
||||
pub mod list_delivered_belegnummern;
|
||||
pub mod list_my_tours_today;
|
||||
pub mod mark_mail_sent;
|
||||
@ -48,6 +49,7 @@ pub use get_account::GetAccountUseCase;
|
||||
pub use get_attachment_preview::GetAttachmentPreviewUseCase;
|
||||
pub use get_tour::GetTourUseCase;
|
||||
pub use import_erp_tours::{ImportErpToursUseCase, ImportSummary};
|
||||
pub use list_completed_deliveries::ListCompletedDeliveriesUseCase;
|
||||
pub use list_delivered_belegnummern::ListDeliveredBelegnummernUseCase;
|
||||
pub use list_my_tours_today::ListMyToursTodayUseCase;
|
||||
pub use mark_mail_sent::MarkMailSentUseCase;
|
||||
|
||||
Reference in New Issue
Block a user