# Manual de usuario — Generador de datos específicos

## Para qué sirve

Esta herramienta te ayuda a preparar los **datos específicos** de un procedimiento sin escribir todo el HTML a mano.

A partir de una lista de campos (CSV, paleta o HTML existente) obtienes:

1. **HTML** listo para pegar en Tramita.
2. **Traducciones** en gallego y castellano.
3. **Texto para la plantilla** del documento (apartado «Script FreeMarker»).

## Antes de empezar

Ten a mano el **código del procedimiento** (por ejemplo `MRO00C`).

La ruta de traducción suele ser `datosEspecificos`; no la cambies salvo que ya uses otra en tu procedimiento.

## Pasos habituales

1. Escribe el **código de procedimiento** en el paso 1.
2. Añade campos con los botones de la paleta (o arrástralos a la zona central), **o** importa un CSV / HTML.
3. Rellena **Id**, **texto en galego** y **texto en castellano** de cada fila.
4. Si alguna fila sale **marcada en amarillo**, corrígela antes de seguir.
5. Pulsa **Xerar HTML**.
6. Copia o descarga el resultado.

## Tipos de campo (resumen)

| Botón | Qué es |
| :--- | :--- |
| CHK | Casilla de verificación (sí / no) |
| OUT | Casilla «Outros» + caja de texto que se muestra al marcarla |
| N | Número (fuera de un grupo de opciones) |
| D | Número decimal |
| IMP | Importe en euros |
| F | Fecha |
| P, M, G | Texto corto, medio o largo |
| E, S | Texto en caja grande |
| C | Texto libre |
| LEG | Título de bloque |
| GRP | Grupo que se puede abrir y cerrar |
| RAD | Grupo de opciones excluyentes (radios) |

### Opciones excluyentes (radios)

1. Pulsa **RAD** y pon el Id del grupo (ej.: `NAT_SOL`).
2. Añade varias filas **N** dentro del grupo (cada una es una opción).
3. Cierra con **Pechar radios**.

Fuera de un grupo RAD, el botón **N** crea un campo numérico normal.

## Patrones oficiales (Tramita / Axuda)

El generador emite el HTML canónico alineado con la ayuda de formularios Tramita:

| Tipo | Patrón |
| :--- | :--- |
| Checkbox | `hidden` valor `0` + checkbox valor `1` con `th:text` en el propio input |
| Outros (OUT) | Igual que checkbox + textarea asociada (`CHECK_OUTROS` → `OUTROS`) + script jQuery show/hide |
| Fecha (F) | `has-feedback` + `form-control date` + `form="formTramite"` + icono calendario |
| Decimal (D) / Importe | clase `bigDecimalClass` (validación de teclado documentada en Axuda) |

Claves Thymeleaf fijas **sin** `__` (canónico SSTS): `*{mapaValores[CLAVE]}`. El generador ya emite así.

El tipo **OUT** pide el Id del checkbox (ej. `CHECK_OUTROS`); si escribes solo `OUTROS`, se antepone `CHECK_`. La caja de texto usa el Id sin el prefijo `CHECK_`.

Si el HTML importado trae el script **jQuery básico** (`jquery.min.js` del vendor), se reconoce (no sale como omitido) y se vuelve a emitir al generar.

## Clave de traducción (i18n)

No hace falta escribirla a mano: la herramienta la rellena en la columna **Clave** con este aspecto:

```text
MRO00C.datosEspecificos.NOMBRE_DEL_CAMPO
```

Solo cámbiala si necesitas una clave distinta a la automática.

## Importar desde CSV

1. Descarga el **ejemplo** del paso 3.
2. Edítalo con Excel o un editor de texto (separador `;`).
3. Sube el fichero e importa.

Columnas principales:

| Columna | Qué poner |
| :--- | :--- |
| Tipo | Código del tipo (`N`, `F`, `checkbox`, etc.) |
| Codigo | Id del campo |
| Nome_gl / Nome_es | Texto visible en galego y castellano |
| Clave | Solo si quieres forzar una clave distinta |
| Valor | Solo para opciones de un grupo RAD |

## Importar HTML (paso 4)

Sirve para **modernizar** un fragmento antiguo: detectar campos → cargar la lista → revisar → **Xerar** con el patrón canónico.

1. Sube un `.html` o pégalo en el área de texto.
2. Pulsa **Detectar e cargar**. Si el HTML trae claves `#{CODIGO.…}` (ej. `ED601C.datosEspecificos.…`), se rellena solo el **código de procedimiento** del paso 1 (y la ruta i18n si se puede deducir).
3. Revisa la lista (amarillo = falta etiqueta o id).
4. Si hay aviso de **omitidos**, se abre un modal con el **código HTML original** no interpretado (scripts, selects, tablas…). Puedes **copiarlo** y decidir pegarlo a mano o adaptarlo. El botón **Ver código** reabre ese modal.
5. Completa traducciones si hace falta y pulsa **Xerar HTML**.

Consejo: si el HTML solo tiene `th:text="#{…}"` sin texto visible, las etiquetas saldrán vacías; pega HTML ya renderizado (Inspeccionar en el navegador) o rellena galego/castellano a mano.

## Si algo no te deja avanzar

### Marca amarilla en el código de procedimiento

Escribe el código en el paso 1 (ej.: `MRO00C`).

### Marca amarilla en el Id de un campo

Formato correcto:

- Empieza por **letra**.
- Después solo **letras**, **números** o **guión bajo** `_`.
- Ejemplos válidos: `NUM_EXP`, `DATA_RESPONSABILID`, `CHECK_OUTROS`.

### Marca amarilla en galego o castellano

Falta el texto en uno de los dos idiomas. Rellena ambas columnas.

### Error al crear un rango de campos

| Situación | Formato correcto |
| :--- | :--- |
| Rango numérico | Números enteros; «Desde» menor o igual que «Ata» (ej.: 1 a 3) |
| Rango de letras | Una letra minúscula en cada casilla (ej.: `a` a `c`) |
| Prefijo del id | Igual que el Id: letra inicial + letras, números o `_` (ej.: `CHK_`) |
| Demasiados campos | Máximo 201 en un solo rango |

## Resultado

Tras **Xerar HTML** tendrás tres bloques:

- **HTML** — pégalo en la pantalla de datos específicos del procedimiento.
- **Traducións** — pégalo en el apartado de traducciones de Tramita.
- **Script FreeMarker** — úsalo en la plantilla del documento; las variables se generan solas para que las coloques donde quieras.

## Descargas

Desde la propia pantalla puedes descargar:

- Este manual.
- Un CSV de ejemplo con todos los tipos de campo.
- El HTML generado.
