fix(formularios): pre-fill fecha_hoy and edad in ver_formulario_enviado
- Modo editar: fecha_hoy → type=date prefilled with today; edad → type=number prefilled from paciente.fecha_nacimiento - Modo vista: if no saved value, fecha_hoy shows today's date; edad calculates from DOB instead of skipping Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
f09fcd5b4e
commit
05c7230eda
@@ -642,15 +642,31 @@ function esc2(mixed $v): string {
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<?php continue; endif;
|
<?php continue; endif;
|
||||||
// texto, numero, fecha, hora, y cualquier otro → input
|
// Calculados: pre-llenar si no tienen valor aún
|
||||||
|
if ($tipo === 'fecha_hoy' && $prefill === '') {
|
||||||
|
$prefill = date('Y-m-d');
|
||||||
|
}
|
||||||
|
if ($tipo === 'edad' && $prefill === '') {
|
||||||
|
$fnac = $paciente['fecha_nacimiento'] ?? '';
|
||||||
|
if ($fnac) {
|
||||||
|
$hoy = new DateTime();
|
||||||
|
$bday = new DateTime($fnac);
|
||||||
|
$prefill = (string)$hoy->diff($bday)->y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// texto, numero, fecha, hora, y calculados → input
|
||||||
$inputType = match($tipo) {
|
$inputType = match($tipo) {
|
||||||
'numero' => 'number', 'fecha' => 'date', 'hora' => 'time', default => 'text'
|
'numero', 'edad' => 'number',
|
||||||
|
'fecha', 'fecha_hoy' => 'date',
|
||||||
|
'hora' => 'time',
|
||||||
|
default => 'text'
|
||||||
};
|
};
|
||||||
?>
|
?>
|
||||||
<div class="campo-edit">
|
<div class="campo-edit">
|
||||||
<label><?= $label ?></label>
|
<label><?= $label ?></label>
|
||||||
<input type="<?= $inputType ?>" class="form-control form-control-sm"
|
<input type="<?= $inputType ?>" class="form-control form-control-sm"
|
||||||
name="<?= esc2($cid) ?>" value="<?= esc2($prefill) ?>"<?= $req ?>>
|
name="<?= esc2($cid) ?>" value="<?= esc2($prefill) ?>"<?= $req ?>
|
||||||
|
<?= in_array($tipo, ['edad']) ? 'min="0" max="120"' : '' ?>>
|
||||||
</div>
|
</div>
|
||||||
<?php continue;
|
<?php continue;
|
||||||
endif; // modoEditar
|
endif; // modoEditar
|
||||||
@@ -659,6 +675,16 @@ function esc2(mixed $v): string {
|
|||||||
if ($tipo === 'linked') {
|
if ($tipo === 'linked') {
|
||||||
$lk = $campo['linked_key'] ?? '';
|
$lk = $campo['linked_key'] ?? '';
|
||||||
$valor = $paciente[$lk] ?? $todos[$cid] ?? null;
|
$valor = $paciente[$lk] ?? $todos[$cid] ?? null;
|
||||||
|
} elseif ($tipo === 'fecha_hoy') {
|
||||||
|
$valor = $todos[$cid] ?? date('Y-m-d');
|
||||||
|
} elseif ($tipo === 'edad') {
|
||||||
|
$valor = $todos[$cid] ?? '';
|
||||||
|
if ($valor === '') {
|
||||||
|
$fnac = $paciente['fecha_nacimiento'] ?? '';
|
||||||
|
if ($fnac) {
|
||||||
|
$valor = (string)(new DateTime())->diff(new DateTime($fnac))->y;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$valor = $todos[$cid] ?? null;
|
$valor = $todos[$cid] ?? null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user