diff --git a/frontend/src/pages/FloatManagement.tsx b/frontend/src/pages/FloatManagement.tsx index 3135ff0..ed49cd0 100644 --- a/frontend/src/pages/FloatManagement.tsx +++ b/frontend/src/pages/FloatManagement.tsx @@ -76,12 +76,13 @@ function FloatRecordPrint({ record, changeTinTargets, onClose, closeLabel = 'New // Build exchange table for change tin: surplus → "to bank", shortfall → "in exchange" const exchangeRows = isTin ? CHANGE_TIN_DENOMS.map(d => { - const tgt = parseFloat(String(changeTinTargets[d.value.toFixed(2)] ?? 0)) - if (tgt <= 0) return null const denom = record.denominations.find(x => Math.abs(parseFloat(x.denomination_value) - d.value) < 0.001) + // Use per-denom target from the saved record (backend populates this); fall back to current settings + const tgt = parseFloat(String(denom?.target ?? changeTinTargets[d.value.toFixed(2)] ?? 0)) const counted = parseFloat(denom?.total_amount ?? '0') const diff = counted - tgt - if (Math.abs(diff) < 0.005) return null + if (Math.abs(diff) < 0.005) return null // at par — nothing to exchange + if (diff < 0 && tgt <= 0) return null // shortfall but no target set — skip return { label: d.label, toBank: diff > 0 ? diff : 0,