Reportes financieros

Esta es la guía operativa de Finanzas → Reportes, Portafolio y
Cargos: qué ganó y qué movió el hotel en una ventana, y de dónde sale cada
cifra
.

Se apoya en otras dos guías: las cuentas y los movimientos de
Finanzas, de donde sale el bloque de caja, y los
perfiles de Impuestos, de donde sale el impuesto del
bloque devengado.

Devengado y caja son dos preguntas distintas

Todo reporte muestra dos bloques que no se mezclan:

  • Ganado en el período (devengado) — lo que se ganó, publicado en la noche
    en que se dio el servicio, sin importar cuándo se cobró.
  • Movido en el período (caja) — lo que efectivamente entró y salió, publicado
    el día en que se movió el dinero.

Una estadía vendida en enero y pagada en marzo está en el devengado de enero y
en la caja de marzo, y ninguna de las dos está mal.

No hay línea de conciliación entre los dos bloques, y ninguna pantalla los
combina en una sola cifra.
La diferencia entre ellos en una ventana no es un
error que explicar en letra chica: es el capital de trabajo del negocio. Un hotel
que vende mucho y cobra tarde tiene un devengado alto y una posición de caja
delgada, y eso es información, no una discrepancia.

Cada moneda va por su cuenta. Todos los reportes devuelven mapas por moneda.
Cuando hay más de una, aparece un selector arriba a la derecha y se mira una a la
vez. Nunca se suman y no hay total consolidado.

Ninguna cifra se calcula del lado del cliente. Totales, desgloses y
porcentajes de variación llegan todos en el mismo payload. La API divide sus
propias cifras actual y anterior, y eso es lo que mantiene a cada pantalla
comparando contra la misma base. Lo que produce un detalle que se nota rápido:
cuando una variación no se puede calcular — porque el período anterior fue cero o
negativo — sale un guion, nunca 0% y nunca ∞. Un guion dice no hay contra
qué comparar
, que es la verdad.

Antes de empezar

Tres cosas tienen que estar puestas para que los reportes digan algo:

  1. La moneda de la propiedad, que decide qué bloque abre seleccionado. El
    campo es el contrato: la pantalla no elige por posición en una lista, porque
    así es como un hotel en USD termina con su reporte encabezado por los pesos que
    cobró una vez.
  2. El catálogo de monedas, que decide cuántos decimales lleva cada moneda.
    Una moneda sin decimales (CLP, JPY) no muestra centavos.
  3. Los perfiles de impuestos, si uno quiere que el bloque devengado separe el
    impuesto del neto. Sin perfiles activos, todo se publica con el neto igual al
    bruto.

En los reportes mismos no hay nada que configurar.

La ventana

Todas las pantallas excepto Resumen comparten un selector de rango y un mismo
conjunto de reglas:

  • Los dos extremos van juntos o no va ninguno. Un rango elegido a medias se
    trata como sin ventana, y sin ventana el backend responde con el mes en
    curso de la propiedad
    . Mandar un solo extremo sería un rechazo, así que la
    pantalla ni lo intenta.
  • La ventana se lee en la zona horaria de la propiedad. Un cargo de la noche
    del 31 pertenece al 31 del hotel, no al 1 en UTC.
  • 366 días como máximo. El reporte recorre la ventana dos veces — esta y la
    anterior — y más allá de eso la petición se rechaza.

Bajo el selector siempre hay una línea que declara la ventana que resolvió el
backend
y contra cuál está comparando. Se lee de la respuesta, no del selector:
sin ventana elegida, es la única forma de saber qué mes respondió.

Reportes

Cuatro pestañas, cada una con su propia URL, así que se pueden enlazar y el botón
de atrás funciona.

Resumen

La propiedad ahora mismo: qué tiene, qué ganó y movió este mes, y qué sigue
debiéndose.

No tiene selector de ventana a propósito — siempre es el mes en curso. Para otra
ventana va la pestaña Período.

Arriba, dos tarjetas que no están acotadas al período y lo dicen con una
etiqueta de histórico:

  • Saldos — lo que dejaron los movimientos de esta propiedad en las cuentas
    financieras de la cuenta. Una cuenta que nunca movió dinero acá no aparece, que
    es lo que distingue esta tarjeta de Finanzas → Cuentas, que las lista todas.
  • Cuentas por cobrar — el saldo pendiente de toda la propiedad, con su propia
    fecha de corte.

Debajo, los dos bloques del mes.

Período

Los dos bloques para la ventana que uno elija, contra la ventana anterior de igual
largo.

El bloque devengado lleva tres cifras — ingreso neto, impuesto, bruto — y dos
tablas:

  • Por fuente — el backend siempre manda las tres fuentes, ceros incluidos.
    Una fuente sin cargos se lee 0.00 en vez de ser una fila que desapareció.
  • Impuestos por nombre — agrupados por el nombre de cada impuesto. Sin
    nombre
    es legítimo y va primero: el impuesto cobrado por un canal no declara
    nombre.

La suma de por fuente es igual al ingreso neto, y la suma de impuestos por
nombre
es igual al impuesto, porque son la misma consulta agrupada de dos
maneras y no dos números que alguien mantiene sincronizados.

Las tres cifras y cada línea de por fuente son enlaces: abren
Cargos con la misma ventana, la misma moneda y — si uno hizo clic en
una línea — esa fuente ya filtrada.

El bloque de caja es el panel de totales del libro de movimientos, con
exactamente el mismo significado. Ver
Finanzas.

Evolución

La misma aritmética que Período, cortada en el tiempo. La suma de las barras es
el reporte de período de esa misma ventana
, moneda por moneda — un contrato del
backend, no una casualidad.

La agrupación se elige arriba a la derecha: día, semana o mes. Las semanas son ISO
y empiezan el lunes; los tramos se alinean al calendario y después se recortan
a la ventana.

Cada barra es tan ancha como largo es su tramo. Agosto agrupado por semana
abre con un tramo de dos días y termina con uno de un día. Dibujarlas todas del
mismo ancho convertiría un extremo recortado en una caída que nunca ocurrió, así
que el ancho es real y la leyenda lo dice.

Un tramo sin actividad llega en cero, nunca omitido: la curva no tiene huecos y no
hay nada que rellenar.

Gastos

A dónde se fue el dinero, por categoría, con la participación de cada una.

Es una relectura de las salidas del bloque de caja, no una consulta propia,
así que no puede discrepar del reporte de período. Y es más amplia que la pantalla
de Gastos del menú: acá cuenta toda salida operativa, con categoría o sin
ella. Por eso las filas suman exactamente el total, incluida la línea de sin
categoría
.

Promedio por movimiento es una división, así que se redondea a los decimales de
la moneda — en una moneda sin decimales no se van a ver centavos.

Portafolio

Una fila por propiedad: ganado, cobrado, gastado y por cobrar, con
un bloque por moneda.

Es la única pantalla de finanzas que no responde al selector de propiedad de la
barra superior
— reporta toda la cuenta. Por eso tiene su propia entrada de menú
en vez de ser una pestaña de Reportes: ahí el selector quedaría inerte sin nada que
lo explicara. La pantalla lo dice arriba.

Cuatro cosas sobre esta tabla:

  • Por cobrar es histórico, no de la ventana. Una deuda no deja de existir
    porque el reporte esté mirando otro mes. Es la única columna sin cifra de
    variación: no hay una "deuda del mes pasado" contra la cual comparar.
  • El total de cada bloque lo calcula la API, no la pantalla. Recalcularlo del
    lado del cliente es exactamente como los totales empiezan a discrepar de su
    propia tabla.
  • Las propiedades en cero se listan igual. Una que desapareciera de la tabla
    se leería como no existe en vez de no vendió.
  • Abrir una fila cambia la propiedad activa de la sesión. Deliberadamente:
    entrar a un edificio significa estar parado en él. Lleva al reporte de esa
    propiedad con la misma ventana, que es lo que hace comparables las dos
    pantallas.

Encima de la tabla va la misma curva de Evolución, para toda la cuenta. Responde la
pregunta previa: primero cómo le va al negocio en el tiempo, después qué propiedad
lo explica.

Cargos

Finanzas → Cargos es el gemelo devengado del libro de movimientos. Donde
el libro responde ¿por qué dice que gasté 80?, esta pantalla responde ¿de verdad
gané 625.90 en agosto?

Normalmente uno llega haciendo clic en una cifra del reporte, pero también está en
el menú.

Filtra por fecha de servicio, nunca por la fecha en que se registró algo. Eso
es lo único que hace que las filas sumen el reporte — filtrar por el día en que
alguien ingresó el dato produciría una lista que no cuadra con la cifra que dice
explicar. Existe una columna de registrado, oculta por defecto y activable desde
el selector de columnas, precisamente para el caso contrario: entender por qué un
cargo cayó dentro de la ventana por su noche y no por cuándo se ingresó.

El bloque de totales va encima de la tabla, y no es un pie. Cubre todo lo
que coincide con el filtro
, no la página que uno está viendo. Eso es lo que
permite llegar desde una cifra del reporte y confirmar que las filas la suman: uno
pagina y las cifras no se mueven. Un bloque por moneda, nunca sumados.

Los filtros son fuente, impuesto, moneda y ventana. En la fila:

  • La reserva se muestra como su código (AP-000042), enlazado a la reserva.
    Una columna de identificadores internos no le dice nada a nadie.
  • El impuesto lleva su etiqueta de origen, con las tres lecturas separadas —
    ver
    Impuestos.
  • Un filtro que no coincide con nada dice no hay cargos que totalizar, en vez de
    dibujar ceros que se verían como el resultado de una consulta con filas.

El aviso de "cargos anteriores a tus impuestos"

Una caja informativa encima de las cifras, en las cuatro superficies que
publican una cifra devengada: Resumen, Período, Evolución y Portafolio.

No es un error. Dice: configuraste impuestos, y estos cargos son anteriores a
ellos
. Por la
regla de congelación,
esos cargos tienen el neto igual al bruto para siempre, así que inflan el neto
— y el neto es la cifra de las cuatro pantallas, incluido el ganado de
Portafolio, que ni siquiera muestra impuesto.

Cinco noches a $100 vendidas antes de configurar el perfil reportan un neto de
500.00. Bajo un perfil con 12% de impuesto incluido esas mismas cinco noches
reportarían 446.43. Las dos cifras están bien; el aviso explica por qué la
primera se lee como se lee.

Una entrada por moneda, nunca combinadas. Nunca aparece en una propiedad sin
perfiles activos, y nunca cuenta cargos de canal — ahí el impuesto lo cobró y
lo declaró el canal.

La pestaña de Gastos es la única de Reportes que no lo muestra, y con razón: no
publica ninguna cifra devengada, así que no hay nada que el aviso deba matizar.

Por qué el aviso ofrece un enlace por fuente

Esta es la parte que se malinterpreta fácil. El aviso se juzga fuente por
fuente
: cuenta los cargos sin impuesto de cada fuente que tenga un perfil
activo
. El filtro de impuesto de la pantalla de Cargos, en cambio, no sabe nada
de perfiles.

Una propiedad con el perfil de reservas encendido y el de tienda apagado, con un
cargo de alojamiento sin impuesto de 100.00 y uno de tienda sin impuesto de
40.00. El aviso reporta 100.00 en 1 cargo. Un filtro pelado de sin
impuesto
devolvería 140.00 en 2 cargos, porque el de tienda también está
sin impuesto — el aviso simplemente nunca lo contó.

Por eso el aviso ofrece un enlace por fuente con perfil activo, y la suma de
esos enlaces reproduce su cifra. Un solo enlace mostraría un total mayor que el
aviso que lo abrió, que es exactamente la desconfianza que este módulo existe para
eliminar.

En Portafolio el aviso no ofrece enlaces: esa pantalla reporta toda la cuenta y
Cargos responde por la propiedad activa, así que el enlace llevaría a las filas de
otra propiedad sin decirlo.


Did this page help you?