Hola @marta_digital, @raul_store tiene razón, intentar meter una lógica de API externa directamente en un override de Currency.php no es lo más recomendable para la estabilidad. Estás intentando cambiar un comportamiento fundamental del sistema de divisas con un método estático, lo que dificulta la gestión de errores y las actualizaciones futuras. Además, Tools::file_get_contents no es el método más robusto para llamadas API en producción; curl o Guzzle (si estuviera disponible en tu entorno o en un módulo) serían mejores.
Para PrestaShop 1.7.8.3, que aún tiene una mezcla de Symfony y el legado, la mejor aproximación es crear un módulo. Un módulo te permite engancharte a hooks existentes o incluso crear un cronjob para actualizar los tipos de cambio de forma programada sin modificar archivos core. La lógica de la API debe ir dentro del módulo, no en un override de una clase core.
Aquí tienes un ejemplo simplificado de cómo podrías estructurar la lógica de actualización dentro de un módulo, usando un hook como actionUpdateCurrencyRate (que no existe de forma nativa para actualizar desde una API, pero podrías usar actionSchedulerCron o un hook personalizado para un cronjob, o incluso el actionAdminCurrenciesControllerSaveAfter si actualizas manualmente y quieres que el módulo lo sobreescriba):
class MyCurrencyUpdater extends Module
{
public function __construct()
{
$this->name = 'mycurrencyupdater';
$this->tab = 'administration';
$this->version = '1.0.0';
parent::__construct();
}
public function install()
Este hook actionAdminCurrenciesControllerSaveAfter se dispara después de guardar una divisa en el back office. Es solo un punto de partida; lo ideal sería un cronjob que ejecute tu lógica de actualización de forma regular. Para una solución completa y mantenible que no requiera tocar código ni hacer overrides frágiles, te recomiendo considerar un módulo dedicado. Puedes gestionar tipos de cambio automáticos sin tocar el código core con herramientas específicas para ello, lo que te ahorrará muchos dolores de cabeza con futuras actualizaciones de PrestaShop.