fix: no usar firma_svg global como fallback cuando hay datos por-campo

Formularios con 2 campos firma (consentimiento + disentimiento)
mostraban la firma del campo 2 también en el campo 1 porque
firma_svg se usaba como fallback del primer campo. Ahora si
datos_respuestas ya tiene algún _svg, se confía solo en los datos
por-campo y se ignora el fallback global.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-22 21:57:34 -05:00
co-authored by Claude Sonnet 4.6
parent 136b123cc0
commit 868263fe6f
+5 -2
View File
@@ -888,8 +888,11 @@ function _addExamWizardHtml(string $cid): string {
// Firma global del profesional (un solo valor para todos los campos firma_profesional)
$firmaSharedProfesional = $envio['firma_profesional_svg'] ?? null;
// Firma global del paciente: fallback para cuando no hay datos_cliente por campo
// Firma global del paciente: fallback solo para registros sin datos por-campo (_svg).
$firmaSharedPaciente = $envio['firma_svg'] ?? null;
// Si datos_respuestas ya tiene algún campo _svg, no usar firma_svg global como fallback
// (evita mostrar la firma del disentimiento en el campo de consentimiento y viceversa).
$_hayDatosPerCampoSvg = !empty(array_filter(array_keys($datosCliente ?? []), fn($k) => str_ends_with($k, '_svg')));
// Rastrear si ya se renderizó la firma inline (para no duplicarla al pie)
$_renderedFirmaProfesional = false;
@@ -964,7 +967,7 @@ function _addExamWizardHtml(string $cid): string {
? (empty($_mpMap) && !$_renderedFirmaProfesional
? ($firmaSharedProfesional ?? $datosCliente[$cid] ?? $datosCliente[$cid . '_svg'] ?? null)
: ($datosCliente[$cid] ?? $datosCliente[$cid . '_svg'] ?? null))
: ($datosCliente[$cid . '_svg'] ?? (!$_firmaGlobalPacienteUsada ? $firmaSharedPaciente : null) ?? null);
: ($datosCliente[$cid . '_svg'] ?? (!$_firmaGlobalPacienteUsada && !$_hayDatosPerCampoSvg ? $firmaSharedPaciente : null) ?? null);
$fFoto = $datosCliente[$cid . '_foto'] ?? null;
$fIcon = $isPro ? 'fa-user-md' : 'fa-signature';
$fColor = $isPro ? '#198754' : '#1565c0';