feat: abweichende Lieferadresse und Empfänger vor Ort anzeigen
Belege können im ERP eine eigene Lieferadresse (LieferAdressId) mit anderer Person tragen als der Besteller. Die App zeigt jetzt überall den Empfänger vor Ort: - TourDetails.recipientOf liefert Empfänger (Name aus der Lieferadresse, sonst Besteller), Lieferanschrift und differsFromOrderer. - Sortieren, Auswählen, Beladen und Liefer-Übersicht: Empfängername + Lieferadresse, bei Abweichung „Bestellt von: <Kunde>". - Lieferdetails: hervorgehobene Karte „Abweichende Lieferadresse" mit Empfänger, Anschrift und Kontakt; Kunden-Block als „Besteller (Kunde)" mit Adresse, Kundennummer und Kontaktdaten. - Maps navigiert zur Lieferadresse statt zur Kundenadresse; AppBar, Unterschrift und Beladen-Avatar nutzen den Empfänger. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
69
lib/widget/orderer_hint.dart
Normal file
69
lib/widget/orderer_hint.dart
Normal file
@ -0,0 +1,69 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hl_lieferservice/domain/entity/delivery_recipient.dart';
|
||||
|
||||
/// Kompakter Hinweis in Listen-Kacheln, wenn an eine andere Person oder
|
||||
/// Anschrift geliefert wird als an den Besteller: „Bestellt von: <Name>".
|
||||
///
|
||||
/// Geteilt zwischen Beladen-, Sortier- und Auslieferungs-Listen, damit der
|
||||
/// Fahrer überall gleich erkennt, dass Empfänger ≠ Kunde ist.
|
||||
class OrdererHint extends StatelessWidget {
|
||||
const OrdererHint({super.key, required this.ordererName});
|
||||
|
||||
final String ordererName;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final color = Colors.deepOrange.shade800;
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(top: 4),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 1),
|
||||
child: Icon(Icons.alt_route, size: 14, color: color),
|
||||
),
|
||||
const SizedBox(width: 4),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Bestellt von: $ordererName',
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: color,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// `ListTile.subtitle` für Lieferungen: Lieferanschrift und, falls der
|
||||
/// Empfänger vom Besteller abweicht, darunter der [OrdererHint].
|
||||
class RecipientSubtitle extends StatelessWidget {
|
||||
const RecipientSubtitle({
|
||||
super.key,
|
||||
required this.recipient,
|
||||
required this.ordererName,
|
||||
this.addressStyle,
|
||||
});
|
||||
|
||||
final DeliveryRecipient recipient;
|
||||
final String ordererName;
|
||||
final TextStyle? addressStyle;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Text(recipient.address.oneLine, style: addressStyle),
|
||||
if (recipient.differsFromOrderer)
|
||||
OrdererHint(ordererName: ordererName),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user