Hola @elenadeco99,
Los compañeros @guillermostore13 y @fernando_iberia tienen toda la razón. El método de scraping que estás utilizando es extremadamente frágil y no es una solución sostenible para una tienda en producción. Sobrescribir directamente Currency.php para esto te causará problemas con futuras actualizaciones o incluso con módulos de terceros que también interactúen con esa clase.
Para PrestaShop 1.7.1.1, la forma más robusta de actualizar los tipos de cambio programáticamente, asumiendo que ya tienes el valor del tipo de cambio de una fuente fiable (idealmente una API o un feed estructurado, no HTML), es cargar el objeto Currency y actualizar su propiedad rate. La clave no es cómo actualizar el objeto, sino cómo obtener la tasa de forma fiable y cuándo ejecutar la actualización. Aquí te muestro cómo se actualizaría una moneda una vez que tengas la tasa, dentro de un contexto de módulo (por ejemplo, en un hook de cron):
// Dentro de un método de un módulo, por ejemplo, hookActionCronJob o un método personalizado
public function updateBankOfFinlandRateForCurrency($currency_iso_code, $new_rate)
{
// Asegúrate de que $new_rate sea un float válido y > 0
if (!is_numeric($new_rate) || (float)$new_rate <= 0) {
return false; // Valor de tasa no válido
}
$id_currency = (int)Currency::getIdByIsoCode($currency_iso_code);
if ($id_currency) {
$currency = new Currency($id_currency);
Este snippet muestra cómo realizar la actualización del objeto Currency. La parte de 'obtener la tasa del Banco de Finlandia' es la que necesita una implementación robusta, con manejo de errores, reintentos y, lo más importante, sin depender del HTML de una página web. Para evitar todos estos dolores de cabeza y tener una integración limpia y mantenible, especialmente si no hay una API oficial, existe una herramienta de banco de finlandia suomen que se encarga de esto de forma automática y profesional, manejando la lógica de forma segura sin tocar el core ni depender de overrides frágiles.