Sistema de Monedas - ThreeTrackr
Resumen
El sistema de monedas de ThreeTrackr permite manejar múltiples monedas de manera unificada, con conversión automática y formateo inteligente. El sistema está diseñado para ser escalable y fácil de mantener.
Arquitectura
Backend (Almacenamiento)
- Principio Los precios se almacenan en su moneda original
- Ejemplo Órdenes de Shopify en USD se guardan en USD, órdenes locales en COP se guardan en COP
- Base de datos Campo currency en cada entidad que maneja precios
Frontend (Visualización)
- Principio Conversión y formateo centralizado en el componente CurrencyDisplay
- Configuración Cada proyecto tiene una moneda configurada (projectCurrency)
- Comportamiento
- Si la moneda original = moneda del proyecto entonces Solo formateo
- Si la moneda original != moneda del proyecto entonces Conversión + formateo
Componente Principal: CurrencyDisplay
Ubicación
packages/ui/src/components/shared/currency.tsx
Props
El componente CurrencyDisplay acepta las siguientes propiedades:
- value - Valor numérico del precio
- sourceCurrency - Moneda del precio original
- targetCurrency - Moneda de destino (moneda de la app)
- exchangeRate - Tasa de cambio opcional
- showDecimals - Mostrar decimales
- className - Clases CSS adicionales
- showCurrencySymbol - Mostrar símbolo de moneda
- size - Tamaño del texto (xs, sm, md, lg, xl)
Uso Básico
Para mostrar un precio en la moneda del proyecto:
- Importa el componente desde @packages/ui/src/components/shared/currency
- Pasa el valor, sourceCurrency y targetCurrency
- El componente manejará la conversión automáticamente
Monedas Soportadas
Principales
- USD - Dólar estadounidense - Moneda principal para comercio internacional
- EUR - Euro - Para mercados europeos
- COP - Peso colombiano - Moneda local para mercado colombiano
Regionales
- MXN - Peso mexicano - Para mercado mexicano
- BRL - Real brasileño - Para mercado brasileño
- ARS - Peso argentino - Para mercado argentino
Tasas de Cambio
Tasas Fijas (Actuales)
- USD: 1 (base)
- EUR: 1.08
- COP: 4200
- MXN: 18.5
- BRL: 5.2
- ARS: 850
Nota Las tasas de cambio son fijas por simplicidad. En el futuro se implementará integración con APIs de cambio en tiempo real.
Ejemplos de Uso
Ejemplo 1: Orden de Shopify en USD
Cuando importas una orden de Shopify en USD a un proyecto configurado en COP, el componente automáticamente convertirá el precio de USD a COP usando la tasa de cambio configurada.
Ejemplo 2: Producto local en COP
Para productos creados localmente en COP, no se realizará conversión ya que la moneda original coincide con la moneda del proyecto.
Ejemplo 3: Múltiples monedas
El sistema puede manejar listas de órdenes con diferentes monedas, convirtiendo cada una a la moneda del proyecto para mostrar un total unificado.
Configuración
1. Configurar Moneda del Proyecto
En la configuración del proyecto, establece la moneda principal que se usará para todas las conversiones y visualizaciones.
2. Usar en Componentes
En cualquier componente que muestre precios, importa CurrencyDisplay y úsalo pasando el valor, sourceCurrency y targetCurrency. El componente manejará automáticamente la conversión y formateo.
Consideraciones Importantes
Almacenamiento Siempre almacena precios en su moneda original. La conversión se hace solo en la visualización.
Performance Las conversiones son cálculos simples y no afectan el rendimiento significativamente.
Precisión Los decimales se manejan según las convenciones de cada moneda (USD: 2 decimales, COP: 0 decimales).
¿Necesitas más detalles? Explora los ejemplos detallados o la guía de migración.