fix(pos): clamp payment amount to total + allow 1c tolerance for rounding
This commit is contained in:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user