fix(loading): "Kein Scanvorgang notwendig"-Hinweis bei Set-Köpfen entfernen
Ein nicht-scanbarer Set-Kopf (Parent-Artikel) wird im Beladen-Screen über seinen Komponenten gezeigt. Der Hinweis „Kein Scanvorgang notwendig" ist dort irreführend, weil die (scanbaren) Komponenten darunter sehr wohl gescannt werden. _ItemRow bekommt suppressScanHint; gesetzt nur für Set-Köpfe (Artikelnummer wird von einer Komponente als parentArtikelNr referenziert). Komponenten/echte Dienstleistungen behalten den Hinweis. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -543,6 +543,21 @@ class _CustomerBody extends StatelessWidget {
|
||||
// von einer Komponente als parentArtikelNr referenziert wird.
|
||||
String? artNrOf(DeliveryItem it) =>
|
||||
details.articleOf(it.articleId)?.articleNumber;
|
||||
// Alle Set-Köpfe (Parent-Artikel): ein Item, dessen Artikelnummer von einer
|
||||
// Komponente als parentArtikelNr referenziert wird. Für nicht-scanbare
|
||||
// Set-Köpfe wird der „kein Scanvorgang notwendig"-Hinweis unterdrückt.
|
||||
final componentParentNrs = delivery.items
|
||||
.where((it) => it.isComponent)
|
||||
.map((it) => it.parentArtikelNr)
|
||||
.whereType<String>()
|
||||
.toSet();
|
||||
final setParentIds = delivery.items
|
||||
.where((it) {
|
||||
final nr = artNrOf(it);
|
||||
return nr != null && componentParentNrs.contains(nr);
|
||||
})
|
||||
.map((it) => it.id)
|
||||
.toSet();
|
||||
// Set-Köpfe je Lagergruppe (warehouseId → einzuhängende Köpfe) +
|
||||
// gesammelte IDs, um sie aus der Dienstleistungs-Sektion zu entfernen.
|
||||
final injectedParentsByWarehouseId = <String, List<DeliveryItem>>{};
|
||||
@ -670,6 +685,7 @@ class _CustomerBody extends StatelessWidget {
|
||||
item: item,
|
||||
details: details,
|
||||
onAction: (action) => onItemAction(item, action),
|
||||
suppressScanHint: setParentIds.contains(item.id),
|
||||
),
|
||||
],
|
||||
// Gebuchte Dienstleistungen (nicht-scanbare Positionen ohne
|
||||
@ -684,6 +700,7 @@ class _CustomerBody extends StatelessWidget {
|
||||
item: item,
|
||||
details: details,
|
||||
onAction: (action) => onItemAction(item, action),
|
||||
suppressScanHint: setParentIds.contains(item.id),
|
||||
),
|
||||
],
|
||||
],
|
||||
@ -1148,12 +1165,18 @@ class _ItemRow extends StatelessWidget {
|
||||
required this.item,
|
||||
required this.details,
|
||||
required this.onAction,
|
||||
this.suppressScanHint = false,
|
||||
});
|
||||
|
||||
final DeliveryItem item;
|
||||
final TourDetails details;
|
||||
final void Function(_ItemAction action) onAction;
|
||||
|
||||
/// Unterdrückt den „Kein Scanvorgang notwendig"-Hinweis. Für nicht-scanbare
|
||||
/// **Set-Köpfe** (Parent-Artikel): dort ist der Hinweis irreführend, weil die
|
||||
/// (scanbaren) Komponenten darunter sehr wohl gescannt werden.
|
||||
final bool suppressScanHint;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = Theme.of(context);
|
||||
@ -1392,7 +1415,9 @@ class _ItemRow extends StatelessWidget {
|
||||
],
|
||||
// Dienstleistung (nicht-scanbar): Hinweis statt Scan/Manuell-
|
||||
// Aktion. Steht an derselben Stelle wie der Manuell-Button.
|
||||
if (scanNotRequired) ...[
|
||||
// Bei Set-Köpfen (Parent-Artikel) bewusst unterdrückt — dort
|
||||
// wäre „kein Scanvorgang notwendig" irreführend.
|
||||
if (scanNotRequired && !suppressScanHint) ...[
|
||||
const SizedBox(height: 8),
|
||||
const _ScanNotRequiredHint(),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user