Hola @alberto_pro, @ignacio96,
El punto que comenta @ignacio96 es clave. Es un error común que Configuration::get devuelva 0 (o false, que al castear a int es 0) cuando el valor no está definido para el contexto de tienda actual, especialmente en configuraciones multitienda. Aunque el módulo esté habilitado globalmente o para una tienda específica, la clave PAYMETHODRULES_ENABLED puede que no se haya guardado para la id_shop que está activa en el momento de la ejecución del hook.
Para asegurar que se lee la configuración correcta para la tienda actual, es buena práctica pasar el shop_id explícitamente a Configuration::get. Esto fuerza a PrestaShop a buscar el valor para la tienda en cuestión.
Prueba a modificar tu código en paymethodrules/paymethodrules.php así:
function hookActionPresentPaymentOptions(&$params)
{
// Asegura que se obtiene la configuración para la tienda activa.
// Esto previene lecturas incorrectas en entornos multitienda.
if (!(int) Configuration::get('PAYMETHODRULES_ENABLED', null, null, Context::getContext()->shop->id)) {
return;
}
$this->getEngine()->filterPaymentOptions($params);
}
Con este cambio, Configuration::get intentará obtener el valor para la tienda que está actualmente en el contexto del navegador, lo que debería resolver el problema si es una cuestión de contexto de tienda. Si aun así sigue a 0, entonces deberías revisar la página de configuración del módulo en el BO para esa tienda específica y asegurarte de que el valor se guarda correctamente en la base de datos.