fix(pos): clamp payment amount to total + allow 1c tolerance for rounding

This commit is contained in:
Deploy
2026-08-26 23:25:53 +02:00
parent be1f014260
commit 642fe037c2
4 changed files with 27 additions and 6 deletions

View File

@@ -111,7 +111,10 @@ export function validatePaymentAllocations(
};
});
const allocatedCents = validated.reduce((sum, payment) => sum + payment.amountCents, 0);
if (allocatedCents > totalCents) {
// Allow up to 1 cent tolerance for rounding differences between the front-end
// POS calculation (which uses cached prices) and the back-end canonical total
// (which re-reads the catalogue under a transaction).
if (allocatedCents - totalCents > 1) {
throw new AppError(
400,
'POS_PAYMENT_OVERPAYMENT',