paymentsError function
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.
Implementation
String? paymentsError(List<KeckPaymentInput> payments, {required bool cancellation}) {
if (payments.length > maxPayments) {
return 'payments: es sind hoechstens $maxPayments Eintraege erlaubt.';
}
for (final (i, z) in payments.indexed) {
final nr = i + 1;
if (z.method == KeckPaymentMethod.mixed) {
return 'Zahlung $nr: $mixedNotSentReason';
}
if (cancellation ? z.amountCents >= 0 : z.amountCents <= 0) {
return 'Zahlung $nr: amountCents muss eine ganze Zahl ${cancellation ? '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;
}