Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa de cambio en un software. Voy a enseñarte el algoritmo y un ejemplo de código para que puedas modificar los precios según una tasa, con la posibilidad de tener el sistema multimoneda o con varias divisas.
Veamos cómo añadir una tasa de cambio para basar tus precios en otra moneda, por ejemplo, el dólar.
Tasa de cambio en software
Pongamos un ejemplo: quieres basar tus precios en dólares, pero sin introducir los precios en dólares, solo quieres introducir la tasa de cambio. Tu moneda local es el peso mexicano pero quieres basar tus precios en dólares.
La primera vez que registres el precio de los productos o servicios vas a registrar la tasa de cambio de ese día y te vas a basar en dicha tasa para registrar el precio por primera vez.
Cada vez que cambies la tasa debes actualizar el precio de los productos usando la siguiente fórmula:
Nuevo precio = Precio anterior * Tasa nueva / Tasa anterior
Ejemplo
Supongamos que el 6 de diciembre de 2024 un dólar equivale a 20 pesos mexicanos. Tú quieres vender un jabón en 2 dólares, así que al hacer la conversión serán 40 pesos mexicanos. Registras la tasa de ese día (20) y el precio del producto (40). En ningún momento estamos introduciendo valores en dólares.
El siguiente día el dólar sube a 25 pesos mexicanos. Entonces ajustas la tasa, y usas la siguiente fórmula:
Nuevo precio = Precio anterior * Tasa nueva / Tasa anterior
Siguiendo con el ejemplo, la fórmula queda así:
Nuevo precio = 40 (precio del jabón el día anterior) * 25 (nueva tasa) / 20 (tasa anterior)
Y el resultado es 50. El precio del jabón el 6 de diciembre era de 40 pesos, pero el 7 de diciembre es de 50 pesos. Ahora solo debes aplicar esa fórmula a todos los productos.
Si al siguiente día (8 de diciembre) un dólar equivale a 10 pesos mexicanos entonces ajustas de nuevo:
Nuevo precio = 50 * 10 / 25
El resultado será 20, lo cual es correcto, pues recuerda que desde el inicio dijimos que el jabón iba a costar 2 dólares, pero todo esto fue hecho sin introducir valores en dólares.
Este ejemplo fue hecho con dólares y pesos mexicanos, pero se puede aplicar con cualquier divisa.
Si fuera SQL
Si se tratara de una consulta SQL, primero podrías sacar el factor de multiplicación dividiendo la tasa nueva entre la anterior. Para el primer ejemplo de arriba donde la tasa nueva era 25 y la anterior era 20, es 1.25. Luego, actualizar el precio multiplicando, así:
UPDATE productos SET precio = precio * 1.25
Y de este modo podrás actualizar tus precios según la tasa de cambio. Solo necesitas la tasa nueva, la tasa anterior y actualizar los precios. También podrías contar con un historial de precios y tasas de cambio de divisas.
Ejemplo con JavaScript y localStorage
He creado un ejemplo que puedes probar en tu navegador. El ejemplo usa localStorage por simplicidad.
La parte más relevante es la de la actualización de la tasa de cambio:
document.addEventListener("DOMContentLoaded", () => {
const $tasa = document.querySelector("#tasa"),
$btnGuardar = document.querySelector("#btnGuardar");
// Esta es la tasa actual antes de poner la nueva
let tasaVieja = parseFloat(localStorage.getItem("tasa_actual"));
$btnGuardar.addEventListener("click", () => {
const tasaNueva = $tasa.valueAsNumber;
if (!tasaVieja) {
tasaVieja = tasaNueva;
}
localStorage.setItem("tasa_anterior", tasaVieja.toString());
localStorage.setItem("tasa_actual", tasaNueva.toString());
// Actualizamos todos los precios. Si no hay productos, no pasará nada
const productos = JSON.parse(localStorage.getItem("productos")) || [];
for (let i = 0; i < productos.length; i++) {
const precioViejo = productos[i].precio;
const precioNuevo = precioViejo * tasaNueva / tasaVieja;
productos[i].precio = precioNuevo;
}
localStorage.setItem("productos", JSON.stringify(productos));
alert("Guardada correctamente");
})
});
Puedes acceder al código fuente completo en https://github.com/parzibyte/ejemplos-javascript/tree/master/tasa-cambio y a la demostración en vivo en https://parzibyte.github.io/ejemplos-javascript/tasa-cambio/