feat: editar desde el resumen sin rehacer el formulario

Cancelar obligaba a empezar de cero por una fecha mal puesta. El resumen suma
un tercer boton —WhatsApp admite tres y usaba dos—: Editar lista los campos ya
cargados con su valor, se elige uno, se corrige y se vuelve derecho al resumen.

Los campos que alimentan a otros declaran 'invalida' en el seed: cambiar el
tipo de ausentismo borra el motivo y lo vuelve a preguntar, acotado al tipo
nuevo. Sin eso quedaba un motivo de Incapacidad dentro de un Permiso y el ERP
recibia datos incoherentes sin que nadie lo notara.

El motor engancha en un solo lugar, capAskNext: mientras queden campos sin
valor los pregunta en cadena, y cuando no queda ninguno vuelve al resumen en
vez de seguir el orden del formulario. Aplica a los cinco flujos de carga.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-20 22:59:25 -05:00
co-authored by Claude Sonnet 4.6
parent 6616b63683
commit 52dbd1e203
3 changed files with 138 additions and 0 deletions
+9
View File
@@ -448,6 +448,8 @@ $configJson = [
// Primero el grupo general: 17 motivos en una sola lista
// llegaban con el nombre cortado y costaban de entender
'key' => 'grupo_novedad',
// Al cambiarlo se vuelve a preguntar: el motivo pertenece al tipo elegido
'invalida' => ['novedad_id'],
'label' => 'Tipo',
'type' => 'select',
'prompt' => '¿Qué tipo de ausentismo?',
@@ -592,6 +594,7 @@ $configJson = [
],
[
'key' => 'lote_id',
'label' => 'Lote',
'type' => 'select',
'prompt' => 'Elige el lote (entre paréntesis va lo que falta):',
@@ -662,6 +665,7 @@ $configJson = [
],
[
'key' => 'lote_id',
'label' => 'Lote',
'type' => 'select',
'prompt' => '¿En qué lote?',
@@ -704,6 +708,9 @@ $configJson = [
'fields' => [
[
'key' => 'tipo',
// Al cambiarlo se vuelve a preguntar: el catálogo de labores
// y el producto dependen del tipo elegido
'invalida' => ['novedad_id', 'producto_id'],
'label' => 'Tipo',
'type' => 'static_select',
'prompt' => '¿Qué vas a registrar?',
@@ -732,6 +739,8 @@ $configJson = [
],
[
'key' => 'lote_id',
// Al cambiarlo se vuelve a preguntar: la dosis sale de la fertilizacion de ese lote
'invalida' => ['producto_id'],
'label' => 'Lote',
'type' => 'select',
'prompt' => '¿En qué lote?',