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.
| Capa | La pregunta que responde | Dó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/currenciespara 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-ratespara 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
- Pagos y saldo — pagar en una moneda distinta a la del folio.
- Finanzas y movimientos — dónde aparecen los saldos por moneda.
- Propiedades —
default_currencyes una semilla, no una restricción.
Updated 13 days ago