INE·EOH v2.5
Encuesta de Ocupación Hotelera · obligatoria cada semana · Instituto Nacional de Estadística

Los que duermen hoy son los que dormían ayer, más los que entran, menos los que salen. El INE comprueba esa igualdad en cada uno de los días que declaras. Si un solo día no cuadra, el fichero vuelve.

Cuadra el mes.
Tú no.

Este generador convierte los exports de Opera Cloud en el XML de la EOH, comprueba en tu portátil las reglas que aplica IRIA y te dice qué falla antes de que lo subas. En uso real desde febrero de 2026 en un hotel de 168 habitaciones: de unas dos horas por período a unos quince minutos.

Vie 24
1,56
Sáb 25
1,86
Dom 26
1,91
Lun 27
2,07
Mar 28
2,16
Mié 29
2,62
Jue 30
4,83

Personas por habitación, semana del 24 al 30 de julio de 2026. Dos días se salen de la banda razonable. Nadie los había mirado nunca — y son la razón de que esta página exista. Seguir el rastro ↓


De Opera Cloud a IRIA

Ocho ficheros entran. Uno sale.

Cada semana el PMS escupe ocho ficheros que no vienen preparados para el INE: ni traen el día escrito, ni usan sus códigos, ni cuadran entre sí. Esto es lo que pasa entre medias.

Extracción 1/3
max(ARRIVAL) = min(DEPARTURE) = —
la foto de la noche se fecha sola

Ninguno de los siete dice de qué día es. Pero en la foto de una noche, el último que llega y el primero que se va comparten fecha: esa identidad los coloca en su sitio aunque lleguen desordenados o mal numerados.

ES→ESP
BR→BRA
FR
FX
→FRA Opera emite dos códigos para Francia. Sin sumarlos antes de escribir, el XML sale con el país partido en dos bloques y las cifras divididas.
‹ ›→error Un código sin nacionalidad ya no se descarta en silencio: para la ejecución.
<ENCUESTA>
  <ALOJAMIENTO dia="24">
    <RESIDENCIA id="FRA">…
  <HABITACIONES>…
</ENCUESTA>
XML_7XML_8 XML_9XML_14 tope 168residencias
Listo

Con los ocho ficheros ya descargados, la ejecución real tarda 2,9 s. Aquí va despacio para que se pueda seguir.

ACTO 1 Extracción

Entran ocho ficheros: el stat_countrybyday con los viajeros por país y día, y siete giratecheck, uno por noche.

Ninguno dice de qué día es. En julio de 2026 llegaron desordenados — el primero era del 27, el tercero del 24. Con el mapeo por nombre se habrían declarado tres días cruzados y nadie se habría enterado, porque el fichero seguiría cuadrando.

ACTO 2 Procesamiento

Opera habla en códigos de dos letras y el INE exige tres. La traducción parece mecánica hasta que un país llega por dos puertas: Francia entra como FR y como FX, un código heredado que el PMS todavía emite.

Se suma por país antes de escribir, no después. Y con las cifras ya reunidas se comprueba el balance de cada día: lo que había, lo que entró, lo que salió.

ACTO 3 Entrega

Sale el XML — y antes de que lo toques, pasa por las mismas reglas que aplicará IRIA: el balance de stock, las pernoctaciones contra las entradas, el tope de habitaciones del establecimiento y los porcentajes sumando cien exacto.

Los errores aparecen en tu portátil, no en el portal. La semana del 24 al 30 de julio se subió sin un solo error de validación a la primera.


El control que lo cazó

Un cociente que no debería subir

Divide las personas que durmieron entre las habitaciones ocupadas. En un hotel el resultado se mueve poco: entre 1,2 y 2,3. Es un número aburrido, y por eso sirve — cuando se dispara, algo falta en la fuente.

24252627282930
Banda razonable · 1,20 – 2,30 Fuera de banda

La causa: el informe de Opera solo trae reservas ya salidas. Quien seguía alojado no aparecía en ningún fichero, y cuanto más cerca estaba el día de la fecha de descarga, más gente faltaba. El día 30 el hotel iba casi lleno y el fichero declaraba 58 habitaciones.

929 habitaciones-noche reales
711 las que se iban a declarar
+31 % RevPAR recuperado
+0,6 % ADR · casi no se movió

Que el RevPAR suba un 31 % mientras el ADR se mueve un 0,6 % dice qué clase de fallo era: no faltaba un segmento entero de clientes, faltaba volumen. Las habitaciones ausentes se vendían al mismo precio que las demás.


Antes de subir nada

Seis comprobaciones en tu portátil

El validador reproduce en local las reglas del portal. Descubrir un error aquí cuesta un minuto; descubrirlo en IRIA cuesta volver a empezar.

ReglaQué verifica
XML_7Las pernoctaciones de un día son mayores o iguales que las entradas de ese día.
XML_8 · XML_9El balance de stock cuadra en toda la serie: lo de ayer, más lo que entra, menos lo que sale.
Tope de plazasNo se declaran más habitaciones de las que tiene el establecimiento.
XML_14Los porcentajes por tipo de cliente suman 100,00 exacto, repartidos por resto mayor.
ResidenciasUn solo bloque por país, aunque el PMS haya usado varios códigos para él.
Personas / habitaciónContrasta las dos fuentes entre sí. Fuera de la banda 1,20–2,30, avisa.

Lo que esto todavía no hace

Cuatro cosas que declara mal

Auditadas en agosto de 2026 y pendientes de corregir. Están aquí porque quien vaya a confiarle una declaración obligatoria merece leerlas antes, no después.

El desglose por comunidad es una estimación

Los totales de España son reales. El reparto entre comunidades no: ninguna de las dos fuentes de Opera trae la provincia, así que se reparte con pesos fijos.

El primer día se reconstruye

Se declara con todas las entradas y ninguna salida, en vez de derivarlo del saldo del día anterior que el propio PMS aporta.

Un día de más al cerrar el mes

El bloque de viajeros se extiende hasta fin de mes y el de habitaciones no, de ahí la asimetría de columnas que se ve en el cuestionario.

El país en blanco desaparece

Un huésped sin nacionalidad grabada en Opera se cae del recuento sin que nadie avise.

Las cuatro sobrevivieron a un fichero que IRIA aceptó sin una sola queja, y esa es la lección que vale para cualquier declaración: el portal valida coherencia interna, no realidad. Un XML puede ser aritméticamente impecable y describir un hotel que no existió.