online moneda google español divisas conversor currency

moneda - ex com currency converter



Mejores Prácticas e Implementación de Monedas Múltiples (5)

(Supongo que ya sabe que definitivamente no debería almacenar datos de moneda como flotante y por qué)

En mi opinión, trabajar con una sola moneda base podría ser más fácil; sin embargo, debe guardar el monto original, la moneda original, la tasa de conversión y el monto de la moneda base; de ​​lo contrario, su departamento de contabilidad. podría comerte vivo, ya que es probable que mantengan diferentes monedas por separado.

Me resulta difícil encontrar una discusión sobre las mejores prácticas para tratar con varias monedas. ¿Alguien puede proporcionar alguna información o enlaces para ayudar?

Entiendo que hay varias formas de hacer esto, ya sea transaccionalmente donde almacena el valor ingresado tal como está, o funcionalmente donde se convierte a una tasa base. En ambos casos, se necesita almacenar el tipo de cambio que cubra ese tiempo de transacción para cada moneda a la que se deba convertir en el futuro.

Me gusta la flexibilidad del enfoque transaccional, que permite que la información del tipo de cambio anterior se ingrese en una fecha posterior, pero probablemente tenga más gastos generales (ya que tiene que almacenar más datos del tipo de cambio) que el enfoque funcional.

El rendimiento y la escalabilidad son factores importantes. Tenemos (todo .net) un cliente win & web, un conjunto de informes y un conjunto de servicios web que proporcionan funcionalidad a un servidor de bases de datos. Puedo almacenar en caché la información del tipo de cambio en algún lugar (por ejemplo, en el cliente) si es necesario.

EDITAR: Realmente me gustaría tener enlaces a algunos documentos, o respuestas que incluyan ''errores'' de experiencias anteriores.


Como los tipos de cambio fluctúan, uno de los enfoques es el que mencionó: almacenar una cantidad "ingresada tal como está" que no se convierte, pero muestra un campo complementario que se muestra solo y muestra la cantidad convertida. Para realizar la conversión, se requeriría una tabla de tipos de cambio y sus rangos de fechas aplicables. Si el tamaño de este es pequeño, el almacenamiento en caché en el cliente es una opción. De lo contrario, se requeriría una llamada remota para realizar la conversión.


No hay una respuesta única, ya que depende mucho de la forma en que una empresa maneja las transacciones en esas monedas. Algunas empresas utilizan formas bastante sofisticadas para administrar las monedas extranjeras. Le sugiero que lea sobre contabilidad de múltiples monedas.

Lo principal es capturar los datos en la unidad, el valor y la fecha en que se realiza la transacción comercial sin ninguna conversión, o corre el riesgo de perder algo en la traducción. Para mostrar e informar, convierta a pedido, utilizando el tipo de cambio original o cualquier otro tipo de cambio según la intención del usuario.

Almacene y calcule con valores como el tipo ''Decimal'' (en C #) - no use float / double o se deja vulnerable a los errores de redondeo.

Por ejemplo, la forma en que hice una aplicación de múltiples monedas en una vida anterior fue:

  • Todos los días, las tasas de cambio del día se establecerían y esto se almacenaría en una base de datos y se almacenaría en caché para la conversión en la aplicación.
  • Todas las transacciones se capturarán como valor + moneda + fecha (es decir, sin conversión)
  • Visualización de la transacción en una moneda de los usuarios se realizó sobre la marcha. Deje en claro que esta no es la moneda de la transacción, sino una moneda de visualización. Esto es similar a un extracto de tarjeta de crédito cuando se ha ido de vacaciones. Muestra el monto de la transacción en el extranjero y luego cuánto le cuesta en su moneda nativa.

No pude encontrar ninguna discusión definitiva, así que publico mis hallazgos, espero que ayude a alguien.

La tabla de moneda debe incluir el código de cultura para hacer uso de cualquier clase de globalización.

Método transaccional

  • Almacene en la moneda local al cliente y almacene varias tasas de conversión para la moneda de transacción que se aplicó cuando se produjo la transacción.
  • Requiere múltiples tipos de cambio para cada moneda
  • La tabla de Configuración del sitio almacenaría la moneda de entrada
  • La entrada y salida de valores a nivel de cliente no tendría gastos generales, ya que se puede asumir que el valor está en la moneda correcta
  • Para aplicar las tasas de cambio, debe conocer la moneda de los valores ingresados ​​(que pueden ser diferentes para los informes de clientes cruzados), luego multiplicar esto por la tasa de cambio de su entidad asociada que fue válida durante el período de tiempo de las transacciones.

Método funcional

  • Almacene en una moneda base, mantenga las tasas de conversión para esta moneda que se aplican a lo largo del tiempo
  • Se debe tener en cuenta en el punto entre el extremo frontal y la base de datos, es el mejor lugar para convertir valores
  • El rendimiento de entrada se ve afectado marginalmente, ya que una conversión a la moneda base debería tener lugar. El tipo de cambio se puede almacenar en caché en el cliente (tenga en cuenta que cada entidad puede usar un tipo de cambio diferente)
  • Esto requirió un conjunto de tipos de cambio (desde la base a todas las demás monedas requeridas)
  • Para aplicar los tipos de cambio, cada transacción debería convertirse entre la base y las monedas requeridas

Compuesto

  • En el punto de la transacción, almacene el valor transaccional y el valor funcional, de esa forma no será necesario almacenar información sobre el tipo de cambio. (Esta no sería una solución adecuada, ya que efectivamente lo restringe a dos monedas para un valor determinado)

Comparación

De manera realista, tienes que elegir entre la función y los métodos transaccionales. Ambos tienen sus ventajas y desventajas.

El método funcional no necesita almacenar la moneda local para la transacción, necesita convertir los valores actuales de la base de datos a la moneda base, solo necesita un conjunto de tipos de cambio, es un poco más difícil de implementar y mantener, aunque requiere menos almacenamiento.

El método de transacciones es mucho más flexible, aunque requiere que se retenga más información sobre el tipo de cambio y cada transacción debe asociarse con una moneda de entrada (aunque esto puede aplicarse a un grupo de clientes en lugar de a cada transacción). Por lo general, no afectaría al código que ya está en producción, ya que las monedas locales todavía se utilizarían a nivel local, lo que hace que esta solución sea fácil de implementar y mantener. Aunque, obviamente, cualquier informe o valor que necesite convertirse a una moneda diferente se vería afectado.

En ambos casos, cada transacción necesitaría tasas de cambio para el momento de la transacción para cada moneda a la que se debe convertir. Esto es necesario en el punto de la transacción para el método funcional, sin embargo, el método transaccional permite una mayor flexibilidad, ya que los datos del tipo de cambio pasados ​​se pueden ingresar en en cualquier momento (permitiendo que se utilice cualquier moneda), es decir, pierde la capacidad de utilizar otros tipos de cambio en el método funcional.

Conclusión

Un método transaccional de gestión de divisas proporcionaría un enfoque flexible, evitando cualquier impacto negativo en el rendimiento del cliente y sin modificación del código del cliente. Es probable que se produzca un impacto negativo en el rendimiento de los informes, en los que todos necesitarán retrabajo si se requieren diferentes monedas. Cada sitio cliente deberá almacenar una referencia de moneda que indique cuál es su moneda de entrada. Debería ser posible evitar el almacenamiento de las tasas de cambio en un nivel alto (por ejemplo, un grupo de sitios de clientes, etc.), esto minimizará la cantidad de datos almacenados. Pueden surgir problemas si se requiere información del tipo de cambio en un nivel inferior.


Nuestra empresa se ocupa de la contabilidad y presupuestación de múltiples monedas. La solución que implementamos es bastante sencilla e incluye lo siguiente:

  1. una tabla de divisas, con algunos campos que incluyen números de decimales que deben considerarse para la divisa (sí, algunas monedas deben administrarse con 3 decimales ...) y un valor de tipo de cambio, que no tiene otro significado que ser un ''propuesto / tipo de cambio predeterminado ''al evaluar transacciones financieras'' no ejecutadas ''o'' pendientes ''(ver más abajo)

  2. En esta tabla de monedas, uno de los registros tiene un tipo de cambio de 1. Esta es la moneda principal / dinámica en nuestro sistema.

Todas las transacciones financieras, o todas las operaciones con una dimensión financiera (lo que llamamos compromisos en nuestro idioma), se clasifican como "pendientes" o "ejecutadas":

  1. Las transacciones pendientes son, por ejemplo, las facturas que se espera recibir por un monto determinado en una fecha determinada. En nuestro sistema de seguimiento de presupuesto, estos montos siempre se reevalúan de acuerdo con el ''tipo de cambio propuesto / predeterminado'' disponible en la tabla de divisas.

  2. Las transacciones ejecutadas siempre se guardan con la fecha de ejecución, el monto, la moneda Y el tipo de cambio, que debe confirmarse / escribirse al ingresar los datos de ejecución.