documents/generate: fix null.toFixed em loadAllVariables (isFinite global e enganoso)

loadVariables falhava com TypeError quando nao havia sessao
vinculada (agendaEventoId=null) E o user nao passava extras.valor.
Stack: 'Cannot read properties of null (reading toFixed)'.

Causa: usei isFinite() global em vez de Number.isFinite():
  isFinite(null) => true    (coerce: Number(null) === 0)
  Number.isFinite(null) => false

Como isFinite(null) retorna true, o codigo entrava no branch
`valorNum.toFixed(2)` e crashava. Com isso, loadAllVariables
inteiro estourava e variables.value zerava — explicando os
inputs todos vazios mesmo com paciente/perfil/clinica preenchidos.

Fix: trocar isFinite por Number.isFinite (versao strict, nao
coerce null/undefined/string).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-21 22:04:58 -03:00
parent 512bcc979c
commit 4f05c2cf1b
+5 -3
View File
@@ -268,16 +268,18 @@ export async function loadAllVariables(patientId, agendaEventoId = null, extras
});
}
// Resolve valor numérico (extras tem prioridade sobre session)
// Resolve valor numérico (extras tem prioridade sobre session).
// Number.isFinite (strict) em vez de isFinite global: este último coerce
// null pra 0 e retorna true, fazendo null.toFixed crashar logo abaixo.
const valorNum = extras.valor != null
? Number(extras.valor)
: (session.valor ? Number(String(session.valor).replace(/[R$\s.]/g, '').replace(',', '.')) : null);
const valorFormatted = isFinite(valorNum)
const valorFormatted = Number.isFinite(valorNum)
? `R$ ${valorNum.toFixed(2).replace('.', ',')}`
: (session.valor || '');
const valorExtensoStr = isFinite(valorNum) ? valorExtenso(valorNum) : '';
const valorExtensoStr = Number.isFinite(valorNum) ? valorExtenso(valorNum) : '';
const merged = {
...patient,