Fix decimal error in expense form in a hacky way

This commit is contained in:
Peter Smit
2025-09-14 19:31:49 +02:00
parent eb78848601
commit df0a32617d

View File

@@ -148,10 +148,12 @@ export const expenseFormSchema = z
break // noop break // noop
case 'BY_AMOUNT': { case 'BY_AMOUNT': {
const sum = expense.paidFor.reduce( const sum = expense.paidFor.reduce(
(sum, { shares }) => sum + Number(shares), // Total hack, but multiplying by 1000 avoids floating point rounding issues
// The ideal solution is using the group's currency decimal digits to determine the multiplier, but I can't seem to access that here
(sum, { shares }) => sum + Math.round(Number(shares) * 1000),
0, 0,
) )
if (sum !== expense.amount) { if (sum !== Math.round(expense.amount * 1000)) {
const detail = const detail =
sum < expense.amount sum < expense.amount
? `${((expense.amount - sum) / 100).toFixed(2)} missing` ? `${((expense.amount - sum) / 100).toFixed(2)} missing`