'use strict'; const NOTES_MAX_LENGTH = 5000; const toNonNegativeNumber = (value) => { const n = Number(value); if (!Number.isFinite(n) || n < 0) return 0; return n; }; const normalizeDiscount = (discount, amount) => { return Math.min(toNonNegativeNumber(discount), toNonNegativeNumber(amount)); }; const getPayableAmount = (payment = {}) => { const amount = toNonNegativeNumber(payment.amount); return amount - normalizeDiscount(payment.discount, amount); }; const sanitizeNotes = (notes) => { if (notes == null) return ''; return String(notes).trim().slice(0, NOTES_MAX_LENGTH); }; module.exports = { NOTES_MAX_LENGTH, getPayableAmount, normalizeDiscount, sanitizeNotes };