El GL es una sola moneda. Pero la línea recuerda de dónde vino.
FOREX diario automático, <code>OriginalCurrency</code> y <code>OriginalAmount</code> en cada línea GL, historial de tasas consultable y dos modos de varianza. Basado en el modelo probado de P4 Books con dos mejoras aditivas.
GL de una moneda, metadatos multi-moneda
Una moneda base por tenant
El libro mayor habla una moneda. Las traducciones ocurren al momento de la transacción — no hay ledger multi-moneda paralelo.
Preservada en cada línea
Toda línea GL guarda <code>OriginalCurrency</code> y <code>OriginalAmount</code>. Reportes en moneda de origen sin perder trazabilidad.
Actualización diaria automática
Job Hangfire a medianoche UTC actualiza tasas. <code>ExchangeRateHistory</code> hace auditable cada conversión.
La decisión arquitectónica
Un libro mayor multi-moneda (un balance por cada moneda) obliga a reconciliaciones imposibles y auditorías eternas. El estándar de la industria para SMB y mid-market — QuickBooks, Xero, NetSuite — es un GL de moneda única con metadatos de origen. Eso hacemos, bien.
- Traducción en la entrada. Una factura en USD se registra en la moneda base usando la tasa del día de la factura. El GL siempre cuadra en una moneda.
- Metadatos originales intactos. La factura sigue siendo de USD 1,200 — no de "USD 1,200 convertida que redondeó a PAB 1,200.03". El reporte de AR por cliente puede mostrar la moneda en que se emitió.
- Historial consultable.
ExchangeRateHistoryguarda cada tasa usada. Cualquier reporte puede recalcular en fechas distintas para análisis.
Dos modos según su política contable
- Modo simple (default). Toda diferencia cambiaria va a una sola cuenta
FxVarianceBankFees. Apropiado para SMB con volumen bajo. - Modo separado. Ganancia cambiaria realizada y pérdida cambiaria realizada van a cuentas distintas. Apropiado para negocios con exposición material a tipo de cambio.
- Vinculación por rol, no por código. Las cuentas se asignan por rol (
DefaultAR,FxVarianceBankFees,RetainedEarnings). Usted renombra libremente sin romper el sistema. - Sin revaluación de período. La revaluación de saldos abiertos IAS 21 está deferida indefinidamente — apropiado para SMB, no para estados auditados. Documentado con franqueza.
Cómo mantenemos las tasas vivas
- Dispatcher-fanout por tenant. Cada tenant tiene su propio cron respetando su zona horaria — no todos los tenants se actualizan a la misma hora UTC.
- Overrides manuales permitidos. Un usuario con permiso puede forzar una tasa para una fecha específica. El evento queda en
AuditEvents. - Fallback a la última tasa conocida. Si el proveedor FX falla, la tasa previa sigue vigente hasta que se confirme una nueva.
- Monedas elevadas. La tabla
Currenciesvive en el control plane (CiferaHQ_master) — una sola lista autoritativa, compartida por todos los tenants.
Demo de multi-moneda con su plan de cuentas
Traiga su COA; le mostramos cómo se ve un cierre con varianza cambiaria real.