paymentsError function
String?
paymentsError(
- List<
KeckPaymentInput> payments, { - required bool cancellation,
- bool payout = false,
Was an der Zahlungsliste nicht stimmt -- null, wenn die Form passt.
Zwilling von gepruefteZahlungen im Client des npm-Pakets, Wortlaut
inklusive; cancellation kehrt das Vorzeichen um und erlaubt refundOf, verbietet
tenderedCents. payout: ein Beleg nur aus Gutschein-Auszahlungen; der
Betrag geht bar hinaus, genau eine Zahlung, negativ, ohne tenderedCents
und ohne tipCents (Server pruefeZahlungen mit Auszahlung).
Implementation
String? paymentsError(List<KeckPaymentInput> payments, {required bool cancellation, bool payout = false}) {
if (payments.length > maxPayments) {
return 'payments: es sind hoechstens $maxPayments Eintraege erlaubt.';
}
final negativ = cancellation || payout;
if (payout) {
if (payments.length != 1) return 'Auszahlung: genau eine Barzahlung angeben.';
final z = payments.single;
if (z.method != KeckPaymentMethod.cash) return 'Auszahlung: nur in bar moeglich.';
if (z.tenderedCents != null) return 'Auszahlung: tenderedCents ist nicht moeglich.';
if (z.tipCents != null) return 'Auszahlung: tipCents ist nicht moeglich.';
}
for (final (i, z) in payments.indexed) {
final nr = i + 1;
if (z.method == KeckPaymentMethod.mixed) {
return 'Zahlung $nr: $mixedNotSentReason';
}
if (negativ ? z.amountCents >= 0 : z.amountCents <= 0) {
return 'Zahlung $nr: amountCents muss eine ganze Zahl ${negativ ? 'kleiner' : 'groesser'} als 0 sein.';
}
final gegeben = z.tenderedCents;
if (gegeben != null && (cancellation || gegeben < z.amountCents)) {
return 'Zahlung $nr: tenderedCents muss eine ganze Zahl von mindestens amountCents sein (nur am Verkauf).';
}
final trinkgeld = z.tipCents;
if (trinkgeld != null && trinkgeld <= 0) {
return 'Zahlung $nr: tipCents muss eine ganze Zahl groesser als 0 sein.';
}
if (z.providerPaymentId != null && z.providerPaymentId!.isEmpty) {
return 'Zahlung $nr: providerPaymentId muss ein nicht-leerer Text sein.';
}
if (z.refundOf != null && (!cancellation || z.refundOf!.isEmpty)) {
return 'Zahlung $nr: refundOf gibt es nur am Storno, als id der Originalzahlung.';
}
}
return null;
}