diff --git a/apps/hq-web/src/pages/ClientDetail.tsx b/apps/hq-web/src/pages/ClientDetail.tsx index bcf47a3..fbd133c 100644 --- a/apps/hq-web/src/pages/ClientDetail.tsx +++ b/apps/hq-web/src/pages/ClientDetail.tsx @@ -144,7 +144,9 @@ export function ClientDetail() { )} { ledger.reload(); cms.reload() }} + // amc.reload too: AMC paid state derives from settlement, so a payment + // must flip the Paid badge live (Task 12 walk §3.4). + onDone={() => { ledger.reload(); cms.reload(); amc.reload() }} /> {ledger.data !== undefined && ledger.data.payments.length > 0 && ( ) => { setBusy(true); props.onError('') - p.then(props.onDone).catch((e: Error) => props.onError(e.message)).finally(() => setBusy(false)) + p.catch((e: Error) => props.onError(e.message)) + // Reload even on failure: the server has already parked the reminder as + // 'failed' with its error, and the row must flip live (Task 12 walk §3.2). + .then(props.onDone) + .finally(() => setBusy(false)) } return (