kassierrechnung function
Kassierrechnung
kassierrechnung(
- Warenkorb warenkorb,
- KasseSettingsBetrieb betrieb,
- Kassierstand stand
Die ganze Rechnung des Kassierens — Zwilling von kassierenRechnung der
Browser-Kasse.
Trinkgeld erhöht, was der Gast gibt, nicht den Belegbetrag. Der Beleg trägt den Warenwert; das Trinkgeld bucht das Backend als eigene Positionen. Für das Rückgeld zählt trotzdem beides zusammen — sonst bekäme der Gast sein Trinkgeld als Wechselgeld zurück.
Implementation
Kassierrechnung kassierrechnung(Warenkorb warenkorb, KasseSettingsBetrieb betrieb, Kassierstand stand) {
final summe = warenkorb.summeCents;
final rabatt = stand.rabattCents > summe ? summe : (stand.rabattCents < 0 ? 0 : stand.rabattCents);
final zahlen = zuZahlen(warenkorb, rabatt);
final trinkgeld = betrieb.trinkgeld && stand.trinkgeldCents > 0 ? stand.trinkgeldCents : 0;
final gesamt = zahlen + trinkgeld;
final bar = stand.zahlungsart == KeckPaymentMethod.cash && betrieb.rueckgeld;
final gegeben = bar ? stand.gegebenCents : null;
final pruefung = abschlussPruefung(
zahlungsart: stand.zahlungsart,
zuZahlen: gesamt,
gegeben: stand.gegebenCents,
rueckgeldAn: betrieb.rueckgeld,
leer: warenkorb.istLeer,
);
return Kassierrechnung(
summeCents: summe,
rabattCents: rabatt,
zuZahlenCents: zahlen,
trinkgeldCents: trinkgeld,
gesamtCents: gesamt,
bar: bar,
gegebenCents: gegeben,
// Nichts getippt heißt nicht „zu wenig": der Kassier ist schlicht noch
// nicht fertig, und dafür gibt es keine rote Meldung.
fehltCents: bar && gegeben != null && gegeben > 0 && gegeben < gesamt ? gesamt - gegeben : 0,
rueckgeldCents: bar && gegeben != null ? rueckgeld(gesamt, gegeben) : 0,
bereit: pruefung.bereit,
grund: pruefung.grund,
);
}