Buenas @joaquin24,
@saratech tiene toda la razón. Intentar meter la lógica de una llamada API externa y el parsing de datos dentro de un override de refreshCurrency es problemático por varias razones:
- Propósito de
refreshCurrency: Esta función está diseñada para que PrestaShop actualice una moneda con una tasa ya proporcionada, no para que la obtenga de una fuente externa.
- Robustez: Las llamadas a APIs externas requieren manejo de errores, timeouts, y un cliente HTTP adecuado (cURL es lo mínimo, Guzzle es mucho mejor si tienes Composer).
- Mantenibilidad: Un
override de esta naturaleza es muy frágil y una futura actualización de PrestaShop podría romperlo o anularlo.
La forma correcta de actualizar una tasa de cambio en PrestaShop, una vez que ya has obtenido el valor de la API del Riksbank, sería la siguiente, en un método de un módulo personalizado o de un AdminController que se ejecute vía cron:
// Este código iría en un módulo personalizado o AdminController,
// después de haber obtenido la tasa real de la API del Riksbank.
// Asumimos que queremos actualizar la tasa de EUR (respecto a la moneda por defecto de tu tienda)
$id_currency_eur = (int)Currency::getIdByIsoCode('EUR'); // Obtiene el ID de la moneda EUR
$newRate_SEK_EUR = 0.091; // Ejemplo: 1 SEK = 0.091 EUR (este valor debe venir de tu lógica de API)
$currency = new Currency($id_currency_eur);
if (Validate::isLoadedObject($currency)) {
$currency->conversion_rate = (float)$newRate_SEK_EUR;
$currency->update();
}
Aquí $newRate_SEK_EUR debe ser el valor que obtengas y calcules de la API del Riksbank, ajustado a la moneda base de tu tienda. Este fragmento se enfoca en cómo aplicar la tasa. La parte de obtener y parsear la API es la que requiere un desarrollo más complejo y un módulo dedicado.
Para evitar estas personalizaciones complejas que pueden fallar con las actualizaciones y para asegurar una integración robusta con el Sveriges Riksbank, es mucho más seguro y mantenible utilizar esta herramienta de mypresta. Está diseñada específicamente para esto, gestiona la API del Riksbank, el parsing y la actualización de forma automática y sin necesidad de overrides de código core.