Hola @angel_96, entiendo perfectamente tu problema. Es un escenario común en PrestaShop 1.7, especialmente cuando los módulos intentan cargar assets en métodos que no son hooks estándar como hookActionAdminControllerSetMedia.
El problema es que, como bien apunta @ivan24, method_exists solo verifica la existencia del método. Sin embargo, no garantiza que el objeto $this->context->controller sea del tipo AdminController o compatible en todos los escenarios de carga de módulos en el back office. Si en algunos momentos es un controlador más genérico, no tendrá el método addCSS disponible.
Para solucionarlo de forma más robusta, deberías asegurarte de que el controlador es una instancia de AdminController (o un subtipo que lo herede), ya que esta clase es la que garantiza la disponibilidad de addCSS y addJS.
Aquí te dejo la modificación al fragmento de código en shipmethodrules/classes/ShipmethodrulesAdmin.php:
function run()
{
// Asegurarse de que el controlador es una instancia de AdminController
if (isset($this->context->controller) && $this->context->controller instanceof AdminController) {
$this->context->controller->addCSS($this->module->getPathUri() . 'views/css/admin_shipmethodrules.css');
$this->context->controller->addJS($this->module->getPathUri() . 'views/js/adminConditionBuilder.js');
}
Con este cambio, solo se intentarán cargar los assets si el controlador es un AdminController válido, lo cual debería resolver el problema de que no se carguen en ciertos contextos. La comprobación instanceof AdminController es más estricta y segura que method_exists en este caso.