gebucht function
Kachel in den Korb.
Mit buendeln wird eine gleiche Zeile (Name, Preis, Satz) hochgezählt, ohne
entsteht je Griff eine Zeile. Die Höchstmenge des Artikels hält auch hier —
Warenkorb.mengeGesetzt deckelt, egal woher der Griff kommt.
Implementation
Kachelbuchung gebucht(Warenkorb korb, Positionsentwurf entwurf, {required bool buendeln}) {
if (buendeln) {
for (final p in korb.positionen) {
if (p.name != entwurf.bezeichnung.trim()) continue;
if (p.priceCents != entwurf.betragCents) continue;
if (p.vat != entwurf.steuersatz) continue;
final neu = korb.mengeGesetzt(p.id, p.quantity + 1);
final zeile = neu.positionen.firstWhere((z) => z.id == p.id);
return Kachelbuchung(korb: neu, zeileId: p.id, menge: zeile.quantity);
}
}
final neu = korb.hinzugefuegt(entwurf);
// Ohne Bezeichnung bleibt der Korb unverändert; dann gibt es keine Zeile.
if (identical(neu, korb) || neu.positionen.isEmpty) {
return Kachelbuchung(korb: korb, zeileId: '', menge: 0);
}
return Kachelbuchung(korb: neu, zeileId: neu.positionen.last.id, menge: 1);
}