fix(delivery): Auslieferung zeigt Single-Car-Lieferungen wie Beladen

Die Auslieferungs-Übersicht filterte immer nach assignedCarId==selectedCarId,
während die Beladen-Übersicht bei Single-Car-Teams ALLE Lieferungen zeigt.
Folge: eine neu importierte, noch nicht zugeordnete Lieferung
(assignedCarId == null) erschien in Beladen (und ließ sich scannen), aber
nach dem Scannen NICHT in der Auslieferung.

Auslieferung nutzt jetzt dieselbe multiCarTeam-Logik (CarsBloc,
cars.length >= 2): Single-Car → alle Lieferungen, Multi-Car → nach
assignedCarId filtern.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dennis Nemec
2026-07-10 22:49:23 +02:00
parent f12ad5d3c0
commit 30fdde1109

View File

@ -8,6 +8,8 @@ import 'package:hl_lieferservice/domain/entity/tour_details.dart';
import 'package:hl_lieferservice/domain/entity/warehouse.dart'; import 'package:hl_lieferservice/domain/entity/warehouse.dart';
import 'package:hl_lieferservice/feature/car_selection/bloc/bloc.dart'; import 'package:hl_lieferservice/feature/car_selection/bloc/bloc.dart';
import 'package:hl_lieferservice/feature/car_selection/bloc/state.dart'; import 'package:hl_lieferservice/feature/car_selection/bloc/state.dart';
import 'package:hl_lieferservice/feature/cars/bloc/cars_bloc.dart';
import 'package:hl_lieferservice/feature/cars/bloc/cars_state.dart';
import 'package:hl_lieferservice/feature/delivery/detail/presentation/delivery_detail_page.dart'; import 'package:hl_lieferservice/feature/delivery/detail/presentation/delivery_detail_page.dart';
import 'package:hl_lieferservice/feature/delivery/overview/presentation/delivery_info.dart'; import 'package:hl_lieferservice/feature/delivery/overview/presentation/delivery_info.dart';
import 'package:hl_lieferservice/feature/delivery/pickup/presentation/filiale_pickup_scan_page.dart'; import 'package:hl_lieferservice/feature/delivery/pickup/presentation/filiale_pickup_scan_page.dart';
@ -110,15 +112,23 @@ class _DeliveryOverviewBody extends StatelessWidget {
/// Sortiert nach `sortOrder` aufsteigend, weil das die vom Fahrer im /// Sortiert nach `sortOrder` aufsteigend, weil das die vom Fahrer im
/// Sortieren-Schritt festgelegte Reihenfolge ist und identisch zur /// Sortieren-Schritt festgelegte Reihenfolge ist und identisch zur
/// Auslieferungs-Reihenfolge. /// Auslieferungs-Reihenfolge.
List<Delivery> _ownDeliveriesInDeliveryOrder() { ///
/// Filter identisch zur Beladen-Übersicht: nur **Multi-Car-Teams** filtern
/// nach `assignedCarId` (jeder Fahrer sieht sein Fahrzeug); im **Single-Car**-
/// Fall gehören ohnehin alle Lieferungen zum einzigen Auto — sonst würde eine
/// neu importierte, noch nicht zugeordnete Lieferung (assignedCarId == null)
/// zwar in Beladen, aber nicht in der Auslieferung erscheinen.
List<Delivery> _ownDeliveriesInDeliveryOrder(bool multiCarTeam) {
final all = details.deliveriesSorted; final all = details.deliveriesSorted;
if (selectedCarId == null) return all; if (!multiCarTeam || selectedCarId == null) return all;
return all.where((d) => d.assignedCarId == selectedCarId).toList(); return all.where((d) => d.assignedCarId == selectedCarId).toList();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final deliveries = _ownDeliveriesInDeliveryOrder(); final carsState = context.watch<CarsBloc>().state;
final multiCarTeam = carsState is CarsLoaded && carsState.cars.length >= 2;
final deliveries = _ownDeliveriesInDeliveryOrder(multiCarTeam);
// Untere System-Navigationsleiste (Home/Zurück/Recent) freihalten, damit // Untere System-Navigationsleiste (Home/Zurück/Recent) freihalten, damit
// das letzte Listenelement nicht dahinter rutscht. Es gibt in dieser // das letzte Listenelement nicht dahinter rutscht. Es gibt in dieser
// Phase keinen Bottom-Bar, der den Inset abdecken würde. // Phase keinen Bottom-Bar, der den Inset abdecken würde.