Problems › JavaScript › payments
How much of this can still be refunded
An agent asks to refund an amount against an order that may already have been partly refunded.
- Never refund more than what is left of the original payment.
- Never return a negative figure, whatever the inputs say.
- A request for zero or less refunds nothing.
refundableAmount(paid: int, refunded: int, requested: int) → int
Where you start
function refundableAmount(paid, refunded, requested) {
}
Worked examples
| Call | Result |
|---|---|
refundableAmount(1000, 200, 500) | 500 |
refundableAmount(1000, 200, 900) | 800 |
refundableAmount(1000, 1000, 50) | 0 |
refundableAmount(1000, 0, -5) | 0 |
Hint
Work out what remains, then take the smaller of that and the request — floored at zero.
Reference solution in JavaScript
function refundableAmount(paid, refunded, requested) {
if (requested <= 0) return 0;
const left = paid - refunded;
if (left <= 0) return 0;
return Math.min(left, requested);
}