Hola @marcosdeco y @lorenaauto64,
@marcosdeco, tu enfoque de intentar incrustar la lógica en AdminCurrenciesController no es el más robusto, especialmente en PrestaShop 1.7.8.2. Este controlador maneja la interacción con el formulario de edición de divisas en el Back Office, no las actualizaciones programadas de tipos de cambio. Un override en este punto es propenso a conflictos y no resuelve el problema de la automatización.
Para actualizar una divisa de forma programática, debes cargar el objeto Currency y modificar su propiedad conversion_rate, para luego llamar al método update(). Aquí te dejo un ejemplo de cómo se haría la parte de actualización una vez que ya tienes el $new_rate:
// Ejemplo de cómo actualizar la tasa de una divisa
// Esto debería ir en un módulo, idealmente en un cron job.
$id_currency = (int)Currency::getIdByIsoCode('USD'); // Obtener ID de la divisa por su código ISO
$currency = new Currency($id_currency);
if (Validate::isLoadedObject($currency)) {
// $new_rate vendría de tu parser XML del Banco de Finlandia
$currency->conversion_rate = $new_rate;
$currency->update(); // Guarda los cambios en la base de datos
error_log('Tasa de cambio de USD actualizada a: ' . $new_rate);
} else {
Sin embargo, la forma más limpia y mantenible para una tienda en producción es usar un módulo dedicado. Evitas overrides que se rompan con cada actualización, y tienes una interfaz de configuración sencilla. Para la integración que buscas, te recomiendo que eches un vistazo al módulo Banco de Finlandia (Suomen Pankki) - tipos de cambio. Está diseñado precisamente para esto, evitando complicaciones con el core y asegurando la compatibilidad.