{
  "version": "2026-08-06",
  "freemarkerVersion": "2.3.16",
  "tagSyntax": "square_bracket",
  "source": "Referencia bloques 2/3 de plantillas + estructuras FreeMarker (Hash). No se carga solo: hay que apuntarlo con Catálogo… o catalog.properties. Para demo inventada: examples/bloques.ejemplo.json.",
  "structures": [
    {"name": "if", "description": "Condicional FreeMarker", "insert": "[#if condicion]\n\n[/#if]"},
    {"name": "if / else", "description": "Condicional con else", "insert": "[#if condicion]\n\n[#else]\n\n[/#if]"},
    {"name": "list", "description": "Iteración", "insert": "[#list elementos as elemento]\n\n[/#list]"},
    {"name": "assign", "description": "Asignación", "insert": "[#assign nombre = valor]"},
    {"name": "function", "description": "Definición de función", "insert": "[#function nombre parametro=\"\"]\n  [#return '']\n[/#function]"},
    {"name": "macro", "description": "Definición de macro", "insert": "[#macro nombre]\n[/#macro]"},
    {"name": "Comentario", "description": "Comentario FreeMarker", "insert": "[#-- comentario --]"},
    {"name": "Hash vacío", "description": "Hash (mapa) vacío", "insert": "[#assign mapa = {}]"},
    {"name": "Hash con claves", "description": "Hash literal con pares clave/valor", "insert": "[#assign mapa = {\"clave\": \"valor\", \"otra\": \"valor2\"}]"},
    {"name": "Secuencia de hash vacía", "description": "Lista vacía de hashes", "insert": "[#assign filas = []]"},
    {"name": "Secuencia de hash", "description": "Lista de hashes (p. ej. filas de tabla)", "insert": "[#assign filas = [{\"clave\": \"valor1\"}, {\"clave\": \"valor2\"}]]"}
  ],
  "variables": [
    {"name":"Procedemento","description":"Código identificador do procedemento administrativo.","insert":"${Procedemento}"},
    {"name":"Expediente","description":"Número ou código completo do expediente actual.","insert":"${Expediente}"},
    {"name":"NIF","description":"NIF/NIE da persoa solicitante.","insert":"${NIF}"},
    {"name":"Solicitante","description":"Nome completo do solicitante con iniciais en maiúsculas.","insert":"${Solicitante}"},
    {"name":"Representante","description":"Nome completo do representante legal con iniciais en maiúsculas.","insert":"${Representante}"},
    {"name":"NIFRepresentante","description":"NIF/NIE da persoa representante.","insert":"${NIFRepresentante}"},
    {"name":"numRexistro","description":"Número de rexistro de entrada.","insert":"${numRexistro}"},
    {"name":"Xefatura","description":"Xefatura territorial asignada.","insert":"${Xefatura}"},
    {"name":"Enderezo","description":"Dirección completa nunha liña.","insert":"${Enderezo}"},
    {"name":"EnderezoCompacto","description":"Dirección compacta.","insert":"${EnderezoCompacto}"},
    {"name":"EnderezoVertical","description":"Dirección formateada en tres liñas.","insert":"${EnderezoVertical}"},
    {"name":"EnderezoVerticalCompacto","description":"Dirección vertical compacta.","insert":"${EnderezoVerticalCompacto}"},
    {"name":"telefonoNotificacion","description":"Teléfono de contacto.","insert":"${telefonoNotificacion}"},
    {"name":"emailNotificacion","description":"Correo de contacto.","insert":"${emailNotificacion}"},
    {"name":"Destinatario","description":"Nome da persoa destinataria.","insert":"${Destinatario}"},
    {"name":"enderezoDestinatario","description":"Dirección postal da persoa destinataria.","insert":"${enderezoDestinatario}"},
    {"name":"DataSolicitude","description":"Data de solicitude en dd/MM/yyyy.","insert":"${DataSolicitude}"},
    {"name":"DataSolicitudeTexto","description":"Data de solicitude en formato longo.","insert":"${DataSolicitudeTexto}"},
    {"name":"DataOrde","description":"Data da orde da convocatoria.","insert":"${DataOrde}"},
    {"name":"DataDOGA","description":"Data de publicación no DOGA.","insert":"${DataDOGA}"},
    {"name":"NumDOGA","description":"Número de DOGA.","insert":"${NumDOGA}"},
    {"name":"Ano","description":"Ano da convocatoria.","insert":"${Ano}"},
    {"name":"DataRenuncia","description":"Data de renuncia do trámite PX007A.","insert":"${DataRenuncia}"},
    {"name":"DataLimite","description":"Data límite de xustificación.","insert":"${DataLimite}"},
    {"name":"DataEsgotamentoCredito","description":"Data de esgotamento de crédito.","insert":"${DataEsgotamentoCredito}"},
    {"name":"dataMaximaSolicitude","description":"Data e hora límite da solicitude.","insert":"${dataMaximaSolicitude}"},
    {"name":"interesadosConEnderezo","description":"Interesados con enderezos en varias liñas.","insert":"${interesadosConEnderezo}"},
    {"name":"interesadosNIFs","description":"Interesados co NIF, separados por comas.","insert":"${interesadosNIFs}"}
  ],
  "functions": [
    {"name":"importe","description":"Formatea un importe de texto.","insert":"${importe(valor)}"},
    {"name":"data","description":"Formatea unha data de texto en formato longo.","insert":"${data(valor)}"},
    {"name":"dataNum","description":"Formatea unha data de texto en dd/MM/yyyy.","insert":"${dataNum(valor)}"},
    {"name":"dataHora","description":"Data + hora en formato longo.","insert":"${dataHora(valor)}"},
    {"name":"datoExpediente","description":"Obtén unha CLAVE do expediente.","insert":"${datoExpediente('CLAVE')}"},
    {"name":"datoTramite","description":"Obtén unha CLAVE do trámite actual.","insert":"${datoTramite('CLAVE')}"},
    {"name":"datoOutroTramite","description":"Obtén unha CLAVE dun trámite anterior.","insert":"${datoOutroTramite('COD_TRAMITE', 'CLAVE')}"},
    {"name":"getDatoPrevalente","description":"Busca no trámite actual, resolución e proposta.","insert":"${getDatoPrevalente('CLAVE')}"},
    {"name":"dataFirma","description":"Data de sinatura do trámite indicado.","insert":"${dataFirma('COD_TRAMITE')}"},
    {"name":"dataNotificacion","description":"Data de notificación do trámite indicado.","insert":"${dataNotificacion('COD_TRAMITE')}"},
    {"name":"dataPostaDisposicion","description":"Data de posta a disposición.","insert":"${dataPostaDisposicion('COD_TRAMITE')}"},
    {"name":"dataLectura","description":"Data de lectura do trámite.","insert":"${dataLectura('COD_TRAMITE')}"},
    {"name":"asinantes","description":"Nome e cargo dos asinantes.","insert":"${asinantes()}"},
    {"name":"asinantesCN","description":"Cargo e nome dos asinantes.","insert":"${asinantesCN()}"},
    {"name":"palabrasIniciaisMaiusculas","description":"Inicial maiúscula por palabra.","insert":"${palabrasIniciaisMaiusculas(texto)}"},
    {"name":"formatoTexto","description":"MAIUSCULAS / MINUSCULAS / PRIMEIRA_MAIUSCULA.","insert":"${formatoTexto(texto, 'MAIUSCULAS')}"},
    {"name":"se","description":"Comproba contido ou igualdade.","insert":"se(valor, 'VALOR')"},
    {"name":"seNon","description":"Negación de se.","insert":"seNon(valor, 'VALOR')"},
    {"name":"estaVacio","description":"True se null/baleiro.","insert":"estaVacio(valor)"},
    {"name":"obtenerTextoInteresados","description":"Interesados e enderezo vertical.","insert":"${obtenerTextoInteresados()}"},
    {"name":"obtenerNifInteresados","description":"Interesados con NIF.","insert":"${obtenerNifInteresados()}"},
    {"name":"obtenerDatosInfracciones","description":"Obxecto de infraccións do expediente.","insert":"${obtenerDatosInfracciones()}"}
  ]
}
