Monedas

El dinero en Axis Pro vive en tres capas, y casi toda pregunta sobre monedas es
en realidad una pregunta sobre en qué capa está uno parado.

CapaLa pregunta que respondeDónde vive
Devengado¿Qué se debe?La moneda de la reserva, sus cargos.
Caja¿Qué dinero se movió de verdad?Cuentas y movimientos.
Reportes¿Cómo lo leemos?Dashboard, reportes financieros, estados de cuenta.

Los casos interesantes son aquellos en que la moneda del devengado y la de la
caja difieren. El puente entre las dos es una tasa capturada en el momento de
la transacción y guardada en la fila que produjo
— nunca recalculada después.

Cuatro decisiones

1. Un folio tiene exactamente una moneda

Una reserva fija su moneda al crearse. Todo lo que se publique en ella se
convierte al momento de publicar y guarda su propia foto: monto origen, moneda
origen, tasa usada.

La alternativa es un saldo que es un vector — 150,000 CLP y 40 USD — que obliga
a cada pantalla, total, factura y flujo de pago a razonar por moneda, y le
entrega al huésped una cuenta con dos totales.

2. Un pago se registra en la moneda en que realmente se recibió

La caja tiene dólares físicamente. Registrar solo el equivalente en moneda local
significa que el arqueo deja de cuadrar y nadie sabe cuánta moneda extranjera
tiene encima el hotel.

Si el hotel después cambia esos dólares, eso es una operación aparte — un par
de transferencia genuino, de una cuenta a otra — no parte del pago.

3. La tasa del propio hotel es la única tasa que escribe

Las tasas se llevan por par de monedas (USD→CLP, USD→GTQ) a nivel de
cuenta, porque una tasa es una propiedad del par, no de un edificio.

Un par se cotiza en uno de dos modos:

  • Manual — una persona escribe la tasa. Es lo predeterminado.
  • Automático — un feed de mercado observa el precio y el margen
    configurado del par convierte esa observación en la cotización del hotel:
    mercado × (1 + margen). Un margen de cero cotiza el mercado tal cual; ese es
    el mismo camino, no un tercer modo.

Escribir una tasa a mano devuelve su par a manual, conservando el margen para
cuando se vuelva a encender el automático. Si no, un operador cambia una tasa a
propósito y horas después se revierte sola sin que nadie la haya tocado.

Si el feed falla, no pasa nada dramático: recepción sigue tomando dinero a la
última tasa vigente. Como un par automático puede degradarse en silencio de una
forma en que uno manual no puede, la API expone cuándo se refrescó por última vez
y si está obsoleta, para que la interfaz pueda marcarlo.

Un hotel cotiza su propia tasa. No es un banco.

4. Nativo en todos lados; una moneda de referencia solo en reportes consolidados

Las pantallas operativas, los folios, los recibos y las facturas siempre muestran
la moneda en que efectivamente se transaccionó el dinero. Nunca convertida, sin
excepciones.

Los reportes consolidados pueden ofrecer una moneda de referencia, siempre
impresa junto con la tasa y la fecha usadas, para que un número convertido nunca
se pueda confundir con uno real.

Los saldos son mapas, no números

Los saldos de cuenta y los totales de reporte son mapas por moneda. Una
cuenta puede mostrar dos líneas; un panel de totales puede mostrar dos bloques.

Nunca se suman entre sí, y no hay un gran total. Sumarlos requeriría elegir
una tasa y un momento, y esa decisión no le corresponde tomarla a un libro de
movimientos.

De dónde sale la lista de monedas

Las monedas seleccionables son las que Axis Pro puede almacenar — las columnas de
dinero guardan dos decimales, así que las monedas de tres dígitos menores quedan
excluidas hasta que esas columnas se ensanchen. El catálogo lleva además los
dígitos menores de cada moneda, que es lo que evita que una moneda sin
decimales (CLP, JPY) se renderice con centavos.

Una lista acotada a una propiedad estrecha todavía más: la moneda por defecto de
esa propiedad, más cualquier moneda para la que efectivamente haya cotizado una
tasa. Eso es lo que ofrece la caja al abrir un turno, porque ofrecer los ~150
códigos ISO convertiría "abrir la caja" en una búsqueda.

En la API

  • Merchant: GET /api/merchant/currencies para el catálogo de la cuenta; con
    ?property_id= se estrecha a aquello en lo que esa propiedad puede vender de
    verdad. /api/merchant/exchange-rates para los pares.
  • El dinero viaja como string decimal con dos posiciones ("450.00"), nunca
    como número. Parsearlo como float pierde centavos en silencio.

Relacionado


Did this page help you?