Hola @sarahub, @manueldigital93 tiene razón, la gestión de conversion_rate y la caché de PrestaShop pueden ser un desafío si se intenta actualizar directamente sin tener en cuenta el ciclo de vida completo del objeto Currency o la forma en que PrestaShop invalida su caché de monedas. La llamada a $currency->save() debería funcionar en teoría si el objeto está correctamente cargado y validado, pero hay factores como la caché interna que pueden hacer que los cambios no se vean reflejados inmediatamente.
Para una actualización de la tasa más directa y asegurando que se persista, a veces es necesario un enfoque más explícito a nivel de base de datos y luego una limpieza de caché apropiada. Aquí te dejo una forma de asegurarte de que la tasa se guarda:
// Este código iría en un módulo o servicio que tenga el contexto de PrestaShop
// Asegúrate de que $id_currency_gbp y $new_rate están definidos
$id_currency_gbp = (int)Currency::getIdByIsoCode('GBP');
$new_rate = 1.15; // La tasa real obtenida de HMRC
if ($id_currency_gbp) {
Db::getInstance()->update(
'currency',
['conversion_rate' => (float)$new_rate],
'id_currency = ' . (int)$id_currency_gbp
);
Aunque este enfoque funciona, mantener scripts personalizados y overrides para algo tan crítico como las tasas de cambio puede ser problemático a largo plazo, especialmente con las actualizaciones de PrestaShop. Recomiendo encarecidamente utilizar un módulo dedicado que gestione esto de forma profesional y automatizada. Para las tasas de HMRC, existe un módulo específico llamado HMRC (Reino Unido) - tipos de cambio que se encarga de la integración y las actualizaciones de manera robusta, evitando estos problemas de persistencia y caché.