diff --git a/modules/turnero/api/configurar_tomas.php b/modules/turnero/api/configurar_tomas.php
index 3e041e4..67b5b1a 100644
--- a/modules/turnero/api/configurar_tomas.php
+++ b/modules/turnero/api/configurar_tomas.php
@@ -15,6 +15,7 @@ $body = inputJson();
$token = trim($body['token'] ?? '');
$cfg = $body['tomas_config'] ?? null;
$examType = trim($body['exam_type'] ?? '');
+$otroHora = trim($body['otro_hora'] ?? '');
if (!$token) jsonError('token requerido.');
if (!is_array($cfg) || empty($cfg)) jsonError('tomas_config requerido.');
@@ -42,6 +43,7 @@ if ($tc['datos_respuestas']) {
$dr['_tomas_config'] = $cfg;
if ($examType !== '') $dr['_c8j2g16'] = $examType;
+if ($otroHora !== '') $dr['_otro_hora'] = $otroHora;
$pdo->prepare("UPDATE turnero_consentimientos SET datos_respuestas = ? WHERE id = ?")
->execute([json_encode($dr, JSON_UNESCAPED_UNICODE), $tc['id']]);
diff --git a/ver_formulario_enviado.php b/ver_formulario_enviado.php
index 48b171f..9ce3d9b 100644
--- a/ver_formulario_enviado.php
+++ b/ver_formulario_enviado.php
@@ -1343,11 +1343,12 @@ var _mpTomasConfig = = json_encode($_tomasConfig, JSON_UNESCAPED_UNICODE) ?>
var _mpCfgToken = = json_encode($tokenTurnero, JSON_UNESCAPED_UNICODE) ?>;
var _mpModoTurnero = = json_encode($modoTurnero && $embebido) ?>;
-function _mpGuardarConfig(config, examType, onOk, onErr) {
+function _mpGuardarConfig(config, examType, onOk, onErr, extra) {
var base = window.location.href.split('/ver_formulario_enviado.php')[0];
+ var payload = Object.assign({ token: _mpCfgToken, tomas_config: config, exam_type: examType }, extra || {});
fetch(base + '/modules/turnero/api/configurar_tomas.php', {
method: 'POST', headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ token: _mpCfgToken, tomas_config: config, exam_type: examType })
+ body: JSON.stringify(payload)
})
.then(function(r) { return r.json(); })
.then(function(d) {
@@ -1380,7 +1381,8 @@ function _mpShowCfgPanel(examName, groups, isModify) {
var isSigned = !!savedFirmas[s.firma];
var inSaved = isModify && _mpTomasConfig && _mpTomasConfig[gk]
&& _mpTomasConfig[gk].indexOf(s.firma) !== -1;
- var isActive = isSigned || inSaved;
+ var isMin0 = _mpChipLabel(s.label || '') === '0';
+ var isActive = isSigned || inSaved || (!isModify && isMin0);
var isOtro = /otro/i.test(s.label || '');
var chipLbl = _mpChipLabel(s.label || ('Toma ' + (i+1)));
// checkbox oculto — sigue siendo la fuente de verdad para el guardado
@@ -1584,12 +1586,27 @@ document.getElementById('mp-cfg-iniciar').addEventListener('click', function() {
return;
}
}
+ // Validar que "Otro" tenga hora ingresada
+ var otroHora = '';
+ var otroBtn = document.querySelector('#mp-cfg-grupos .mp-chip[data-otro="1"]');
+ if (otroBtn) {
+ var otroChk = document.getElementById(otroBtn.getAttribute('data-target'));
+ if (otroChk && otroChk.checked) {
+ var otroInp = otroBtn.nextElementSibling;
+ if (otroInp && otroInp.classList.contains('mp-chip-otro-inp')) otroHora = otroInp.value.trim();
+ if (!otroHora) {
+ document.getElementById('mp-cfg-msg').innerHTML =
+ 'Ingrese la hora para la toma "Otro".';
+ return;
+ }
+ }
+ }
var btn = this;
btn.disabled = true; btn.innerHTML = 'Guardando...';
_mpGuardarConfig(byGroup, examName, function() { location.reload(); }, function(e) {
document.getElementById('mp-cfg-msg').innerHTML = '' + e + '';
btn.disabled = false; btn.innerHTML = 'Iniciar protocolo';
- });
+ }, otroHora ? { otro_hora: otroHora } : {});
});
// Botón cerrar panel de config