Gracias por la consulta, @lorena24. Los compañeros @antonio_bcn y @nuria24 han señalado muy bien los puntos críticos. Es crucial evitar overrides directos de controladores core como AdminCurrenciesController para lógicas personalizadas, ya que esto crea un punto de fallo enorme en futuras actualizaciones de PrestaShop 1.7.2.4.
La forma correcta de abordar esto sería mediante un módulo propio que implemente un método para la actualización y que pueda ser llamado mediante un cron job. Esto te da independencia y control.
Aquí te muestro cómo podrías refactorizar la lógica de obtención y procesamiento del XML en una clase o método de tu propio módulo, haciendo la petición HTTP más robusta y mejorando el manejo de errores. Esto no es un override, sino una función que llamarías desde tu módulo:
class BNRUpdater
{
public static function fetchAndProcessBNRRates()
{
$xmlUrl = 'https://www.bnr.ro/nbrfxrates.xml';
// Usar cURL para una petición más robusta
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $xmlUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
Esta función fetchAndProcessBNRRates debería estar en tu propio módulo. Luego, podrías configurarlo para que se ejecute a través de un cron job de tu servidor, llamando a un script PHP dentro de tu módulo que a su vez invoque esta función estática.
Para una solución más 'plug-and-play' y que no requiera desarrollo a medida, sobre todo en entornos PrestaShop 1.7, que ya tiene sus años y está en modo de mantenimiento, te recomiendo un módulo para currency rates from banca dedicado. Estos módulos están diseñados para ser robustos, se actualizan con la plataforma y manejan todas estas complejidades de forma interna, incluyendo la programación de las actualizaciones.