cashPayment function
Die Barzahlung aus der Kassierrechnung als Eintrag fuer payments --
mit tenderedCents, damit das Backend Gegeben und Rueckgeld am Beleg
fuehrt und der Bon sie zeigt.
amountCents ist der Teil, der bar bezahlt wird; ohne Angabe alles, was
der Gast gibt (CheckoutTotals.totalCents, also samt Trinkgeld -- der
Zahlbetrag des Backends zaehlt das Mitarbeiter-Trinkgeld mit). Bei
mehreren Zahlungen ist es der Rest nach den Karten.
tenderedCents geht nur mit, wenn das Rueckgeld gerechnet wird
(CheckoutTotals.cash) und das Gegebene den Betrag deckt: zu wenig
Gegebenes lehnte der Server ab (payment_tendered_invalid), und ein Beleg
darf an einer Anzeige-Angabe nicht scheitern.
Implementation
KeckPaymentInput cashPayment(CheckoutTotals invoice, {int? amountCents}) {
final betrag = amountCents ?? invoice.totalCents;
final gegeben = invoice.tenderedCents;
return KeckPaymentInput(
method: KeckPaymentMethod.cash,
amountCents: betrag,
tenderedCents: invoice.cash && gegeben != null && gegeben >= betrag ? gegeben : null,
);
}