A efectos de generación de informes, le recomiendo que presente los datos en la moneda del país de origen del usuario. Podría presentar otro indicador, si fuera necesario, para indicar que una transacción específica se denominó en una moneda extranjera, donde el importe representa el valor de la transacción denominada en moneda extranjera en la moneda del país de origen del usuario.
Por ejemplo:
Billete de avión de EE.UU. a Londres: 1.000 dólares
Taxi del aeropuerto al hotel: 100,00 $ (en £)
En cuanto al diseño de la base de datos, yo recomendaría no almacenar los datos en ninguna denominación o moneda de referencia. Esto le obligaría a realizar muchas más conversiones entre divisas de las que probablemente sean necesarias, y crearía una complejidad adicional en la que, en algunos casos, tendría que realizar múltiples conversiones por transacción dentro y fuera de su divisa de referencia. Creo que será más fácil para usted para almacenar varias monedas como ellos mismos y no en otra moneda de referencia.
Yo recomendaría almacenar varios datos por separado para cada transacción:
- Tipo de moneda
- El importe (denominado en la moneda especificada en el primer campo)
- La fecha y hora de la transacción
- Tipo de conversión de la transacción (en relación con la moneda nacional del usuario)
De este modo, puede crear un Importe calculado para cada transacción que no esté en la moneda "nacional" del usuario, mientras que tendría que calcularlo para todas las transacciones si utilizara una moneda de referencia universal. También puede obtener los datos de una fuente externa si el usuario ha olvidado el tipo de conversión.
Recuerde que siempre hay comisiones y variaciones en el tipo de cambio que un usuario obtendrá por la moneda de su país de origen, aunque cambie dinero en el mismo lugar a dos horas distintas del mismo día. Por ello, yo recomendaría crear un formulario sencillo que permita al usuario introducir cuánto ha cambiado y cuánto ha recibido a cambio para calcular el tipo de cambio.
Así, por ejemplo, digamos que tengo $ 200.00 USD and I exchanged $ 100,00 USD por 60,00 £, y había una comisión de 3,00 £ por el cambio. El tipo de cambio sería de 0,6, y cuando el usuario introduzca una conversión de divisas, su sitio podría crear tres transacciones separadas como:
USD convertido a £: 100,00
£ Recibido de la Bolsa: £ 60.00
Tasa de cambio: £ 3.00
Así, si el usuario cambia de divisa y luego ejecuta un informe de saldo por Divisa, puede mostrarle que ahora tiene $ 100.00 USD and £ 57.00, or you could alternatively choose to show the £ 57.00 that they have as $ 95,00 USD en su lugar. Si les mostrara un informe de transacciones, también podría mostrar la comisión denominada en dólares.
Yo recomendaría almacenar sus saldos y transacciones en sus propias monedas, ya que de lo contrario se encontrará con algunos problemas muy interesantes. Por ejemplo, supongamos que utiliza una moneda de referencia vinculada al dólar. Entonces un día cambio $ 100.00 USD for £ 60.00. In this system I would still have 100 of my reference currency. However, if the next day, the exchange rate falls and $ 1,00 USD sólo vale £ 0,55, y si cambio mis £ 60,00 a USD, obtendré aproximadamente $ 109.09 USD back for my £ 60.00. If I then go and buy something for $ 100,00 USD, el saldo de la divisa de referencia estaría a 0, ¡pero yo seguiría teniendo 9,09 USD en el bolsillo como resultado de la fluctuación de los valores de las divisas! Por eso recomiendo almacenar monedas como ellos mismos, y sólo mostrando en otra moneda para mayor comodidad mediante cálculos realizados "sobre la marcha" en el momento de ejecutar el informe.
Mucha suerte con su sitio web.